请帮我设计一个程序,要求如下:设计一个同学通讯录 系统设计说明: 创建通讯录:输入学生的姓名、学号和电话号码等,并将它们存放在对应的数组中,每输入一组,记录数加1; 修改通讯录:输入需要修改记录的学号,通过循环查找到该记录后,再输入新数据替代原有数据; 删除通讯录:分别按学号和姓名进行删除; 排序通讯录:分别按学号和姓名进行排序。数据保存功能, 退出
时间: 2023-05-13 22:04:31 浏览: 115
以下是一个简单的同学通讯录系统的设计:
1. 创建通讯录:定义一个数组来存储学生的信息,每输入一组信息,记录数加1。
2. 修改通讯录:输入需要修改记录的学号,通过循环查找到该记录后,再输入新数据替代原有数据。
3. 删除通讯录:分别按学号和姓名进行删除,可以通过循环查找到需要删除的记录,然后将其从数组中删除。
4. 排序通讯录:分别按学号和姓名进行排序,可以使用快速排序或者冒泡排序等算法来实现。
5. 数据保存功能:可以将通讯录数据保存到文件中,以便下次使用时可以读取。
6. 退出:当用户选择退出时,程序应该保存数据并退出。
以下是一个简单的实现:
```python
class Student:
def __init__(self, name, id, phone):
self.name = name
self.id = id
self.phone = phone
class AddressBook:
def __init__(self):
self.students = []
self.count = 0
def add_student(self, name, id, phone):
student = Student(name, id, phone)
self.students.append(student)
self.count += 1
def modify_student(self, id, name=None, phone=None):
for student in self.students:
if student.id == id:
if name:
student.name = name
if phone:
student.phone = phone
return True
return False
def delete_student_by_id(self, id):
for student in self.students:
if student.id == id:
self.students.remove(student)
self.count -= 1
return True
return False
def delete_student_by_name(self, name):
for student in self.students:
if student.name == name:
self.students.remove(student)
self.count -= 1
return True
return False
def sort_by_id(self):
self.students.sort(key=lambda x: x.id)
def sort_by_name(self):
self.students.sort(key=lambda x: x.name)
def save_to_file(self, filename):
with open(filename, 'w') as f:
for student in self.students:
f.write(f"{student.name},{student.id},{student.phone}\n")
def load_from_file(self, filename):
with open(filename, 'r') as f:
lines = f.readlines()
for line in lines:
name, id, phone = line.strip().split(',')
self.add_student(name, id, phone)
if __name__ == '__main__':
book = AddressBook()
book.add_student('张三', '001', '123456789')
book.add_student('李四', '002', '987654321')
book.add_student('王五', '003', '135792468')
book.sort_by_id()
book.save_to_file('students.txt')
book.delete_student_by_id('002')
book.load_from_file('students.txt')
book.sort_by_name()
book.save_to_file('students.txt')
```