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&MongoDB爬取图书馆借阅记录
Feb 05 Python
python直接访问私有属性的简单方法
Jul 25 Python
python的random模块及加权随机算法的python实现方法
Jan 04 Python
Django学习笔记之Class-Based-View
Feb 15 Python
python 3.5实现检测路由器流量并写入txt的方法实例
Dec 17 Python
Python 实现域名解析为ip的方法
Feb 14 Python
几个适合python初学者的简单小程序,看完受益匪浅!(推荐)
Apr 16 Python
利用python实现汉字转拼音的2种方法
Aug 12 Python
python 利用jinja2模板生成html代码实例
Oct 10 Python
python实现横向拼接图片
Mar 23 Python
PyTorch中Tensor的数据类型和运算的使用
Sep 03 Python
Python+logging输出到屏幕将log日志写入文件
Nov 11 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
自制汽车收音机天线:收听广播的技巧和方法
2021/03/02 无线电
PHP静态类
2006/11/25 PHP
jQuery 使用手册(三)
2009/09/23 Javascript
Jquery 常用方法经典总结
2010/01/28 Javascript
重载toString实现JS HashMap分析
2011/03/13 Javascript
Javascript 判断是否存在函数的方法
2013/01/03 Javascript
JQuery设置文本框和密码框得到焦点时的样式
2013/08/30 Javascript
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
2014/10/19 Javascript
谷歌浏览器调试JavaScript小技巧
2014/12/29 Javascript
js获取鼠标位置实例详解
2015/12/09 Javascript
javascript 数组去重复(在线去重工具)
2016/12/17 Javascript
Bootstrap CSS组件之按钮组(btn-group)
2016/12/17 Javascript
canvas实现简易的圆环进度条效果
2017/02/28 Javascript
JS实现的Unicode编码转换操作示例
2017/04/28 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
2017/06/01 Javascript
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
vue-cli的工程模板与构建工具详解
2018/09/27 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
vue使用keep-alive保持滚动条位置的实现方法
2019/04/09 Javascript
Vue路由 重定向和别名的区别说明
2020/09/09 Javascript
JS实现无限轮播无倒退效果
2020/09/21 Javascript
[15:39]教你分分钟做大人:龙骑士
2014/10/30 DOTA
Python多进程编程技术实例分析
2014/09/16 Python
Python调用SQLPlus来操作和解析Oracle数据库的方法
2016/04/09 Python
Flask 让jsonify返回的json串支持中文显示的方法
2018/03/26 Python
python 用opencv调用训练好的模型进行识别的方法
2018/12/07 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
利用 Canvas实现绘画一个未闭合的带进度条的圆环
2019/07/26 HTML / CSS
英国珠宝和手表专家:Pleasance & Harper
2020/10/21 全球购物
公司前台接待岗位职责
2013/12/03 职场文书
2014年元旦促销活动方案
2014/02/22 职场文书
小学数学课后反思
2014/04/23 职场文书
副职竞争上岗演讲稿
2014/05/12 职场文书
2015年党小组工作总结
2015/05/26 职场文书
2015年思想品德教学工作总结
2015/07/22 职场文书