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 相关文章推荐
java直接调用python脚本的例子
Feb 16 Python
5种Python单例模式的实现方式
Jan 14 Python
python实现class对象转换成json/字典的方法
Mar 11 Python
Python自定义函数定义,参数,调用代码解析
Dec 27 Python
python opencv检测目标颜色的实例讲解
Apr 02 Python
获取python的list中含有重复值的index方法
Jun 27 Python
matplotlib调整子图间距,调整整体空白的方法
Aug 03 Python
python实现多人聊天室
Mar 31 Python
用pycharm开发django项目示例代码
Oct 24 Python
Python2.7实现多进程下开发多线程示例
May 31 Python
Flask框架模板渲染操作简单示例
Jul 31 Python
解决Django连接db遇到的问题
Aug 29 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面向对象的使用教程 简单数据库连接
2006/11/25 PHP
测试您的 PHP 水平的题目
2007/05/30 PHP
Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解
2016/03/07 PHP
PHP+Redis开发的书签案例实战详解
2019/07/09 PHP
让IE6支持min-width和max-width的方法
2010/06/25 Javascript
[JSF]使用DataModel处理表行事件的实例代码
2013/08/05 Javascript
带左右箭头图片轮播的JS代码
2013/12/18 Javascript
table行随鼠标移动变色示例
2014/05/07 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
2015/12/14 Javascript
BootstrapTable refresh 方法使用实例简单介绍
2017/02/20 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
基于 webpack2 实现的多入口项目脚手架详解
2017/06/26 Javascript
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
javascript面向对象三大特征之封装实例详解
2019/07/24 Javascript
vue使用codemirror的两种用法
2019/08/27 Javascript
vue点击当前路由高亮小案例
2019/09/26 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
Python生成验证码实例
2014/08/21 Python
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
Python实现去除代码前行号的方法
2015/03/10 Python
python距离测量的方法
2018/03/06 Python
django认证系统 Authentication使用详解
2019/07/22 Python
python对常见数据类型的遍历解析
2019/08/27 Python
CSS3属性background-size使用指南
2014/12/09 HTML / CSS
HTML5 Notification(桌面提醒)功能使用实例
2014/03/17 HTML / CSS
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
HTML5拖拽的简单实例
2016/05/30 HTML / CSS
伦敦最有品味的百货:Liberty London
2016/11/12 全球购物
英国家用电器购物网站:Hughes
2018/02/23 全球购物
给老婆大人的检讨书
2014/02/24 职场文书
儿园租房协议书范本
2014/12/02 职场文书
先进员工事迹材料
2014/12/20 职场文书
2015年校本培训工作总结
2015/07/24 职场文书
经典哲理警句:志不真则心不热,心不热则功不贤
2019/11/14 职场文书
Python Pytorch查询图像的特征从集合或数据库中查找图像
2022/04/09 Python