设计一个简单的学生成绩管理系统。设有学生成绩文件student.txt,每位学生成绩信息包含学号(num)、姓名(name)、性别(sex)、出生日期(birthday,包括年、月、日,分别表示为year,month,day)、3门功课的成绩(高数、C语言、大学物理)、总分和平均分。设计程序,要求从文件student.txt中读出学生成绩表,之后参对成绩表进行如下操作: (1)建立学生成绩信息结构数组(从student.txt读入数据) (2)显示。即输出出所有成绩。 (3)添加。可添加一条或多条记录。
时间: 2023-07-10 18:19:40 浏览: 178
好的,这是一个简单的学生成绩管理系统,可以实现从文件中读取学生成绩信息,显示所有成绩,添加记录等功能。
以下是程序的实现:
```python
import os
class Student:
def __init__(self, num, name, sex, year, month, day, math_score, c_score, physics_score):
self.num = num
self.name = name
self.sex = sex
self.year = year
self.month = month
self.day = day
self.math_score = math_score
self.c_score = c_score
self.physics_score = physics_score
self.total_score = math_score + c_score + physics_score
self.avg_score = self.total_score / 3.0
def print_info(self):
print("学号:%s,姓名:%s,性别:%s,出生日期:%s-%s-%s,数学成绩:%d,C语言成绩:%d,物理成绩:%d,总分:%d,平均分:%.2f" % (self.num, self.name, self.sex, self.year, self.month, self.day, self.math_score, self.c_score, self.physics_score, self.total_score, self.avg_score))
class ScoreManager:
def __init__(self):
self.students = []
def read_from_file(self, filename):
if os.path.exists(filename):
with open(filename, 'r') as f:
lines = f.readlines()
for line in lines:
items = line.strip().split(',')
num, name, sex, year, month, day, math_score, c_score, physics_score = items
student = Student(num, name, sex, int(year), int(month), int(day), int(math_score), int(c_score), int(physics_score))
self.students.append(student)
else:
print("文件%s不存在" % filename)
def print_all(self):
for student in self.students:
student.print_info()
def add_one(self):
num = input("请输入学号:")
name = input("请输入姓名:")
sex = input("请输入性别:")
year = int(input("请输入出生年份:"))
month = int(input("请输入出生月份:"))
day = int(input("请输入出生日期:"))
math_score = int(input("请输入数学成绩:"))
c_score = int(input("请输入C语言成绩:"))
physics_score = int(input("请输入物理成绩:"))
student = Student(num, name, sex, year, month, day, math_score, c_score, physics_score)
self.students.append(student)
print("添加成功!")
def add_multi(self):
n = int(input("请输入要添加的记录数:"))
for i in range(n):
self.add_one()
def run(self):
filename = "student.txt"
self.read_from_file(filename)
while True:
print("请选择操作:")
print("1、显示所有成绩")
print("2、添加一条记录")
print("3、添加多条记录")
print("4、退出程序")
choice = input("请输入选项:")
if choice == "1":
self.print_all()
elif choice == "2":
self.add_one()
elif choice == "3":
self.add_multi()
elif choice == "4":
break
else:
print("无效选项,请重新选择!")
if __name__ == '__main__':
manager = ScoreManager()
manager.run()
```
这个程序使用了三个类:`Student`表示一个学生,`ScoreManager`表示成绩管理系统,`main`函数用于运行整个程序。程序中使用了文件读写操作,可以从文件中读取学生成绩信息,也可以添加一条或多条记录。同时,程序提供了选择操作的菜单,方便用户进行使用。
阅读全文