15.信息登录系统

本文介绍了一个简易的学生信息管理系统,包括用户登录、注册、添加学生信息、查询、修改和删除等功能。系统通过文本文件存储数据,实现了基本的数据操作。
"""
Author:泽万
Time:2021/12/16 20:08
"""

import os


def establish():
    # 创建文件夹
    if os.path.exists(r'./files'):
        pass
    else:
        os.makedirs(r'./files')


def create_a_document():
    # 如果没有文件就添加,如果有就跳过执行下面循环。

    try:
        open('files/mima.txt')
    except:
        open('files/mima.txt', 'w', encoding='utf-8').write(str([]))

    try:
        open('files/chakan.txt')
    except:
        open('files/chakan.txt', 'w', encoding='utf-8').write("""-----查看学生-----

    ◇ 1.查看全部学生
    ◇ 2.输入名字查看
    ◇ 3.输入学号查看
    ◇ 其他:返回
""")

    try:
        open('files/count.txt')
    except:
        open('files/count.txt', 'w', encoding='utf-8').write(str(0))

    try:
        open('files/fuhao.txt')
    except:
        open('files/fuhao.txt', 'w', encoding='utf-8').write("""=====================================
       **欢迎来到学生登录系统**

          ◇ 1. 登    录
          ◇ 2. 注    册
          ◇ 3. 退    出

=====================================
""")

    try:
        open('files/fuhao1.txt')
    except:
        open('files/fuhao1.txt', 'w', encoding='utf-8').write("""===================================
❀ ❀ 欢迎%s:

    ◇ 1. 添加学生
    ◇ 2. 查看学生
    ◇ 3. 修改学生
    ◇ 4. 删除学生
    ◇ 5. 返   回

===================================
""")

    try:
        open('files/shanchu.txt')
    except:
        open('files/shanchu.txt', 'w', encoding='utf-8').write("""◇ 1.姓名查找
◇ 2.学号查找
◇ 其他:返回
""")


def enter():
    # 登录
    f = eval(open('files/mima.txt', encoding='utf-8').read())  # type:list     # 打开文件,并去掉字符串,将字典保存在f中
    account_number = input('输入账号:')
    for i in f:
        if i['register'] == account_number:
            break

    else:
        print('账号不存在!')
        return

    password = input('请输入密码:')
    if password == i['password']:
        print('登录成功。')
        f1 = open('files/fuhao1.txt', encoding='utf-8').read()  # type:str   # 第二个开始图标

        while True:
            print(f1 % account_number)  # 传入名字
            x = input('请输入要进入的系统:')

            if x == '1':
                print('添加信息')
                f2 = eval(open('files/count.txt', encoding='utf-8').read())  # type:int
                f2 += 1
                student_number = 'stu' + str(f2).zfill(4)
                open('files/count.txt', 'w', encoding='utf-8').write(str(f2))  # 自动完成学号
                name = input('请输入姓名:')
                while True:
                    try:
                        age1 = int(input('请修改年龄:'))
                        if 0 < age1 <= 150:
                            age = age1
                            break
                        else:
                            print('年龄不在合法范围。')
                    except ValueError:
                        print('输入有误,应该输入正整数。')

                while True:
                    tel1 = input('请修改电话:')
                    if tel1.isdigit() and (4 <= len(tel1) <= 8 or len(tel1) == 11):
                        tel = tel1
                        break
                    else:
                        print('请输入正确的位数')
                i["student"].append({'student_number': student_number, 'name': name, 'age': age, 'tel': tel})
                open('files/mima.txt', 'w', encoding='utf-8').write(str(f))
                print('添加成功。')

            elif x == '2':
                print('查询信息')
                while True:
                    print(open('files/chakan.txt', encoding='utf-8').read())
                    num1 = input('请输入(1-3):')

                    if num1 == '1':
                        for j in i["student"]:
                            print(f"学号:{j['student_number']}  名字:{j['name']}  年龄:{j['age']}  电话:{j['tel']}", sep='')

                    elif num1 == '2':
                        name1 = input('请输入姓名:')
                        for j in i["student"]:
                            if j['name'] == name1:
                                print(f"学号:{j['student_number']}  名字:{j['name']}  年龄:{j['age']}  电话:{j['tel']}", sep='')

                    elif num1 == '3':
                        student_number1 = input('请输入学号:')
                        for j in i['student']:
                            if j['student_number'] == student_number1:
                                print(f"学号:{j['student_number']}  名字:{j['name']}  年龄:{j['age']}  电话:{j['tel']}", sep='')

                    else:
                        break

            elif x == '3':
                print('修改信息')
                name = input('请输入要修改人的姓名:')
                subscript = []  # 修改学生的对应下标
                s = 0

                for xx in i["student"]:
                    if name == xx['name']:
                        subscript.append(i["student"].index(xx))  # type:list  # 获取下标
                        print(f"标号:{s}  学号:{xx['student_number']}  名字:{xx['name']}  年龄:{xx['age']}  电话:{xx['tel']}",
                              sep='')
                        s += 1

                if subscript:
                    while True:
                        grade = input('(输入STOP返回)请输入标号修改:')
                        if grade == 'STOP':
                            break

                        try:
                            v = i["student"][subscript[int(grade)]]
                        except ValueError:
                            print('输入有误!')
                            continue
                        name = input('请修改姓名:')
                        v['name'] = name
                        while True:
                            try:
                                age = int(input('请修改年龄:'))
                                if 0 < age <= 150:
                                    v['age'] = age
                                    break
                                else:
                                    print('年龄不在合法范围。')
                            except ValueError:
                                print('输入有误,应该输入正整数。')

                        while True:
                            tel = input('请修改电话:')
                            if tel.isdigit() and (4 <= len(tel) <= 8 or len(tel) == 11):
                                v['tel'] = tel
                                break
                            else:
                                print('请输入正确的位数')
                        open('files/mima.txt', 'w', encoding='utf-8').write(str(f))
                        print('修改完毕!')
                        break
                else:
                    print('查无此人。')


            elif x == '4':
                print('删除信息')
                while True:
                    print(open('files/shanchu.txt', encoding='utf-8').read())

                    num = input('请输入(1&2):')
                    if num == '1':
                        name = input('请输入姓名:')
                        subscript = []  # 删除学生的对应下标
                        s = 0

                        for x in i["student"]:
                            if name == x['name']:
                                subscript.append(i["student"].index(x))  # type:list  # 获取下标
                                print(f"标号:{s}  学号:{x['student_number']}  名字:{x['name']}  年龄:{x['age']}  电话:{x['tel']}",
                                      sep='')
                                s += 1

                        if subscript:
                            while True:
                                grade = input('(输入STOP返回)请输入标号删除:')
                                if grade == 'STOP':
                                    break

                                try:
                                    del i["student"][subscript[int(grade)]]
                                    open('files/mima.txt', 'w', encoding='utf-8').write(str(f))
                                    print('删除完毕!')
                                    break

                                except (IndexError, ValueError):
                                    print('输入有误。')
                        else:
                            print('查无此人。')

                    elif num == '2':
                        name = input('请输入学号:')
                        for x in i["student"]:
                            if name == x['student_number']:
                                del x
                                print('删除完毕。')
                    else:
                        break

            elif x == '5':
                print('返回!')
                break
    else:
        print('密码错误。')


def register():
    # 注册
    f = eval(open('files/mima.txt', encoding='utf-8').read())  # type:list     # 打开文件,并去掉字符串,将字典保存在f中
    register = input('请输入账户名字:')
    if register in [i['register'] for i in f]:  # 排除输入的名字和已有的名字重复。
        print('账号已经存在。')
        return

    password = input('请输入密码(6~12位):')
    if 6 <= len(password) <= 12:  # 密码位数的要求是6 ~ 12:
        f.append({'register': register, 'password': password, 'student': []})  # 添加新的用户和密码
        open('files/mima.txt', 'w', encoding='utf-8').write(str(f))
        print('注册成功。')

    else:
        print('密码位数不合法!')


def login_system():
    establish()
    create_a_document()  # 如果没有'mima.txt'文件就添加,如果有就跳过执行下面循环。
    s = open('files/fuhao.txt', encoding='utf-8').read()  # 打开开始符
    while True:
        print(s)  # 调用开始符
        num1 = input('☆请选择要进入的系统(1-3):')
        if num1 == '1':
            # 登录系统
            print('-----登录-----')
            enter()

        elif num1 == '2':
            print('-----注册-----')
            register()

        elif num1 == '3':
            print('感谢使用登录系统。')
            print('正在退出……')
            break

        else:
            print()
            print('输入超出范围。')
            print('请重新输入。')


login_system()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值