代码:
- ## 定义界面列表
- 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://www.bubuko.com/infodetail-2872942.html