学生管理系统

学生管理系统

文件操作模块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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值