Python_函數式編程_學生選課系統(2)

創作不易,各位看官,點個贊收藏、關注必回關、QAQ、您的點贊是我更新的最大動力!


接着上一篇文章繼續完成代碼,這次採用函數式編程,後面會逐步編程模塊式開發
第一個版本V1.01 不用函數開發 :https://blog.csdn.net/weixin_44238683/article/details/105800211
"""
項目描述:學生選課系統 函數式編程
時間:2020-04-28
版本:v1.02
作者:穩穩c9

需求:
    #課程:python,java,PHP,web,unity,UI
    #角色劃分:管理員不需要註冊,會員
    #權限劃分:
            管理員:增刪查課程
            學生:
                註冊→ 賬戶名(賬戶名存在檢測)、密碼、

                登錄→ 跳轉選課界面[1.選課  2.查看已選課程]

                修改密碼→ 輸入舊密碼、再輸入新密碼

                查看→ 查看已選課程
"""
import os
#課程存儲
course_dic = {
    "1":{"course":"Python"},
    "2":{"course":"Java"},
    "3":{"course":"Web"},
    "4":{"course":"unity"},
    "5":{"course":"UI"}
}
#管理員
admin_dic = {"admin":"123"}
#學生
users_dict = { "1":{"username":"1","password":"1","course":["Python"]}}

#打印系統主頁面
def show_index():
    os.system("cls")
    # 打印主界面菜單
    print("         學生選課系統")
    print("◆" * 30)
    print("         1.用戶登錄[學生/管理員]")
    print("         2.用戶註冊")
    print("         3.密碼修改")
    print("         4.退出系統")
    print("◆" * 30)

    # 提示用戶輸入選項
    choice = input("請輸入您的選項:").strip()

    #啓動用戶檢測
    if choice == "1" :
        login_check()
    # 啓動用戶註冊
    elif choice == "2":
        user_regist()
    # 啓動密碼修改
    elif choice == "3":
        pass
    # 退出系統
    else:
        pass
# 用戶登錄
def login_check():
    global username,password
    # 提示用戶輸入賬戶密碼
    username = input("請輸入您的賬戶:")
    password = input("請輸入您的密碼:")
    # 學生判斷
    if username in users_dict:
        # 獲取用戶儲存信息 並且根據賬戶獲取密碼
        data_password = users_dict.get(username).get("password")
        # 判斷密碼是否正確
        if password == data_password:
            # 跳轉學生界面
            student_page()
    # 管理員判斷
    elif username in admin_dic:
        # 獲取用戶儲存信息 並且根據賬戶獲取密碼
        data_password = admin_dic.get(username)
        # 判斷密碼是否正確
        if password == data_password:
            # 跳轉管理員界面
                admin_page()
    else :
        input("賬戶不存在或密碼錯誤..按任意鍵返回主菜單")
        return show_index()
# 用戶註冊
def user_regist():
    # 提示用戶輸入想要註冊賬戶名
    username = input("請輸入您的賬戶:")

    # 檢測賬戶名是否已經存在庫中
    if username in users_dict:
        input("對不起,您註冊的賬戶已存在,按任意鍵返回主菜單")
        # 回到主頁面
        return show_index()
    else:
        # 提示用戶輸入密碼
        password = input("請輸入註冊賬戶密碼:")
        confirm_ps = input("請再一次輸入密碼:")

        # 確保兩次密碼一致
        if password == confirm_ps:
            # 一致後錄入註冊信息
            users_dict[username] = {
                "username": username,
                "password": password,
                "course": []
            }
            input("註冊成功,按任意鍵退出")
            return show_index()
        else:
            input("兩次密碼不一致,按任意鍵返回主菜單")
            return show_index()
# 學生界面
def student_page():
    print("◆" * 30)
    print("         1.選課")
    print("         2.查看已選課程")
    print("         3.任意鍵返回上一級")
    print("◆" * 30)
    # 提示學生做出選擇
    choice_stu = input("請輸入您的選項:").strip()
    # 選課
    if choice_stu == "1":
        # 打印出可選課程信息
        print("課程編號\t課程名稱")
        for key, value in course_dic.items():
            print(f"{key}\t\t{value.get('course')}")
        # 選課
        choice_course = input("請輸入您的選項:").strip()
        # 通過用戶輸入的編號獲取課程存儲
        res = course_dic.get(choice_course).get("course")
        # 檢測用戶是否重複選擇課程
        if res in users_dict.get(username).get('course'):
            input("您已選擇該課程,請勿重複選擇,按任意鍵返回上一級..")
            return student_page()
        # 用戶課程數據沒有 該課程
        else:
            users_dict.get(username).get('course').append(res)
            input(f"您已成功選擇課程:{res}..按任意鍵返回上一級")
            return student_page()
    # 查看已選課程
    elif choice_stu == "2":
        # 獲取用戶已選課程數據
        user_course = users_dict.get(username).get('course')
        print(f"您已選擇的課程:{user_course}")
        input("按任意鍵返回上一級")
        return student_page()
    # 返回上一級
    else:
        return show_index()
# 管理員界面
def admin_page():
    print("◆" * 30)
    print("         1.查看課程")
    print("         2.添加課程")
    print("         3.刪除課程")
    print("         4.任意鍵返回上一級")
    print("◆" * 30)

    # 提醒管理員做出選擇
    choice_adm = input("請輸入您的選項:").strip()

    # 查看課程 1
    if choice_adm == "1":
        # 打印出可選課程信息
        print("課程編號\t課程名稱")
        for key, value in course_dic.items():
            print(f"{key}\t\t{value.get('course')}")
        input("按任意鍵返回上一級")
        return admin_page()
    # 添加課程 2
    elif choice_adm == "2":
        # 提示管理員 添加課程名稱
        add_course = input("請輸入需要添加的課程名稱: ").strip()
        # 根據已經存在的課程數量 獲取編號建立如"6"
        id = str(len(course_dic) + 1)
        #TODO
        #遍歷出課程
        course_check = []
        for a in course_dic.values():
            b = a.get("course")
            course_check.append(b.upper())
        if add_course.upper() in course_check:
            input(f"您添加{add_course}課程已存在..按任意鍵返回上一級")
            return admin_page()
        else:
            course_dic[id] = {
                "course": add_course
            }
            input(f"您已成功添加課程{add_course}.按任意鍵返回上一級")
            return admin_page()
    # 刪除課程 3
    elif choice_adm == "3":
        while True:
            # 展示已有課程
            print("課程編號\t課程名稱")
            for key, value in course_dic.items():
                print(f"{key}\t\t{value.get('course')}")
            # 提示管理員 刪除課程名
            rem_course = input("請輸入需要刪除的課程編號: ").strip()
            if rem_course in course_dic.keys():
                # 並且刪除用戶課程中的信息 TODO
                c = course_dic.get(rem_course).get("course")
                for d in users_dict.values():
                    if c in d.get('course'):
                        d.get('course').remove(c)
                    else:
                        break
                # 刪除系統課程中
                course_dic.pop(rem_course)
                input("您已經成功刪除,按任意鍵返回上一級.")
                return admin_page()
            else:
                input("請輸入正確的課程編號!..按任意鍵繼續")
                return admin_page()
    # 返回上一級 4
    else:
        return show_index()
# 系統退出
def system_exit():
    pass

show_index()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章