美文网首页
学生管理系统4.0

学生管理系统4.0

作者: 我是一只菜鳥 | 来源:发表于2018-07-27 20:31 被阅读0次
"""__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()

相关文章

网友评论

      本文标题:学生管理系统4.0

      本文链接:https://www.haomeiwen.com/subject/wezgmftx.html