用python写一段代码完成以下功能。 设计一个学生信息管理系统,包括学生成绩信息数据的求和、排序、查找、模糊查找、分类统计、输出、读写文件等基本操作,要求编程实现如下菜单驱动的学生信息管理系统: (1)录入每个学生的学号、姓名、学院和各科考试成绩; (2)计算每个学生的总分和平均分; (3)计算每门课程的总分和平均分; (4)计算每个学院的学生人数; (5)按每个学生的总分由高到低排出名次表; (6)按姓名的字典顺序排出成绩表; (7)按学号查询学生排名及其考试成绩; (8)按姓名查询学生排名及其考试成绩; (9)模糊查找:打印出学号以用户输入的数字开头的学生的信息; (10)按A(90~100)、B(70~89)、C(0~69)3个类别,对每门课程分别统计每个类别的人数以及所占的百分比; (11)输出每个学生的学号、姓名、学院、各科考试成绩,以及所有课程的总分、平均分、排名; (12)将每个学生的记录信息写入文件; (13)从文件中读出每个学生的记录信息并显示;

时间: 2023-12-16 21:26:24 浏览: 38
以下是一个简单的Python代码,实现了学生信息管理系统的基本功能,包括录入学生信息、计算学生总分和平均分、计算每门课程的总分和平均分、按每个学生的总分排序、按姓名的字典顺序排序、按学号和姓名查询学生信息、模糊查找、分类统计、输出学生信息、写入文件和读取文件等操作。需要注意的是,这只是一个简单的示例,实际情况下需要根据具体需求进行修改和完善。 ```python import operator students = [] def input_student(): while True: id = input("请输入学生学号(输入0结束录入):") if id == "0": break name = input("请输入学生姓名:") college = input("请输入学生学院:") scores = [] for i in range(3): score = input("请输入第{}门课的成绩:".format(i+1)) scores.append(int(score)) student = {"id": id, "name": name, "college": college, "scores": scores} students.append(student) def cal_total_avg(): for student in students: total = sum(student["scores"]) avg = total / len(student["scores"]) student["total"] = total student["avg"] = avg def cal_course_avg(): course_scores = [[0, 0] for _ in range(3)] # 每门课程的总分和人数 for student in students: for i in range(3): course_scores[i][0] += student["scores"][i] course_scores[i][1] += 1 course_avgs = [score[0] / score[1] for score in course_scores] return course_scores, course_avgs def cal_college_num(): college_nums = {} for student in students: college = student["college"] if college in college_nums: college_nums[college] += 1 else: college_nums[college] = 1 return college_nums def sort_by_total(): students.sort(key=operator.itemgetter("total"), reverse=True) def sort_by_name(): students.sort(key=operator.itemgetter("name")) def query_by_id(id): for i, student in enumerate(students): if student["id"] == id: return i, student return -1, None def query_by_name(name): for i, student in enumerate(students): if student["name"] == name: return i, student return -1, None def fuzzy_query(num): for student in students: if student["id"].startswith(num): print(student) def classify(): grades = {"A": [90, 100], "B": [70, 89], "C": [0, 69]} for i in range(3): for grade in grades: count = sum(1 for student in students if student["scores"][i] >= grades[grade][0] and student["scores"][i] <= grades[grade][1]) percent = count / len(students) * 100 print("第{}门课,{}级别人数:{},所占百分比:{:.2f}%".format(i+1, grade, count, percent)) def output_student(): for student in students: print("学号:{},姓名:{},学院:{},成绩:{},总分:{},平均分:{},排名:{}".format(student["id"], student["name"], student["college"], student["scores"], student["total"], student["avg"], students.index(student)+1)) def write_to_file(): with open("students.txt", "w") as f: for student in students: f.write("{},{},{},{},{},{},{},{},{}\n".format(student["id"], student["name"], student["college"], student["scores"][0], student["scores"][1], student["scores"][2], student["total"], student["avg"], students.index(student)+1)) def read_from_file(): global students students = [] with open("students.txt", "r") as f: for line in f: data = line.strip().split(",") student = {"id": data[0], "name": data[1], "college": data[2], "scores": [int(data[3]), int(data[4]), int(data[5])], "total": int(data[6]), "avg": float(data[7])} students.append(student) while True: print("学生信息管理系统") print("1. 录入学生信息") print("2. 计算学生总分和平均分") print("3. 计算每门课程的总分和平均分") print("4. 计算每个学院的学生人数") print("5. 按每个学生的总分由高到低排出名次表") print("6. 按姓名的字典顺序排出成绩表") print("7. 按学号查询学生排名及其考试成绩") print("8. 按姓名查询学生排名及其考试成绩") print("9. 模糊查找") print("10. 分类统计") print("11. 输出每个学生的信息") print("12. 写入文件") print("13. 从文件读取") print("0. 退出") choice = input("请输入您的选择:") if choice == "1": input_student() elif choice == "2": cal_total_avg() elif choice == "3": course_scores, course_avgs = cal_course_avg() for i in range(3): print("第{}门课的总分为{},平均分为{:.2f}".format(i+1, course_scores[i][0], course_avgs[i])) elif choice == "4": college_nums = cal_college_num() for college in college_nums: print("{}学院有{}名学生".format(college, college_nums[college])) elif choice == "5": sort_by_total() output_student() elif choice == "6": sort_by_name() output_student() elif choice == "7": id = input("请输入学号:") i, student = query_by_id(id) if i == -1: print("学生不存在") else: print("排名:{},成绩:{}".format(i+1, student["scores"])) elif choice == "8": name = input("请输入姓名:") i, student = query_by_name(name) if i == -1: print("学生不存在") else: print("排名:{},成绩:{}".format(i+1, student["scores"])) elif choice == "9": num = input("请输入数字:") fuzzy_query(num) elif choice == "10": classify() elif choice == "11": output_student() elif choice == "12": write_to_file() elif choice == "13": read_from_file() elif choice == "0": break else: print("无效选择,请重新输入") ```

最新推荐

recommend-type

python学生信息管理系统实现代码

主要介绍了python学生信息管理系统的实现代码,代码简单,复制即可使用,需要的朋友可以参考下
recommend-type

Python实现GUI学生信息管理系统

主要介绍了Python实现GUI学生信息管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

python+mysql实现学生信息查询系统

主要为大家详细介绍了python+mysql实现学生信息查询系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

详解用python实现基本的学生管理系统(文件存储版)(python3)

主要介绍了python实现基本的学生管理系统,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

函数版-简单的学生信息管理系统(python实现)

函数版-简单的学生信息管理系统(python实现)功能如下开始部分增加学生信息修改学生信息删除学生信息查询学生显示所有学生的信息 学了一段时间的python后,自己动手做了一个函数版-简单的学生信息管理系统。 功能...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB取整函数与Web开发的作用:round、fix、floor、ceil在Web开发中的应用

![MATLAB取整函数与Web开发的作用:round、fix、floor、ceil在Web开发中的应用](https://img-blog.csdnimg.cn/2020050917173284.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2thbmdqaWVsZWFybmluZw==,size_16,color_FFFFFF,t_70) # 1. MATLAB取整函数概述** MATLAB取整函数是一组强大的工具,用于对数值进行
recommend-type

我想做python的算法工程师,我应该学什么?学习的顺序是什么?网上有什么推荐的免费课程吗?回答具体精确一点不要太笼统

对于想要成为 Python 算法工程师的人来说,他们应该先从掌握 Python 的基础语法开始,然后学习数据结构和算法,并且要深入了解 Python 中的一些科学计算和数据处理库,比如 NumPy、Pandas 等。 学习的顺序可以是先学习基础语法和编程技巧,然后再学习数据结构和算法相关的知识,最后深入了解数据处理和科学计算相关的库。 对于免费课程的推荐,我建议你可以先去 Coursera、edX、Udacity 等网站上寻找相关课程,这些网站上有很多优质的 Python 编程和算法课程,你可以根据自己的需求和学习进度进行选择。此外,还可以考虑一些在线编程网站,如 HackerRank、L
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。