學生選課系統
阿新 • • 發佈:2018-10-02
程序 初始 urn __main__ with func 提交 課程 拼接
#ADM.py #-*-coding:utf-8 -*- __author__ = ‘MrChu‘ import hashlib class GetMd5:#MD5加密 @classmethod def get_md5(self,msg): md5=hashlib.md5(b‘salt!@#$%^&*‘)#加鹽 md5.update(msg.encode(‘utf-8‘)) return md5.hexdigest() class Course:#課程類 all_course_list=[]#所有課程列表 @classmethoddef add_new_course(cls,course): Course.all_course_list.append(course) class Administrators:#管理員類 def __init__(self,name,pwd):#管理員初始化方法 self.adm_list=[]#管理員賬號列表 self.stu_list=[]#學生賬號列表 self.name=name#賬號 self.pwd=pwd#密碼 self.gongNeng_list =[‘new_Course‘,‘new_student‘,‘show_all_course‘,‘show_all_student‘,‘show_all_stu_course‘]#功能列表 def login(self,name,pwd):#管理員登錄方法 with open(‘administrators.txt‘,mode=‘r‘,encoding=‘utf-8‘)as f:#讀取管理員信息文件 for line in f: if line==‘‘:#去空行 continue self.adm_list.append(line.strip().split(‘|‘)[0])#把管理員賬號放到管理員類的管理員賬號列表 if name+‘|‘+GetMd5.get_md5(pwd) ==line.strip():#拼接傳入的name和加鹽的pwd,與文件數據作對比 print(‘登錄成功‘) self.main_run()#運行管理員主程序方法 break else: print(‘登錄失敗,請重新輸入‘) def main_run(self):#管理員主程序方法 with open(‘student.txt‘,mode=‘r‘,encoding=‘utf-8‘)as f:#讀學生的文件 for line in f: if line==‘‘:#去空行 continue self.stu_list.append(line.strip().split(‘|‘)[0])#把學生賬號添加到管理員類的學生賬號列表 with open(‘course.txt‘,mode=‘r‘,encoding=‘utf-8‘)as f:#讀取課程文件 for line in f: if line==‘‘:#去空行 continue Course.all_course_list.append(line.strip())#把所有的課程放到課程類的課程列表中 print(‘歡迎進入管理員課程維護系統‘) while 1: print(‘1.創建課程‘) print(‘2.創建學生賬號‘) print(‘3.查看所有課程‘) print(‘4.查看所有學生‘) print(‘5.查看所有學生的選課情況‘) num=input(‘請選擇要操作的序號(按Q退出維護系統)>>>‘) if num.upper()==‘Q‘: break func=getattr(self,self.gongNeng_list[int(num)-1])#反射通過輸入的值運行相應的方法 func() def new_Course(self):#創建新課程 while 1: course=input(‘請輸入新建課程(按Q退出):‘) if course.upper() == ‘Q‘: break if course in Course.all_course_list:#如果輸入課程在課程類全部課程列表中 print(‘已有此課程‘) else: Course.add_new_course(course)#把課程添加到課程類全部課程列表中 with open(‘course.txt‘,mode=‘a‘,encoding=‘utf-8‘)as f:#在課程文件中追加寫入新課程 f.write(course+‘\n‘) print(‘創建課程成功‘) def new_student(self):#創建新的學生對象 while 1: name=input(‘請輸入創建賬號(按Q退出):‘) if name.upper()==‘Q‘: break psd=input(‘請輸入創建密碼:‘) for el in self.stu_list:#遍歷管理員類的學生賬號列表 if name==el:#如果有此賬號 print(‘已有此賬號‘) else: self.stu_list.append(name)#把學生賬號添加入管理員類的學生賬號列表 with open(‘student.txt‘,mode=‘a‘,encoding=‘utf-8‘)as f:#追加寫入學生信息文件 f.write(name+‘|‘+GetMd5.get_md5(psd)+‘\n‘) print(‘創建學生賬號成功‘) def show_all_course(self):#顯示所有課程方法 print(‘現有課程有:‘) for el in Course.all_course_list: print(el) def show_all_student(self):#顯示所有學生方法 print(‘所有的學生有:‘) for el in self.stu_list: print(el) def show_all_stu_course(self):#顯示所有學生的選課信息方法 with open(‘student_chioce_course.txt‘, mode=‘r‘, encoding=‘utf-8‘)as f: for line in f: print(line.strip()) def zhuce(self,name,psd):#註冊管理員方法 with open(‘administrators.txt‘,mode=‘r‘,encoding=‘utf-8‘)as f:#讀取管理員信息文件 for line in f: if line==‘‘: continue self.adm_list.append(line.strip().split(‘|‘)[0])#把管理員賬號放到管理員類的管理員賬號列表 if name in self.adm_list:#判斷賬號是否存在 print(‘已經存在此管理員‘) else: with open(‘administrators.txt‘, mode=‘a‘, encoding=‘utf-8‘)as f:#把新創建的管理員賬號秘密追加寫入管理員信息文件 f.write(name + ‘|‘ + GetMd5.get_md5(psd) + ‘\n‘)#賬號拼接加鹽密碼寫入 print(‘創建管理員賬號成功‘)
#STU.py #-*-coding:utf-8 -*- __author__ = ‘MrChu‘ import hashlib class GetMd5:#MD5加密 @classmethod def get_md5(self,msg): md5=hashlib.md5(b‘salt!@#$%^&*‘)#加鹽 md5.update(msg.encode(‘utf-8‘)) return md5.hexdigest() class Course:#課程類 all_course_list=[]#所有課程列表 @classmethod def add_new_course(cls,course): Course.all_course_list.append(course) class Student:#學生類 def __init__(self,name,pwd):#學生初始化方法 self.choiced_course_name_lst=[]#已經選課姓名列表 self.name=name #學生賬號 self.pwd=GetMd5.get_md5(pwd) #學生密碼 self.course_list=[]#學生已選課程列表 self.gongNeng_list=[‘show_all_course‘,‘choice_course‘,‘show_chioce_course‘,‘del_course‘]#功能列表 self.dic={}#存放每個學生已經選課的情況 def __str__(self):#打印學生對象的方法 return ‘學生賬號對象‘ def login(self,name,pwd):#學生登錄方法 with open(‘student_chioce_course.txt‘,mode=‘r‘,encoding=‘utf-8‘)as f:#讀取學生已經選取的課程文件 for line in f: if line==‘‘: continue self.choiced_course_name_lst.append(line.strip().split(‘|‘)[0])#截取已經選課學生姓名放入學生類已經選課姓名列表 with open(‘student.txt‘, mode=‘r‘, encoding=‘utf-8‘)as f:#讀學生文件 for line in f: if name+‘|‘+GetMd5.get_md5(pwd) == line.strip():#拼接傳入的name和pwd與文件中的數據對比 if self.name in self.choiced_course_name_lst: print(‘此學生已經提交了選課方案,不能再次登陸‘) break else: print(‘登錄成功‘) self.main_run()#運行主程序方法 break else: print(‘登錄失敗,請重新輸入‘) def main_run(self):#主程序方法 with open(‘course.txt‘,mode=‘r‘,encoding=‘utf-8‘)as f:#讀全部的課程文件 for line in f: if line==‘‘:#去除空行 continue Course.all_course_list.append(line.strip())#把所有的課程放到課程類的課程列表中 print(‘歡迎進入學生選課系統‘) while 1: print(‘1.查看所有課程‘) print(‘2.選擇課程‘) print(‘3.查看所選課程‘) print(‘4.刪除已選課程‘) num=input(‘請選擇要操作的序號(按Q退出)>>>‘) if num.upper()==‘Q‘: response=self.tiJiao() if response==1: break func=getattr(self,self.gongNeng_list[int(num)-1])#反射通過輸入的值運行相應的方法 func() def show_all_course(self):#顯示所有課程的方法 print(‘現有課程有:‘) for el in Course.all_course_list:#遍歷課程類的全部課程列表 print(el) def choice_course(self):#選課的方法 while 1: course = input(‘請輸入要添加的課程(按Q退出,):‘) if course.upper() == ‘Q‘: break if course in Course.all_course_list:#所選課程在課程類的全部課程列表中,可以選課 self.course_list.append(course)#把課程放到學生對象的已選課程列表 print(‘添加成功‘) else: print(‘沒有此課程‘) def show_chioce_course(self):#顯示所選課程列表 print(‘您所選的課程有:‘) for el in self.course_list:#遍歷學生對象的已選課程列表 print(el) def del_course(self):#刪除學生已選課程列表的內容 while 1: course = input(‘請輸入要刪除的課程(按Q退出):‘) if course.upper()==‘Q‘: break if course in self.course_list: self.course_list.remove(course) print(‘刪除成功‘) else: print(‘沒有此課程‘) def tiJiao(self):#提交按鈕方法 content=input(‘您是否確認提交選課,確認後不可修改,輸入 Y 或者 N ?‘) if content.upper()==‘Y‘: course_str = ‘‘ # 設置一個空字符串 for el in self.course_list: # 遍歷學生對象的已選課程列表 course_str += el + ‘|‘ # 動態拼接已選的所有課程 course_str = course_str.rstrip(‘|‘) # 去除右邊的‘|‘ with open(‘student_chioce_course.txt‘, mode=‘a‘, encoding=‘utf-8‘)as f: # 打開學生已選課程文件 f.write(self.name + ‘|‘ + course_str + ‘\n‘) # 拼接學生姓名寫入學生的選課信息 return 1 elif content.upper()==‘N‘: return 0 else: print(‘輸入有誤‘) return -1
#main.py #-*-coding:utf-8 -*- __author__ = ‘MrChu‘ import STU import ADM class Run: @classmethod def login(self): while 1: print(‘1.管理員登錄‘) print(‘2.學生登錄‘) print(‘3.註冊管理員賬號‘) num = input("請選擇登錄方式(按‘Q‘退出程序)>>>") if num.upper() == ‘Q‘: break if int(num) == 1: while 1: name = input(‘請輸入登錄賬號(按Q返回主登錄頁面):‘) if name.upper() == ‘Q‘: break pwd = input(‘請輸入密碼:‘) ad=ADM.Administrators(name,pwd) func=getattr(ad,‘login‘) func(name,pwd) elif int(num)==2: while 1: name = input(‘請輸入登錄賬號(按Q返回主登錄頁面):‘) if name.upper() == ‘Q‘: break pwd = input(‘請輸入密碼‘) stu=STU.Student(name,pwd) func=getattr(stu,‘login‘) func(name,pwd) elif int(num) == 3: while 1: name = input(‘請輸入註冊賬號(按Q返回主登錄頁面):‘) if name.upper() == ‘Q‘: break pwd = input(‘請輸入密碼‘) ad = ADM.Administrators(name, pwd) func = getattr(ad, ‘zhuce‘) func(name, pwd) if __name__=="__main__": Run.login()
學生選課系統