需求:数据库版的学生信息管理系统,实现简要的增删改查
rt_stu_main:整个项目的主模块,主要负责整个项目的业务逻辑的调用和分配,增删改查的调用 rt_stu_util:整个项目的工具模块,封装了增删改查的主要功能,以及数据库的相关连接
MySQL部分:
主模块:
rt_stu_main.py
import stu_sys.rt_stu_util as stu_util
print("*"*50)
print("欢迎来到学生信息管理系统【v 4.0】")
while (True):
# 展示菜单
stu_util.show_menu()
action_str = input("请输入您要执行操作的编号:")
if action_str in ["1","2","3","4","5"]:
# print("增删改查")
if action_str == "1":
stu_util.find_all()
#print("查询所有")
elif action_str == "2":
stu_util.insert_info()
#print("添加")
elif action_str == "3":
stu_util.delete_info()
#print("删除")
elif action_str == "4":
stu_util.update_info()
#print("修改")
elif action_str == "5":
stu_util.find_info_by_sid()
#print("查询某一个")
elif action_str == "0":
print("欢迎下次使用学员信息管理系统,Bye Bye!")
break
else:
print("您的输入有误,请重新输入!")
界面:
封装的工具模块:
rt_stu_util.py
# rt_stu_util:整个项目的工具模块,封装了增删改查的主要功能,以及数据库的相关连接
import pymysql
def get_conn():
"""获取数据库连接"""
conn = pymysql.connect(
host="localhost",port=3306,
user="root",password="123456",
database="sn_python",charset="utf8"
)
cursor = conn.cursor()
return conn,cursor
def close(conn,cursor):
"""释放资源"""
conn.close()
cursor.close()
def show_menu():
"""封装功能菜单"""
# 开启循环提示用户
while (True):
print("*" * 50)
print("请选择您要执行的操作:")
print("")
print("1.查询所有学员信息")
print("2.添加学员信息")
print("3.删除学员信息")
print("4.修改学员信息")
print("5.查询某一位学员信息")
print("")
print("0.退出当前学生信息管理系统")
print("*" * 50)
break
def find_alll():
conn, cursor = get_conn()
sql = "select * from stu_info"
count = cursor.execute(sql)
result = cursor.fetchall()
close(conn, cursor)
return result,count#返回顺序不能错!!!!
def find_all():
"""查询所有"""
# conn,cursor = get_conn()
# sql = "select * from stu_info"
# count = cursor.execute(sql)
# result = cursor.fetchall()
result,count = find_alll()
print(f"查询到了{count}条学员信息:")
# 输出表头
print("#"*39)
for title in ["学号","姓名","年龄","班级"," 成绩"]:
print(title,end="\t\t")
print("")
print("#"*39)
# 详细信息
for item in result:
#print(item[1]+"\t"+item[2]+"\t\t"+str(item[3])+"\t\t"+item[4]+"\t\t"+item[5])
print(item[1] + "\t\t" + item[2] + "\t\t" + str(item[3]) + "\t\t\t" + item[4] + "\t\t" + item[5])
print("*"*39)
print("查询完毕")
# 详细信息
def insert_info():
"""添加信息"""
# 提示用户输入要添加的sid
sid = input("请输入您要添加学员的sid:")
#根据sid判断是否存在,如果存在就不能重复添加相同的sid的信息
result,count = find_alll()
for item in result:
if sid == item[1]:
# 已存在
print(f"您要添加学员【{sid}】信息已经存在,请核实!")
break
else:
# 要添加的sid不存在,继续添加其他信息
name = input(f"请输入您要添加的【{sid}】的name:")
age = input(f"请输入您要添加的【{sid}】的age:")
classes = input(f"请输入您要添加的【{sid}】的classes:")
score = input(f"请输入您要添加的【{sid}】的score:")
# 执行数据库添加操作
conn,cursor = get_conn()
sql = "insert into stu_info values(null,%s,%s,%s,%s,%s)"
cursor.execute(sql,[sid,name,age,classes,score])
# 提交事务
conn.commit()
print(f"添加【{sid}】信息成功!")
# 释放资源
close(conn,cursor)
def delete_info():
"""删除信息"""
sid = input("请输入您要删除学员信息的sid:")
result,count = find_alll()
for item in result:
if sid == item[1]:
# 存在要删除的,直接删除
conn,cursor = get_conn()
sql = "delete from stu_info where sid = %s"
cursor.execute(sql,sid)
conn.commit()
print(f"删除【{sid}】信息成功!")
close(conn,cursor)
break
else:
print(f"您要删除的学员信息【{sid}】不存在,请核实!")
def update_info():
"""修改信息"""
sid = input("请输入您要更新学员的sid:")
result,count = find_alll()
for item in result:
if sid == item[1]:
# 存在,直接更新操作
conn,cursor = get_conn()
name = input(f"请输入您要更新【{sid}】后的name:")
age = input(f"请输入您要更新【{sid}】后的age:")
classes = input(f"请输入您要更新【{sid}】后的classes:")
score = input(f"请输入您要更新【{sid}】后的score:")
sql = "update stu_info set name = %s,age = %s,classes = %s,score = %s where sid = %s"
cursor.execute(sql,[name,age,classes,score,sid])
conn.commit()
print(f"修改【{sid}】信息成功!")
close(conn,cursor)
break
else:
print(f"您要删除的学员信息【{sid}】不存在,请核实!")
def find_info_by_sid():
"""查询某一个"""
sid = input("请输入您要查询学员的sid:")
result,count = find_alll()
for item in result:
if sid == item[1]:
print(f"查询到的【{sid}】信息如下:")
print(f"name:{item[2]}\t\tage:{item[3]}\t\tclasses:{item[4]}\t\tscore:{item[5]}")
break
else:
print(f"您要查询的【{sid}】学生信息不存在,请核实!")
if __name__ == '__main__':
#show_menu()
#find_all()
#insert_info()
#update_info()
#find_info_by_sid()
pass
效果: