写一个学生管理系统可以实现添加学生消息、显示学生信息、修改学生信息、删除学生信息、查找学生信息、导入学生信息、导出学生信息的小程序
时间: 2023-08-01 17:10:24 浏览: 126
好的,下面是一个使用 Python 编写的学生管理系统小程序,可以实现添加、显示、修改、删除、查找、导入和导出学生信息的功能。
```python
import csv
# 定义学生类
class Student:
def __init__(self, id, name, age, gender):
self.id = id
self.name = name
self.age = age
self.gender = gender
self.scores = {}
def add_score(self, subject, score):
self.scores[subject] = score
def get_score(self, subject):
return self.scores.get(subject, 0)
def __str__(self):
return f'{self.id}\t{self.name}\t{self.age}\t{self.gender}'
# 定义学生管理系统类
class StudentManager:
def __init__(self):
self.students = {}
def add_student(self, student):
self.students[student.id] = student
def get_student(self, id):
return self.students.get(id)
def remove_student(self, id):
del self.students[id]
def search_student(self, keyword):
result = []
for student in self.students.values():
if keyword in student.id or keyword in student.name:
result.append(student)
return result
def import_students(self, filename):
with open(filename, 'r') as f:
reader = csv.reader(f)
for row in reader:
id, name, age, gender = row
student = Student(id, name, age, gender)
for i in range(4, len(row), 2):
subject, score = row[i], row[i+1]
student.add_score(subject, int(score))
self.add_student(student)
def export_students(self, filename):
with open(filename, 'w', newline='') as f:
writer = csv.writer(f)
for student in self.students.values():
row = [student.id, student.name, student.age, student.gender]
for subject, score in student.scores.items():
row.extend([subject, score])
writer.writerow(row)
# 定义主函数
def main():
manager = StudentManager()
while True:
print('欢迎使用学生管理系统')
print('1. 添加学生信息')
print('2. 显示学生信息')
print('3. 修改学生信息')
print('4. 删除学生信息')
print('5. 查找学生信息')
print('6. 导入学生信息')
print('7. 导出学生信息')
print('0. 退出系统')
choice = input('请输入您的选择:')
if choice == '1':
id = input('请输入学号:')
name = input('请输入姓名:')
age = input('请输入年龄:')
gender = input('请输入性别:')
student = Student(id, name, age, gender)
subject = input('请输入科目名称:')
score = int(input('请输入分数:'))
student.add_score(subject, score)
manager.add_student(student)
print('添加成功')
elif choice == '2':
print('学号\t姓名\t年龄\t性别\t语文\t数学\t英语')
for student in manager.students.values():
scores = [student.get_score('语文'), student.get_score('数学'), student.get_score('英语')]
print(f'{student}\t{"\t".join(str(s) for s in scores)}')
elif choice == '3':
id = input('请输入要修改的学生学号:')
student = manager.get_student(id)
if student:
print('学号\t姓名\t年龄\t性别')
print(student)
subject = input('请输入要修改的科目名称:')
score = int(input('请输入要修改的分数:'))
student.add_score(subject, score)
print('修改成功')
else:
print('学生不存在')
elif choice == '4':
id = input('请输入要删除的学生学号:')
student = manager.get_student(id)
if student:
manager.remove_student(id)
print('删除成功')
else:
print('学生不存在')
elif choice == '5':
keyword = input('请输入要查找的关键字:')
result = manager.search_student(keyword)
if result:
print('学号\t姓名\t年龄\t性别\t语文\t数学\t英语')
for student in result:
scores = [student.get_score('语文'), student.get_score('数学'), student.get_score('英语')]
print(f'{student}\t{"\t".join(str(s) for s in scores)}')
else:
print('没有找到符合条件的学生')
elif choice == '6':
filename = input('请输入要导入的文件名:')
manager.import_students(filename)
print('导入成功')
elif choice == '7':
filename = input('请输入要导出的文件名:')
manager.export_students(filename)
print('导出成功')
elif choice == '0':
print('谢谢使用')
break
else:
print('无效的选择')
if __name__ == '__main__':
main()
```
这个小程序使用了 Python 内置的 csv 模块来实现导入和导出学生信息的功能,可以将学生信息保存到 CSV 文件中,便于管理和备份。