该系统将利用数据库实现信息录入,信息查询,信息删除,信息修改和信息保存,由于原本的代码太过繁琐,利用数据库之后可以大大简化代码,于是我自己重新编写了以下代码来更好的实现其功能。其中框架还是依照原来的版本没有做过多的变动,但是每个函数实现我进行了彻底重写,使代码更加美观,简洁。
其实还可以把主函数单独放出来,但是我比较懒,就把代码全部放在一起了,只是一个小demo,大家有能力的话还可以优化的更好。
import threading
import pymysql
def create(sql, name):
cur.execute(f"drop table if exists {name}")
cur.execute(sql)
print("创建表成功")
def change(sql, args):
cur.executemany(sql, args)
# db.commit()
def prints(sql):
cur.execute(sql)
result = cur.fetchall()
for data in result:
print(data)
def close():
cur.close()
db.close()
def show_menu():
print('请选择如下功能:')
print('1:添加学员')
print('2:删除学员')
print('3:修改学员信息')
print('4:查询学员信息')
print('5:显示所有学员信息')
print('6:退出系统')
def add_student():
name = input('请输入您的姓名:')
gender = input('请输入您的性别:')
tel = input('请输入您的手机号:')
sql = "insert into test01 value(%s,%s,%s)"
args = [(name, gender, tel)]
change(sql, args)
print('添加成功!')
def del_student():
del_name = input('请输入要删除的学员姓名:')
sql = "delete from test01 where name=%s"
args = [del_name]
change(sql, args)
print('删除成功!')
def modify_student():
modify_name = input('请输入要修改的学员姓名:')
sql = "delete from test01 where name=%s"
args = [modify_name]
change(sql, args)
name = input('请输入修改的姓名:')
gender = input('请输入修改的性别:')
tel = input('请输入修改的手机号:')
sql = "insert into test01 value(%s,%s,%s)"
args = [(name, gender, tel)]
change(sql, args)
print('修改成功!')
def search_student():
search_name = input('请输入您要搜索的学员姓名:')
sql = "select * from test01 where name=%s"
args = [search_name]
change(sql, args)
print('查询成功!')
sql = "select * from test01 where name='" + search_name + "'"
prints(sql)
def show_student():
sql = "select * from test01 "
prints(sql)
def save_student():
db.commit()
s_t01 = threading.Timer(1, save_student)
s_t01.start()
# pass
if __name__ == '__main__':
try:
db = pymysql.connect(host="localhost", user="root", password="123", db="winter_vacation01")
print("数据库连接成功!")
cur = db.cursor()
t01 = threading.Thread(target=save_student())#利用多线程实现每秒保存一次数据
t01.start()
while True:
# 2. 显示功能菜单
show_menu()
# 3. 用户输入目标功能序号
menu_num = int(input('请输入您需要的功能序号:'))
# 4. 根据用户输入的序号执行不同的功能 -- 如果用户输入1,执行添加
if menu_num == 1:
# 添加学员
add_student()
elif menu_num == 2:
# 删除学员
del_student()
elif menu_num == 3:
# 修改学员信息
modify_student()
elif menu_num == 4:
# 查询学员信息
search_student()
elif menu_num == 5:
# 显示所有学员信息
show_student()
elif menu_num == 6:
# 退出系统 -- 退出循环
break
close()
except pymysql.Error as e:
print(str(e))