学生管理系统
学生类Student
属性:学号sid 姓名name 年龄age 性别gender 电话号码tel
学生管理系统Manager
学生管理系统的数据结构设置:
一个学生信息对应一个字典
整个系统的所有学生:所有学生对应一个列表,列表中的元素全是字典
整个系统:一个字典, 字典中有一个键(all_student), 对应的值是所有学生;
一个键count 对应的是学生的个数
这个字典需要做数据持久化,将数据存储到json文件中, 文件名就是admin.json
{
'all_student': [
{'sid':'stu0001', 'name': '张三', 'age': 89, 'gender':'男','tel': '237837293'},
{'sid':'stu0002', 'name': '张三', 'age': 89, 'gender':'男', 'tel': '237837293'},
{'sid':'stu0003', 'name': '张三', 'age': 89, 'gender':'男', 'tel': '237837293'},
{'sid':'stu0004', 'name': '张三', 'age': 89, 'gender':'男', 'tel': '237837293'}
],
'count': 4
}
方法有
1. 添加学生
学号根据第几个学生生成的
其他学生信息由input录入
2. 查找学生
输入1 --- 查看所有学生的信息
输入2 --- 根据姓名查找
输入3 --- 根据学号查找
输入其他符号 --- 退出查询
3. 删除学生
输入1 --- 按姓名删除
输入2 --- 按学号删除
输入其他符号 --- 放弃删除
程序的启动文件index.py
登陆账号和密码
如果输入的账号是admin和密码是123456,则登陆成功
在登陆成功的情况下 执行管理中的行为
输入1 ---- 添加学生
输入2 ---- 查询学生
输入3 ---- 删除学生
输入其他符号 ---- 结束操作
否则提示登陆失败 请重新登陆
class Student(object):
__slots__ = ("sid","name","age","gender","tel")
def __init__(self,sid,name,age,gender,tel):
self.sid=sid
self.name=name
self.age=age
self.gender=gender
self.tel=tel
import os,json
from stusys.student import Student
def singleton(cls):
instance=None
def getinstance(*args,**kwargs):
nonlocal instance
if not instance:
instance=cls(*args,**kwargs)
return instance
return getinstance
@singleton
class Manager(object):
#程序运行时加载本地文件
def __init__(self):
self.get_stu()
def get_stu(self):
if not os.path.exists(r"admin.json"):
self.sys={
'all_student': [
{'sid':'stu0001', 'name': '张三', 'age': 89, 'gender':'男','tel': '237837293'},
{'sid':'stu0002', 'name': '张三', 'age': 89, 'gender':'男', 'tel': '237837293'},
{'sid':'stu0003', 'name': '张三', 'age': 89, 'gender':'男', 'tel': '237837293'},
{'sid':'stu0004', 'name': '张三', 'age': 89, 'gender':'男', 'tel': '237837293'}
],
'count': 4
}
self.sevesys()
else:
self.loadsys()
#序列化
def sevesys(self):
with open(r"admin.json","w",encoding="utf-8") as f:
json.dump(self.sys,f)
#反序列化
def loadsys(self):
with open(r"admin.json","r",encoding="utf-8") as f:
self.sys=json.load(f)
#获取sid
def getsid(self):
studict=self.sys
num = int(studict["all_student"][-1]["sid"][3:])+1
# num=str(len(studict["all_student"])+1)
numzero=(4-len(str(len(studict["all_student"]))))*"0"
#sid="stu"+ numzero + num
sid="stu"+numzero+str(num)
return sid
#1. 添加学生
def add_stu(self):
sid=self.getsid()
name = input("请输入学生姓名:")
age = input("请输入学生年龄:")
gender = input("请输入学生性别:")
tel = input("请输入学生的电话号码:")
astu=Student(sid,name,age,gender,tel)
adict={'sid':astu.sid, 'name': astu.name, 'age': astu.age, 'gender':astu.gender,'tel': astu.tel}
self.sys['all_student'].append(adict)
self.sevesys()
#2. 查找学生
def find_stu(self):
while True:
print("该查询系统提供以下功能:".center(30,"="))
print("""输入1 --- 查看所有学生的信息
输入2 --- 根据姓名查找
输入3 --- 根据学号查找
输入其他符号 --- 退出查询
""")
num =input("请输入功能对应的编号:")
if num=="1":
for i in self.sys["all_student"]:
print(i)
elif num=="2":
name=input("请输入查询的姓名:")
for i in self.sys["all_student"]:
if i["name"]==name:
print(i)
break
else:
print("无此姓名的学生!")
elif num=="3":
sid = input("请输入查询的学号:")
for i in self.sys["all_student"]:
if i["sid"] == sid:
print(i)
break
else:
print("无此学号的学生!")
elif num not in range(1,4):
print("已退出查询")
return
#3.删除学生
def del_stu(self):
print("该查询系统提供以下功能:".center(30, "="))
print("""输入1 --- 按姓名删除
输入2 --- 按学号删除
输入其他符号 --- 放弃删除
""")
num = input("请输入功能对应的编号:")
if num == "1":
name = input("请输入删除学生的姓名:")
for i in self.sys["all_student"][:]:
if i["name"] == name:
self.sys["all_student"].remove(i)
self.sevesys()
print("已删除该学生")
break
else:
print("无此姓名的学生!")
elif num == "2":
sid = input("请输入删除学生的学号:")
for i in self.sys["all_student"][:]:
if i["sid"] == sid:
self.sys["all_student"].remove(i)
self.sevesys()
print("已删除该学生")
break
else:
print("无此姓名的学生!")
elif num not in range(1, 4):
print("放弃删除")
return
from stusys.student import Student
from stusys.manager import Manager
def load_sys():
while True:
account=input("请输入账号【按q退出】:")
if account=="q":
return
if account=="admin":
psw = input("请输入密码:")
if psw=="123456":
print("登陆成功")
operation()
return
else:
print("密码不对请重新输入:")
else:
print("账号不对请重新输入:")
def operation():
ma = Manager()
while True:
print("系统提供以下功能:".center(30, "="))
print("""输入1 ---- 添加学生
输入2 ---- 查询学生
输入3 ---- 删除学生
输入其他符号 ---- 结束操作
""")
num=input("请输入相应功能的编号【其他符号结束功能】:")
if num=="1":
ma.add_stu()
elif num=="2":
ma.find_stu()
elif num=="3":
ma.del_stu()
else:
print("已关闭,欢迎下次光临!")
return
if __name__=="__main__":
load_sys()