第六周作業——選課系統
阿新 • • 發佈:2017-09-20
sse 修改 exist logs 查看 __name__ stat 功能 退出
選課系統:
角色:學校、學員、課程、講師
要求:
1. 創建北京、上海 2 所學校
2. 創建linux , python , go 3個課程 , linux\py 在北京開, go 在上海開
3. 課程包含,周期,價格,通過學校創建課程
4. 通過學校創建班級, 班級關聯課程、講師
5. 創建學員時,選擇學校,關聯班級
5. 創建講師角色時要關聯學校,
6. 提供兩個角色接口
6.1 學員視圖, 可以註冊, 交學費, 選擇班級,
6.2 講師視圖, 講師可管理自己的班級, 上課時選擇班級, 查看班級學員列表 , 修改所管理的學員的成績
6.3 管理視圖,創建講師, 創建班級,創建課程
7. 上面的操作產生的數據都通過pickle序列化保存到文件裏
import pickle import os BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) db_path = BASE_PATH + ‘/db‘ admin_path = db_path + ‘/admin‘ classes_path = db_path + ‘/classes‘ course_path = db_path + ‘/course‘ school_path = db_path + ‘/school‘ student_path = db_path + ‘/student‘ teacher_path= db_path + ‘/teacher‘ # with open(classes_path + ‘/1‘,‘r‘) as f: # for line in f: # print(line) class Admin_base(object): def __init__(self): pass #創建類方法,本身就是類的功能,不需要進行實例化,分別為存入和取出數據 @staticmethod def save_pickle(save_dict,save_path): pickle.dump(save_dict,open(save_path,‘wb‘)) @staticmethod def read_pickle(save_path): read_dict = pickle.load(open(save_path,‘rb‘)) return read_dict #創建學校的方法 @staticmethod def create_school(): school_name = input(‘請輸入學校名稱:‘).strip() school_add = input(‘請輸入學校地址:‘).strip() school_classes = input(‘請輸入學校班級:‘).strip() school_course = input(‘請輸入學校課程:‘).strip() school_teacher = input(‘請輸入老師姓名:‘).strip() save_dict = {} save_dict[‘name‘] = school_name save_dict[‘address‘] = school_add save_dict[‘classes‘] = school_classes save_dict[‘course‘] = school_course save_dict[‘teacher‘] = school_teacher save_path = school_path + ‘/%s%s‘%(school_name,school_add) Admin_base.save_pickle(save_dict,save_path) #創建班級的方法 @staticmethod def create_classes(): classes_name = input(‘請輸入班級名稱:‘).strip() classes_course = input(‘請輸入班級課程:‘).strip() save_dict = {} save_dict[‘name‘] = classes_name save_dict[‘course‘] = classes_course save_path = classes_path + ‘/%s‘%(classes_name) Admin_base.save_pickle(save_dict, save_path) #創建老師 @staticmethod def create_teacher(): teacher_name = input(‘請輸入老師名稱:‘).strip() teacher_course = input(‘請輸入課程名稱:‘).strip() save_dict = {} save_dict[‘name‘] = teacher_name save_dict[‘course‘] = teacher_course save_path = teacher_path + ‘/%s‘ % (teacher_name) Admin_base.save_pickle(save_dict, save_path) #創建課程 @staticmethod def create_course(): course_name = input(‘請輸入課程名稱:‘).strip() course_teacher = input(‘請輸入老師名稱:‘).strip() save_dict = {} save_dict[‘name‘] = course_name save_dict[‘course‘] = course_teacher save_path = course_path + ‘/%s‘ % (course_name) Admin_base.save_pickle(save_dict, save_path) # 創建學生 @staticmethod def create_student(): student_name = input(‘請輸入學生名稱:‘).strip() student_course = input(‘請輸入課程名稱:‘).strip() save_dict = {} save_dict[‘name‘] = student_name save_dict[‘course‘] = student_course save_dict[‘school‘] = ‘None‘ save_path = student_path + ‘/%s‘ % (student_name) Admin_base.save_pickle(save_dict, save_path) class Student(Admin_base): def __init__(self): Admin_base.__init__(self) @staticmethod def student_option(): username = input(‘請輸入您的姓名:‘).strip() school_all = os.listdir(school_path) school_name_list = [] for school_name in school_all: school_dict = Admin_base.read_pickle(school_path + ‘/%s‘%(school_name)) school_name_list.append(school_dict[‘name‘]) course_all = os.listdir(course_path) print(‘可選的學校如下:‘,school_name_list) school_option = input(‘請輸入您選擇的學校:‘).strip() print(‘可選的課程如下:‘,course_all) course_option = input(‘請輸入您選擇的課程:‘).strip() save_dict = {} save_dict[‘name‘] = username save_dict[‘course‘] = course_option save_dict[‘school‘] = school_option save_path = classes_path + ‘/%s‘ % (username) Admin_base.save_pickle(save_dict, save_path) class Teacher(Admin_base): def __init__(self): Admin_base.__init__(self) @staticmethod def check_course(): course_all = os.listdir(course_path) print(‘課程如下:‘,course_all) course_option = input(‘請選擇您的課程:‘).strip() student_all = os.listdir(student_path) student_now_course = [] for student_one in student_all: save_path = student_path + ‘/%s‘%(student_one) save_dict = Admin_base.read_pickle(save_path) if save_dict[‘course‘] == course_option: student_now_course.append(save_dict[‘name‘]) else: pass print(‘您的學生列表:‘,student_now_course) def login_read(): while 1: option = input(‘請選擇您要進行的操作:‘ ‘1.管理‘ ‘2.學生‘ ‘3.老師‘ ‘4.退出‘) a = True while a: if option == ‘1‘: username = input(‘請輸入用戶名:‘) password = input(‘請輸入密碼:‘) username_path = admin_path + ‘/%s‘%(username) if os.path.exists(username_path): admin_dict = Admin_base.read_pickle(username_path) if password == admin_dict[‘password‘]: print(‘登錄成功!‘) option_next = input(‘請選擇您要進行的操作:‘ ‘1.新建學校‘ ‘2.新建班級‘ ‘3.新建課程‘ ‘4.新建老師‘ ‘5.新建學生‘ ‘6.返回‘) if option_next == ‘1‘: Admin_base.create_school() break if option_next == ‘2‘: Admin_base.create_classes() break if option_next == ‘3‘: Admin_base.create_course() break if option_next == ‘4‘: Admin_base.create_teacher() break if option_next == ‘5‘: Admin_base.create_student() break if option_next == ‘6‘: a = False else: print(‘輸入有誤!‘) break else: print(‘密碼錯誤!‘) break else: print(‘用戶名錯誤!‘) break if option == ‘2‘: Student.student_option() break if option == ‘3‘: Teacher.check_course() break if option == ‘4‘: exit() else: print(‘輸入錯誤!‘) break # a = pickle.load(open(school_path + ‘/老男孩北京‘,‘rb‘)) # print(a) # a = os.listdir(admin_path) # print(a) if __name__ == ‘__main__‘: login_read() # login_read() # save_dict = {‘username‘:‘admin‘,‘password‘:‘admin‘} # save_path = admin_path + ‘/admin‘ # Admin_base.save_pickle(save_dict,save_path)
7. 上面的操作產生的數據都通過pickle序列化保存到文件裏
第六周作業——選課系統