本文共 5411 字,大约阅读时间需要 18 分钟。
## 定义界面列表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)## 函数:限制输入指令在正确范围内,不在则返回Truedef 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()
转载于:https://blog.51cto.com/13992211/2326200