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系列之浅谈pickle模块封装和拆封数据对象的方法
May 23 Python
python实现在字符串中查找子字符串的方法
Jul 11 Python
浅析Python中的多条件排序实现
Jun 07 Python
python3 shelve模块的详解
Jul 08 Python
Python基于sklearn库的分类算法简单应用示例
Jul 09 Python
Python实现定时执行任务的三种方式简单示例
Mar 30 Python
python 中如何获取列表的索引
Jul 02 Python
django admin 自定义替换change页面模板的方法
Aug 23 Python
Pycharm 字体大小调整设置的方法实现
Sep 27 Python
在Tensorflow中实现梯度下降法更新参数值
Jan 23 Python
Python内建序列通用操作6种实现方法
Mar 26 Python
Python 如何查找特定类型文件
Aug 17 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简单防盗链验证实现方法
2016/07/09 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
2018/10/12 PHP
Js之软键盘实现(js源码)
2007/01/30 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
深入剖析JavaScript编程中的对象概念
2015/10/21 Javascript
基于javascript实现简单计算器功能
2016/01/03 Javascript
jQuery获取多种input值的简单实现方法
2016/06/20 Javascript
第九篇Bootstrap导航菜单创建步骤详解
2016/06/21 Javascript
聊一聊JS中的prototype
2016/09/29 Javascript
Vue.js创建Calendar日历效果
2016/11/03 Javascript
JavaScript实现反转字符串的方法详解
2017/04/27 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
js 取消页面可以选中文字的功能方法
2018/01/02 Javascript
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
Python中time模块和datetime模块的用法示例
2016/02/28 Python
深入解析Python中函数的参数与作用域
2016/03/20 Python
python安装oracle扩展及数据库连接方法
2017/02/21 Python
python编程实现随机生成多个椭圆实例代码
2018/01/03 Python
Python中单例模式总结
2018/02/20 Python
Python socket实现简单聊天室
2018/04/01 Python
Python3 jupyter notebook 服务器搭建过程
2018/11/30 Python
python自动发送测试报告邮件功能的实现
2019/01/22 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
2019/06/04 Python
python做接口测试的必要性
2019/11/20 Python
python通过cython加密代码
2020/12/11 Python
HTML5标签嵌套规则详解【必看】
2016/04/26 HTML / CSS
杭州SQL浙江浙大网新恩普软件有限公司
2013/07/27 面试题
大学毕业生的自我鉴定
2013/11/30 职场文书
转让协议书范本
2014/04/15 职场文书
婚礼父母答谢词
2015/01/04 职场文书
英文道歉信
2015/01/20 职场文书
长城导游词400字
2015/01/30 职场文书
2015毕业生简历自我评价
2015/03/02 职场文书
Javascript设计模式之原型模式详细
2021/10/05 Javascript