编写一个能管理多条学生信息的程序。
时间: 2023-05-29 17:01:33 浏览: 152
这个程序需要实现以下功能:
1. 添加学生信息:输入学生姓名、学号、年龄、性别、成绩等信息,将其存储到数据文件中;
2. 查询学生信息:通过学生姓名、学号、年龄、性别等条件查询学生信息,并将查询结果显示出来;
3. 修改学生信息:根据学生姓名、学号等条件修改学生信息;
4. 删除学生信息:根据学生姓名、学号等条件删除学生信息;
5. 显示所有学生信息:将所有学生信息显示出来;
6. 退出程序:退出程序并保存数据。
以下是一个简单的实现,使用了文件存储数据,并实现了以上功能:
```python
class Student:
def __init__(self, name, id, age, gender, grade):
self.name = name
self.id = id
self.age = age
self.gender = gender
self.grade = grade
def to_str(self):
return f"{self.name}\t{self.id}\t{self.age}\t{self.gender}\t{self.grade}"
class StudentManager:
def __init__(self):
self.db_path = "students.txt"
self.students = []
self.load_students()
def load_students(self):
try:
with open(self.db_path, "r") as f:
for line in f:
name, id, age, gender, grade = line.strip().split('\t')
self.students.append(Student(name, id, int(age), gender, int(grade)))
except FileNotFoundError:
pass
def add_student(self, name, id, age, gender, grade):
student = Student(name, id, age, gender, grade)
self.students.append(student)
self.save_students()
def search_students(self, condition, value):
result = []
for student in self.students:
if condition == "name" and value in student.name:
result.append(student)
elif condition == "id" and value in student.id:
result.append(student)
elif condition == "age" and value == str(student.age):
result.append(student)
elif condition == "gender" and value == student.gender:
result.append(student)
return result
def update_student(self, condition, value, attr, new_value):
for student in self.students:
if condition == "name" and value == student.name:
setattr(student, attr, new_value)
elif condition == "id" and value == student.id:
setattr(student, attr, new_value)
elif condition == "age" and str(value) == str(student.age):
setattr(student, attr, new_value)
elif condition == "gender" and value == student.gender:
setattr(student, attr, new_value)
self.save_students()
def delete_student(self, condition, value):
self.students = [s for s in self.students if not (condition == "name" and value == s.name) and not (
condition == "id" and value == s.id) and not (condition == "age" and str(value) == str(s.age)) and not (
condition == "gender" and value == s.gender)]
self.save_students()
def save_students(self):
with open(self.db_path, "w") as f:
for student in self.students:
f.write(student.to_str() + '\n')
def list_students(self):
for student in self.students:
print(student.to_str())
def menu(self):
print("1. Add student")
print("2. Search student")
print("3. Update student")
print("4. Delete student")
print("5. List all students")
print("0. Quit")
choice = input("Enter your choice: ")
if choice == "1":
name = input("Enter student name: ")
id = input("Enter student ID: ")
age = input("Enter student age: ")
gender = input("Enter student gender: ")
grade = input("Enter student grade: ")
self.add_student(name, id, int(age), gender, int(grade))
elif choice == "2":
condition = input("Enter search condition (name/id/age/gender): ")
value = input("Enter search value: ")
result = self.search_students(condition, value)
if result:
for s in result:
print(s.to_str())
else:
print("No result")
elif choice == "3":
condition = input("Enter search condition (name/id/age/gender): ")
value = input("Enter search value: ")
attr = input("Enter attribute to update (name/id/age/gender/grade): ")
new_value = input("Enter new value: ")
self.update_student(condition, value, attr, new_value)
elif choice == "4":
condition = input("Enter search condition (name/id/age/gender): ")
value = input("Enter search value: ")
self.delete_student(condition, value)
elif choice == "5":
self.list_students()
elif choice == "0":
self.save_students()
exit()
def run(self):
while True:
self.menu()
if __name__ == "__main__":
manager = StudentManager()
manager.run()
```
运行程序后,可以看到以下菜单:
```
1. Add student
2. Search student
3. Update student
4. Delete student
5. List all students
0. Quit
```
按照菜单提示进行操作即可。例如,添加一个学生信息:
```
Enter your choice: 1
Enter student name: Alice
Enter student ID: 1001
Enter student age: 20
Enter student gender: female
Enter student grade: 90
```
查询学生信息:
```
Enter your choice: 2
Enter search condition (name/id/age/gender): name
Enter search value: Ali
No result
```
修改学生信息:
```
Enter your choice: 3
Enter search condition (name/id/age/gender): name
Enter search value: Alice
Enter attribute to update (name/id/age/gender/grade): grade
Enter new value: 80
```
删除学生信息:
```
Enter your choice: 4
Enter search condition (name/id/age/gender): id
Enter search value: 1001
```
显示所有学生信息:
```
Enter your choice: 5
Alice 1001 20 female 80
```
退出程序:
```
Enter your choice: 0
```