主程序:
(加载数据方法)
def load_data() -> dict:
res = {}
if os.path.exists(file):
file_instence = open(file,encoding="UTF8")
csv_reader = csv.DictReader(file_instence)
for row in csv_reader:
name = row.get("name")
res[name] = row
file_instence.close()
return res
1、获得输入命令函数
def get_command()->str:
command = input("请输入命令:")
cmd = command.lower()
if cmd not in COMMAND_LIST:
print("你输入的命令无效,请重新输入:")
else:
return cmd
2、处理命令函数(参数 方法名,加载的数据(字典))
def command_list(data:dict):
result = list(data.values())
for record in result:
print(record.get("name"))
print(f"语文成绩是 : {record.get('chinese')}")
print(f"英语成绩是 : {record.get('english')}")
print(f"数学成绩是 : {record.get('math')}")
def command_add(data:dict):
name = input("请输入姓名:")
chinese_score = input("请输入语文成绩:")
english_score = input("请输入英语成绩:")
math_score = input("请输入数学成绩:")
record = {
"name":name,
"chinese":chinese_score,
"english":english_score,
"math":math_score
}
data[name] = record
def command_edit(data:dict):
name = input("请输入姓名:")
if name in data.keys():
course = input("请输入课程:")
if course in course_def.COURSE_LIST:
score = input("请输入成绩:")
data[name][course] = score
print("修改成功!")
else:
print("输入课程错误")
else:
print("姓名不存在!")
def command_delete(data:dict):
name = input("请输入姓名:")
if name in data.keys():
data.pop(name)
print(f"删除成功")
else:
print(f"输入的名字不存在")
def command_average(data:dict):
student_count = len(data)
if student_count == 0:
print("没有学生成绩")
return
total_result = {}
for course in course_def.COURSE_LIST:
total_result[course] = 0
for record in data.values():
for course in course_def.COURSE_LIST:
total_result[course] = total_result[course] + int(record.get(course))
for course in course_def.COURSE_LIST:
average = total_result[course] / student_count
print(f"{course}的平均分是:{average}")
def process_command(cmd:str,data:dict):
if cmd == "list":
command_list(data)
elif cmd == "add":
command_add(data)
elif cmd == "edit":
command_edit(data)
elif cmd == "delete":
command_delete(data)
elif cmd == "average":
command_average(data)
(保存数据方法)
def save_data(data:dict):
headers = ({"name"}).union(course_def.COURSE_LIST)
file_instence = open(file,"w",encoding="UTF8")
if len(data) > 0:
csv_writer = csv.DictWriter(file_instence,headers)
rows = list(data.values())
csv_writer.writeheader()
csv_writer.writerows(rows)
file_instence.close()