美文网首页
Day11--课后作业(学生管理系统version-0.1)

Day11--课后作业(学生管理系统version-0.1)

作者: zxhlcl | 来源:发表于2018-10-15 22:01 被阅读0次

    1、定义一个all_path.py文件保存两个json文件路径
    student_file_path="./file/students_json.json"
    user_file_path="./file/user_json.json"
    2、定义一个page.py模块输出各类界面
    3、定义一个user_operating.py模块编写用户操作相关的函数
    4、定义一个operating_student.py模块编写学生操作相关的函数
    5、定义一个read_write_data.py模块编写数据读写的相关函数
    all_path.py:后期可用配置文件保存

    student_file_path="./file/students_json.json"
    user_file_path="./file/user_json.json"
    

    page.py

    from user_operating import user as USER
    
    #主界面
    def main_page():
        listitems = ['1', '2', '3']
        print('==================千峰学生管理系统===============')
        print('1、登录系统\n', '2、注册账号\n','3、退出系统', sep="")
        print("==================================================")
        items = input('>>>')
        while True:
            if items not in listitems:
                print("输入的编号有误,请重新输入")
                items = input('>>>')
            else:
                break
        return items
    
    #登录页面
    def register_page():
        pass
    #注册账号
    def login_page():
        pass
    
    #功能菜单页面
    def menu_page():
        listitems = ['1', '2', '3', 'q']
        print('==================欢迎登录千峰学生管理系统===============')
        print("账号{}已登录,可执行如下操作:".format(USER))
        print('1、添加学生\n', '2、查找学生\n', '3、删除学生\n', 'q、退出', sep="")
        print("==================================================")
        items = input('>>>')
        while True:
            if items not in listitems:
                print("输入的编号有误,请重新输入")
                items = input('>>>')
            else:
                break
        return items
    #添加学生界面
    def add_student_page():
        col=['1','2']
        print("1、继续添加 \n", "2、返回上一层")
        item = input('>>>')
        while True:
            if item not in col:
                print('输入的编号有误,请重新输入')
                item = input(">>>")
            else:
                break
        return item
    #查看学生界面
    def find_student_page():
        col = ['1', '2', '3']
        print("1、查看所有学生信息 \n", "2、根据名字查看学生信息\n", "3、返回上一层", sep='')
        item = input(">>>")
        while True:
            if item not in col:
                print('输入的编号有误,请重新输入')
                item = input(">>>")
            else:
                break
        return item
    #删除学生界面
    def delete_student_page():
        col = ["1", "2"]
    
        print("1、继续删除 \n", "2、返回上一层")
        item = input('>>>')
        while True:
            if item not in col:
                print('输入的编号有误,请重新输入')
                item = input(">>>")
            else:
                break
        return item
    
    
    

    user_operating.py

    import read_write_data as RWD
    from all_path import student_file_path, user_file_path
    
    #注册账号
    def register():
        user_name=input("请输入账号名称:")
        user_password=input("请输入账号密码")
        users=RWD.read_data(user_file_path)
        while True:
            flag = 0
            for i in range(0,len(users)):
                if users[i]["name"]==user_name :
                    flag=1
            if flag==1:
                print("账号已存在,请重新输入")
                user_name = input(">>>")
                continue
            else:
                break
        users.append({"name":user_name,"password":user_password})
        RWD.write_data(users,user_file_path)
        print("注册成功")
    
    
    #用户登录
    def login():
        users = RWD.read_data(user_file_path)
        while True:
            flag = 0
            user_name = input("账户:")
            user_password = input("密码:")
            for i in range(0, len(users)):
                if users[i]["name"] == user_name and users[i]["password"] == user_password:
                    print("登录成功")
                    flag = 1
            if flag==1:
                break
            if flag==0:
                print("账户不存在,请继续您的操作")
                num=sub_login()
                if num=="1":
                    continue
                if num=="2":
                    break
        return flag
    
    
    def sub_login():
        col = ['1', '2']
        print("1、重新输入 \n", "2、返回主界面",sep="")
        item = input('>>>')
        while True:
            if item not in col:
                print('输入的编号有误,请重新输入')
                item = input(">>>")
            else:
                break
        return item
    
    
    

    operating_student.py

    import random
    import read_write_data as RWD
    from all_path import student_file_path, user_file_path
    
    
    #产生学号
    def genID():
        """随机产生一个学号"""
        number=random.randint(1,10000)
        ID="ID"+"2018"+str(number)
        return ID
    
    # 添加学生
    def add_student():
        print("已自动生成该学生学号")
        ID=genID()
        name = input('请输入学生的姓名:')
        age = input('请输入学生的年龄:')
        tel = input("请输入学生的电话号码:")
        English_score=input("请输入英语成绩:")
        Math_score=input("请输入英语成绩:")
        Chinese_score=input("请输入语文成绩:")
        students=RWD.read_data(student_file_path)
        students.append({'学号': ID,'姓名': name,  '成绩': {"语文":Chinese_score,"数学":Math_score,"英语":English_score}, '年龄': age, '电话': tel})
       RWD.write_data(students, student_file_path)
    #查看所有学生:
    def find_all():
        students=RWD.read_data(student_file_path)
        print("=====================查询到的学生信息如下所示====================")
        for i in range(len(students)):
            for keys in students[i]:
                print(i, end="  ")
                print(keys + ':' + str(students[i][keys]), end=",")
            print()
        print("=====================请继续选择您需要的操作====================")
    #根据姓名查看学生信息
    def find_name():
        students = RWD.read_data(student_file_path)
        name = input("请输入学生姓名>>>")
        count = 0  # 记录学生信息个数,后面需判断有无学生信息
        print("======================查询到的学生信息如下所示==================")
        for i in range(len(students)):
            if name == students[i]['姓名']:
                count += 1
                for keys in students[i]:
                    print("序号:{}".format(i), end="  ")
                    print(keys + ':' + str(students[i][keys]), end=",")
                print()
        if count == 0:
            print("没有该学生信息")
        print("======================请继续选择您需要的操作==================")
    
    #删除学生
    def del_stu():
        students=RWD.read_data(student_file_path)
        name = input("请输入要删除的学生姓名:")
        indexs = []  # 用于记录学生编号,后面判断输入的学生编号是否有误
        count = 0  # 用于记录查找的学生信息个数,判断有无学生信息
        print("====================查询到的学生信息如下所示===================")
        for i in range(len(students)):
            if name == students[i]['姓名']:
                count += 1
                indexs.append(str(i))
                for keys in students[i]:
                    print("序号:{}".format(i), end="  ")
                    print(keys + ':' + str(students[i][keys]), end=",")
                print()
        if count == 0:
            print("没有改学生信息,无法删除")
            print('=======================请继续您的操作=====================')
        elif count != 0:
            index = input('请选择要删除的学生编号:')
            while True:
                if index not in indexs:
                    index = input("输入有误,请重新输入>>>")
                else:
                    students.remove(students[int(index)])
                    print("删除成功!")
                    print("======================请继续您的操作===================")
                    break
        RWD.write_data(students,student_file_path)
    

    read_write_data.py

    import json
    
    #写入到json文件
    def write_data(data_list:list,file_path):
        with open(file_path,'w',encoding="utf-8") as f:
            json.dump(data_list,f)
    #读取json文件
    def read_data(file_path:str):
        with open(file_path,'r',encoding="utf-8") as f:
            content = json.load(f)
        return  content
    
    

    主程序

    import page
    import operating_student as op
    import user_operating as up
    import read_write_data as RWD
    from all_path import student_file_path, user_file_path
    
    #学生信息增删查
    def operate_student():
        while True:
            items=page.menu_page()
        #添加学生
            if items=="1":
                while True:
                    op.add_student()
                    items1=page.add_student_page()
                    if items1=="1":continue
                    elif items1=="2":break
         #查找学生
            if items=="2":
                while True:
                    items2= page.find_student_page()
                    if items2=="1":
                        op.find_all( )
                        continue
                    if items2=="2":
                        op.find_name( )
                        continue
                    else:
                        break
        #删除学生
            if items=="3":
                while True:
                    op.del_stu()
                    items3=page.delete_student_page()
                    if items3=="1":continue
                    elif items3=="2":break
        #退出
            if items=="q":
                break
    
    #主程序
    while True:
        items_user=page.main_page()
        if items_user=="1":
            flag=up.login()
            if flag==1:
                operate_student()
        if items_user=="2":
            up.register()
        if items_user=="3":
            break
    
    

    使用效果

    """
    step1:主界面
    ==================千峰学生管理系统===============
    1、登录系统
    2、注册账号
    3、退出系统
    ==================================================
    >>>2
    
    step2:注册账户
    请输入账号名称:xiaoming
    请输入账号密码123456
    注册成功
    ==================千峰学生管理系统===============
    1、登录系统
    2、注册账号
    3、退出系统
    ==================================================
    >>>1
    
    step3:登录系统,输入错误的账户时可重新输入,或者返回主界面重新注册
    账户:aaa
    密码:aaa
    账户不存在,请继续您的操作
    1、重新输入 
    2、返回主界面
    >>>1
    
    step4:重新输入,登录账户
    账户:xiaoming
    密码:123456
    登录成功
    ==================欢迎登录千峰学生管理系统===============
    账号None已登录,可执行如下操作:
    1、添加学生
    2、查找学生
    3、删除学生
    q、退出
    ==================================================
    >>>1
    
    step5:添加学生
    已自动生成该学生学号
    请输入学生的姓名:小李
    请输入学生的年龄:22
    请输入学生的电话号码:15687954879
    请输入英语成绩:98
    请输入英语成绩:55
    请输入语文成绩:88
    1、继续添加 
     2、返回上一层
    >>>1
    
    step6:继续添加
    已自动生成该学生学号
    请输入学生的姓名:小赵
    请输入学生的年龄:26
    请输入学生的电话号码:15698746589
    请输入英语成绩:98
    请输入英语成绩:98
    请输入语文成绩:98
    1、继续添加 
     2、返回上一层
    >>>1
    
    step7:继续添加
    已自动生成该学生学号
    请输入学生的姓名:小张
    请输入学生的年龄:23
    请输入学生的电话号码:98
    请输入英语成绩:565
    请输入英语成绩:65
    请输入语文成绩:56
    1、继续添加 
     2、返回上一层
    >>>1
    
    step8:继续添加
    已自动生成该学生学号
    请输入学生的姓名:小李
    请输入学生的年龄:25
    请输入学生的电话号码:1598735435
    请输入英语成绩:98
    请输入英语成绩:98
    请输入语文成绩:98
    1、继续添加 
     2、返回上一层
    >>>asdf
    
    step9:输入错误编号,提示重新输入,返回上一页面
    输入的编号有误,请重新输入
    >>>2
    
    step10:查找学生
    ==================欢迎登录千峰学生管理系统===============
    账号None已登录,可执行如下操作:
    1、添加学生
    2、查找学生
    3、删除学生
    q、退出
    ==================================================
    >>>2
    
    step10-1:查找所有学生
    1、查看所有学生信息 
    2、根据名字查看学生信息
    3、返回上一层
    >>>1
    =====================查询到的学生信息如下所示====================
    0  学号:ID20184050,0  姓名:小李,0  成绩:{'语文': '81', '数学': '98', '英语': '65'},0  年龄:25,0  电话:15987469852,
    1  学号:ID20181550,1  姓名:小李,1  成绩:{'语文': '', '数学': '55', '英语': '98'},1  年龄:22,1  电话:15687954879,
    2  学号:ID20189263,2  姓名:小赵,2  成绩:{'语文': '98', '数学': '98', '英语': '98'},2  年龄:26,2  电话:15698746589,
    3  学号:ID20186179,3  姓名:小张,3  成绩:{'语文': '56', '数学': '65', '英语': '565'},3  年龄:23,3  电话:98,
    4  学号:ID20184996,4  姓名:小李,4  成绩:{'语文': '98', '数学': '98', '英语': '98'},4  年龄:25,4  电话:1598735435,
    =====================请继续选择您需要的操作====================
    1、查看所有学生信息 
    2、根据名字查看学生信息
    3、返回上一层
    >>>2
    
    step10-2:根据名称查找学生信息
    请输入学生姓名>>>小唐
    ======================查询到的学生信息如下所示==================
    没有该学生信息
    ======================请继续选择您需要的操作==================
    1、查看所有学生信息 
    2、根据名字查看学生信息
    3、返回上一层
    >>>2
    
    请输入学生姓名>>>小李
    ======================查询到的学生信息如下所示==================
    序号:0  学号:ID20184050,序号:0  姓名:小李,序号:0  成绩:{'语文': '81', '数学': '98', '英语': '65'},序号:0  年龄:25,序号:0  电话:15987469852,
    序号:1  学号:ID20181550,序号:1  姓名:小李,序号:1  成绩:{'语文': '', '数学': '55', '英语': '98'},序号:1  年龄:22,序号:1  电话:15687954879,
    序号:4  学号:ID20184996,序号:4  姓名:小李,序号:4  成绩:{'语文': '98', '数学': '98', '英语': '98'},序号:4  年龄:25,序号:4  电话:1598735435,
    ======================请继续选择您需要的操作==================
    1、查看所有学生信息 
    2、根据名字查看学生信息
    3、返回上一层
    >>>3
    
    step11:删除学生
    ==================欢迎登录千峰学生管理系统===============
    账号None已登录,可执行如下操作:
    1、添加学生
    2、查找学生
    3、删除学生
    q、退出
    ==================================================
    >>>3
    
    step11-1:输入信息有误,可重新输入或返回上一界面
    请输入要删除的学生姓名:小唐
    ====================查询到的学生信息如下所示===================
    没有改学生信息,无法删除
    =======================请继续您的操作=====================
    1、继续删除 
     2、返回上一层
    >>>1
    
    step11-2:输入姓名,选择编号
    请输入要删除的学生姓名:小李
    ====================查询到的学生信息如下所示===================
    序号:0  学号:ID20184050,序号:0  姓名:小李,序号:0  成绩:{'语文': '81', '数学': '98', '英语': '65'},序号:0  年龄:25,序号:0  电话:15987469852,
    序号:1  学号:ID20181550,序号:1  姓名:小李,序号:1  成绩:{'语文': '', '数学': '55', '英语': '98'},序号:1  年龄:22,序号:1  电话:15687954879,
    序号:4  学号:ID20184996,序号:4  姓名:小李,序号:4  成绩:{'语文': '98', '数学': '98', '英语': '98'},序号:4  年龄:25,序号:4  电话:1598735435,
    请选择要删除的学生编号:4
    删除成功!
    ======================请继续您的操作===================
    1、继续删除 
     2、返回上一层
    >>>2
    
    step11-2:再次查找所有学生(ID20184996的小李已经删除)
    ==================欢迎登录千峰学生管理系统===============
    账号None已登录,可执行如下操作:
    1、添加学生
    2、查找学生
    3、删除学生
    q、退出
    ==================================================
    >>>2
    1、查看所有学生信息 
    2、根据名字查看学生信息
    3、返回上一层
    >>>1
    =====================查询到的学生信息如下所示====================
    0  学号:ID20184050,0  姓名:小李,0  成绩:{'语文': '81', '数学': '98', '英语': '65'},0  年龄:25,0  电话:15987469852,
    1  学号:ID20181550,1  姓名:小李,1  成绩:{'语文': '', '数学': '55', '英语': '98'},1  年龄:22,1  电话:15687954879,
    2  学号:ID20189263,2  姓名:小赵,2  成绩:{'语文': '98', '数学': '98', '英语': '98'},2  年龄:26,2  电话:15698746589,
    3  学号:ID20186179,3  姓名:小张,3  成绩:{'语文': '56', '数学': '65', '英语': '565'},3  年龄:23,3  电话:98,
    =====================请继续选择您需要的操作====================
    1、查看所有学生信息 
    2、根据名字查看学生信息
    3、返回上一层
    
    """
    

    相关文章

      网友评论

          本文标题:Day11--课后作业(学生管理系统version-0.1)

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