python实现简易通讯录修改版


Posted in Python onMarch 13, 2018

描述:

上一篇博客我写了一个简单的通讯录,但是还是觉得不够完美:

需要输入ID,虽然ID是主键,但是没有实现自增功能;

忘记加电话号码了;

如果插入用户名相同,则后续的查、改、删功能受到影响;

所以,我这个修改版主要修正了以上三点缺陷。具体如下

将用户ID设置为自增字段,即就是不用输入ID,程序会自动帮你将插入的用户进行排序并附上ID,默认从1开始;SQLite实现主键自增功能,请查看SQLiteAUTOINCREMENT/自动递增这篇博客。
创建表时增加了电话号码字段;
插入的用户名不能重复;
好了,废话不多说,附上新代码,哈哈~~~

#-*- coding:utf-8 -*-

import sqlite3
#打开本地数据库用于存储用户信息
conn = sqlite3.connect('mysql_person.db')

#在该数据库下创建表,创建表的这段代码在第一次执行后需要注释掉,否则再次执行程序会一直提示:该表已存在
conn.execute ('''CREATE TABLE MT_table1(
  ID INTEGER PRIMARY KEY  AUTOINCREMENT,
  NAME      TEXT   NOT NULL,
  AGE      INT    NOT NULL,
  ADDRESS    CHAR(50),
  SALARY     REAL,
  PhoneNumber  INT    NOT NULL);''')
print "Table created successfully";

#增加用户信息
def insert():
  USER_NAME = raw_input('请输入用户昵称:')
  cursor = conn.execute("SELECT name from MT_table1 where name = '%s';"%USER_NAME)
  for row in cursor:
    if USER_NAME == row[0]:
      print "sorry,改用户名已存在,请重新输入用户名"
      break
  else:
    AGE = input('请输入年龄:')
    ADDRESS = raw_input('请输入用户地址:')
    SALARY = input('请输入用户薪水:')
    PhoneNumber = input("请输入联系方式:")
    #为避免代码太长,以下我用字符串的连接特性将代码缩短
    sql1 = 'INSERT INTO MT_table1(NAME,AGE,ADDRESS,SALARY,PhoneNumber)'
    sql1 += 'VALUES("%s","%d","%s","%d","%d");'%(USER_NAME,AGE,ADDRESS,SALARY,PhoneNumber)
    conn.execute(sql1)
    conn.commit()
    print "Records insert successfully"

#删除用户信息
def delete():
  delete_name = raw_input("请输入所要删除的联系人姓名:")
  cursor = conn.execute("SELECT name from MT_table1 where name = '%s';"%delete_name)
  for row in cursor:
    if delete_name == row[0]:
      conn.execute("DELETE from MT_table1 where name = '%s';"%delete_name)
      conn.commit()
      print "Records delete successfully"
      break
  else:
    print "sorry,不存在该用户"

#修改用户信息
def modify():
  update_name = raw_input("请输入要修改用户的姓名:")
  sql6 = "SELECT name from MT_table1 where name = '%s';"%update_name
  cursor = conn.execute(sql6)
  for row in cursor:
    if update_name == row[0]:
      New_addr = raw_input("请输入要修改用户的新地址:")
      New_age = input("请输入要修改用户的新年龄:")
      New_salary = input("请输入要修改用户的新薪水:")
      New_num = input("输入要修改用户的新号码:")
      sql3 = "UPDATE MT_table1 set address = '%s',age = '%d',salary = '%d',PhoneNumber = '%d' where \
      name = '%s';"%(New_addr,New_age,New_salary,New_num,update_name)
      conn.execute(sql3)
      conn.commit()
      print "修改成功"
      sql5 = "SELECT id, name, age,address, salary ,PhoneNumber from MT_table1 where name = '%s';"%update_name
      cursor = conn.execute(sql5)
      for row in cursor:
        print "ID = ", row[0]
        print "NAME = ", row[1]
        print "AGE = ",row[2]
        print "ADDRESS = ", row[3]
        print "SALARY = ", row[4]
        print "PhoneNumber = ",row[5], "\n"
        break
  else:
    print "sorry,不存在该用户信息"


#查询用户信息
def search():
  conn = sqlite3.connect('mysql_person.db')
  search_name = raw_input('请输入要查询的用户姓名')
  sql2 = "SELECT id,name,age, address, salary ,PhoneNumber from MT_table1 where name= '%s';" % (search_name)
  cursor = conn.execute(sql2)
  for row in cursor:
    print "ID = ", row[0]
    print "NAME = ", row[1]
    print "AGE = ",row[2]
    print "ADDRESS = ", row[3]
    print "SALARY = ", row[4]
    print "PhoneNumber = ",row[5], "\n"
    break
  else:
    print "sorry,没有该用户信息"


#显示所有用户信息
def showall():
  cursor = conn.execute("SELECT id, name,age, address, salary ,PhoneNumber from MT_table1")
  for row in cursor:
    print "ID = ", row[0]
    print "NAME = ", row[1]
    print "AGE = ",row[2]
    print "ADDRESS = ", row[3]
    print "SALARY = ", row[4]
    print "PhoneNumber = ",row[5], "\n"
  print "Operation done successfully";
  cursor = conn.execute("select count(*) from MT_table1;")
  for row in cursor:
    print "一共有%d个用户"%row[0]

def menu():
  print '1.新增联系人'
  print '2.删除联系人'
  print '3.修改联系人'
  print '4.查询联系人'
  print '5.显示所有联系人'
  print '6.退出程序'
  print 'What do you want to do?'
while True:
  menu()
  x = raw_input('请输入您的选择菜单号:')
  if x == '1':
    insert()
    continue
  if x == '2':
    delete()
    continue
  if x == '3':
    modify()
    continue
  if x == '4':
    search()
    continue
  if x == '5':
    showall()
    continue
  if x == '6':
    print "谢谢使用!"
    exit()
    continue
  else:
    print "输入的选项不存在,请重新输入!"
    continue

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python守护进程和脚本单例运行详解
Jan 06 Python
浅谈Python处理PDF的方法
Nov 10 Python
python编程线性回归代码示例
Dec 07 Python
解决已经安装requests,却依然提示No module named requests问题
May 18 Python
详解Django的CSRF认证实现
Oct 09 Python
pyside+pyqt实现鼠标右键菜单功能
Dec 08 Python
Python解决pip install时出现的Could not fetch URL问题
Aug 01 Python
Pytorch根据layers的name冻结训练方式
Jan 06 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
Apr 17 Python
Python垃圾回收机制三种实现方法
Apr 27 Python
python 监控logcat关键字功能
Sep 04 Python
python脚本框架webpy的url映射详解
Nov 20 Python
python学生信息管理系统
Mar 13 #Python
python时间日期函数与利用pandas进行时间序列处理详解
Mar 13 #Python
python用户管理系统
Mar 13 #Python
Windows环境下python环境安装使用图文教程
Mar 13 #Python
Python Numpy 数组的初始化和基本操作
Mar 13 #Python
python 中的list和array的不同之处及转换问题
Mar 13 #Python
python2.7安装图文教程
Mar 13 #Python
You might like
php生成随机密码自定义函数代码(简单快速)
2014/05/10 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
PHP Cookei记录用户历史浏览信息的代码
2016/02/03 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
(跨浏览器基础事件/浏览器检测/判断浏览器)经验代码分享
2013/01/24 Javascript
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
原始的js代码和jquery对比体会
2013/09/10 Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
2015/06/19 Javascript
浅析JavaScript动画模拟拖拽原理
2016/12/09 Javascript
React Native 通告消息竖向轮播组件的封装
2020/08/25 Javascript
nodejs实现套接字服务功能详解
2018/06/21 NodeJs
angular5 子组件监听父组件传入值的变化方法
2018/09/30 Javascript
JavaScript解析机制与闭包原理实例详解
2019/03/08 Javascript
关于layui toolbar和template的结合使用方法
2019/09/19 Javascript
Python 代码性能优化技巧分享
2012/08/07 Python
Python装饰器基础详解
2016/03/09 Python
Python 基础教程之str和repr的详解
2017/08/20 Python
python+matplotlib绘制3D条形图实例代码
2018/01/17 Python
Python lambda函数基本用法实例分析
2018/03/16 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
Python3爬虫之urllib携带cookie爬取网页的方法
2018/12/28 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
澳大利亚便宜隐形眼镜购买网站:QUICKLENS Australia
2018/10/06 全球购物
SHEIN台湾:购买最新流行女装服饰
2019/05/18 全球购物
医大实习自我鉴定
2013/12/07 职场文书
大学考试作弊检讨书
2014/01/30 职场文书
模具毕业生推荐信
2014/02/15 职场文书
令人印象深刻的自荐信
2014/05/25 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
2019新员工试用期转正申请书3篇
2019/08/13 职场文书
go类型转换及与C的类型转换方式
2021/05/05 Golang
如何利用React实现图片识别App
2022/02/18 Javascript
mysql 生成连续日期及变量赋值
2022/03/20 MySQL