1. 程式人生 > >python基礎(五) 作業題

python基礎(五) 作業題

'''
角色:
    學生、管理員
功能:
    登陸 : 管理員和學生都可以登陸,且登陸之後可以自動區分身份
    選課 : 學生可以自由的為自己選擇課程
    建立使用者 : 選課系統是面向本校學生的,因此所有的使用者都應該由管理員完成
    檢視選課情況 :每個學生可以檢視自己的選課情況,而管理員應該可以檢視所有學生的資訊
工作流程:
    登陸 :使用者輸入使用者名稱和密碼
    判斷身份 :在登陸成果的時候應該可以直接判斷出使用者的身份 是學生還是管理員

    學生使用者 :對於學生使用者來說,登陸之後有三個功能
        1、檢視所有課程
        2、選擇課程
        3、檢視所選課程
        4、退出程式
    管理員使用者:管理員使用者除了可以做一些檢視功能之外,還有很多建立工作
        1、建立課程
        2、建立學生學生賬號
        3、檢視所有課程
        4、檢視所有學生
        5、檢視所有學生的選課情況
        6、退出程式
''' import json class Student: def __init__(self,name): self.name = name def check_course(self): # 檢視所有課程 with open("course", 'r', encoding="utf-8") as f: # course是課程檔案 tmp = {} for index, i in enumerate(f.read().split("|"), 1): print
(index, i) tmp[str(index)] = i return tmp def select_course(self): # 選擇課程 tmp = self.check_course() n = input("請選擇你要選的課程的序號") if n in tmp: # 判斷選的課在不在課程列表裡 with open("user_course", 'r', encoding="utf8") as f: # user_course是使用者和所選課程的檔案,
user_course = json.load(f) # 是一個字典, 鍵是使用者名稱, 值是所選課的列表 if user_course.get(self.name): # 使用者和課程裡有沒有那個使用者 user_course.get(self.name).append(tmp[n]) else: user_course.setdefault(self.name, [tmp[n]]) with open("user_course", 'w', encoding="utf-8") as f: json.dump(user_course, f, ensure_ascii=False) def check_select_course(self): # 檢視所選課程 with open("user_course", 'r', encoding="utf8") as f: user_course = json.load(f) print(user_course.get(self.name)) def exit(self): # 退出程式 exit() def show(self): # student_func 這個字典是功能名和要執行的函式 student_func = {"檢視課程": self.check_course, '選擇課程': self.select_course, "檢視所選課程": self.check_select_course,"退出":self.exit} while 1: tmp = {} # 修改gongneng這個字典, 保留索引和函式 for index, i in enumerate(student_func, 1): print(index, i) tmp[str(index)] = student_func[i] C = input("請輸入你的選擇") # 根據不同的選擇, 執行不同的函式 if C in tmp: tmp[C]() class Administrator: def __init__(self, name): self.name = name def check_all_course(self): # 檢視所有課程 with open("course", 'r', encoding="utf-8") as f: # course是課程檔案 for index, i in enumerate(f.read().split("|"), 1): print(index, i) def create_course(self): # 建立課程 with open("course", 'r+', encoding="utf-8") as f: flag = 0 name =input('請輸入需建立課程的名稱:').strip() tmp = f.read().split("|") for i in range(len(tmp)): if tmp[i] == name: print('您建立的課程已經存在') flag = 1 break else: continue if flag == 0: f.write('|' + name) print('恭喜你課程建立成功') def check_all_select_course(self): # 檢視所有學生的選課情況(每個學生的選課情況) with open("user_course", 'r', encoding="utf8") as f: user_course = json.load(f) print(user_course) def check_all_student(self): # 檢視所有學生 with open('user', encoding="utf-8", mode='r+') as f: l1 = [] tmp = f.readlines() for i in range(len(tmp)): tmp[i] = tmp[i].split("|") l1.append(tmp[i][0]) for i in range(len(l1)): print(l1[i]) def create_student_account(self): # 建立學生賬號 with open('user', encoding="utf-8", mode='r+') as f: name = input("請輸入學生的姓名:").strip() password = input("請輸入學生的密碼:").strip() tmp = f.readlines() while 1: flag = 0 for i in range(len(tmp)): tmp[i] = tmp[i].split("|") if tmp[i][0] == name: print('您建立的使用者名稱已存在,請重新輸入') flag = 1 break else: continue if flag == 0: f.write(name + '|' + password + '|' + 'S' + '\n') print("恭喜你,學生使用者建立成功") break else: break def exit(self): # 退出程式 exit() def show(self): # administrator_func 這個字典是功能名和要執行的函式 administrator_func = {"建立課程": self.create_course, '建立學生賬號': self.create_student_account, "檢視所有課程": self.check_all_course,'檢視所有學生':self.check_all_student, '檢視所有學生的選課情況':self.check_all_select_course,"退出": self.exit } while 1: tmp = {} # 修改gongneng這個字典, 保留索引和函式 for index, i in enumerate(administrator_func, 1): print(index, i) tmp[str(index)] = administrator_func[i] C = input("請輸入你的選擇") # 根據不同的選擇, 執行不同的函式 if C in tmp: tmp[C]() with open('user', encoding='utf-8', mode='r') as f: tmp = f.readlines() while 1: name = input("請輸入姓名:").strip() password = input("請輸入密碼:").strip() for i in range(len(tmp)): l2 = tmp[i].strip().split("|") # print(l2) if l2[0] == name and l2[1] == password and l2[2] == 'S': print('%s恭喜你登入成功' %(name)) s = Student(name) s.show() elif l2[0] == name and l2[1] == password and l2[2] == 'A': print('%s恭喜你登入成功' % (name)) a = Administrator(name) a.show() else: print('賬號或者密碼輸入錯誤,請重新輸入')