学生管理系统(控制台简易版)

main.py

import display
import file

if __name__ == '__main__':
    file.initial_value()
    display.User.main_page()

operation.py

import file
import display

path = 'files/information.json'


class User():
    @staticmethod
    def landing():
        """
        登录功能
        :return:
        """
        name = input('请输入用户名(5-8位)')
        password = input('请输入密码(5-8位)')
        information = file.basic_file_read(path)
        if information.get(name) == None:
            print('该用户名不存在使用')
            return False
        elif information[name]['password'] != password:
            print('密码错误')
            return False
        return name

    @staticmethod
    def registered():
        """
        注册功能
        :return:
        """
        name = input('请输入用户名(5-8位)')
        if not (8 > len(name) > 5):
            print('用户名的长度不对')
            return False
        information = file.basic_file_read(path)
        if information.get(name) != None:
            print('该用户名已被使用')
            return False
        password = input('请输入密码(5-8位)')
        if not (8 > len(name) > 5):
            print('密码的长度不对')
            return False
        if password != input('请再次输入密码(和第一次输入的密码必须一样)'):
            print('第一次输入的密码和第二次输入的密码不一样')
            return False
        information[name] = {'password': password, 'students': {}, 'name_number': {}, 'number': 1}
        file.basic_file_write(path, information)
        return name

    @staticmethod
    def judge(name, choose=0):
        text = ['登录', "注册"]
        if name:
            print(f'{text[choose]}成功')
            display.User.Second_page(name=name)
        else:
            print(f'{text[choose]}失败')


class Modify():
    @staticmethod
    def add(name):
        information = file.basic_file_read(path)
        information_name = information[name]
        while True:
            students_name = input('请输入学生姓名')
            name_number = information_name['name_number']
            students_id = information_name['number'] + 1
            information_name['number'] = students_id
            students_id = f'python{students_id:0>3}'
            get_name_number = name_number.get(students_name)
            if get_name_number != None:
                if type(get_name_number) == list:
                    get_name_number.append(students_id)
                else:
                    get_name_number = [get_name_number, students_id]
            else:
                get_name_number = students_id
            name_number[students_name] = get_name_number
            students_age = input('请输入学生的年龄')
            students_phone = input('请输入学生的电话号码')
            information_name['students'][students_id] = {'姓名': students_name, '学号': students_id, '年龄': students_age,
                                                         '☎': students_phone}
            information_name['name_number'] = name_number
            information[name] = information_name
            file.basic_file_write(path, information)
            if input("""
            1.  继续添加学生
            其它 返回主页
            """) != '1':
                break

    @staticmethod
    def amend_choose(name):
        students_id=input('请输入需要修改信息的学号:')
        information = find.read()
        if information[name]['students'].get(students_id)==None:
            print('你输入的学号不存在')
            return False
        while True:
            display.options.main_page_view(number=5)
            choose=input('请选择(1~4)')
            if choose=='1':
                # 姓名
                Modify.amend(name=name,students_id=students_id,choose_name='姓名',choose=choose)
            elif choose=='2':
                # 年龄
                Modify.amend(name=name,students_id=students_id,choose_name='年龄',choose=choose)
            elif choose=='3':
                # 电话
                Modify.amend(name=name,students_id=students_id,choose_name='☎',choose=choose)
            elif choose=='4':
                break
            else:
                print('你的输入有误')

    @staticmethod
    def amend(name,choose_name,students_id,choose):
        information = find.read()
        students = input(f'{choose_name}=')
        students_name = information[name]['students'][students_id]['姓名']
        information[name]['students'][students_id][choose_name] = students
        if choose=='1':
            name_number = information[name]['name_number'][students_name]
            if type(name_number) == list:
                if len(name_number) > 1:
                    for i in range(len(name_number)):
                        if name_number[i]==students_name:
                            del information[name]['name_number'][students_name][i]
                            break
                else:
                    del information[name]['name_number'][students_name]
            else:
                del information[name]['name_number'][students_name]
            if information[name]['name_number'].get(students)==None:
                information[name]['name_number'][students]=students_id
            else:
                if type(information[name]['name_number'][students])==list:
                    information[name]['name_number'][students].append(students_id)
                else:
                    information[name]['name_number'][students]=[information[name]['name_number'][students],students_id]
        file.basic_file_write(path,information)



class delete():
    @staticmethod
    def remove_all(name):
        information = find.read()
        information[name]['students'] = {}
        file.basic_file_write(path, information)
        print('已删除所有学生')


    @staticmethod
    def remove_students_id(name, students_id, information):
        try:
            del information[name]['students'][students_id]
            file.basic_file_write(path, information)
            print('已删除该学生')
        except:
            print('该学生不存在无法删除')




class find():
    @staticmethod
    def find_students_id(name, students_id, information):
        information = information[name]['students']
        if information.get(students_id) == None:
            print('你要查找的学生不存在')
            return False
        information = information[students_id]
        for key in information:
            print(f"{key}:{information[key]}", end='\t')
        print('')

    @staticmethod
    def find_all(name):
        information = find.read()
        for key in information[name]['students']:
            find.find_students_id(name=name, students_id=key, information=information)

    @staticmethod
    def read():
        return file.basic_file_read(path)

    @staticmethod
    def students_input(choose=1):
        if choose:
            return input('请输入学号')
        else:
            return input('请输入姓名')

    @staticmethod
    def name_number(name, students_name,choose=1):
        information = find.read()
        name_number = information[name]['name_number']
        if name_number.get(students_name) == None:
            print('你要查找的学生不存在')
            return False
        name_number = information[name]['name_number'][students_name]
        if type(name_number) == list:
            for i in name_number:
                if choose:
                    find.find_students_id(name=name, students_id=i, information=information)
                else:
                    delete.remove_students_id(name=name, students_id=i, information=information)
        else:
            if choose:
                find.find_students_id(name=name, students_id=name_number, information=information)
            else:
                delete.remove_students_id(name=name, students_id=name_number, information=information)

display.py

import operation


class options():
    @staticmethod
    def main_page_view(number=1, name=None):
        if name != None:
            print(f"""
            用户🆔:{name}欢迎🎉🎉🎉使用该系统
            """)
        elif number == 1:
            print("""
            ♦♦♦♦♦♦♦♦♦♦♦♦1.登   陆♦♦♦♦♦♦♦♦♦♦♦♦♦
            ♦♦♦♦♦♦♦♦♦♦♦♦2.注   册♦♦♦♦♦♦♦♦♦♦♦♦♦
            ♦♦♦♦♦♦♦♦♦♦♦♦3.登   出♦♦♦♦♦♦♦♦♦♦♦♦♦
===================================================================
            """)
        elif number == 2:
            print("""
            ♥♥♥♥♥♥♥♥♥♥♥1.添 加 学 生♥♥♥♥♥♥♥♥♥♥♥
            ♥♥♥♥♥♥♥♥♥♥♥2.查 看 学 生♥♥♥♥♥♥♥♥♥♥♥
            ♥♥♥♥♥♥♥♥♥♥♥3.修 改 学 生♥♥♥♥♥♥♥♥♥♥♥
            ♥♥♥♥♥♥♥♥♥♥♥4.删 除 学 生♥♥♥♥♥♥♥♥♥♥♥
            ♥♥♥♥♥♥♥♥♥♥♥5.返      回♥♥♥♥♥♥♥♥♥♥♥
===================================================================
            """)
        elif number == 3:
            print("""
            ⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓1.查看所有学生⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓
            ⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓2.根据姓名查找⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓
            ⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓3.根据学号查找⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓
            ⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓4.返  🔙   回⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓⚓
===================================================================
            """)
        elif number == 4:
            print("""
            ✂✂✂✂✂✂✂✂✂1.删除所有学生✂✂✂✂✂✂✂✂✂
            ✂✂✂✂✂✂✂✂✂2.根据姓名删除✂✂✂✂✂✂✂✂✂
            ✂✂✂✂✂✂✂✂✂3.根据学号删除✂✂✂✂✂✂✂✂✂
            ✂✂✂✂✂✂✂✂✂4.返   🔙  回✂✂✂✂✂✂✂✂✂
===================================================================
            """)
        elif number == 5:
            print("""
            📝📝📝📝📝📝📝📝📝📝1.修改姓名📝📝📝📝📝📝📝📝📝📝
            📝📝📝📝📝📝📝📝📝📝2.修改年龄📝📝📝📝📝📝📝📝📝📝
            📝📝📝📝📝📝📝📝📝📝3.修改电话📝📝📝📝📝📝📝📝📝📝
            📝📝📝📝📝📝📝📝📝📝4.返 🔙 回📝📝📝📝📝📝📝📝📝📝
===================================================================
            """)


class User():
    @staticmethod
    def main_page():
        while True:
            options.main_page_view(number=1)
            choose = input('请选择(1~3)')
            if choose == '1':
                operation.User.judge(operation.User.landing(), choose=0)
            elif choose == '2':
                operation.User.judge(operation.User.registered(), choose=1)
            elif choose == '3':
                break
            else:
                print('你的输入有误')

    @staticmethod
    def Second_page(name):
        options.main_page_view(name=name)
        while True:
            options.main_page_view(number=2)
            choose = input('请选择(1~5)')
            if choose == '1':
                operation.Modify.add(name=name)
            elif choose == '2':
                User.third_page(name=name)
            elif choose == '3':
                operation.Modify.amend_choose(name=name)
            elif choose == '4':
                User.fourth_page(name=name)
            elif choose == '5':
                break
            else:
                print('你的输入有误')

    @staticmethod
    def third_page(name):
        while True:
            options.main_page_view(number=3)
            choose = input('请选择(1~4)')
            if choose == '1':
                operation.find.find_all(name=name)
            elif choose == '2':
                operation.find.name_number(name=name, students_name=operation.find.students_input(choose=0))
            elif choose == '3':
                operation.find.find_students_id(name=name, students_id=operation.find.students_input(choose=1),
                                                information=operation.find.read())
            elif choose == '4':
                break
            else:
                print('你的输入有误')

    @staticmethod
    def fourth_page(name):
        while True:
            options.main_page_view(number=4)
            choose = input('请选择(1~4)')
            if choose == '1':
                operation.delete.remove_all()
            elif choose == '2':
                operation.find.name_number(name=name, students_name=operation.find.students_input(choose=0), choose=0)
            elif choose == '3':
                operation.delete.remove_students_id(name=name, students_id=operation.find.students_input(choose=1),
                                                    information=operation.find.read())
            elif choose == '4':
                break
            else:
                print('你的输入有误')

file.py

import json
from os import makedirs


def basic_file_read(file):
    # json文件的读取
    with open(file, 'r', encoding='utf-8') as f:
        # return f.read()
        return json.load(f)


def basic_file_write(file, content):
    # json文件的写
    content = json.dumps(content)
    with open(file, 'w', encoding='utf-8') as f:
        f.write(content)


def initial_value():
    path = 'files/information.json'
    try:
        try:
            makedirs('./files')
        except:
            pass
        basic_file_read(path)
    except:
        basic_file_write(path,{'root':{'password':'root','students':{},'name_number': {},'number':0}})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值