python3自學之路作業 選課系統
阿新 • • 發佈:2019-01-03
本節作業:選課系統
角色:學校、學員、課程、講師
要求:
1. 建立北京、上海 2 所學校
2. 建立linux , python , go 3個課程 , linux\py 在北京開, go 在上海開
3. 課程包含,週期,價格,通過學校建立課程
4. 通過學校建立班級, 班級關聯課程、講師
5. 建立學員時,選擇學校,關聯班級
5. 建立講師角色時要關聯學校,
6. 提供兩個角色介面
6.1 學員檢視, 可以註冊, 交學費, 選擇班級,
6.2 講師檢視, 講師可管理自己的班級, 上課時選擇班級, 檢視班級學員列表 , 修改所管理的學員的成績
6.3 管理檢視,建立講師, 建立班級,建立課程
7. 上面的操作產生的資料都通過pickle序列化儲存到檔案裡
程式結構:
course.py
main.pyimport pickle import os file_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) db_path = file_path + r'\db' db_school = db_path + r'\school' db_course = db_path + r'\course' class File_operation(object): def __init__(self): pass """ 測試方法: # s1 = School('NJAU','浦口') # s1.creatcourse() """ def save(self,type,file_name,dict): ''' 儲存資料 ''' path = '%s\%s' %(db_path,type) file_path = '%s\%s' %(path,file_name) if not os.path.isdir(path): os.mkdir(path) if os.path.isdir(path): with open(file_path,'wb') as f: f.write(pickle.dumps(dict)) f.flush() print('-------------',type,'建立成功','-------------') for key in dict: print(key,':\t',dict[key]) def view_list(self,type): msg_list = [] path = '%s\%s' %(db_path,type) if os.path.isdir(path): print('-------------',type,'列表','-------------') for filelist in os.listdir(path): #print(filelist) msg_list.append(filelist) return msg_list """ 測試方法: f1 = File_operation() print(f1.open('course')) """ def open(self,type): ''' 讀取資料 ''' path = '%s\%s' %(db_path,type) data = [] if os.path.isdir(path): for filelist in os.listdir(path): if os.path.isfile(os.path.join(path,filelist)): db_file = os.path.join(path,filelist) with open(db_file,'rb') as f: file_dict = pickle.load(f) data.append(file_dict) return data '''課程類''' class Course(object): def __init__(self,name,period,price): self.name = name self.period = period self.price = price '''學校成員類''' class SchoolMember(object): def __init__(self,name,school): self.name = name self.school = school '''講師類''' class Teacher(SchoolMember): def __init__(self,name,school,salary): super(Teacher,self).__init__(name,school) self.salary = salary def choose_grade(self): grade_list = File_operation.view_list(self, 'grade') print("歡迎進入講師選班系統") msg_grade = input('請輸入班級名:').strip() if msg_grade in grade_list: print("講師 %s 選擇%s班級成功 " %(self['name'],msg_grade)) print(self['name'],msg_grade) else: print("講師 %s 選擇%s班級失敗 " %(self['name'],msg_grade)) def view_studentList(self): student_list = File_operation.view_list(self, 'student') print(student_list) def change_studentscore(self): print("歡迎進入講師評閱系統") msg_name = input('請輸入學生姓名:').strip() msg_score = input('請輸入學生分數:').strip() if msg_name in File_operation.view_list(self, 'student'): msg = File_operation.open(self, 'student') for bill in msg: if bill["name"] == msg_name: bill["score"] = msg_score #self.name print('講師 %s 修改學生%s %s成績為%s' %(self['name'],msg_name,bill["grade"],msg_score)) else: print("不存在名為 %s 的學生" %msg_name) '''學生類''' class Student(SchoolMember): def __init__(self,name,sex,school,grade): super(Student,self).__init__(name,school) self.grade = grade self.sex = sex def register(self): stu_msg = {} print("歡迎進入學生註冊系統") stu_name = input('姓名:') stu_sex = input('性別:') stu_school = input('學校:') stu_grade = input('班級:') st = Student(stu_name,stu_sex,stu_school,stu_grade) stu_msg['name'] = st.name stu_msg['sex'] = st.sex stu_msg['school'] = st.school stu_msg['grade'] = st.grade stu_msg['score'] = 0 File_operation.save(self, 'student',st.name,stu_msg) def pay(self): print("*********恭喜你繳費成功*********") '''學校類''' class School(object): def __init__(self,name,address,course): self.name = name self.address = address self.course = course def creatcourse(self): ''' 建立課程 ''' course_dict = {} print('--------------歡迎進入建立課程系統--------------') course_name = input("課程名:") course_period = input("週期:") course_price = input("價格:") course_test = Course(course_name,course_period,course_price) course_dict['course'] = course_test.name course_dict['period'] = course_test.period course_dict['price'] = course_test.price File_operation.save(self, 'course',course_test.name,course_dict) def creatgrade(self): ''' 建立班級 ''' grade_dict = {} print('--------------歡迎進入建立班級系統--------------') grade_name = input("班級名:") grade_course = input("所學課程:") grade_teacher = input("授課講師:") grade_test = Grade(grade_course,grade_name,grade_teacher) grade_dict['grade'] = grade_test.name grade_dict['course'] = grade_test.course grade_dict['teacher'] = grade_test.teacher File_operation.save(self, 'grade',grade_course,grade_dict) '''班級類''' class Grade(object): def __init__(self,course,name,teacher): self.course = course self.name = name self.teacher = teacher class Admin(object): def __init__(self): pass def create_teacher(self): teacher_dict = {} print('--------------歡迎進入講師註冊系統--------------') teacher_name = input("姓名:") teacher_school = input("學校:") teacher_salary = input("工資:") teacher_test = Teacher(teacher_name,teacher_school,teacher_salary) teacher_dict['name'] = teacher_test.name teacher_dict['school'] = teacher_test.school teacher_dict['salary'] = teacher_test.salary File_operation.save(self, 'teacher',teacher_test.name,teacher_dict) def create_grade(self): School.creatgrade(self) def create_course(self): School.creatcourse(self) def create_school(self): school_dict = {} print('--------------歡迎進入學校建立系統--------------') school_name = input("校名:") school_address = input("地址:") school_course = input("課程:") school_test = School(school_name,school_address,school_course) school_dict['school'] = school_test.name school_dict['address'] = school_test.address school_dict['course'] = school_test.course File_operation.save(self, 'school',school_test.name,school_dict) class Student_view(Student): def __init__(self,name,sex,school,grade): super(Student_view,self).__init__(name,sex,school,grade) def login(self): msg = """ --------------歡迎進入學生管理檢視-------------- 1、註冊 2、繳費 3、返回 """ msg_dist = { '1':Student.register, '2':Student.pay, '3':"logout" } if True: exit_flag = False while not exit_flag: print(msg) option = input('請選擇:').strip() if option in msg_dist: if int(option) == 3: exit_flag = True else: msg_dist[option](self) else: print('--------------輸入錯誤--------------') class Teacher_view(Teacher): def __init__(self,name,school,salary): super(Teacher_view,self).__init__(name,school,salary) def login(self): msg = """ --------------歡迎進入講師管理檢視-------------- 1、選擇班級 2、檢視學員列表 3、修改學員成績 4、返回 """ msg_dist = { '1':Teacher.choose_grade, '2':Teacher.view_studentList, '3':Teacher.change_studentscore, '4':"logout" } if True: exit_flag = False while not exit_flag: print(msg) option = input('請選擇:').strip() if option in msg_dist: if int(option) == 4: exit_flag = True else: msg_dist[option](self) else: print('--------------輸入錯誤--------------') class Admin_view(Admin): def __init__(self): pass def login(self): msg = """ --------------歡迎進入管理員檢視-------------- 1、建立講師 2、建立班級 3、建立課程 4、返回 """ msg_dist = { '1':Admin.create_teacher, '2':Admin.create_grade, '3':Admin.create_course, '4':"logout" } if True: exit_flag = False while not exit_flag: print(msg) option = input('請選擇:').strip() if option in msg_dist: if int(option) == 4: exit_flag = True else: msg_dist[option](self) else: print('--------------輸入錯誤--------------') class run(object): def __init__(self): pass def check_msg(self): mms = {} name = input("請輸入您的姓名:").strip() type = input("請輸入您的身份:").strip() if name in File_operation.view_list(self,type): msg = File_operation.open(self, type) for bill in msg: if bill["name"] == name: print("驗證成功") print(bill) return bill,True else: print("******身份錯誤******") return False,False def interactive(self): msg = """ --------------歡迎進入系統檢視-------------- 1、學員檢視 2、講師檢視 3、管理檢視 4、退出 """ msg_dist = { '1':Student_view, '2':Teacher_view, '3':Admin_view, '4':"logout" } if True: exit_flag = False while not exit_flag: print(msg) option = input('請選擇:').strip() if option in msg_dist: if int(option) == 4: exit_flag = True elif int(option) == 3: msg_dist[option].login(self) else: account,check = run.check_msg(self) if check: print('驗證真的的成功了') msg_dist[option].login(account) else: print('--------------輸入錯誤--------------')
import os,sys
file_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
core_path = file_path + r'\core'
sys.path.append(file_path)
from core import course
if __name__ == '__main__':
start = course.run()
start.interactive()
程式執行效果圖:--------------歡迎進入系統檢視-------------- 1、學員檢視 2、講師檢視 3、管理檢視 4、退出 請選擇:2 請輸入您的姓名:hcl 請輸入您的身份:ln ******身份錯誤****** --------------歡迎進入系統檢視-------------- 1、學員檢視 2、講師檢視 3、管理檢視 4、退出 請選擇: 2 請輸入您的姓名:hcl 請輸入您的身份:teacher ------------- teacher 列表 ------------- 驗證成功 {'name': 'hcl', 'school': 'njau', 'salary': '10000'} 驗證真的的成功了 --------------歡迎進入講師管理檢視-------------- 1、選擇班級 2、檢視學員列表 3、修改學員成績 4、返回 請選擇:1 ------------- grade 列表 ------------- 歡迎進入講師選班系統 請輸入班級名:python 講師 hcl 選擇python班級失敗 --------------歡迎進入講師管理檢視-------------- 1、選擇班級 2、檢視學員列表 3、修改學員成績 4、返回 請選擇:2 ------------- student 列表 ------------- ['ln'] --------------歡迎進入講師管理檢視-------------- 1、選擇班級 2、檢視學員列表 3、修改學員成績 4、返回 請選擇: 3 歡迎進入講師評閱系統 請輸入學生姓名:ln 請輸入學生分數:100 ------------- student 列表 ------------- 講師 hcl 修改學生ln 電氣成績為100 --------------歡迎進入講師管理檢視-------------- 1、選擇班級 2、檢視學員列表 3、修改學員成績 4、返回 請選擇: 4 --------------歡迎進入系統檢視-------------- 1、學員檢視 2、講師檢視 3、管理檢視 4、退出 請選擇: 2 請輸入您的姓名:hcl 請輸入您的身份:teacher ------------- teacher 列表 ------------- 驗證成功 {'name': 'hcl', 'school': 'njau', 'salary': '10000'} 驗證真的的成功了 --------------歡迎進入講師管理檢視-------------- 1、選擇班級 2、檢視學員列表 3、修改學員成績 4、返回 請選擇: 4 --------------歡迎進入系統檢視-------------- 1、學員檢視 2、講師檢視 3、管理檢視 4、退出 請選擇:1 請輸入您的姓名:ln 請輸入您的身份:student ------------- student 列表 ------------- 驗證成功 {'name': 'ln', 'sex': '女', 'school': 'NAUU', 'grade': '電氣', 'score': 0} 驗證真的的成功了 --------------歡迎進入學生管理檢視-------------- 1、註冊 2、繳費 3、返回 請選擇: 2 *********恭喜你繳費成功********* --------------歡迎進入學生管理檢視-------------- 1、註冊 2、繳費 3、返回 請選擇: 3 --------------歡迎進入系統檢視-------------- 1、學員檢視 2、講師檢視 3、管理檢視 4、退出 請選擇:3 --------------歡迎進入管理員檢視-------------- 1、建立講師 2、建立班級 3、建立課程 4、返回 請選擇:1 --------------歡迎進入講師註冊系統-------------- 姓名:hn 學校:NJAU 工資:20000 ------------- teacher 建立成功 ------------- name : hn school : NJAU salary : 20000 --------------歡迎進入管理員檢視-------------- 1、建立講師 2、建立班級 3、建立課程 4、返回 請選擇:2 --------------歡迎進入建立班級系統-------------- 班級名:Linux 所學課程:linux 授課講師:hcl ------------- grade 建立成功 ------------- grade : Linux course : linux teacher : hcl --------------歡迎進入管理員檢視-------------- 1、建立講師 2、建立班級 3、建立課程 4、返回 請選擇: 3 --------------歡迎進入建立課程系統-------------- 課程名:linux 週期:2 價格:200 ------------- course 建立成功 ------------- course : linux period : 2 price : 200 --------------歡迎進入管理員檢視-------------- 1、建立講師 2、建立班級 3、建立課程 4、返回 請選擇: 4 --------------歡迎進入系統檢視-------------- 1、學員檢視 2、講師檢視 3、管理檢視 4、退出 請選擇:4
能實現大部分功能 但存在缺陷
額.........忘記建立學校了