使用代码之前,需要提前在次代码同级目录下新建四个表格。分别是:学生成绩.xlsx,学生信息.xlsx,课程信息.xlsx,账号信息.xlsx。主要是利用pandas将信息存入excel表格中的技术,以及函数知识。
路径一定要改成自己的。
import pandas as pd
df = pd.read_excel('D:\python202307\chy\有趣的代码\学生成绩.xlsx')
df1 = pd.read_excel('D:\python202307\chy\有趣的代码\学生信息.xlsx')
df2 = pd.read_excel('D:\python202307\chy\有趣的代码\课程信息.xlsx')
df3 = pd.read_excel('D:\python202307\chy\有趣的代码\账号信息.xlsx')
datas = {'students': df1.to_dict(orient='records'), 'courses': df2.to_dict(orient='records'),
'scores': df.to_dict(orient='records')}
usr_pwd = df3.to_dict(orient='list')
def add_name():
while True:
name = input("请输入姓名:")
if 2 <= len(name) <= 6:
break
else:
print("输入不合法,重新输入")
return name
def add_age():
while True:
age = int(input("请输入年龄:"))
if 18 <= age <= 30:
break
else:
print("输入不合法,重新输入")
return age
def add_sex():
while True:
sex = input("请输入性别:")
if sex in ["男", "女"]:
break
else:
print("输入不合法,重新输入")
return sex
def add_score():
while True:
score = input("请输入分数:")
if 0 <= int(score) <= 100:
break
else:
print("输入不合法,重新输入")
return score
def is_student_id(a):
for s in datas["students"]:
if a == s["Id"]:
return True
else:
return False
def is_course_id(b):
for s in datas["courses"]:
if b == s["Id"]:
return True
else:
return False
def display_add_student_menu():
print("0.返回主菜单")
print("1.添加学生")
def add_student():
while True:
display_add_student_menu()
n = input("请输入数字进行操作:")
if n == "0":
break
elif n == "1":
name = add_name()
age = add_age()
sex = add_sex()
current_id = 101 if not len(datas["students"]) else datas["students"][-1]["Id"] + 1
datas["students"].append({"Id": current_id, "Name": name, "Age": age, "Sex": sex})
print("添加学生成功")
print()
else:
print("输入不合法,重新输入")
def display_add_course_menu():
print("0.返回主菜单")
print("1.添加课程")
def add_course():
while True:
display_add_course_menu()
n = input("请输入数字进行操作:")
if n == "0":
break
elif n == "1":
c = input("请输入课程名:")
current_id = 1001 if not len(datas["courses"]) else datas["courses"][-1]["Id"] + 1
datas["courses"].append({"Id": current_id, "Name": c})
print("添加课程成功")
print()
else:
print("输入不合法,重新输入")
def display_add_score_menu():
print("0.返回主菜单")
print("1.添加分数")
def add_student_score():
while True:
display_add_score_menu()
n = input("请输入数字进行操作:")
if n == "0":
break
elif n == "1":
a = int(input("请输入学生id:"))
if is_student_id(int(a)):
b = int(input("请输入课程id:"))
if is_course_id(int(b)):
c = add_score()
current_id = 1001 if not len(datas["scores"]) else datas["scores"][-1]["Id"] + 1
datas["scores"].append({"Id": current_id, "Sid": a, "Cid": b, "Score": int(c)})
print("添加分数成功")
print()
print(datas["scores"])
else:
print("课程id不存在")
else:
print("学生id不存在")
else:
print("输入不合法,重新输入")
def update_student_menu():
print("0.返回主菜单")
print("1.修改信息")
def update_student():
while True:
update_student_menu()
n = input("请输入数字进行操作:")
if n == "0":
break
elif n == "1":
a = input("请输入学生id:")
if is_student_id(int(a)):
d = add_name()
b = add_age()
c = add_sex()
for e in datas["students"]:
if int(a) == e["Id"]:
e.update({"Name": d, "Age": b, "Sex": c})
print("修改成功")
print(datas["students"])
print()
break
else:
print("学生id不存在")
else:
print("输入不合法,重新输入")
def update_score_menu():
print("0.返回主菜单")
print("1.修改分数")
def update_score():
while True:
update_score_menu()
n = input("请输入数字进行操作:")
if n == "0":
break
elif n == "1":
a = int(input("请输入学生id:"))
b = int(input("请输入课程id:"))
for s in datas["scores"]:
if a == s["Sid"]:
if b == s["Cid"]:
c = add_score()
s.update({"Score": int(c)})
print("修改成功")
print(datas["scores"])
break
else:
print("该学生没有录入成绩")
else:
print("输入不合法,重新输入")
def update_course_menu():
print("0.返回主菜单")
print("1.修改课程名")
def update_course():
while True:
update_course_menu()
n = input("请输入数字进行操作:")
if n == "0":
break
elif n == "1":
a = int(input("请输入课程id:"))
for s in datas["courses"]:
if a == s["Id"]:
b = input("请输入课程名:")
s.update({"Name": b})
print("修改课程成功")
print()
print(datas["courses"])
break
else:
print("没有该id")
else:
print("输入不合法,重新输入")
def find_student_menu():
print("0.返回主菜单")
print("1.查询学生")
def find_student():
while True:
find_student_menu()
n = input("请输入数字进行操作:")
if n == "0":
break
elif n == "1":
l = []
a = int(input("请输入学生id:"))
for e in datas["students"]:
if a == e["Id"]:
print(f'ID:{e["Id"]}\nName:{e["Name"]}\nAge:{e["Age"]}\nSex:{e["Sex"]}')
for s in datas["scores"]:
if a == s["Sid"]:
l.append({s["Cid"]: s["Score"]})
print(l)
else:
print("没有该学生id")
else:
print("输入不合法,重新输入")
def find_show_student():
if len(datas["students"]) == 0:
print("暂无学生,请添加")
print()
else:
for i in range(len(datas["students"])):
l = []
for k, v in datas["students"][i].items():
print(f'{k} : {v}')
for s in datas["scores"]:
if v == s["Sid"]:
l.append({s["Cid"]: s["Score"]})
if len(l) == 0:
print("暂无成绩,请添加")
print()
else:
print(f'全部成绩为:{l}')
print()
def delta_course_score_menu():
print("0.返回主菜单")
print("1.删除课程")
def delta_course_score():
while True:
delta_course_score_menu()
n = input("请输入数字进行操作:")
if n == "0":
break
elif n == "1":
a = int(input("请输入课程id:"))
if is_course_id(a):
courses_to_remove = []
scores_to_remove = []
for s in datas["courses"]:
if a == s["Id"]:
courses_to_remove.append(s)
for e in datas["scores"]:
if a == e["Cid"]:
scores_to_remove.append(e)
for course in courses_to_remove:
datas["courses"].remove(course)
for score in scores_to_remove:
datas["scores"].remove(score)
print("删除成功")
else:
print("该课程id不存在,成功新输入")
else:
print("输入不合法,重新输入")
def delta_student_score_menu():
print("0.返回主菜单")
print("1.删除学生")
def delta_student_score():
while True:
delta_student_score_menu()
n = input("请输入数字进行操作:")
if n == "0":
break
elif n == "1":
a = int(input("请输入学生id:"))
if is_student_id(a):
students_to_remove = []
scores_to_remove = []
for s in datas["students"]:
if a == s["Id"]:
students_to_remove.append(s)
for e in datas["scores"]:
if a == e["Sid"]:
scores_to_remove.append(e)
for student in students_to_remove:
datas["students"].remove(student)
for score in scores_to_remove:
datas["scores"].remove(score)
print("删除成功")
else:
print("该学生id不存在,成功新输入")
else:
print("输入不合法,重新输入")
def save_student():
df = pd.DataFrame(datas["students"])
df.to_excel("学生信息.xlsx", index=False)
print("保存成功")
print()
def save_course():
df = pd.DataFrame(datas["courses"])
df.to_excel("课程信息.xlsx", index=False)
print("保存成功")
print()
def save_score():
df = pd.DataFrame(datas["scores"])
df.to_excel("学生成绩.xlsx", index=False)
print("保存成功")
print()
def display_require_menu():
print("0.退出程序")
print("1.登录")
print("2.注册")
def input_pwd(info):
while True:
pwd = input(info)
if pwd.isdigit() and 6 <= len(pwd) <= 10:
break
else:
print("输入不合法,重新输入")
return pwd
def show_all_course():
if len(datas["courses"]) == 0:
print("暂无课程,请添加")
print()
else:
for i in range(len(datas["courses"])):
for k, v in datas["courses"][i].items():
print(f'{k} : {v}')
print()
def display_main_menu():
print("请选择操作".center(30, "*"))
print("1.添加学生个人信息\n2.添加课程\n3.添加学生分数\n4.修改学生个人信息\n5.修改学生分数\n6.修改课程名\n"
"7.查询学生信息及分数\n8.查看所有学生个人信息与成绩\n9.删除课程以及对应的成绩\n10.删除学生以及对应的分数\n"
"11.保存学生信息\n12.保存课程\n13.保存成绩\n14.查看所有课程\n0.退出程序")
def login_require(f):
print("欢迎来到学生成绩管理系统".center(40, "*"))
def verify():
while True:
display_require_menu()
n = input("请进行操作:")
if n == "0":
break
elif n == "1":
name = input("请输入用户名:")
for s in usr_pwd["usr_name"]:
if name == s:
pwd = input_pwd("请输入密码:")
for e in usr_pwd["pwd"]:
if e == int(pwd):
f()
break
else:
print("密码错误")
break
else:
print("没有该用户名")
elif n == "2":
while True:
a = add_name()
for s in usr_pwd["usr_name"]:
if a == s:
print("用户名已经存在")
break
else:
while True:
b = input_pwd("请输入密码:")
b2 = input_pwd("请再次输入密码:")
if b != b2:
print("密码不一致,请再次输入!")
else:
usr_pwd["usr_name"].append(a)
usr_pwd["pwd"].append(int(b))
df = pd.DataFrame(usr_pwd)
df.to_excel("账号信息.xlsx", index=False)
print("请重新登录")
break
break
else:
print("输入不合法")
return verify
@login_require
def main():
while True:
display_main_menu()
n = input("请输入数字进行操作:")
if n not in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14']:
print("输入不合法")
else:
if n == "0":
break
elif n == "1":
add_student()
elif n == "2":
add_course()
elif n == "3":
add_student_score()
elif n == "4":
update_student()
elif n == "5":
update_score()
elif n == "6":
update_course()
elif n == "7":
find_student()
elif n == "8":
find_show_student()
elif n == "9":
delta_course_score()
elif n == "10":
delta_student_score()
elif n == "11":
save_student()
elif n == "12":
save_course()
elif n == "13":
save_score()
elif n == "14":
show_all_course()
main()