学生管理系统
文件操作模块textFileManager.py
def read_txt_file(path: str):
"""
读普通文本文件操作
:param path: 文本路径
:return: 读到的文本数据
"""
with open(path, encoding='utf-8') as f:
return f.read()
def write_txt_file(path: str, date: str, mode='w'):
"""
将字符串数据写入普通文件中
:param path: 文件路径
:param date: 被写入的数据
:param mode: 读写方式,默认是'w'
:return: None
"""
with open(path, mode, encoding='utf-8') as f:
f.write(date)
def read_json_file(path: str, mode='r'):
"""
打开json文件
:param path: 文件地址
:param mode: 读写方式 ,默认是'r'
:return: f.read()
"""
with open(path, mode, encoding='utf-8') as f:
return f.read()
def write_json_file(path: str, date, mode='w'):
"""
将字符串写入json文件
:param path: 文件地址
:param date: 写入字符串
:param mode: 读写方式 ,默认是'w'
:return: None
"""
# path = f'files\\{uer_name}.json'
f = open(path, mode, encoding='utf-8')
f.write(date)
f.close()
登录界面模块login_registration.py
from fileManager.textFileManager import read_txt_file
from fileManager.textFileManager import write_txt_file
import json
import studentSystem
def main():
try:
# 读主页的内容
page = read_txt_file(r'files\homePage')
print(page)
n = int(input('请选择(1-3):'))
if n == 1:
login()
elif n == 2:
login2()
elif n == 3:
print('感谢使用')
return
else:
raise ValueError
except ValueError:
print('输入错误')
return main()
def detection():
try:
result = read_txt_file(r'files\user_date.json')
result = json.loads(result)
return result
except (FileNotFoundError, json.decoder.JSONDecodeError):
write_txt_file(r'files\user_date.json', json.dumps({}))
result = json.loads(read_txt_file(r'files\user_date.json'))
return result
def select(num):
if num == 1:
return login()
elif num == 2:
return login2()
else:
print('无效输入')
num = int(input('请输入你的选择:'))
return select(num)
def login():
num = input('请输入账号:')
password = input('请输入密码:')
result = detection()
while f'{num}' in result:
if result[f'{num}'] == password:
print('登录成功')
studentSystem.user_name = f'{num}'
studentSystem.main()
return main()
else:
print('登录失败!密码错误')
password = input('请输入密码:')
else:
print('登陆失败!该账号未注册')
return main()
def login2():
num = input('请输入账号(3-6位):')
if 3 <= len(num) <= 6:
password = input('请输入密码(6-12位):')
if 6 <= len(password) <= 12:
result = detection()
if f'{num}' not in result:
result[f'{num}'] = password
write_txt_file(r'files\user_date.json', json.dumps(result))
print('恭喜你注册成功')
return main()
else:
print('注册失败!该账号已经注册过!')
print('请选择后续操作:输入1直接登录 输入2重新注册')
num1 = int(input('请输入你的选择:'))
select(num1)
else:
print('密码格式错误!')
return login2()
else:
print('账号格式错误!')
return login2()
if __name__ == '__main__':
main()
学生管理系统
from fileManager.textFileManager import write_json_file
from fileManager.textFileManager import read_json_file
import json
user_name = None
def main():
show_manager()
page = open(r'files/systemPage', encoding='utf-8')
print(page.read())
try:
n = int(input('请输入数字执行对应的操作:'))
path = f'files\\{user_name}.json'
# path_num = f'files\\{user_name}_num.json'
gen = create_stu_num(user_name)
if n == 1:
add_student(gen, path)
elif n == 2:
check_stu(path)
elif n == 3:
alter(path, f'{user_name}')
elif n == 4:
try:
print('1.按学号删除')
print('2.按姓名删除')
delete_way = int(input('请输入你的选择:'))
if delete_way == 1:
del_stu(path)
elif delete_way == 2:
del_stu_name(path)
else:
raise ValueError
except ValueError:
print('输入错误')
return main()
elif n == 5:
return
else:
raise ValueError
except ValueError:
print('输入错误')
return main()
def show_manager():
print(f'☺☺☺欢迎{user_name}')
# 添加学生后续的操作
def add_student2(num1, path):
print('添加成功!请选择后续操作')
print('1.继续添加')
print('2.回到选择页面')
while True:
re = int(input('请输入选择:'))
if re == 1:
return add_student(num1, path)
elif re == 2:
return main()
else:
print('输入错误!')
continue
# 添加学生
def add_student(num1, path):
name = input('请输入学生的姓名:')
age = input('请输入学生的年龄:')
tel = input('请输入学生的电话:')
dict1 = {'学号': f'{user_name}2020{int(next(num1)):0>3}', 'name': name, 'age': age, 'tel': tel}
try:
result = read_json_file(path)
list_json = json.loads(result)
list_json.append(dict1)
write_json_file(path, json.dumps(list_json))
add_student2(num1, path)
except (FileNotFoundError, json.decoder.JSONDecodeError):
write_json_file(path, json.dumps([dict1]))
add_student2(num1, path)
# result = read_json_file(path)
return main()
# 查看学生
def check_stu(path):
try:
result = read_json_file(path)
stu_list = json.loads(result)
if len(stu_list):
for i in stu_list:
print(i)
return main()
else:
print('该用户未添加学生')
return main()
except (FileNotFoundError, json.decoder.JSONDecodeError):
print('该用户未添加学生')
return main()
# 修改学生信息的后续操作
def alter2(path, user):
print('1.继续修改')
print('2.返回选择界面')
try:
re = int(input('请输入你的选择'))
if re == 1:
return alter(path, user)
elif re == 2:
return main()
else:
raise ValueError
except ValueError:
print('输入错误')
return alter2(path, user)
# 修改学生信息
def alter(path, user):
try:
alter0 = int(input('请输入想要修改学生对应的学号数字:'))
len1 = len(user)
flag = True
try:
result = read_json_file(path)
list_json = json.loads(result)
for massage in list_json:
if int(massage['学号'][len1 + 4:]) == alter0:
flag = False
print('请输入需要修改的内容')
print('****1.修改name')
print('****2.修改age')
print('****3.修改tel')
try:
alter_num = int(input('请输入你想修改的项目:'))
if alter_num == 1:
new_name = input('请输入新名字:')
massage['name'] = new_name
elif alter_num == 2:
new_age = input('请输入新年龄:')
massage['age'] = new_age
elif alter_num == 3:
new_tel = input('请输入新电话:')
massage['tel'] = new_tel
else:
raise ValueError
except ValueError:
print('无效输入')
return alter(path, user)
write_json_file(path, json.dumps(list_json))
if flag:
print('未找到该名学生')
return alter2(path, user)
else:
print('修改成功,请继续后续操作')
return alter2(path, user)
except (TypeError, ValueError):
print('无效输入')
return alter(path, user)
except ValueError:
print('无效输入')
return alter(path, user)
# 删除学生后续操作
def del_stu_after(path, func1):
print('1.继续删除其他学生')
print('2.查看剩余学生')
print('3.返回选择界面')
try:
re = int(input('请输入选择的操作'))
if re == 1:
return func1(path)
elif re == 2:
return check_stu(path)
elif re == 3:
return main()
else:
print('输入错误')
return del_stu_after(path, func1)
except ValueError:
print('输入错误')
return del_stu_after(path, func1)
# 删除学生按学号
def del_stu(path):
flag = True
try:
result = read_json_file(path)
list_json = json.loads(result)
if len(list_json):
del_num = int(input('请输入需要删除的学生的学号:'))
for massage in list_json:
if int(massage['学号'][2:]) == del_num:
flag = False
list_json.remove(massage)
write_json_file(path, json.dumps(list_json))
if flag:
print('未找到该学生')
return del_stu_after(path, del_stu)
else:
print('删除成功,请选择后续操作')
return del_stu_after(path, del_stu)
else:
print('没有学生能再删除了')
return main()
except (FileNotFoundError, json.decoder.JSONDecodeError):
print('没有学生能再删除了')
return main()
# 删除学生按姓名
def del_stu_name(path):
flag = True
try:
result = read_json_file(path)
list_json = json.loads(result)
com_stu_name = []
if len(list_json):
del_name = input('请输入学生姓名:')
for dict_stu in list_json:
if dict_stu['name'] == del_name:
flag = False
com_stu_name.append(dict_stu)
if flag:
print('没有找到该学生')
return del_stu_name(path)
else:
len_stu = len(com_stu_name)
for i in com_stu_name:
print(i)
del_num = int(input(f'请按顺序输入想要删除的学生的序号(1-{len_stu}):'))
list_json.remove(com_stu_name[del_num-1])
write_json_file(path, json.dumps(list_json))
return del_stu_after(path, del_stu_name)
except (FileNotFoundError, json.decoder.JSONDecodeError):
print('没有学生能再删除了')
return main()
def create_stu_num(user):
while 1:
try:
result = read_json_file(r'files/students_num.json')
list_num = json.loads(result)
if f'{user}' in list_num:
list_num[f'{user}'] += 1
print('try1')
else:
list_num[f'{user}'] = 1
print('try2')
write_json_file(r'files/students_num.json', json.dumps(list_num))
yield list_num[f'{user}']
except (FileNotFoundError, json.decoder.JSONDecodeError):
print('expect')
dict1 = {f'{user}': 1}
write_json_file(r'files/students_num.json', json.dumps(dict1))
yield 1
if __name__ == '__main__':
main()