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

2018-10-15  本文已影响0人  zxhlcl

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、返回上一层

"""
上一篇下一篇

猜你喜欢

热点阅读