# 三系统师生信息管理系统(文件版)
""" 思考: 1、请问如何实现文件内容增、删、改、查? 2、如何避免使用全局变量? 3、全局变量在函数里如何修改? 4、如何捕获异常为我所用? 介绍: 1、管理系统在生活中处处可见,把单一的功能集合到一起就能组成一个系统。本系统是在学生信息管理系统 改进而来,升级了的有:可以存储信息,多系统操作。 2、多系统操作,共分为管理员、教师端、学生端。 3、管理员默认账号:123456 默认密码:123456 4、隐藏功能:数字0,是返回(为了美观,而牺牲的功能) 知识点: 1、文件操作:增、删、改、查 2、类的继承:多继承,单继承 3、类与对象:类方法、公共属性 4、循环语句、条件语句、跳转语句 重点:with语句、旗帜、函数封装 不足: 1、由于split()函数无法分割'\n',所以本程序采用追加空格加换行' \n'的格式写入文件 所以当输入信息时,有空格,会导致空格后面的信息缺失。 2、界面太丑,提示语不够丰富,有待改善。 3、本程序还不够精简,代码注释较少,对基础较弱的道友不太友好,有待改善 创新: 1、输入信息时,可以限制输入字符类型,以达到规避出现BUG,例如:不可以输入空格。 2、文字显示太丑,可以改为图形化界面。 3、功能局限,可以适当添加。 """
# 三系统师生信息管理系统(文件版)
# 全局变量类 ==========================================================================
class Global:
# 设置归属地(默认:220703)
home_location = '220703'
# 设置随机位数
rand_digit = 4
# 设置重置密码
default_password = '123'
# 管理员工号
admin_id = '123456'
# 管理员密码
admin_password = '123456'
# 一级目录
one_dir = 'system data'
one_dir += '/'
# 二级目录
two_dir = 'info data'
two_dir += '/'
# 路径拼接
path_dir = one_dir + two_dir
# 菜单界面类 ==========================================================================
class UI(Global):
# 通用标题
@classmethod
def show_title(cls, info, space=0, num=9):
print(' '*space + '='*num + info + '='*num)
# 初始界面
@classmethod
def login_ui(cls):
cls.show_title(info='欢迎来到师生信息管理系统', num=3)
print(' '*3 + '1.注册\t\t2.登录')
# 身份确认(学生/教师)
@classmethod
def regist_type_ui(cls):
cls.show_title(info='欢迎来到注册账号管理系统', num=3)
print('1.学生注册\t\t2.教师注册')
# 学生端菜单界面
@classmethod
def stu_ui(cls):
cls.show_title(info='学生信息管理系统(学生端)', num=4)
print('1.查看学生信息\t2.修改学生信息')
print('3.修改学生密码\t0.退出')
# 教师端菜单界面
@classmethod
def teach_ui(cls):
cls.show_title(info='学生信息管理系统(教师端)', num=4)
print('1.查看教师信息\t2.修改教师信息')
print('3.修改教师密码\t4.重置学生密码')
print('5.查找学生信息\t6.遍历学生信息')
print('7.注销学生账号\t0.退出')
# 管理员菜单界面
@classmethod
def admin_ui(cls):
cls.show_title(info='学生信息管理系统(管理员)', num=4)
print('1.重置师生密码\t2.修改管理员密码')
print('3.查找师生信息\t4.设置账号归属地')
print('5.遍历师生信息\t6.设置随机数位数')
print('7.注销师生账号\t8.设置默认密码')
print('0.退出')
# 重置密码界面
@classmethod
def reset_password_ui(cls):
cls.show_title(info='欢迎来到重置密码管理系统', num=4)
print('1.重置学生密码\t2.重置教师密码')
# 遍历学生/教师信息
@classmethod
def output_info_ui(cls):
cls.show_title(info='欢迎来到遍历信息管理系统', num=4)
print('1.遍历学生信息\t2.遍历教师信息')
# 注销学生/教师账号
@classmethod
def logout_account_ui(cls):
cls.show_title(info='欢迎来到注销账号管理系统', num=4)
print('1.注销学生账号\t2.注销教师账号')
# 菜单功能选择类(单继承) ===============================================================
class Menu_option(UI):
num_list = list() # 定义全局变量(如果报错就把这行放在函数外面)
# 自然数列表
@classmethod
def char_list(cls):
cls.num_list = list()
for i in range(10):
cls.num_list.append(str(i))
# 输入编号(整数)
@classmethod
def input_num(cls, max, menu, min=0,):
cls.char_list() # 存入自然数字符
buf = '请选择功能:'
while True:
flag_not_num = 0 # 非整数旗帜
num = input(buf)
# 保证字符串是整数
for i in num:
if i not in cls.num_list:
flag_not_num = 1
break
# 在范围内返回整数
if not flag_not_num:
# 捕获异常
try:
if min <= int(num) <= max: # 等价于 int(num) >= min and int(num) <= max
return int(num)
except:
return -1
buf = '请重新选择功能(整数):'
# 打印菜单
if menu == 1:
cls.login_ui()
elif menu == 2:
cls.regist_type_ui()
elif menu == 3:
cls.stu_ui()
elif menu == 4:
cls.teach_ui()
elif menu == 5:
cls.admin_ui()
elif menu == 6:
cls.reset_password_ui()
elif menu == 7:
cls.output_info_ui()
elif menu == 8:
cls.logout_account_ui()
# 文件操作类 ==========================================================================
class File_handle:
# 创建一个空目录
@classmethod
def mkdir(cls, dir_name):
import os
# 判断目录是否存在,不存在立即创建
if os.path.exists(path=dir_name) is False:
os.mkdir(path=dir_name)
# 创建一个txt文件
@classmethod
def mkfile(cls, file_name):
import os
# 判断文件是否存在,不存在立即创建
if os.path.exists(path=file_name) is False:
with open(file=file_name, mode='w', encoding='utf-8'):
pass
# 特殊功能类 ==========================================================================
class Special_func(Global, File_handle):
# 随机产生多位数字
@classmethod
def produce_rand_num(cls, digit=4):
num = ''
import random
for i in range(digit):
num += str(random.choice(seq=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]))
return num
# 把全局变量写入文件
@classmethod
def write_the_message(cls):
# 把全局变量写入文件
with open(file=f'{cls.one_dir}admin.txt', mode='w', encoding='utf-8') as file:
file.writelines([cls.home_location+' ',str(cls.rand_digit)+' ',cls.default_password+' ',cls.admin_password])
# 读取全局变量文件
@classmethod
def read_the_message(cls):
# 判断文件是否存在
import os
if os.path.exists(path=f'{cls.one_dir}admin.txt') is False:
# 创建目录
cls.mkdir(dir_name=cls.one_dir)
cls.mkdir(dir_name=cls.path_dir)
return
# 读取文件信息
with open(file=f'{cls.one_dir}admin.txt', mode='r', encoding='utf-8') as file:
admin_info = file.readlines()
# 赋值
cls.home_location = admin_info[0].split()[0]
cls.rand_digit = int(admin_info[0].split()[1])
cls.default_password = admin_info[0].split()[2]
cls.admin_password = admin_info[0].split()[3]
# 菜单功能实现类(单继承) ===============================================================
class Menu_realizes(Menu_option, Special_func, File_handle):
# 随机生成学号/工号(不重复)
@classmethod
def random_id(cls):
# 随机产生数字
num = cls.produce_rand_num(digit=cls.rand_digit)
# 判断账号是否重复(在目录里查找)
import os
# 1.创建一个管理系统目录
cls.mkdir(dir_name=cls.one_dir)
# 2.创建一个学生信息系统目录
cls.mkdir(dir_name=cls.path_dir)
# 3.把学生信息目录的文件存入列表
stu_info = os.listdir(cls.path_dir)
# 4.拼接学号文件
stu_id = cls.home_location + num + '.txt'
# 判断此学号是否存在
if stu_id in stu_info:
cls.random_id()
return cls.buf
cls.buf = cls.home_location + num # 此变量是在作用域在方法内
return cls.buf
# 录入信息到管理系统
@classmethod
def input_info(cls, file_path, job):
data = ''
# 获取学号/工号
account = file_path.split('/')[2].split('.')[0]
if job == '学生':
print(f'您的学号是:{account}')
else:
print(f'您的工号是:{account}')
# 输入数据
while True:
password = input('请设置密码:') + '@)@@)&)#'
if password != '@)@@)&)#':
password = password.split('@)@@)&)#')[0]
break
while True:
name = input(f'请输入{job}姓名:') + '@)@@)&)#'
if name != '@)@@)&)#':
name = name.split('@)@@)&)#')[0]
break
while True:
phone_num = input(f'请输入{job}手机号:') + '@)@@)&)#'
if phone_num != '@)@@)&)#':
phone_num = phone_num.split('@)@@)&)#')[0]
break
while True:
addr = input(f'请输入{job}家庭地址:') + '@)@@)&)#'
if addr != '@)@@)&)#':
addr = addr.split('@)@@)&)#')[0]
break
# 保存数据
data += account + ' \n'
data += password + ' \n'
data += name + ' \n'
data += phone_num + ' \n'
data += addr + ' \n'
data += job + ' \n'
with open(file=file_path, mode='r+', encoding='utf-8') as file:
file.writelines(data)
# 打印信息
@classmethod
def output_info(cls, file_path, flag=False):
with open(file=file_path, mode='r+', encoding='utf-8') as file:
info_txt = file.readlines()
if info_txt[-1].split()[0] == '学生':
job = '学号:'
else:
job = '工号:'
# 打印信息
for i in range(6):
if i == 0:
print(f'{job}{info_txt[i].split()[0]}', end='\t')
elif i == 1:
print(f'密码:{info_txt[i].split()[0]}', end='\t')
elif i == 2:
print(f'姓名:{info_txt[i].split()[0]}', end='\t')
elif i == 3:
print(f'手机号:{info_txt[i].split()[0]}', end='\t')
elif i == 4:
print(f'家庭地址:{info_txt[i].split()[0]}', end='\t')
if flag and i == 5:
print(f'职业:{info_txt[i].split()[0]}', end='\t')
print()
# 注册
@classmethod
def regist_account(cls, job):
import os
# 随机生成学号/工号
account = cls.random_id()
# 文件路径拼接
file_name = os.path.join(cls.path_dir, account + '.txt')
# 创建一个txt文件,用于存储信息
cls.mkfile(file_name=file_name)
# 打开txt文件,开始存入信息
cls.input_info(file_path=file_name, job=job)
# 打印学生信息
cls.output_info(file_path=file_name)
# 确认是否保存信息
while True:
is_save = input('请确认是否保存信息(y/n):')
if is_save == 'n' or is_save == 'N':
os.remove(path=file_name)
print('注册失败!')
break
elif is_save == 'y' or is_save == 'Y':
print('注册成功!')
break
# 判断账号密码是否正确,并返回职业
@classmethod
def check_account_password(cls, account, password):
# 判断是否为管理员
if account == cls.admin_id and password == cls.admin_password:
return '管理员'
# 字符串拼接
account += '.txt'
# 获取目录文件名
import os
person = os.listdir(cls.path_dir)
# 判断账号是否存在
if account not in person:
if account == cls.admin_id + '.txt':
print('密码输入错误!')
return None
print('学号/工号不存在!')
return None
# 判断密码是否正确
with open(file=cls.path_dir + account, encoding='utf-8') as file:
if password != file.readlines()[1].split()[0]:
print('输入密码错误!')
return False
# 调整读写位置
file.seek(0, 0)
# print(file.readlines())
# 判断账号是学生还是教师
if '学生' == file.readlines()[-1].split()[0]:
return '学生'
else:
return '教师'
# 修改个人信息
@classmethod
def change_info(cls, file_name):
while True:
new_name = input('请输入新的姓名:') + '@)@@)&)#'
if new_name != '@)@@)&)#':
new_name = new_name.split('@)@@)&)#')[0]
break
while True:
new_phone_num = input('请输入新的手机号:') + '@)@@)&)#'
if new_phone_num != '@)@@)&)#':
new_phone_num = new_phone_num.split('@)@@)&)#')[0]
break
while True:
new_addr = input('请输入新的家庭地址:') + '@)@@)&)#'
if new_addr != '@)@@)&)#':
new_addr = new_addr.split('@)@@)&)#')[0]
break
# 字符串拼接
new_name += ' \n'
new_phone_num += ' \n'
new_addr += ' \n'
# 获取个人信息,并修改
with open(file=file_name, mode='r', encoding='utf-8') as file:
data = file.readlines()
data[2] = new_name
data[3] = new_phone_num
data[4] = new_addr
# 确认是否修改信息
while True:
buf = input('请确认是否保存信息(y/n):')
if buf == 'y' or buf == 'Y':
print('已成功修改信息')
break
elif buf == 'n' or buf == 'N':
print('已放弃修改信息')
return
# 保存更新修改后的信息
with open(file=file_name, mode='w', encoding='utf-8') as file:
file.writelines(data)
# 修改个人密码
@classmethod
def change_password(cls, file_name):
old_password = input('请输入旧密码:')
while True:
new_password = input('请输入新密码:') + '@)@@)&)#'
if new_password != '@)@@)&)#':
new_password = new_password.split('@)@@)&)#')[0]
break
# 读取文件数据
with open(file=file_name, encoding='utf-8') as file:
data = file.readlines()
# 校对旧密码,是否正确
if data[1].split()[0] != old_password:
print('旧密码输入有误!')
return
# 确认是否修改密码
while True:
buf = input('请确认是否修改密码(y/n):')
if buf == 'y' or buf == 'Y':
print('已成功修改密码')
break
elif buf == 'n' or buf == 'N':
print('已放弃修改密码')
return
# 替换旧密码
new_password += ' \n'
data[1] = new_password
# 重写到文件里
with open(file=file_name, mode='w', encoding='utf-8') as file:
file.writelines(data)
# 重置登录密码
@classmethod
def reset_password(cls, job):
# 确认身份
if job == '学生':
account = input('请输入学号:')
else:
account = input('请输入工号:')
name = input(f'请输入{job}姓名:')
# 获取目录信息
import os
dir_info = os.listdir(cls.path_dir)
# 判断账号是否存在
if f'{account}.txt' not in dir_info:
if job == '学生':
print('学号输入有误!')
else:
print('工号输入有误!')
return
# 获取文件信息
with open(file=f'{cls.path_dir + account}.txt', encoding='utf-8') as file:
file_info = file.readlines()
# 判断账号是否为学生/教师
if file_info[-1] != f'{job} \n':
if job == '学生':
print('此学号不存在!')
else:
print('此工号不存在!')
return
# 校对输入姓名
if name + ' \n' != file_info[2]:
print(f'{job}姓名输入有误!')
return
# 确认是否重置密码
while True:
buf = input('请确认是否重置密码(y/n):')
if buf == 'y' or buf == 'Y':
print('已成功重置密码')
break
elif buf == 'n' or buf == 'N':
print('已放弃重置密码')
return
# 修改密码
file_info[1] = f'{cls.default_password} \n'
# 写入文件信息
with open(file=f'{cls.path_dir + account}.txt', mode='w', encoding='utf-8') as file:
file.writelines(file_info)
# 查找个人信息
@classmethod
def find_info(cls, job=None, flag=False):
flag_none = 0
name = input(f'请输入需要查找姓名:')
# 获取目录信息
import os
dir_info = os.listdir(cls.path_dir)
# 遍历查找
for i in dir_info:
# 获取文件信息
with open(file=cls.path_dir + i, encoding='utf-8') as file:
file_info = file.readlines()
if file_info[2] == name + ' \n':
if not flag_none:
cls.show_title(info=f'查找的信息如下')
flag_none = 1
if str(job) + ' \n' == file_info[-1]:
cls.output_info(file_path=cls.path_dir + i, flag=flag)
elif not job:
cls.output_info(file_path=cls.path_dir + i, flag=flag)
if not flag_none:
print(f'姓名输入有误!')
# 打印所有学生/教师信息
@classmethod
def output_all_info(cls, job):
flag_none = 0
# 获取目录信息
import os
dir_info = os.listdir(cls.path_dir)
# 校对信息,并打印
for i in dir_info:
with open(file=cls.path_dir + i, encoding='utf-8') as file:
if file.readlines()[-1] == job + ' \n':
cls.output_info(file_path=cls.path_dir + i)
flag_none = 1
if not flag_none:
print('\n\t\t 暂无数据\n')
# 注销学号/工号
@classmethod
def logout_account(cls, job):
# 确认身份
if job == '学生':
account = input('请输入学号:')
else:
account = input('请输入工号:')
name = input(f'请输入{job}姓名:')
# 获取目录信息
import os
dir_info = os.listdir(cls.path_dir)
# 判断账号是否存在
if f'{account}.txt' not in dir_info:
if job == '学生':
print('学号输入有误!')
else:
print('工号输入有误!')
return
# 获取文件信息
with open(file=f'{cls.path_dir + account}.txt', encoding='utf-8') as file:
file_info = file.readlines()
# 判断账号是否为学生/教师
if file_info[-1] != f'{job} \n':
if job == '学生':
print('此学号不存在!')
else:
print('此工号不存在!')
return
# 校对输入姓名
if name + ' \n' != file_info[2]:
print(f'{job}姓名输入有误!')
return
# 改变赋值
if job == '学生':
job = '学号'
else:
job = '工号'
# 确认是否注销学号/工号
while True:
buf = input(f'请确认是否注销{job}(y/n):')
if buf == 'y' or buf == 'Y':
print(f'已成功注销{job}')
break
elif buf == 'n' or buf == 'N':
print(f'已放弃注销{job}')
return
# 删除文件
os.remove(path=f'{cls.path_dir + account}.txt')
# 修改管理员密码
@classmethod
def change_admin_password(cls):
old_password = input('请输入旧密码:')
while True:
new_password = input('请输入新密码:') + '@)@@)&)#'
if new_password != '@)@@)&)#':
new_password = new_password.split('@)@@)&)#')[0]
break
# 校验旧密码
if old_password != cls.admin_password:
print('旧密码输入错误!')
return
# 确认是否修改密码
while True:
buf = input('请确认是否修改管理员密码(y/n):')
if buf == 'y' or buf == 'Y':
print(f'已成功修改管理员密码')
break
elif buf == 'n' or buf == 'N':
print('已放弃修改管理员密码')
return
# 修改密码
cls.admin_password = new_password
# 写入文件
cls.write_the_message()
# 归属地设置
@classmethod
def set_home_location(cls):
while True:
new_home_location = input('请输入新归属地:') + '@)@@)&)#'
if new_home_location != '@)@@)&)#':
new_home_location = new_home_location.split('@)@@)&)#')[0]
break
# 确认是否修改归属地
while True:
buf = input('请确认是否修改归属地(y/n):')
if buf == 'y' or buf == 'Y':
print(f'已成功修改归属地')
break
elif buf == 'n' or buf == 'N':
print('已放弃修改归属地')
return
# 修改归属地
cls.home_location = new_home_location
# 写入文件
cls.write_the_message()
# 设置随机数位数
@classmethod
def set_rand_digit(cls):
while True:
new_rand_digit = input('请输入新随机数位数:') + '@)@@)&)#'
if new_rand_digit != '@)@@)&)#':
new_rand_digit = new_rand_digit.split('@)@@)&)#')[0]
break
# 确认是否修改随机数位数
while True:
buf = input('请确认是否修改归属地(y/n):')
if buf == 'y' or buf == 'Y':
print(f'已成功修改随机数位数')
break
elif buf == 'n' or buf == 'N':
print('已放弃修改随机数位数')
return
# 修改随机数位数
cls.rand_digit = new_rand_digit
# 写入文件
cls.write_the_message()
# 设置默认密码
@classmethod
def set_default_password(cls):
while True:
new_default_password = input('请输入新默认密码:') + '@)@@)&)#'
if new_default_password != '@)@@)&)#':
new_default_password = new_default_password.split('@)@@)&)#')[0]
break
# 确认是否修改默认密码
while True:
buf = input('请确认是否修改默认密码(y/n):')
if buf == 'y' or buf == 'Y':
print(f'已成功修改默认密码')
break
elif buf == 'n' or buf == 'N':
print('已放弃修改默认密码')
return
# 修改默认密码
cls.default_password = new_default_password
# 写入文件
cls.write_the_message()
# 菜单功能框架类(单继承) ===============================================================
class Menu_bar(Menu_realizes):
# 注册 or 登录
@classmethod
def login_option(cls, num):
# 注册 # 选择注册类型(学生/教师)
if num == 1:
while True:
cls.regist_type_ui()
num = cls.input_num(max=2, min=0, menu=2)
if num == 0:
print('已返回')
break
elif num == -1:
continue
Menu_bar.regist_option(num=num)
break
# 登录
elif num == 2:
account = input('请输入学号/工号:')
password = input('请输入密码:')
# 检查账号密码是否正确
job = cls.check_account_password(account=account, password=password)
# 进入不同的系统
# 学生系统
if job == '学生':
while True:
cls.stu_ui()
num = cls.input_num(max=3, menu=3)
if num == 0:
print('已返回')
return
cls.stu_option(num=num, account=account)
# 教师系统
elif job == '教师':
while True:
cls.teach_ui()
num = cls.input_num(max=7, menu=4)
if num == 0:
print('已返回')
return
cls.teach_option(num=num, account=account)
# 管理员系统
elif job == '管理员':
while True:
cls.admin_ui()
num = cls.input_num(max=8, menu=5)
if num == 0:
print('已返回')
return
cls.admin_option(num=num)
# 选择学生注册 or 教师注册
@classmethod
def regist_option(cls, num):
# 学生注册
if num == 1:
cls.show_title('学生注册')
cls.regist_account(job='学生')
# 教师注册
elif num == 2:
cls.show_title('教师注册')
cls.regist_account(job='教师')
# 选择学生功能
@classmethod
def stu_option(cls, num, account):
# 文件拼接
file_name = cls.path_dir + account + '.txt'
# 1.查看学生信息
if num == 1:
cls.show_title(info='查看学生信息')
cls.output_info(file_path=file_name)
# 2.修改学生信息
elif num == 2:
cls.show_title(info='修改学生信息')
cls.change_info(file_name=file_name)
# 3.修改学生密码
elif num == 3:
cls.show_title(info='修改学生密码')
cls.change_password(file_name=file_name)
# 选择教师功能
@classmethod
def teach_option(cls, num, account):
# 文件路径拼接
file_name = cls.path_dir + account + '.txt'
# 1.查看教师信息
if num == 1:
cls.show_title(info='查看教师信息')
cls.output_info(file_path=file_name)
# 2.修改教师信息
elif num == 2:
cls.show_title(info='修改教师信息')
cls.change_info(file_name=file_name)
# 3.修改教师密码
elif num == 3:
cls.show_title(info='修改教师密码')
cls.change_password(file_name=file_name)
# 4.重置学生密码
elif num == 4:
cls.show_title(info='重置学生密码')
cls.reset_password(job='学生')
# 5.查找学生信息
elif num == 5:
cls.show_title(info='查找学生信息')
cls.find_info(job='学生')
# 6.遍历学生信息
elif num == 6:
cls.show_title(info='遍历学生信息')
cls.output_all_info(job='学生')
# 7.注销学生账号
elif num == 7:
cls.show_title(info='注销学生账号')
cls.logout_account(job='学生')
# 选择管理员功能
@classmethod
def admin_option(cls, num):
# 1.重置师生密码
if num == 1:
while True:
cls.reset_password_ui()
num = cls.input_num(max=2, menu=6)
if num == 0:
print('已返回')
break
elif num == 1:
cls.show_title(info='重置学生密码')
cls.reset_password(job='学生')
break
elif num == 2:
cls.show_title(info='重置教师密码')
cls.reset_password(job='教师')
break
# 2.修改管理员密码
elif num == 2:
cls.show_title(info='修改管理员密码')
cls.change_admin_password()
# 3.查找师生信息
elif num == 3:
cls.show_title(info='查找师生信息')
cls.find_info(flag=True)
# 4.设置账号归属地
elif num == 4:
cls.show_title(info='设置账号归属地')
cls.set_home_location()
# 5.遍历师生信息
elif num == 5:
while True:
cls.output_info_ui()
num = cls.input_num(max=2, menu=7)
if num == 0:
print('已返回')
break
elif num == 1:
cls.show_title(info='遍历学生信息')
cls.output_all_info(job='学生')
break
elif num == 2:
cls.show_title(info='遍历教师信息')
cls.output_all_info(job='教师')
break
# 6.设置随机数位数
elif num == 6:
cls.show_title(info='设置随机数位数')
cls.set_rand_digit()
# 7.注销师生账号
elif num == 7:
while True:
cls.logout_account_ui()
num = cls.input_num(max=2, menu=8)
if num == 0:
print('已返回')
break
elif num == 1:
cls.show_title(info='注销学生账号')
cls.logout_account(job='学生')
break
elif num == 2:
cls.show_title(info='注销教师账号')
cls.logout_account(job='教师')
break
# 8.设置默认密码
elif num == 8:
cls.show_title(info='设置默认密码')
cls.set_default_password()
# 功能实现区(相当于C语言的主函数) =======================================================
while True:
# 读取文件
Menu_bar.read_the_message()
Menu_bar.login_ui() # 注册 or 登录界面
num = Menu_bar.input_num(max=2, min=0, menu=1) # 选择菜单功能编号
if num == 0:
Menu_bar.show_title(info='已退出管理系统', num=7)
Menu_bar.write_the_message() # 写入文件
break
Menu_bar.login_option(num=num) # 实现菜单功能
运行结果:
===欢迎来到师生信息管理系统===
1.注册 2.登录
请选择功能:2
请输入学号/工号:123456
请输入密码:123456
====学生信息管理系统(管理员)====
1.重置师生密码 2.修改管理员密码
3.查找师生信息 4.设置账号归属地
5.遍历师生信息 6.设置随机数位数
7.注销师生账号 8.设置默认密码
0.退出
请选择功能:0
已返回
===欢迎来到师生信息管理系统===
1.注册 2.登录
请选择功能:1
===欢迎来到注册账号管理系统===
1.学生注册 2.教师注册
请选择功能:1
=========学生注册=========
您的学号是:2207039778
请设置密码:123456
请输入学生姓名:周华
请输入学生手机号:10086
请输入学生家庭地址:广州
学号:2207039778 密码:123456 姓名:周华 手机号:10086 家庭地址:广州
请确认是否保存信息(y/n):y
注册成功!
===欢迎来到师生信息管理系统===
1.注册 2.登录
请选择功能:0
=======已退出管理系统=======