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