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处理python编码问题
Mar 13 Python
python算法学习之基数排序实例
Dec 18 Python
Python实现list反转实例汇总
Nov 11 Python
Python中的对象,方法,类,实例,函数用法分析
Jan 15 Python
Android应用开发中Action bar编写的入门教程
Feb 26 Python
从源码解析Python的Flask框架中request对象的用法
Jun 02 Python
Python正则表达式非贪婪、多行匹配功能示例
Aug 08 Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
Sep 06 Python
python实现嵌套列表平铺的两种方法
Nov 08 Python
Pandas 缺失数据处理的实现
Nov 04 Python
Python 爬虫的原理
Jul 30 Python
利用Python优雅的登录校园网
Oct 21 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
javascript indexOf函数使用说明
2008/07/03 Javascript
Mootools 1.2教程(2) DOM选择器
2009/09/14 Javascript
基于jquery的loading效果实现代码
2010/11/05 Javascript
利用js的Node遍历找到repeater的一个字段实例介绍
2013/04/25 Javascript
JQuery给元素绑定click事件多次执行的解决方法
2014/05/29 Javascript
javascript使用正则获取url上的某个参数
2014/09/04 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
javascript实现数组内值索引随机化及创建随机数组的方法
2015/08/10 Javascript
详解js中==与===的区别
2017/01/08 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
浅析JS中常用类型转换及运算符表达式
2017/07/23 Javascript
详解node.js中的npm和webpack配置方法
2018/01/21 Javascript
Vue 中使用 CSS Modules优雅方法
2018/04/09 Javascript
微信小程序云开发如何使用云函数生成二维码
2019/05/18 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
Python中使用中文的方法
2011/02/19 Python
Python连接mssql数据库编码问题解决方法
2015/01/01 Python
Python爬虫模拟登录带验证码网站
2016/01/22 Python
python实现12306火车票查询器
2017/04/20 Python
python中abs&map&reduce简介
2018/02/20 Python
Python实现微信翻译机器人的方法
2019/08/13 Python
Pyecharts地图显示不完成问题解决方案
2020/05/11 Python
浅谈keras中loss与val_loss的关系
2020/06/22 Python
如何用python批量调整视频声音
2020/12/22 Python
香港时尚女装购物网站:ZAFUL
2017/07/19 全球购物
EntityManager都有哪些方法
2013/11/01 面试题
德尔福集团DELPHI的笔试题
2012/02/22 面试题
技术总监岗位职责
2013/12/05 职场文书
好邻里事迹材料
2014/01/16 职场文书
测控技术自荐信
2014/06/05 职场文书
英语专业求职信
2014/07/08 职场文书
教育系统干部作风整顿心得体会
2014/09/09 职场文书
法人代表身份证明书及授权委托书
2014/09/16 职场文书
工作岗位职责范本
2015/02/15 职场文书
Nginx反爬虫策略,防止UA抓取网站
2021/03/31 Servers