学生成绩管理系统代码功能需求: (1)提供身份验证,和使用系统的权限设置、判定。 (2)(教师用户)能实现班级同学各学期各科成绩的录入(各科成绩包括: 英语、数学、数据结构、操作系统、面向对象程序设计)、并编辑好每个学生的信息,输入的数据必须保存在指定的文件中,以便反复使用。 (3)(学生用户或游客)提供对学号或姓名,各学期、各学科成绩的查询。 (4)(学生和教师用户)能按各学期 各学科分数排序输出(每一科都要能 排序输出)。 (5)(教师用户)能统计各科成绩分数段的分布(60以下、60~70、70~8 0、80~90、90~100)情况,并输出。

时间: 2023-06-10 14:06:08 浏览: 62
以下是一个简单的学生成绩管理系统代码,满足上述功能需求: ```python import csv class Student: def __init__(self, id, name, grade=[]): self.id = id self.name = name self.grade = grade def add_grade(self, subject, semester, score): for g in self.grade: if g['subject'] == subject and g['semester'] == semester: g['score'] = score return self.grade.append({'subject': subject, 'semester': semester, 'score': score}) def get_grade(self, subject=None, semester=None): if subject and semester: for g in self.grade: if g['subject'] == subject and g['semester'] == semester: return g['score'] elif subject: scores = [] for g in self.grade: if g['subject'] == subject: scores.append(g['score']) return scores elif semester: scores = [] for g in self.grade: if g['semester'] == semester: scores.append(g['score']) return scores else: return self.grade class Teacher: def __init__(self, username, password): self.username = username self.password = password def login(self, username, password): return self.username == username and self.password == password def add_student(self, id, name, grade=[]): student = Student(id, name, grade) with open('students.csv', 'a', newline='') as csvfile: writer = csv.writer(csvfile) writer.writerow([student.id, student.name]) return student def get_students(self): students = [] with open('students.csv', newline='') as csvfile: reader = csv.reader(csvfile) for row in reader: id, name = row grades = self.load_grades(id) student = Student(id, name, grades) students.append(student) return students def load_grades(self, id): grades = [] with open('grades.csv', newline='') as csvfile: reader = csv.reader(csvfile) for row in reader: if row[0] == id: grades.append({'subject': row[1], 'semester': row[2], 'score': int(row[3])}) return grades def save_grade(self, id, subject, semester, score): with open('grades.csv', 'a', newline='') as csvfile: writer = csv.writer(csvfile) writer.writerow([id, subject, semester, score]) def sort_students(self, subject, semester): students = self.get_students() students.sort(key=lambda s: s.get_grade(subject, semester), reverse=True) return students def get_grade_distribution(self, subject): distribution = {'60以下': 0, '60~70': 0, '70~80': 0, '80~90': 0, '90~100': 0} with open('grades.csv', newline='') as csvfile: reader = csv.reader(csvfile) for row in reader: if row[1] == subject: score = int(row[3]) if score < 60: distribution['60以下'] += 1 elif score < 70: distribution['60~70'] += 1 elif score < 80: distribution['70~80'] += 1 elif score < 90: distribution['80~90'] += 1 else: distribution['90~100'] += 1 return distribution ``` 使用示例: ```python # 添加学生 teacher = Teacher('admin', 'password') student1 = teacher.add_student('20190101', '张三') student2 = teacher.add_student('20190102', '李四') # 添加成绩 teacher.save_grade(student1.id, '英语', '2019-1', 80) teacher.save_grade(student1.id, '数学', '2019-1', 90) teacher.save_grade(student2.id, '英语', '2019-1', 70) teacher.save_grade(student2.id, '数学', '2019-1', 85) # 查询成绩 print(student1.get_grade('英语', '2019-1')) # 80 print(student2.get_grade('数学', '2019-1')) # 85 # 排序输出 students = teacher.sort_students('数学', '2019-1') for s in students: print(s.name, s.get_grade('数学', '2019-1')) # 统计成绩分布 distribution = teacher.get_grade_distribution('英语') print(distribution) ```

相关推荐

最新推荐

recommend-type

请写出判断三角形的代码-设计用例达到测试效果(语句覆盖-判定覆盖-条件组合覆盖-基本路径测试法).doc

请写出判断三角形的代码-设计用例达到测试效果(语句覆盖-判定覆盖-条件组合覆盖-基本路径测试法),基本路径测试法、程序控制流图、环路复杂度、基本路径组合。
recommend-type

会议信息管理系统详细设计

基于Intemet的学生信息管理系统—学生成绩管理系统[D].电子科技大学.成都:电子科技大学,2007. [4]郑若忠,王鸿武.数据库原理与方法.湖南科学技术出版社.  2. 总体结构设计 2.1. 层次图 2.2结构图 2.3 功能...
recommend-type

自控原理课程设计-炉温控制系统设计系统.docx

针对控制系统模型(传递函数),利用时域分析法、根轨迹分析法、频域分析法等方法判定系统的稳定性,分析系统的动态特性和稳态特性,判断系统性能是否满足性能指标要求,说明系统性能特征。 3、系统设计。选择合理的...
recommend-type

基于图像的答题卡的判定与成绩统计(Matlab版论文)

这是使用Matlab对某通用答题卡的识别与成绩统计,是一篇本科毕业设计论文,完全自创,后补源码文件
recommend-type

Java_Spring Boot 3主分支2其他分支和Spring Cloud微服务的分布式配置演示Spring Cl.zip

Java_Spring Boot 3主分支2其他分支和Spring Cloud微服务的分布式配置演示Spring Cl
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用遗传算法改进粒子群GA-PSO算法

![MATLAB智能算法合集](https://static.fuxi.netease.com/fuxi-official/web/20221101/83f465753fd49c41536a5640367d4340.jpg) # 2.1 遗传算法的原理和实现 遗传算法(GA)是一种受生物进化过程启发的优化算法。它通过模拟自然选择和遗传机制来搜索最优解。 **2.1.1 遗传算法的编码和解码** 编码是将问题空间中的解表示为二进制字符串或其他数据结构的过程。解码是将编码的解转换为问题空间中的实际解的过程。常见的编码方法包括二进制编码、实数编码和树形编码。 **2.1.2 遗传算法的交叉和
recommend-type

openstack的20种接口有哪些

以下是OpenStack的20种API接口: 1. Identity (Keystone) API 2. Compute (Nova) API 3. Networking (Neutron) API 4. Block Storage (Cinder) API 5. Object Storage (Swift) API 6. Image (Glance) API 7. Telemetry (Ceilometer) API 8. Orchestration (Heat) API 9. Database (Trove) API 10. Bare Metal (Ironic) API 11. DNS
recommend-type

JSBSim Reference Manual

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