学习文件模块后,将之前做的学生信息管理系统添加文件模块。
将学生信息保存为字典添加到列表里。
def add():
dict1 = {}
sName = input("请输入学生姓名:")
sAge = eval(input("请输入学生年龄:"))
sNumber = eval(input("请输入学生学号:"))
tele_num = eval(input("请输入手机号码:"))
dict1["name"] = sName
dict1["age"] = sAge
dict1["sNumber"] = sNumber
dict1["tele_num"] = tele_num
L.append(dict1)
print("增加成功")
input("按任意键返回菜单")
这里以学号为索引值,如果学号不在学生库里则提示无此学生。
def modify():
num = eval(input("请输入学生学号:"))
index1 = -1
for i,dict in enumerate(L):
if dict.get("sNumber") == num:
index1 = i
break
if index1 != -1:
L[index1]['name'] = input("请输入新的姓名:")
L[index1]['age'] = eval(input("请输入新的年龄:"))
L[index1]['sNumber'] = eval(input("请输入新的学号:"))
L[index1]['tele_num'] = eval(input("请输入新的手机号:"))
print("修改成功")
else:
print("无此学生")
input("按任意键返回菜单")
删除学生也是以学号为索引值,如果学号不在学生库里则提示无此学生。
def delete():
num = eval(input("请输入要删除学生的学号:"))
index1 = -1
for i, dict in enumerate(L):
if dict.get("sNumber") == num:
index1 = i
break
if index1 != -1:
del L[index1]
print("删除成功")
else:
print("无此学生")
input("按任意键返回菜单")
查询成功此显示学生信息,否则提示无此学生。
def search():
num = eval(input("请输入要查询学生的学号:"))
index1 = -1
for i, dict in enumerate(L):
if dict.get("sNumber") == num:
index1 = i
break
if index1 != -1:
print("姓名:%s 年龄:%d 学号:%d 手机号码:%d" % (L[index1]["name"], L[index1]["age"], \
L[index1]["sNumber"], L[index1]["tele_num"]))
else:
print("无此学生")
input("按任意键返回菜单")
def prin():
if len(L) == 0:
print("无成员")
else:
for dict1 in L:
print("姓名:%s 年龄:%d 学号:%d 手机号码:%d"%(dict1["name"], dict1["age"],\
dict1["sNumber"], dict1["tele_num"]))
input("按任意键返回菜单")
因为每个学生的信息是字典类型,所以录入之前先转化为字符串。
def write_file():
file = open("student_list.data", 'w', encoding='utf-8')
for i in L:
file.write(str(i) + '\n')
file.close()
input("录入成功,按任意键返回菜单!")
读取到的信息是字符串,可以使用eval()函数将信息变为原来的字典类型,再添加到列表里。
def read_file():
try:
file = open("student_list.data", 'r', encoding='utf-8')
content = file.readlines()
for i in content:
L.append(eval(i))
file.close()
input("读取完成,按任意键返回菜单!")
except:
print("文件不存在")