day12-作业(学生系统完善1)

import json


def login_interface():
    """
    登录界面
    :return: 无
    """
    while True:
        print("登录注册:")
        print('='.center(40, '='))
        print("1.登录\n2.注册\n3.任意键退出")
        select1 = input("请输入:")
        print('='.center(40, '='))
        if select1 == '1':
            login()
        if select1 == '2':
            register()
        if not (select1 == '1' or select1 == '2'):
            break


def login():
    """
    登录入口
    :return: 无
    """
    while True:
        print('='.center(40, '='))
        name_str = input("输入账号:")
        password_str = input("输入密码:")
        try:
            with open("users.json", 'r', encoding='utf-8') as f:
                content = f.read()
                try:
                    users_list = json.loads(content)
                except json.decoder.JSONDecodeError:
                    users_list = []
                users_count = len(users_list)
                count = 0
                for user_dict1 in users_list[:]:
                    if name_str == user_dict1['账号'] and password_str == user_dict1['密码']:
                        print("登录成功!")
                        stu_sys()
                        return
                    if count == users_count - 1:
                        print("登录失败!")
                        break
                    count += 1
                if len(users_list) == 0:
                    print("登录失败!")
        except FileNotFoundError:
            print("登录失败!")
        print('='.center(40, '='))
        print("1.继续\n2.返回")
        select1 = input("请选择:")
        while True:
            if select1 == '1':
                break
            if select1 == '2':
                return
            print("输入错误!")
            print("1.继续\n2.返回")
            select1 = input("请选择:")


def register():
    """
    注册入口
    :return: 无
    """
    while True:
        print('='.center(40, '='))
        user_dict = {}
        name_str = input("输入账号:")
        password_str = input("输入密码:")
        try:
            with open("users.json", 'r', encoding='utf-8') as f:
                content = f.read()
                try:
                    users_list = json.loads(content)
                except json.decoder.JSONDecodeError:
                    users_list = []
                users_count = len(users_list)
                count = 0
                for user_dict1 in users_list[:]:
                    if name_str == user_dict1['账号']:
                        print("注册失败!")
                        break
                    if count == users_count - 1:
                        user_dict['账号'] = name_str
                        user_dict['密码'] = password_str
                        users_list.append(user_dict)
                        print("注册成功!")
                        break
                    count += 1
                if len(users_list) == 0:
                    user_dict['账号'] = name_str
                    user_dict['密码'] = password_str
                    users_list.append(user_dict)
                    print("注册成功!")
        except FileNotFoundError:
            users_list = []
            user_dict['账号'] = name_str
            user_dict['密码'] = password_str
            users_list.append(user_dict)
            print("注册成功!")
        with open("users.json", 'w', encoding='utf-8') as f:
            f.write(json.dumps(users_list))
        print('='.center(40, '='))
        print("1.继续\n2.返回")
        select1 = input("请选择:")
        while True:
            if select1 == '1':
                break
            if select1 == '2':
                return
            print("输入错误!")
            print("1.继续\n2.返回")
            select1 = input("请选择:")


def interface():
    """
    欢迎界面
    :return: 无
    """
    print('='.center(40, '='))
    print("欢迎ZH:")
    print(' '*15 + "1. 添加学生")
    print(' '*15 + "2. 查看学生")
    print(' '*15 + "3. 修改学生信息")
    print(' '*15 + "4. 删除学生")
    print(' '*15 + "5. 返回")
    print('='.center(40, '='))


def add_stu():
    """
    添加学生信息
    :return: 无
    """
    stu_file = open("D:\\学生.txt", 'a+')
    while True:
        print('='.center(40, '='))
        stu_name = input("请输入学生姓名:")
        stu_age = int(input("请输入学生的年龄:"))
        stu_tel = input("请输入学生的电话:")
        stu_file.write('姓名:' + stu_name + ' 年龄:%d' % stu_age + ' 电话:' + stu_tel + '\n')
        print("添加成功!")
        print('='.center(40, '='))
        while True:
            print("1.继续\n2.返回")
            n = input("请输入选择(1-2):")
            if n == '1':
                break
            if n == '2':
                stu_file.close()
                return
            print("输入错误!")


def view_stu():
    """
    查看学生信息
    :return: 无
    """
    stu_file = open("D:\\学生.txt")
    while True:
        print('='.center(40, '='))
        stu_name = input("请输入查看学生的姓名:")
        flag = 0
        for stu_str in stu_file.readlines():
            name_str = ''
            for ch in stu_str[3:]:
                if ch == ' ':
                    break
                name_str += ch
            if name_str == stu_name:
                print(stu_str[:-2])
                flag = 1
                break
        if flag == 0:
            print("很遗憾,未找到该学生信息!")
        print('='.center(40, '='))
        while True:
            print("1.继续\n2.返回")
            n = input("请输入选择(1-2):")
            if n == '1':
                stu_file.seek(0)
                break
            if n == '2':
                stu_file.close()
                return
            print("输入错误!")


def modify_stu():
    """
    修改学生信息
    :return: 无
    """
    while True:
        print('='.center(40, '='))
        stu_name = input("请输入修改学生的姓名:")
        flag = 0
        file_data = ""
        with open("D:\\学生.txt", 'r') as stu_file:
            for stu_str in stu_file.readlines():
                name_str = ''
                for ch in stu_str[3:]:
                    if ch == ' ':
                        break
                    name_str += ch
                if name_str == stu_name:
                    stu_age = int(input("请输入修改学生的年龄:"))
                    stu_tel = input("请输入修改学生的电话:")
                    stu_str = '姓名:' + stu_name + ' 年龄:%d' % stu_age + ' 电话:' + stu_tel + '\n'
                    flag = 1
                file_data += stu_str
        with open("D:\\学生.txt", 'w') as stu_file:
            stu_file.write(file_data)
        if flag == 0:
            print("很遗憾,未找到该学生信息!")
        if flag == 1:
            print("修改成功!")
        print('='.center(40, '='))
        while True:
            print("1.继续\n2.返回")
            n = input("请输入选择(1-2):")
            if n == '1':
                break
            if n == '2':
                return
            print("输入错误!")


def remove_stu():
    """
    删除学生信息
    :return: 无
    """
    while True:
        print('='.center(40, '='))
        stu_name = input("请输入删除学生的姓名:")
        flag = 0
        file_data = ""
        with open("D:\\学生.txt", 'r') as stu_file:
            for stu_str in stu_file.readlines():
                name_str = ''
                for ch in stu_str[3:]:
                    if ch == ' ':
                        break
                    name_str += ch
                if name_str == stu_name:
                    flag = 1
                    continue
                file_data += stu_str
        with open("D:\\学生.txt", 'w') as stu_file:
            stu_file.write(file_data)
        if flag == 0:
            print("很遗憾,未找到该学生信息!")
        if flag == 1:
            print("删除成功!")
        print('='.center(40, '='))
        while True:
            print("1.继续\n2.返回")
            n = input("请输入选择(1-2):")
            if n == '1':
                break
            if n == '2':
                return
            print("输入错误!")


def stu_sys():
    """
    学生系统
    :return: 无
    """
    while True:
        interface()
        n = input("请输入选择(1-5):")
        while True:
            if n == '1':
                add_stu()
            if n == '2':
                view_stu()
            if n == '3':
                modify_stu()
            if n == '4':
                remove_stu()
            if n == '5':
                return
            if not (1 <= int(n) <= 5):
                print("输入错误!")
                n = input("请输入选择(1-5):")
                continue
            interface()
            n = input("请输入选择(1-5):")


login_interface()

你可能感兴趣的:(day12-作业(学生系统完善1))