本节作业:选课系统

角色:学校、学员、课程、讲师
要求:
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

import pickle
import osfile_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 = nameself.period = periodself.price = price
'''学校成员类'''
class SchoolMember(object):def __init__(self,name,school):self.name = nameself.school = school'''讲师类'''
class Teacher(SchoolMember): def __init__(self,name,school,salary):super(Teacher,self).__init__(name,school)self.salary = salarydef 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.nameprint('讲师 %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 = gradeself.sex = sexdef 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.namestu_msg['sex'] = st.sexstu_msg['school'] = st.schoolstu_msg['grade'] = st.gradestu_msg['score'] = 0File_operation.save(self, 'student',st.name,stu_msg)def pay(self):print("*********恭喜你缴费成功*********")'''学校类'''
class School(object):def __init__(self,name,address,course):self.name = nameself.address = addressself.course = coursedef 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.namecourse_dict['period'] = course_test.periodcourse_dict['price'] = course_test.priceFile_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.namegrade_dict['course'] = grade_test.coursegrade_dict['teacher'] = grade_test.teacherFile_operation.save(self, 'grade',grade_course,grade_dict)'''班级类'''
class Grade(object):  def __init__(self,course,name,teacher):self.course = courseself.name = nameself.teacher = teacherclass Admin(object):def __init__(self):passdef 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.nameteacher_dict['school'] = teacher_test.schoolteacher_dict['salary'] = teacher_test.salaryFile_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.nameschool_dict['address'] = school_test.addressschool_dict['course'] = school_test.courseFile_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 = Falsewhile not exit_flag:print(msg)option = input('请选择:').strip()if option in msg_dist:if int(option) == 3:exit_flag = Trueelse: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 = Falsewhile not exit_flag:print(msg)option = input('请选择:').strip()if option in msg_dist:if int(option) == 4:exit_flag = Trueelse:msg_dist[option](self)else:print('--------------输入错误--------------')class Admin_view(Admin):def __init__(self):passdef 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 = Falsewhile not exit_flag:print(msg)option = input('请选择:').strip()if option in msg_dist:if int(option) == 4:exit_flag = Trueelse:msg_dist[option](self)else:print('--------------输入错误--------------')class run(object):def __init__(self):passdef 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,Trueelse:print("******身份错误******")return False,Falsedef interactive(self):msg = """--------------欢迎进入系统视图--------------1、学员视图2、讲师视图3、管理视图4、退出"""msg_dist = {'1':Student_view,'2':Teacher_view,'3':Admin_view,'4':"logout"} if True:exit_flag = Falsewhile not exit_flag:print(msg)option = input('请选择:').strip()if option in msg_dist:if int(option) == 4:exit_flag = Trueelif 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('--------------输入错误--------------') 

main.py

import os,sysfile_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 courseif __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

能实现大部分功能 但存在缺陷

额.........忘记创建学校了

六、有兴趣接电子设计相关小型项目的请加下群,每个项目一般在1000元以内,非诚勿扰

python3自学之路作业 选课系统相关推荐

  1. 一只小菜鸟的web前端开发自学之路

    今天初步了解了一下Web前端开发,计算机技术这东西就要多用多练,一只菜的不能再菜的小菜鸟开始漫长的自学之路了 web系统前端是指系统中用户接触到的部分. 打开几个不同网站的网页,观察一下,有网页文件的 ...

  2. python最简单选课系统作业_python之路——作业:学生选课系统

    一.作业要求: 选课系统: 角色:学校.学员.课程.讲师 要求: 1. 创建北京.上海 2 所学校 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go ...

  3. [ python ] 作业:选课系统

    功能代码实现源地址:https://www.cnblogs.com/lianzhilei/p/5832691.html    如有侵权,立即删除 本文主要是分析 选课系统 实现思路及上面代码的实现过程 ...

  4. 我的数据库大作业——学生选课系统实现(准备)

    前言 不好意思,由于年代久远,本文不打算继续更新了. 不知不觉已经大二了,快要步入大三了,回想过去,自己好像都没有做过什么实际的编程活动,自己上学期因为一个古怪的离散老师导致没头没脑得了个刚过及格线的 ...

  5. 【原创】面向对象作业:选课系统中用pickle储存多个对象间组合引用关系的那些坑...

    转载请注明出处:https://www.cnblogs.com/oceanicstar/p/9030121.html 想直接看结论先提前列出: 1.存储一个对象,文件不是真的给你存储的了对象这种东西, ...

  6. 网上选课系统java大作业_Java面向对象设计大作业——公选课选课系统

    功能调查与系统功能框架图 功能 本系统模拟公选课选课系统,由学生或管理员使用该系统,管理员可以自定义增加或删除课程,学生可以进行选课和查看已选课程. 系统功能框架图 类的设计(UML类图) 类说明 A ...

  7. 数据库大作业——学生选课系统(基于SpringBoot+Mysql)

    文章目录 一.需求分析 1.项目背景 2.项目目标 二.系统功能分析 1.多角色划分 2.模块功能详述 三.系统架构 1.技术选型 2.系统分析 3.架构设计 4.系统演变 四.数据库设计 1.概念结 ...

  8. 在线选课系统UML大作业

    目录 设计用例图 设计类图 设计顺序图 设计协作图 设计状态图 设计活动图 设计组件图 设计部署图 总结 Questions: Design the UML diagrams for the syst ...

  9. python3 简单选课系统

    bin: #启动 import os,sys BaseDir = os.path.dirname(os.path.dirname(os.path.abspath(sys.argv[0]))) sys. ...

最新文章

  1. 【模板】树状数组 2
  2. Go Web学习(2)——实现中间件(middleware)
  3. ftp服务器不显示缩略图,ftp服务器不显示缩略图
  4. 分布式文件系统—HDFS—常见面试题
  5. JAVA入门[6]-Mybatis简单示例
  6. 程序员休闲娱乐之数独!| 技术头条
  7. 洛谷——P1424 小鱼的航程(改进版)
  8. [LeetCode]Subsets II生成组合序列
  9. ListView的优化
  10. 豆瓣评分9.4,邱锡鹏教授蒲公英书姊妹篇《神经网络与深度学习:案例与实践》重磅来袭...
  11. matlab画学生考试成绩频率直方图,matlab 绘制频率直方图
  12. Android知识图谱(持续更新中)
  13. H5播放flv视频流
  14. 我们不生产知识,我们只是知识的搬运工
  15. 微信小程序 富文本编辑器 editor
  16. MVC框架运行流程和目录结构
  17. 湖北武汉劳务员考试建筑施工企业的劳务实名制建筑七大员考试
  18. python halcon_HALCON高级篇:常用分类器及其特点
  19. 如何给计算机硬盘解除密码忘了,如何解除电脑硬盘密码
  20. BERT!BERT!BERT!

热门文章

  1. 敏捷项目管理敏捷工作之发布计划
  2. ROS_Kinetic_01 在 Ubuntu 16.04 安装ROS Kinetic 全教程附资料和镜像 2018.10.20更新
  3. 大数据 智能交通调度_当大数据邂逅智能交通
  4. UE4 靠近物体时显示文字,远离时文字消失
  5. 从“真快乐”APP看国美的野心,不止娱乐零售
  6. Truth or dare - 真心话大冒险片尾曲
  7. eclipse3.6 太阳神版 中文汉化插件
  8. 软件工程作业-——项目设计
  9. 卓朗数字孪生的重要意义
  10. 骨龄预测代码学习(一)