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自动化测试工具Splinter简介和使用实例
May 13 Python
python安装mysql-python简明笔记(ubuntu环境)
Jun 25 Python
不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决
Sep 24 Python
python+webdriver自动化环境搭建步骤详解
Jun 03 Python
python爬虫 urllib模块反爬虫机制UA详解
Aug 20 Python
学习python需要有编程基础吗
Jun 02 Python
简述python Scrapy框架
Aug 17 Python
python3列表删除大量重复元素remove()方法的问题详解
Jan 04 Python
Python实现曲线拟合的最小二乘法
Feb 19 Python
python FTP编程基础入门
Feb 27 Python
python数据库批量插入数据的实现(executemany的使用)
Apr 30 Python
pandas时间序列之pd.to_datetime()的实现
Jun 16 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中的array数组类型分析说明
2010/07/27 PHP
PHP常用编译参数中文说明
2014/09/27 PHP
php发送与接收流文件的方法
2015/02/11 PHP
js有关元素内容操作小结
2011/12/20 Javascript
jquery 动态创建元素的方式介绍及应用
2013/04/21 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
JS获取各种浏览器窗口大小的方法
2014/01/14 Javascript
js输出阴历、阳历、年份、月份、周示例代码
2014/01/29 Javascript
JsRender for index循环索引用法详解
2014/10/31 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
jquery插件uploadify多图上传功能实现代码
2016/08/12 Javascript
JavaScript全屏和退出全屏事件总结(附代码)
2017/08/17 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
js实现简单点赞操作
2020/03/17 Javascript
js实现简单选项卡制作
2020/08/05 Javascript
Python用threading实现多线程详解
2017/02/03 Python
Python实现模拟登录网易邮箱的方法示例
2018/07/05 Python
在Pycharm中执行scrapy命令的方法
2019/01/16 Python
Python字符串逆序输出的实例讲解
2019/02/16 Python
使用Python串口实时显示数据并绘图的例子
2019/12/26 Python
Python 测试框架unittest和pytest的优劣
2020/09/26 Python
python urllib和urllib3知识点总结
2021/02/08 Python
浅析Python模块之间的相互引用问题
2021/02/26 Python
Lou & Grey美国官网:主打舒适性面料服饰
2017/12/21 全球购物
三项教育活动实施方案
2014/03/30 职场文书
人事行政经理岗位职责
2014/06/18 职场文书
工会优秀工作者事迹
2014/08/17 职场文书
大学生入党积极分子自我评价
2014/09/20 职场文书
2015年元旦晚会活动总结(学生会)
2014/11/28 职场文书
小学三八妇女节活动总结
2015/02/06 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
2016小学教师读书心得体会
2016/01/13 职场文书
导游词之河北邯郸
2019/09/12 职场文书
FP-growth算法发现频繁项集——发现频繁项集
2021/06/24 Python
为什么MySQL不建议使用SELECT *
2022/04/03 MySQL
分析MySQL优化 index merge 后引起的死锁
2022/04/19 MySQL