将练习4的学生管理系统,添加文件存储的功能。 要求如下:
要求记录学生的学号、姓名、年龄、所属班级信息。可以新增学生。可以列出所有学生。可以根据学号查找学生。需要使用函数来模块化。要求使用文件来存储信息,下次打开系统,数据依然存在。
将第四天的学生管理系统,添加文件存储的功能。要求如下:
要求记录学生的学号、姓名、年龄、所属班级信息。
可以新增学生。
可以列出所有学生。
可以根据学号查找学生。
需要使用函数来模块化。
要求使用文件来存储信息,下次打开系统,数据依然存在。
import os
import json
def Rfile():
fp
= open("test.txt","r",encoding
='utf-8')
data
= fp
.read
()
if data
== "" :
fp
.close
()
return {}
fp
.close
()
return json
.loads
(data
)
def Wfile(data
):
fp
= open("test.txt", "w", encoding
='utf-8')
fp
.write
(json
.dumps
(data
))
fp
.close
()
def InputStuData() :
name
= input("请输入学生名称:")
age
= input("请输入学生年龄:")
classname
= input("请输入学生所属班级:")
dataall
= Rfile
()
if len(dataall
) > 0 :
for value
in dataall
.values
():
if value
["name"] == name
:
return False, "name 不能重复"
return True,{"name": name
, "age": age
, "classname": classname
}
def select() :
print("=" * 20)
id = input("请输入学生StuId(为0则获取全部):")
dataall
= Rfile
()
if id == "0":
print("=" * 20)
if len(dataall
) == 0:
print("暂时无数据")
else :
print(dataall
)
else:
ok
= dataall
.get
(id, False)
if ok
== False:
print("{} 不存在".format(id))
else:
print(ok
)
def GetId() :
print("=" * 20)
id = input("请输入学生StuId:")
dataall
= Rfile
()
ok
= dataall
.get
(id, False)
if ok
== False :
return 0
else:
return id,ok
def confirm() :
verification
= input("请确认是否继续(Y/N):")
if verification
== "Y" or verification
== "y":
return True
else:
return False
def add() :
global ikey
print("=" * 20)
ok
, studata
= InputStuData
()
if ok
:
ikey
=ikey
+ 1
dataall
= Rfile
()
dataall
[ikey
] = studata
Wfile
(dataall
)
print("id为{}的学员添加成功".format(ikey
))
else:
print(studata
)
def update() :
id, data
= GetId
()
if id == 0:
print("此id不存在")
else:
ok
, studata
= InputStuData
()
if ok
:
print("=" * 20)
print("old", data
)
print("new", studata
)
print("=" * 20)
t
= confirm
()
if t
:
dataall
= Rfile
()
dataall
[id] = studata
Wfile
(dataall
)
print("更新成功")
else:
print("取消更新")
else:
print("name 重复")
def delstu() :
print("=" * 20)
id, ok
= GetId
()
if id == 0:
print(id, "不存在")
else:
print("学生信息为\n", ok
)
verification
= confirm
()
if verification
:
dataall
= Rfile
()
del dataall
[id]
Wfile
(dataall
)
print("删除成功")
else:
print("取消删除")
def ExitProgram() :
os
._exit
(0)
def main():
Option_list
= {"1": add
, "2": select
, "3": update
, "4": delstu
, "5": ExitProgram
}
dataall
= Rfile
()
if dataall
== 0:
ikey
= 0
else:
ikey
= len(dataall
)
while True:
interface
= "学员管理系统\n1.添加学生\n2.查找学生\n3.更新学生信息\n4.删除学生\n5.退出系统\n请输入您的选择:"
num
= input(interface
)
f
= Option_list
.get
(num
, False)
if f
== False:
print("输入有误请重新输入")
else:
f
()
f
= os
.path
.exists
("test.txt")
if not f
:
open("text.txt","w")
main
()