"""__author__=xx"""
import json
key_usersname = 'username'
key_password = 'password'
key_students = 'students'
key_st_id = 'st_id'
key_st_name = 'st_name'
key_st_age = 'st_age'
key_st_tel = 'st_tel'
# 打印登录界面函数
def login_print():
print('+++++++++++++++++++++++++++++++++++++')
print('+ 欢迎进入学生管理系统 +')
print('+ 1.登录 +')
print('+ 2.注册 +')
print('+ 0.退出 +')
print('+++++++++++++++++++++++++++++++++++++')
# 打印主界面函数
def main_print():
print('+++++++++++++++++++++++++++++++++++++')
print('+ 欢迎进入学生管理系统 +')
print('+ 1.添加学生 +')
print('+ 2.查看学生信息 +')
print('+ 3.删除学生 +')
print('+ 4.修改学生信息 +')
print('+ 0.退出 +')
print('+++++++++++++++++++++++++++++++++++++')
# 注册功能
def logon():
try:
with open('./files/users.json', 'r', encoding='utf-8') as f:
content = json.load(f)
except (FileNotFoundError, json.decoder.JSONDecodeError):
with open('./files/users.json', 'w', encoding='utf-8') as f:
json.dump( {}, f)
with open('./files/users.json') as f:
content = json.load(f)
usersname_input = input('输入用户姓名:')
while True:
if usersname_input in content:
print('用户名已存在!')
usersname_input = input('请重新输入用户姓名:')
else:
while True:
password_input1 = input('第一次密码:')
password_input2 = input('第二次密码:')
if password_input1 == password_input2:
content[usersname_input] = {key_password: password_input1, 'count': 0}
with open('./files/users.json', 'w', encoding='utf-8') as f:
json.dump(content, f)
print('用户注册成功!')
return
else:
print('二次密码输入不一致,请重新输入。')
# 登录功能
def login():
try:
with open('./files/users.json', 'r', encoding='utf-8') as f:
content = json.load(f)
except (FileNotFoundError, json.decoder.JSONDecodeError):
print('本系统中还没有任何用户!')
return False
while True:
usersname_input = input('用户名:')
password_input = input('密码:')
if (usersname_input in content) and (password_input == content[usersname_input][key_password]):
return usersname_input
else:
print('用户名或密码错误')
return False
# 获取用户文件
def get_user(usersname):
with open('./files/users.json', 'r', encoding='utf-8') as f:
content = json.load(f)
return content[usersname], content
# 添加学生
def add_students(usersname, users_content, content):
while True:
print('==添加学生==')
add_st_name = input('姓名:')
add_st_age = int(input('年龄:'))
add_st_tel = input('电话:')
count = users_content.get('count')
# 产生学号
count += 1
add_st_id = 'py1805' + str(count).rjust(3, '0')
# 创建学生字典
add_student = {key_st_name: add_st_name, key_st_age: add_st_age, key_st_tel: add_st_tel, key_st_id: add_st_id}
# 获取存学生的容器
all_students = users_content.get(key_students)
if all_students == None:
all_students = []
# 将学生添加到容器中
all_students.append(add_student)
users_content['count'] = count
users_content[key_students] = all_students
content[usersname] = users_content
with open('./files/users.json', 'w', encoding='utf-8') as f:
json.dump(content, f)
print('学生 %s 添加成功' % add_st_name)
# 给出选择
print('1.继续添加\n其他:返回上一层')
add_input = input('>>>')
if add_input != '1':
break
# 查看学生
def find_students( users_content):
while True:
print('==查看学生==')
print('1.查看所有的学生信息')
print('2.根据姓名查看学生信息')
print('3.根据学号查看学生信息')
print('其它.返回上一层')
find_input = input('>>>')
if find_input != '1' and find_input != '2' and find_input != '3':
break
all_students = users_content.get(key_students)
if (not all_students) or (not len(all_students)):
print('系统中还没有学生!!')
break
# 查看所有学生信息
if find_input == '1':
for item in all_students:
print(item)
# 根据姓名查看学生信息
if find_input == '2':
find_name = input('输入要查看的学生姓名:')
flag = True
for item in all_students:
if find_name == item[key_st_name]:
print(item)
flag = False
if flag:
print('找不到该学生信息!')
# 根据学号查找学生信息
if find_input == '3':
find_id = input('输入要查看的学生姓名:')
flag = True
for item in all_students:
if find_id == item[key_st_id]:
print(item)
flag = False
break
if flag:
print('找不到该学生信息!')
# 删除学生
def del_students(usersname, users_content, content):
while True:
print('==删除学生==')
print('1.根据姓名删除学生')
print('2.根据学号删除学生')
print('其它.返回上一层')
del_input = input('>>>')
if del_input != '1' and del_input != '2':
break
all_students = users_content.get(key_students)
if (not all_students) or (not len(all_students)):
print('系统中还没有学生!!')
break
# 根据名字删除学生
if del_input == '1':
del_name = input('输入要删除学生的姓名:')
flag = True
index_list = []
for index in range(len(all_students)):
if all_students[index][key_st_name] == del_name:
print(index, all_students[index])
index_list.append(index)
flag = False
if flag:
print('没有找到相关的学生信息!')
else:
del_num = int(input('输入要删除的学生下标'))
if del_num in index_list:
del all_students[del_num]
print('删除成功!')
users_content[key_students] = all_students
content[usersname] = users_content
with open('./files/users.json', 'w', encoding='utf-8') as f:
json.dump(content, f)
else:
print('下标输入不正确!')
# 根据学号删除学生
if del_input == '2':
del_id = input('输入要删除学生的学号:')
flag = True
for index in range(len(all_students)):
if all_students[index][key_st_id] == del_id:
print(index, all_students[index])
del all_students[index]
flag = False
print('删除成功!')
users_content[key_students] = all_students
content[usersname] = users_content
with open('./files/users.json', 'w', encoding='utf-8') as f:
json.dump(content, f)
break
if flag:
print('没有找到相关的学生信息!')
# 修改学生成绩
def change_students(usersname, users_content, content):
while True:
print('==修改学生==')
print('1.根据姓名修改学生')
print('2.根据学号修改学生')
print('其它.返回上一层')
change_input = input('>>>')
if change_input != '1' and change_input != '2':
break
all_students = users_content.get(key_students)
if (not all_students) or (not len(all_students)):
print('系统中还没有学生!!')
break
# 根据姓名修改学生信息
if change_input == '1':
change_name = input('输入要修改的学生姓名:')
flag = True
index_list = []
for index in range(len(all_students)):
if all_students[index][key_st_name] == change_name:
print(index, all_students[index])
index_list.append(index)
flag = False
if flag:
print('没有找到相关的学生信息!')
else:
change_num = int(input('输入要修改的学生下标'))
if change_num in index_list:
add_st_name = input('姓名:')
add_st_age = int(input('年龄:'))
add_st_tel = input('电话:')
all_students[change_num][key_st_name] = add_st_name
all_students[change_num][key_st_age] = add_st_age
all_students[change_num][key_st_tel] = add_st_tel
users_content[key_students] = all_students
content[usersname] = users_content
with open('./files/users.json', 'w', encoding='utf-8') as f:
json.dump(content, f)
print('修改成功!')
else:
print('下标输入不正确!')
# 通过学号修改学生信息
if change_input == '2':
change_id = input('输入要修改的学生学号:')
flag = True
for index in range(len(all_students)):
if all_students[index][key_st_id] == change_id:
print(index, all_students[index])
add_st_name = input('姓名:')
add_st_age = int(input('年龄:'))
add_st_tel = input('电话:')
all_students[index][key_st_name] = add_st_name
all_students[index][key_st_age] = add_st_age
all_students[index][key_st_tel] = add_st_tel
users_content[key_students] = all_students
content[usersname] = users_content
with open('./files/users.json', 'w', encoding='utf-8') as f:
json.dump(content, f)
print('修改成功!')
break
if flag:
print('没有找到相关的学生信息!')
if __name__ == '__main__':
while True:
login_print()
login_input = input('>>>')
# 退出功能
if login_input == '0':
break
# 登录功能
if login_input == '1':
usersname = login()
if usersname:
while True:
main_print()
button_input = input('>>>')
# 退出登录
if button_input == '0':
break
# 添加学生
if button_input == '1':
users_content, content = get_user(usersname)
add_students(usersname, users_content, content)
# 查看学生
if button_input == '2':
users_content, content = get_user(usersname)
find_students(users_content)
# 删除学生
if button_input == '3':
users_content, content = get_user(usersname)
del_students(usersname, users_content, content)
# 修改学生信息
if button_input == '4':
users_content, content = get_user(usersname)
change_students(usersname, users_content, content)
# 注册功能
if login_input == '2':
logon()
网友评论