选课系统作业
Posted 缪阿布
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选课系统作业相关的知识,希望对你有一定的参考价值。
1) 程序主功能代码 def config_path(arg): \'\'\' 返回当前系统下的数据文件的存放位置 \'\'\' # BASE_DIR = os.path.dirname(os.path.abspath(os.path.abspath(__file__))) if platform.system() == "Windows": conf_path = (PATH_DIR+\'\\\\\'+\'database\'+\'\\\\\'+arg) else: conf_path = (PATH_DIR+\'/\'+\'database\'+\'/\'+arg) return conf_path class file_open(object): \'\'\' 文件读写操作 \'\'\' def __init__(self,database,mothed): self.db = database self.mode = mothed def write_f(self,info): self.info = info f = open(self.db,self.mode, encoding=\'utf-8\') f.write(json.dumps(self.info,ensure_ascii=False)) def read_f(self): f = open(self.db,self.mode, encoding=\'utf-8\') info = json.loads(f.read()) return (info) def __del__(self): pass class school(file_open): def __init__(self,school_name): self.sc_name = school_name def get_school(self): info = file_open(config_path("db_school.txt"),\'r\').read_f() if self.sc_name in info.keys(): print((self.sc_name+"校区").center(35,\'+\'),\'\\n\',(\'{0:1s}{1:10s}{2:10s}\'.format(\'%s\'.center(0), \'%s\'.center(10), \'%s\'.center(10)) % (info[self.sc_name][0],info[self.sc_name][1],info[self.sc_name][2]))) # return info[self.sc_name] else: # print(\'%s校区不存在\'%self.sc_name) return "NULL" def creat_school(self,school_fullname,school_address,school_city): self.sc_fname = school_fullname self.sc_address = school_address self.sc_city = school_city info = {self.sc_name:[self.sc_fname,self.sc_address,self.sc_city]} print("创建学校".center(45,\'+\'),\'\\n\',(\'{0:1s}{1:10s}{2:10s}{3:10s}\'.format(\'%s\'.center(0), \'%s\'.center(10),\'%s\'.center(10), \'%s\'.center(10)) % (self.sc_name,self.sc_fname,self.sc_address,self.sc_city))) # file_open(config_path("db_school.txt"),\'a+\').write_f(info) r_info = file_open(config_path("db_school.txt"),\'r+\').read_f() if self.sc_name in r_info.keys(): print("修改%s信息"%self.sc_fname) else: r_info.update(info) file_open(config_path("db_school.txt"), \'w+\').write_f(r_info) class course(school): def __init__(self,course_name,school_name): super(course,self).__init__(school_name) self.co_name = course_name \'\'\' 预留课程创建权限 \'\'\' def creat_course(self,course_semeste,course_time,course_price,course_teacher): self.co_semeste = course_semeste self.co_time = course_time self.co_price = course_price self.co_teacher = course_teacher # \'SH\':[[\'go\',\'3期\',\'2017.8.1\',\'8000\',\'luo\']] info = {self.sc_name:[[self.co_name,self.co_semeste,self.co_time,self.co_price,self.co_teacher]]} if school(self.sc_name).get_school() =="NULL": print("校区不存在!") def get_course(self): # print(info["SH"][0]) >> [\'go\', \'3期\',\'2017.8.1\', \'8000\', \'luo\'] info = file_open(config_path("db_course.txt"), \'r\').read_f() for n in filter(lambda x: self.co_name in x, [x for x in info[self.sc_name]]): return n def classes_info(self): info = self.get_course() self.get_school() tip = (\'{0:10s}{1:10s}{2:10s}{3:10s}\'.format(\'课程\'.center(10),\'学期\'.center(10),\'开课时间\'.center(10),\'导师\'.center(10))) msg = (\'{0:10s}{1:10s}{2:10s}{3:10s}\'.format(\'%s\'.center(10),\'%s\'.center(10),\'%s\'.center(10),\'%s\'.center(10))%(info[0],info[1],info[2],info[4])) print(("%s班级"%self.co_name).center(45,\'-\'),\'\\n\',tip,\'\\n\',msg) return info class people(course): def __init__(self,school_name): # super(people,self).__init__(school_name) self.sc_name = school_name def new_one(self,p_name,p_age,p_passwd,p_role): self.p_name = p_name self.p_age = p_age self.p_passwd = p_passwd self.p_role = p_role info = file_open(config_path("db_members.txt"), \'r\').read_f() old_p = info[self.sc_name][p_role] #现有的学员/导师 new_p = [self.p_name, self.p_age, self.p_passwd] #新学员/导师 old_p.append(new_p) info[self.sc_name][p_role] = old_p file_open(config_path("db_members.txt"), \'w\').write_f(info) def get_msg(self,course_name): super(people,self).__init__(course_name) info = file_open(config_path("db_members.txt"), \'r\').read_f() def goods_list(username): menus_tmp = [] #临时存放货物类别 goods = json.loads(goodsinfo) while True: #打印一级目录 print("Credit card mall!".center(60, "-")) for k in enumerate(goods): print(k[0], \'.\', k[1]) print(\'\\t\') menus_tmp.append(k) for j in enumerate(goods[k[1]]): print(\'\\t\', j[0], \'.\', j[1]) try: i = input("一输入你想购买的商品类别编号:") while True: if i.isdigit(): i = int(i) if i >= 0 and i <= len(goods.items()) - 1: break else: i = input("超出商品列表范围!") continue else: i = input("请输入数字!") continue except ValueError as e: print(e) pass # 打印二级商品栏目 s = goods.get(menus_tmp[i][1]) shopping_car = [] for j in range(len(s)): print(j, s[j]) k = int(input("三输入你想购买的商品编号:")) if k not in range(len(s)): print("输入的数值不在商品编号范围内!") pass else: n = int(input("四请输入你想要购买的商品数量:")) cost = s[k][1] * n message=("您购买 %s ,单价 %0.2f 数量为%d ;共计花费:%0.2f" % (s[k][0], s[k][1], n, cost)) settings.make_transaction(username, \'withdraw\', cost,message) print(message) stat = input("重新请输入y,退出请输入n") if stat == \'n\': print("欢迎下次光临!") break else: continue return "购物愉快!" 2)注册 F:\\Python35\\python.exe F:/mologa-workspace/week_4/choose_lesson/core/classes.py ~~~~~~~~~~~~~~~~~~~欢迎来到oldboy学院~~~~~~~~~~~~~~~~~~~ 1.登录 2.注册 3.关闭 输入选项序号:2 BJ FJ SH 输入校区:BJ 请选择角色:[1.教师 2.学生]2 请输入用户名:lisi 请输入年龄:45 请输入密码:li123 1.登录 2.注册 3.关闭 输入选项序号:1 请输入用户名:lisi 请输入密码:lisi123 密码错误! 请输入用户名:lisi 请输入密码:li123 1.选课 2.成绩 3.上课纪录 3.关闭 请输入功能序号:1 课程 学期 开课时间 学费 导师 go 3期 2017.10.1 8000 luo linux 16期 2017.6.1 9000 alex python 13期 2017.8.1 9500 alex 3) 系统会根据登录用户名来判断属性[student,teacher]决定功能 -------------------------teacher---------------------- F:\\Python35\\python.exe F:/mologa-workspace/week_4/choose_lesson/core/classes.py ~~~~~~~~~~~~~~~~~~~欢迎来到oldboy学院~~~~~~~~~~~~~~~~~~~ 1.登录 2.注册 3.关闭 输入选项序号:alex 1.登录 2.注册 3.关闭 输入选项序号:1 请输入用户名:alex 请输入密码:alex123 1.负责班级 2.关闭 请输入功能序号:1 课程 学期 开课时间 linux 16期 2017.6.1 python 13期 2017.8.1 1.负责班级 2.关闭 请输入功能序号:2 欢迎下次光临! …… -------------------------student---------------------- F:\\Python35\\python.exe F:/mologa-workspace/week_4/choose_lesson/core/classes.py ~~~~~~~~~~~~~~~~~~~欢迎来到oldboy学院~~~~~~~~~~~~~~~~~~~ 1.登录 2.注册 3.关闭 输入选项序号:1 请输入用户名:miao 请输入密码:miao123 1.选课 2.成绩 3.上课纪录 3.关闭 请输入功能序号:1 课程 学期 开课时间 学费 导师 go 3期 2017.10.1 8000 luo linux 16期 2017.6.1 9000 alex python 13期 2017.8.1 9500 alex 请选择课程:linux ---------miao选择linux,扣款9000---------- linux 16期 2017.6.1 9000 alex 1.选课 2.成绩 3.上课纪录 3.关闭 请输入功能序号:2 python 85 go 100 1.选课 2.成绩 3.上课纪录 3.关闭 请输入功能序号:3 python 5 go 2 1.选课 2.成绩 3.上课纪录 3.关闭 请输入功能序号:4 欢迎再次光临! Process finished with exit code 1 总结备注 这次作业持续了很久,数据表设计很久还是没有很好的办法,最后还是用字典存储,没有用pickle而是用json序列化,因为这样我能随时看数据结构和修改,些许功能暂未实现,希望自己能坚持学习。 学习: 1.class类中是方法和功能的集合 2.选项类别可以用字典这么写,避免代码冗长和繁杂 def login(self): menu = u\'\'\' ------- 欢迎进入管理视图 --------- \\033[32;1m 1. 校区管理 2. 讲师管理 3. 学员管理 4. 课程管理 5. 返回 \\033[0m\'\'\' menu_dic = { \'1\': Admin_view.school_manager, \'2\': Admin_view.teacher_manager, \'3\': Admin_view.student_manager, \'4\': Admin_view.course_manager, \'5\': "logout", } username = input("输入用户名:").strip() password = input("输入密码:").strip() auth = Admin_view.auth(self,username,password) if auth: exit_flag = False while not exit_flag: print(menu) option = input("请选择:").strip() if option in menu_dic: if int(option) == 5: exit_flag = True else: print(menu_dic[option]) menu_dic[option](self) else: print("\\033[31;1m输入错误,重新输入\\033[0m")
以上是关于选课系统作业的主要内容,如果未能解决你的问题,请参考以下文章