一、需求分析
- 顯示所有學(xué)生信息
- 新建學(xué)生信息
- 查詢學(xué)生信息
- 修改學(xué)生信息
- 刪除學(xué)生信息
- 選擇顯示功能
- 打印平均分
- 打印及格率
- 退出操作
- 退出系統(tǒng)
二、Python文件
import functools
import os
# 存儲(chǔ)學(xué)生信息
# stu_mesall = {
# "s001": {"sno": "s001", "name": "張三", "age": 23, "sex": "男", "Python": 45},
# "s002": {"sno": "s002", "name": "李思", "age": 18, "sex": "女", "Python": 87}
# }
#
# with open("學(xué)生信息.txt", mode="w", encoding="utf-8") as stu_mesalls:
# stu_mesalls.write(str(stu_mesall))
stu_mesall = {}
# 顯示所有學(xué)生信息
def show_mes():
print("""
*********************************************
歡迎使用【不染學(xué)員管理信息系統(tǒng)】V2.0
1\. 顯示所有學(xué)生信息
2\. 新建學(xué)生信息
3\. 查詢學(xué)生信息
4\. 修改學(xué)生信息
5\. 刪除學(xué)生信息
6\. 選擇顯示功能
7\. 退出系統(tǒng)
*********************************************
""")
# 顯示所有學(xué)生信息
def show_all():
if os.path.exists("學(xué)生信息.txt"):
with open("學(xué)生信息.txt", mode="r", encoding="utf-8") as file:
ret = file.read()
global stu_mesall
stu_mesall = eval(ret)
for item in stu_mesall.values():
print(f"學(xué)號(hào):{item['sno']} | 姓名:{item['name']} | 年齡:{item['age']} | 性別:{item['sex']} | Python成績(jī):{item['Python']}")
# 新建學(xué)生信息
def add_stu():
stu_sno = input("請(qǐng)輸入您要新建學(xué)生的學(xué)號(hào):")
if stu_sno in stu_mesall.keys():
print("""
*********************************************
您輸入的學(xué)生學(xué)號(hào)已存在,請(qǐng)輸入以下指令:
a. 重新輸入學(xué)號(hào)
0\. 回到主菜單
*********************************************
""")
while True:
info_help = input("請(qǐng)輸入您要操作的指令:")
if info_help == 'a':
add_stu()
elif info_help == '0':
return
else:
print("輸入有誤,請(qǐng)重新輸入!")
else:
stu_name = input("請(qǐng)輸入您要新建學(xué)生的姓名:")
stu_age = int(input("請(qǐng)輸入您要新建學(xué)生的年齡:"))
stu_sex = input("請(qǐng)輸入您要新建學(xué)生的性別:")
stu_py = int(input("請(qǐng)輸入您要新建學(xué)生的Python成績(jī):"))
stu_mes = {"sno": stu_sno, "name": stu_name, "age": stu_age, "sex": stu_sex, "Python": stu_py}
stu_mesall[stu_sno] = stu_mes
with open("學(xué)生信息.txt", mode="w", encoding="utf-8") as stu_mesalls:
stu_mesalls.write(str(stu_mesall))
print("添加成功!")
return
# 查詢學(xué)生信息
def sel_stu():
stu_sno = input("請(qǐng)輸入您要查詢學(xué)生的學(xué)號(hào):")
if stu_sno in stu_mesall.keys():
print(f"學(xué)號(hào):{stu_mesall[stu_sno]['sno']} | 姓名:{stu_mesall[stu_sno]['name']} | 年齡:{stu_mesall[stu_sno]['age']} | 性別:{stu_mesall[stu_sno]['sex']} | Python成績(jī):{stu_mesall[stu_sno]['Python']}")
return
else:
ext_func()
# 修改學(xué)生信息
def upd_stu():
stu_sno = input("請(qǐng)輸入您要修改學(xué)生的學(xué)號(hào):")
if stu_sno in stu_mesall.keys():
stu_name = input("請(qǐng)輸入您要修改學(xué)生的姓名:")
stu_age = int(input("請(qǐng)輸入您要修改學(xué)生的年齡:"))
stu_sex = input("請(qǐng)輸入您要修改學(xué)生的性別:")
stu_py = int(input("請(qǐng)輸入您要修改學(xué)生的Python成績(jī):"))
stu_mes = {"sno": stu_sno, "name": stu_name, "age": stu_age, "sex": stu_sex, "Python": stu_py}
stu_mesall[stu_sno] = stu_mes
with open("學(xué)生信息.txt", mode="w", encoding="utf-8") as stu_mesalls:
stu_mesalls.write(str(stu_mesall))
print("修改成功!")
return
else:
ext_func()
# 選擇顯示功能
def func_stu():
print("""
*********************************************
歡迎進(jìn)入選擇顯示功能界面,請(qǐng)輸入以下指令:
a. 統(tǒng)計(jì)平均分
b. 統(tǒng)計(jì)及格率
0\. 回到主菜單
*********************************************
""")
while True:
info_help = input("請(qǐng)輸入您要操作的指令:")
if info_help == 'a':
avg_score()
elif info_help == 'b':
pass_score()
elif info_help == '0':
return
else:
print("輸入有誤,請(qǐng)重新輸入!")
# 統(tǒng)計(jì)平均分
def avg_score():
score_list = [py_score['Python'] for py_score in stu_mesall.values()]
print(f"學(xué)生的平均分:{functools.reduce(lambda x,y : x + y, score_list) / len(score_list)}")
# 統(tǒng)計(jì)及格率
def pass_score():
score_list = [py_score['Python'] for py_score in stu_mesall.values()]
print(f"學(xué)生的及格率為:{len([score for score in score_list if score >= 60]) / len(score_list) * 100}%")
# 刪除學(xué)生信息
def del_stu():
stu_sno = input("請(qǐng)輸入您要?jiǎng)h除學(xué)生的學(xué)號(hào):")
if stu_sno in stu_mesall.keys():
del stu_mesall[stu_sno]
with open("學(xué)生信息.txt", mode="w", encoding="utf-8") as stu_mesalls:
stu_mesalls.write(str(stu_mesall))
print("刪除成功!")
return
else:
ext_func()
# 擴(kuò)展功能
def ext_func():
print("""
*********************************************
您輸入的學(xué)生學(xué)號(hào)不存在,請(qǐng)輸入以下指令:
a. 重新輸入學(xué)號(hào)
b. 新建學(xué)生信息
0\. 回到主菜單
*********************************************
""")
while True:
info_help = input("請(qǐng)輸入您要操作的指令:")
if info_help == 'a':
del_stu()
elif info_help == 'b':
add_stu()
elif info_help == '0':
return
else:
print("輸入有誤,請(qǐng)重新輸入!")
# 主函數(shù)
def main():
while True:
show_mes()
info_inst = input("請(qǐng)輸入您要操作的指令:")
if info_inst == "1":
show_all()
elif info_inst == "2":
add_stu()
elif info_inst == "3":
sel_stu()
elif info_inst == "4":
upd_stu()
elif info_inst == "5":
del_stu()
elif info_inst == "6":
func_stu()
elif info_inst == "7":
return
else:
print("輸入指令錯(cuò)誤,請(qǐng)重新輸入!")
main()
三、文本文件
{‘s001’: {‘sno’: ‘s001’, ‘name’: ‘張三’, ‘a(chǎn)ge’: 23, ‘sex’: ‘男’, ‘Python’: 45}, ‘s002’: {‘sno’: ‘s002’, ‘name’: ‘李思’, ‘a(chǎn)ge’: 18, ‘sex’: ‘女’, ‘Python’: 87}}
