import sqlite3

conn = sqlite3.connect('E:\\test.sqlite') # 建立数据库联接
cursor = conn.cursor() # 建立 cursor 对象

#新建一个数据表
sqlstr='CREATE TABLE IF NOT EXISTS table01 ("num" INTEGER PRIMARY KEY NOT NULL ,"tel" TEXT)'
cursor.execute(sqlstr)

# 新增一条记录
sqlstr='insert into table01 values(1,"02-1234567")'
cursor.execute(sqlstr)

conn.commit() # 主动更新
conn.close() # 关闭数据库连接

def menu():
os.system("cls")
print("账号、密码管理系统")
print("-------------------------")
print("1. 输入账号、密码")
print("2. 显示账号、密码")
print("3. 修 改 密 码")
print("4. 删除账号、密码")
print("0. 结 束 程 序")
print("-------------------------")

def ReadData():
with open('E:\\password.txt','r', encoding = 'UTF-8-sig') as f:
filedata = f.read()
if filedata != "":
data = ast.literal_eval(filedata)
return data
else: return dict()

def disp_data():
print("账号\t密码")
print("================")
for key in data:
print("{}\t{}".format(key,data[key]))
input("按任意键返回主菜单")

def input_data():
while True:
name =input("请输入账号(Enter==>停止输入)")
if name=="": break
if name in data:
print("{}账号已存在!".format(name))
continue
password=input("请输入密码:")
data[name]=password
with open('password.txt','w',encoding = 'UTF-8-sig') as f:
f.write(str(data))
print("{}已保存完毕".format(name))

def edit_data():
while True:
name =input("请输入要修改的账号(Enter==>停止输入)")
if name=="": break
if not name in data:
print("{} 账号不存在!".format(name))
continue
print("原密码为:{}".format(data[name]))
password=input("请输入新密码:")
data[name]=password
with open('password.txt','w',encoding = 'UTF-8-sig') as f:
f.write(str(data))
input("密码更改完毕,请按任意键返回主菜单")
break

def delete_data():
while True:
name =input("请输入要删除的账号(Enter==>停止输入)")
if name=="": break
if not name in data:
print("{} 账号不存在!".format(name))
continue
print("确定删除{}的数据!:".format(name))
yn=input("(Y/N)?")
if (yn=="Y" or yn=="y"):
del data[name]
with open('password.txt','w',encoding = 'UTF-8-sig') as f:
f.write(str(data))
input("已删除完毕,请按任意键返回主菜单")
break

### 主程序从这里开始 ###

import os,ast
data=dict()

data = ReadData() # 读取文本文件后转换为 dict
while True:
menu()
choice = int(input("请输入您的选择:"))
print()
if choice==1:
input_data()
elif choice==2:
disp_data()
elif choice==3:
edit_data()
elif choice==4:
delete_data()
else:
break
print("程序执行完毕!")

import sqlite3

def menu():
os.system("cls")
print("账号、密码管理系统")
print("-------------------------")
print("1. 输入账号、密码")
print("2. 显示账号、密码")
print("3. 修 改 密 码")
print("4. 删除账号、密码")
print("0. 结 束 程 序")
print("-------------------------")

def disp_data():
cursor = conn.execute('select * from password')
print("账号\t密码")
print("================")
for row in cursor:
print("{}\t{}".format(row[0],row[1]))
input("按任意键返回主菜单")

def input_data():
while True:
name =input("请输入账号(Enter==>停止输入)")
if name=="": break
sqlstr="select * from password where name='{}'" .format(name)
cursor=conn.execute(sqlstr)
row = cursor.fetchone()
if not row==None:
print("{} 账号已存在!".format(name))
continue
password=input("请输入密码:")
sqlstr="insert into password values('{}','{}');".format(name,password)
conn.execute(sqlstr)
conn.commit()
print("{} 已保存完毕".format(name))

def edit_data():
while True:
name =input("请输入要修改的账号(Enter==>停止输入)")
if name=="": break
sqlstr="select * from password where name='{}'" .format(name)
cursor=conn.execute(sqlstr)
row = cursor.fetchone()
print(row)
if row==None:
print("{} 账号不存在!".format(name))
continue
print("原来密码为:{}".format(row[1]))
password=input("请输入新密码:")
sqlstr = "update password set pass='{}' where name='{}'".format(password, name)
conn.execute(sqlstr)
conn.commit()
input("密码更改完毕,请按任意键返回主菜单")
break

def delete_data():
while True:
name =input("请输入要删除的账号(Enter==>停止输入)")
if name=="": break
sqlstr="select * from password where name='{}'" .format(name)
cursor=conn.execute(sqlstr)
row = cursor.fetchone()
if row==None:
print("{} 账号不存在!".format(name))
continue
print("确定删除{}的数据!:".format(name))
yn=input("(Y/N)?")
if (yn=="Y" or yn=="y"):
sqlstr = "delete from password where name='{}'".format(name)
conn.execute(sqlstr)
conn.commit()
input("已删除完毕,请按任意键返回主菜单")
break

### 主程序从这里开始 ###

import os,sqlite3

conn = sqlite3.connect('E:\\Sqlite01.sqlite')
while True:
menu()
choice = int(input("请输入您的选择:"))
print()
if choice==1:
input_data()
elif choice==2:
disp_data()
elif choice==3:
edit_data()
elif choice==4:
delete_data()
else:
break

conn.close()
print("程序执行完毕!")

吴裕雄 实战python编程(1)的更多相关文章

  1. 吴裕雄 实战PYTHON编程(10)

    import cv2 cv2.namedWindow("frame")cap = cv2.VideoCapture(0)while(cap.isOpened()): ret, im ...

  2. 吴裕雄 实战PYTHON编程(9)

    import cv2 cv2.namedWindow("ShowImage1")cv2.namedWindow("ShowImage2")image1 = cv ...

  3. 吴裕雄 实战PYTHON编程(8)

    import pandas as pd df = pd.DataFrame( {"林大明":[65,92,78,83,70], "陈聪明":[90,72,76, ...

  4. 吴裕雄 实战PYTHON编程(7)

    import os from win32com import client word = client.gencache.EnsureDispatch('Word.Application')word. ...

  5. 吴裕雄 实战PYTHON编程(6)

    import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['Simhei']plt.rcParams['axes.unicode ...

  6. 吴裕雄 实战PYTHON编程(5)

    text = '中华'print(type(text))#<class 'str'>text1 = text.encode('gbk')print(type(text1))#<cla ...

  7. 吴裕雄 实战PYTHON编程(4)

    import hashlib md5 = hashlib.md5()md5.update(b'Test String')print(md5.hexdigest()) import hashlib md ...

  8. 吴裕雄 实战python编程(3)

    import requests from bs4 import BeautifulSoup url = 'http://www.baidu.com'html = requests.get(url)sp ...

  9. 吴裕雄 实战python编程(2)

    from urllib.parse import urlparse url = 'http://www.pm25x.com/city/beijing.htm'o = urlparse(url)prin ...

随机推荐

  1. keepalived配置主从备份

    keepalived配置主从备份   keepalived是一个用于做双机热备(HA)的软件,常和haproxy联合起来做热备+负载均衡,达到高可用. 运行原理 keepalived通过选举(看服务器 ...

  2. MySQL数据库服务器整体规划(go)

    我们在搭建MySQL数据库服务器的开始阶段就合理的规划,可以避免以后的很多问题的产生,大大节省我们的时间和精力,在一定幅度上降低成本.当然,这会涉及很多方面.比如机器的选型.业务评估和系统规划等. 所 ...

  3. Java技术专题之JVM逻辑内存回收机制研究图解版

    一.引言 JVM虚拟机内存回收机曾迷惑了不少人,文本从JVM实现机制的角度揭示JVM内存回收的原理和机制. 一.Java平台逻辑架构 二.JVM物理结构 通过从JVM物理结构图我们可以看到: 1.JV ...

  4. 【ActiveMQ入门-5】ActiveMQ学习-Queue与Topic的比较

    Queue与Topic的比较 1.JMS Queue执行load balancer语义: 一条消息仅能被一个consumer收到. 如果在message发送的时候没有可用的consumer,那么它将被 ...

  5. Asio 注意事项

    本文列举 Asio 各种值得注意的细节. 另见:基于 Asio 的 C++ 网络编程 No Deprecated 在包含 Asio 头文件之前,定义宏 BOOST_ASIO_NO_DEPRECATED ...

  6. RDD之六:Action算子

    本质上在Actions算子中通过SparkContext执行提交作业的runJob操作,触发了RDD DAG的执行. 根据Action算子的输出空间将Action算子进行分类:无输出. HDFS. S ...

  7. 学习笔记之C/C++指针使用常见的坑

    https://mp.weixin.qq.com/s/kEHQjmhNtSmV3MgHzw6YeQ 避免内存泄露 不再用到的内存没有释放,就叫做内存泄露 在C/C++中,通过动态内存分配函数(如mal ...

  8. [UE4]创建对象的的几种姿势(C++)

    DEMO源代码 这个DEMO演示了在C++代码中,创建UE4的常见类型的对象,包括Actor,ActorComponent,加载资源等. 源代码请从这里下载:https://code.csdn.net ...

  9. PHP-Socket服务端客户端发送接收通信实例详解

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://fighter.blog.51cto.com/1318618/1533957 So ...

  10. [Python] numpy.nonzero

    numpy.nonzero(a) Return the indices of the elements that are non-zero. Returns a tuple of arrays, on ...