这次的简易版成绩管理系统,主要有六大功能:增加学生信息、删除学生信息、修改学生信息、查找学生信息、显示学生信息、按 ID 排序。
实现效果如下:
![3bf0047858caf6eacc5b9a88cd47e0cb.png](https://i-blog.csdnimg.cn/blog_migrate/0b6205e558fecf260962af28df46ba9e.jpeg)
实现效果
保存与读取信息
首先判断当前路径下,是否存在database.txt这个文件。如果不存在的话,就新建一个。如果存在的话,就按行读取数据。其中,eval函数将读取的字符床解析为字典。然后,将学生信息存储在单链表中。
try: with open('database.txt', 'r') as f: for data in f.readlines(): SCS.append(eval(data))except: with open('database.txt', 'w') as f: pass
接着,如果用户选择退出程序的话,就遍历学生信息,并且以字符串的形式按行存储学生信息。
elif item == 0:with open('database.txt', 'w') as f: self.point = self.head while self.point.next: self.point = self.point.next f.writelines('{}'.format(self.point.data))exit()
增加学生信息
由于本次实现的成绩管理系统比较简易,我们只对学生 id 和 成绩进行限制。
其一,我们要确保学生 id 不能重复。当我们希望向链表中添加数据时,首先要迭代整个链表,判断要添加元素的 id 是否已经在链表中存在。
def unique_id(self, std_id): self.point = self.head while se