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