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中的pprint折腾记
Jan 21 Python
KMP算法精解及其Python版的代码示例
Jun 01 Python
windows 下python+numpy安装实用教程
Dec 23 Python
如何用python写一个简单的词法分析器
Dec 18 Python
django-rest-swagger对API接口注释的方法
Aug 29 Python
使用python绘制温度变化雷达图
Oct 18 Python
解决Pytorch训练过程中loss不下降的问题
Jan 02 Python
pyftplib中文乱码问题解决方案
Jan 11 Python
Python高并发解决方案实现过程详解
Jul 31 Python
PyCharm最新激活码PyCharm2020.2.3有效
Nov 18 Python
Python中requests做接口测试的方法
May 30 Python
仅用几行Python代码就能复制她的U盘文件?
Jun 26 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
smarty半小时快速上手入门教程
2014/10/27 PHP
070823更新的一个[消息提示框]组件 兼容ie7
2007/08/29 Javascript
15款优秀的jQuery导航菜单插件分享
2011/07/19 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
javascript 原型链维护和继承详解
2014/11/26 Javascript
javascript实现复选框选中属性
2015/03/25 Javascript
jQuery焦点图切换特效代码分享
2015/09/15 Javascript
jQuery实现仿美橙互联两级导航菜单效果完整实例
2015/09/17 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
2017/01/21 Javascript
JavaScrpt的面向对象全面解析
2017/05/09 Javascript
Angular使用Md5加密的解决方法
2017/09/16 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
使用Nuxt.js改造已有项目的方法
2018/08/07 Javascript
Vue.js的复用组件开发流程完整记录
2018/11/29 Javascript
继承行为在 ES5 与 ES6 中的区别详解
2019/12/24 Javascript
ES6使用 Array.includes 处理多重条件用法实例分析
2020/03/02 Javascript
通过实例解析chrome如何在mac环境中安装vue-devtools插件
2020/07/10 Javascript
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
2015/05/22 Python
Python基于DES算法加密解密实例
2015/06/03 Python
python深度优先搜索和广度优先搜索
2018/02/07 Python
Python简单实现的代理服务器端口映射功能示例
2018/04/08 Python
Python 移动光标位置的方法
2019/01/20 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
vscode+PyQt5安装详解步骤
2020/08/12 Python
CSS3实现伪类hover离开时平滑过渡效果示例
2017/08/10 HTML / CSS
Html5原生拖拽相关事件简介以及基础实现
2020/11/19 HTML / CSS
Mio Skincare英国官网:身体紧致及孕期身体护理
2018/08/19 全球购物
英国赛车、汽车改装和摩托车零件购物网站:Demon Tweeks
2018/10/29 全球购物
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
军训自我鉴定
2014/01/22 职场文书
优秀民警事迹材料
2014/01/29 职场文书
前处理组长岗位职责
2014/03/01 职场文书
党员十八大心得体会
2014/09/12 职场文书
用python批量解压带密码的压缩包
2021/05/31 Python
《游戏王:大师决斗》新活动上线 若无符合卡组可免费租用
2022/04/13 其他游戏
分享很少见很有用的SQL功能CORRESPONDING
2022/08/05 MySQL