Day11--課后作業(學生管理系統version-0.1)

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

"""
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,362評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,577評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,486評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,852評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,600評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,944評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,944評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,108評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,652評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,385評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,616評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,111評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,798評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,205評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,537評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,334評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,570評論 2 379

推薦閱讀更多精彩內容