代码:
## 定义界面列表
stu_interface=[‘学生管理系统‘,‘1.管理员登录‘,‘2.学生登录‘]
admin_login=[‘管理员操作界面‘,‘1.管理员密码修改‘,‘2.添加学生的信息‘,‘3.删除学生的信息‘,‘4.修改学生的信息‘,‘5.查询学生的信息‘,‘6.列出学生的信息‘,‘7.退出系统‘]
stu_login=[‘学生操作界面‘,‘1.查询个人信息‘,‘2.修改信息‘]
stu_chInfo=[‘修改个人信息‘,‘1.修改年龄‘,‘2.修改密码‘]
flag=0 ## 标志位,用于确定当前界面位置
info_admin={‘admin‘:‘admin‘} ## 管理员信息
## 示例学生信息
info_st_ex={
‘000000‘:
{
‘name‘:‘tom‘,
‘sex‘:‘man‘,
‘age‘:18,
‘class‘:‘Class1 Grade2‘,
‘birthday‘:‘2000-1-1‘,
‘num‘:‘000000‘,
‘password‘:‘tom‘
}
}
info={} ##定义空列表用于存放信息
info.update(info_st_ex) ##将示例信息加入存放数据中方便测试
## 函数:根据数组信息转化为界面
def make_interface(li):
for i in range(len(li)):
if i == 0:
print(li[i].center(44,‘*‘))
print((‘ ‘*48).center(50,‘*‘))
else:
p=len([j for j in li[i].replace(‘.‘,‘0‘)if not j.isnumeric()])
print(li[i].center(48-p,‘ ‘).center(50-p,‘*‘))
if flag!=0:
print(‘输入q返回上一层‘.center(41,‘ ‘).center(43,‘*‘))
print((‘ ‘*48).center(50,‘*‘)+‘\n‘+‘*‘*50)
## 函数:限制输入指令在正确范围内,不在则返回True
def outofrange(li,cmd):
if cmd!=‘q‘:
if cmd not in [str(i) for i in range(1,len(li))]:
input(‘请输入正确的指令,按下Enter键返回‘)
return True
## 函数:利用flag标识返回对应的界面列表
def flag_turn():
if flag==0:
return stu_interface
elif flag==1:
return admin_login
elif flag==2:
return stu_login
elif flag==3:
return stu_chInfo
## 函数:用户登入函数
def login(cmd):
global flag
name_in=input(‘管理员账户:‘if cmd==‘1‘ else ‘学生账户:‘)
passwd_in=input(‘密码:‘)
if cmd==‘1‘ and name_in==‘admin‘and passwd_in==info_admin[‘admin‘]:
flag=1
elif cmd==‘2‘ and name_in in info and passwd_in==info[name_in][‘password‘]:
flag=2
global stu_in
stu_in=name_in
else:
print(‘登入失败,请检查您的用户名和密码是否正确‘)
flag=0
## 管理员界面操作函数
def admin(cmd):
global flag
if cmd== ‘1‘:
passwd_in=input(‘请输入当前管理员密码:‘)
if passwd_in==info_admin[‘admin‘]:
info_admin[‘admin‘]=input(‘请输入新密码:‘)
print(‘修改成功‘)
else:
print(‘与当前密码不符,请确认后重试‘)
elif cmd== ‘2‘:
print(‘添加学生信息:‘.center(50,‘*‘))
info[‘buf‘]=copy.copy(info_st_ex[‘000000‘])
for i in info[‘buf‘]:
if i==‘class‘:
li=input(i+‘(例:2,1表示 Class1 Grade2):‘).split(‘,‘)
info[‘buf‘][i]=‘Class‘+li[0]+‘ Grade‘+li[1]
else:
info[‘buf‘][i]=input(i+‘:‘)
else:
info[info[‘buf‘][‘num‘]]=info[‘buf‘]
info.pop(‘buf‘)
print(‘添加成功‘)
elif cmd== ‘3‘:
print(‘删除学生信息:‘.center(50,‘*‘)+‘\n已存在的学生信息:‘)
for i in info:
print(‘学号:‘+i+‘\t姓名:‘+info[i][‘name‘])
pop_in=input(‘输入学号删除指定信息:‘)
if pop_in in info:
info.pop(pop_in)
print(‘删除成功‘)
else:
print(‘请输入已存在的学生信息(学号):‘)
elif cmd== ‘4‘:
print(‘删除学生信息:‘.center(50,‘*‘)+‘\n已存在的学生信息:‘)
for i in info:
print(‘学号:‘+i+‘\t姓名:‘+info[i][‘name‘])
mod_in=input(‘输入学号确定修改对象:‘)
if mod_in in info:
for i,v in info[mod_in].items():
print(i+‘:‘+v)
while True:
mod_info=input(‘输入要修改的信息选项:输入q退出‘)
if mod_info in info[mod_in]:
info[mod_in][mod_info]=input(‘原始信息:‘+info[mod_in][mod_info]+‘\n输入新信息:‘)
print(‘修改成功‘)
elif mod_info==‘q‘:
break
else:
print(‘信息选项不存在‘)
else:
print(‘不存在该学生信息‘)
elif cmd== ‘5‘:
print(‘查看学生信息:‘.center(50,‘*‘)+‘\n已存在的学生信息:‘)
for i in info:
print(‘学号:‘+i+‘\t姓名:‘+info[i][‘name‘])
while True:
find_in=input(‘输入学号查看完整信息:输入q退出‘)
if find_in in info:
for i,v in info[find_in].items():
print(i+‘:‘+str(v))
elif find_in==‘q‘:
break
else:
print(‘该学号不存在‘)
elif cmd== ‘6‘:
print(‘所有学生信息:‘.center(50,‘*‘))
for i in info:
for j,k in info[i].items():
print(j+‘:‘+str(k))
print(‘*‘*50)
elif cmd== ‘7‘:
print(‘欢迎下次登入管理员系统‘.center(50,‘~‘))
exit()
if cmd==‘q‘:
flag=0
## 学生界面操作函数
def stu(cmd):
global flag
if cmd!=‘q‘:
cmd=int(cmd)
else:
flag=0
if cmd==1:
print(‘查询个人信息‘.center(50,‘*‘))
for i,v in info[stu_in].items():
print(i+‘:‘+str(v))
if cmd==2:
flag=3
## 学生修改信息函数
def modify_stu(cmd):
if cmd==‘1‘:
input(‘当前年龄:‘+str(info[stu_in][‘age‘])+‘\n新年龄:‘)
elif cmd==‘2‘:
if input(‘请输入当前密码:‘)==info[stu_in][‘password‘]:
info[stu_in][‘password‘]=input(‘请输入新密码:‘)
print(‘修改成功‘)
else:
print(‘密码错误,请核对后重试‘)
elif cmd==‘q‘:
global flag
flag=0
else:
print(‘请输入正确的指令‘)
## 指令输入函数
def cmd_input():
cmd=input()
if outofrange(flag_turn(),cmd):
return
if flag==0:
login(cmd)
elif flag==1:
admin(cmd)
elif flag==2:
stu(cmd)
elif flag==3:
modify_stu(cmd)
## 主函数
while True:
try:
make_interface(flag_turn())
cmd_input()
except Exception as error:
print(‘程序异常‘)
finally:
if input(‘Enter键继续 输入q退出程序‘)==‘q‘:
print(‘欢迎下次使用‘.center(50,‘~‘))
exit()
部分测试结果:
原文地址:http://blog.51cto.com/13992211/2326200
时间: 2024-11-06 21:47:17