赞
踩
上一次,公众号介绍了如何使用 Python 实现单链表,下面让我们一探单链表的简单应用:在命令行,实现简易版成绩管理系统。
这次的简易版成绩管理系统,主要有六大功能:增加学生信息、删除学生信息、修改学生信息、查找学生信息、显示学生信息、按 ID 排序。
实现效果如下:
首先判断当前路径下,是否存在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('{}\n'.format(self.point.data))
exit()
由于本次实现的成绩管理系统比较简易,我们只对学生 id 和 成绩进行限制。
其一,我们要确保学生 id 不能重复。当我们希望向链表中添加数据时,首先要迭代整个链表,判断要添加元素的 id 是否已经在链表中存在。
def unique_id(self, std_id):
self.point = self.head
while self.point.next:
self.point = self.point.next
if self.point.data['id'] == std_id:
return False
return True
其二,我们要确保学生成绩在 0 ~ 100 分之间。当用户完成输入时,需要判断是否要保存数据,如果否,那么就不进行插入数据操作。为了降低用户误输入造成的影响,我们设定四种用户可能输入的字符:[‘y’, ‘yes’, ‘Y’, ‘Yes’]。
最后,我们以字典的形式插入学生信息。
# 增加信息
def add_info(self):
# id 不能重复
# 成绩不能超出范围
name = input('姓名:')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。