目录
一、实验目的
二、操作环境
三、实验内容和过程
1.实验内容
2.代码
2.1 用户验证功能
2.2 菜单函数
2.3 评分功能
四、结果分析
总体的输出结果:
保存文件成功截图:
五、小结
一、实验目的
1.巩固和提高学生学过的基础理论和专业知识;
2.提高学生运用所学专业知识进行独立思考和综合分析、解决实际问题的能力;
3.培养学生掌握正确的思维方法和利用计算机解决实际问题的基本技能;
4.增强学生对信息管理工作的认识,掌握信息处理方法,进行编制技术文件等基本技能的训练,使之具有一定程度的实际工作能力。
5.使学生掌握文献检索、资料查询的基本方法以及获取新知识的能力。
6.促使学生学习和获取新知识,掌握自我学习的能力。
二、操作环境
- win11
- PyCharm Community Edition 2020.2.5 x64
- anaconda2019
- python3.7
三、实验内容和过程
1.实验内容
制作一个简易评分系统,要求完成以下功能:
1. 用户验证功能
(1)输入用户名及口令,然后在已有的用户名及口令中检查是否合法;
(2)如果用户名及口令合法,进入查询界面;
(3)如果用户名及口令不合法,用户名或口令最多可输入3次,验证错误超过3次以后,自动退出系统。
2. 评分功能
(1)在评委所打的分数中,去掉一个最高分,去掉一个最低分,得出个选手的平均分;
(2)按平均分进行排序,得出各选手的名次。
3. 菜单设计
(1)用户能够设置评委的人数并输入姓名;
(2)用户能够设置选手的人数;
(3)用户能够将最后得分及名次保存到文件中。
2.代码
# _*_ coding:utf-8 _*
#作者:码银# 用户验证功能
def login():print("欢迎来到简易的评分·系统,请先登录呦~")username = input("请输入用户名:")password = input("请输入口令:")if username == "admin" and password == "123456":print("登录成功!")return Trueelse:print("您还有三次机会呦~")for i in range(3):username = input("请重新输入用户名:")password = input("请重新输入口令:")if username == "admin" and password == "123456":print("登录成功!")return Trueprint("登录失败,请重新启动程序!")exit()
def menu():while True:print("~~~~~~~~~~~~~~~~")print("| 1.进入评分系统 ")print("| 2.退出 ")print("~~~~~~~~~~~~~~~~")choice = input("\n请输入操作编号:")if choice == "1":pingfen()elif choice == "2":breakelse:print("登出,下次使用请重新运行本程序")
def pingfen():# 评分功能num_judges = int(input("请输入评委人数:"))judge_names = []for i in range(num_judges):judge_names.append(input("请输入评委姓名:"))num_contestants = int(input("请输入选手人数:"))contestant_names = []for i in range(num_contestants):contestant_names.append(input("请输入选手姓名:"))scores = []for judge in judge_names:score = []for contestant in contestant_names:s = float(input(f"请输入{contestant}的{judge}得分:"))score.append(s)scores.append(score)# 计算每个选手的最终得分和名次final_scores = []for i in range(num_contestants):total_score = sum(scores[j][i] for j in range(num_judges))max_score = max(scores[j][i] for j in range(num_judges))min_score = min(scores[j][i] for j in range(num_judges))total_score -= max_score + min_scorefinal_scores.append(total_score / (num_judges - 2))# 按平均分排序并输出名次contestant_final_scores = sorted(final_scores, reverse=True)print("各选手的最终得分及名次如下(已经自动保存到文件中):")for i in range(num_contestants):print(f"{contestant_names[i]}: {final_scores[i]}, 名次: {i + 1}")with open("scores.txt", "w") as f:for i in range(num_contestants):print(f"{contestant_names[i]}: {final_scores[i]}, 名次: {i + 1}", file=f)
login()
menu()
结束了,下面不用看了。
2.1 用户验证功能
# 用户验证功能
def login():print("欢迎来到简易的评分·系统,请先登录呦~")username = input("请输入用户名:")password = input("请输入口令:")if username == "admin" and password == "123456":print("登录成功!")return Trueelse:print("您还有三次机会呦~")for i in range(3):username = input("请重新输入用户名:")password = input("请重新输入口令:")if username == "admin" and password == "123456":print("登录成功!")return Trueprint("登录失败,请重新启动程序!")exit()
在Python中,exit()
函数用于退出程序,它接受一个可选的退出状态代码作为参数。默认情况下,如果不传递参数,状态代码将被设置为0。调用这个函数将终止程序的执行并返回到操作系统。
2.2 菜单函数
def menu():while True:print("~~~~~~~~~~~~~~~~")print("| 1.进入评分系统 ")print("| 2.退出 ")print("~~~~~~~~~~~~~~~~")choice = input("\n请输入操作编号:")if choice == "1":pingfen()elif choice == "2":breakelse:print("登出,下次使用请重新运行本程序")
使用while True:
通过这个语句可以达到:除非选择“2.退出”break掉,其他选项都能在执行完程序后,再次跳出菜单。
2.3 评分功能
def pingfen():# 评分功能num_judges = int(input("请输入评委人数:"))judge_names = []for i in range(num_judges):judge_names.append(input("请输入评委姓名:"))num_contestants = int(input("请输入选手人数:"))contestant_names = []for i in range(num_contestants):contestant_names.append(input("请输入选手姓名:"))scores = []for judge in judge_names:score = []for contestant in contestant_names:s = float(input(f"请输入{contestant}的{judge}得分:"))score.append(s)scores.append(score)# 计算每个选手的最终得分和名次final_scores = []for i in range(num_contestants):total_score = sum(scores[j][i] for j in range(num_judges))max_score = max(scores[j][i] for j in range(num_judges))min_score = min(scores[j][i] for j in range(num_judges))total_score -= max_score + min_scorefinal_scores.append(total_score / (num_judges - 2))# 按平均分排序并输出名次contestant_final_scores = sorted(final_scores, reverse=True)print("各选手的最终得分及名次如下(已经自动保存到文件中):")for i in range(num_contestants):print(f"{contestant_names[i]}: {final_scores[i]}, 名次: {i + 1}")with open("scores.txt", "w") as f:for i in range(num_contestants):print(f"{contestant_names[i]}: {final_scores[i]}, 名次: {i + 1}", file=f)
四、结果分析
总体的输出结果:
保存文件成功截图:
五、小结
这是一个简单的评分系统,包括用户登录、菜单选择和评分功能。用户在登录时需要输入用户名和口令,如果输入正确,则可以进入评分系统。在评分系统中,用户可以选择进入评分功能,然后输入评委人数和选手人数,分别输入评委姓名和选手姓名,以及他们的得分。系统会自动计算每个选手的最终得分和名次,并按平均分从高到低排序输出。最后,用户的评分结果会被保存到一个文件中。