python入门作业---选课系统

角色:学校、学员、课程、讲师
要求:
1. 创建北京、上海 2 所学校
2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开
3. 课程包含,周期,价格,通过学校创建课程
4. 通过学校创建班级, 班级关联课程、讲师
5. 创建学员时,选择学校,关联班级
5. 创建讲师角色时要关联学校,
6. 提供两个角色接口
6.1 学员视图, 可以注册, 交学费, 选择班级,
6.2 讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩
6.3 管理视图,创建讲师, 创建班级,创建课程

7. 上面的操作产生的数据都通过pickle序列化保存到文件里 
作业要求

 

 

领域模型 

领域模型是完成从需求分析到面向 对象设计的一座桥梁。 

领域模型,顾名思义,就是需求所涉及的领域的一个建模,更通俗的讲法是业务模型。 参考百度百科(http://baike.baidu.cn/view/757895.htm ),领域模型定义如下: 

从这个定义我们可以看出,领域模型有两个主要的作用:

  1. 发掘重要的业务领域概念
  2. 建立业务领域概念之间的关系 

 

 

领域建模三字经 

域建模的方法就是“从用例中找名词”。 当然,找到名词后,为了能够更加符合面向对象的要求和特点,我们还需要对这些名词进一步完善,这就 是接下来的步骤:加属性,连关系

最后我们总结出领域建模的三字经方法:找名词、加属性、连关系。 

  

找名词

who : 学员、讲师、管理员

用例:

1. 管理员 创建了 北京 和 上海 两个校区

2. 管理员 创建了 Linux \ Python \ Go 3个课程 

3. 管理员 创建了 北京校区的Python 16期, Go开发第一期,和上海校区的Linux 36期 班级

4. 管理员 创建了 北京校区的 学员 小晴 ,并将其 分配 在了 班级  python 16期 

5. 管理员 创建了 讲师 Alex , 并将其分配 给了 班级 python 16期 和全栈脱产5期

6. 讲师 Alex 创建 了一条 python 16期的 上课纪录 Day6 

7. 讲师 Alex 为Day6这节课 所有的学员 批了作业 ,小晴得了A, 李磊得了C-, 严帅得了B

8. 学员小晴 在 python 16 的 day6里 提交了作业 

9. 学员李磊 查看了自己所报的所有课程 

10 学员 李磊  在 查看了 自己在 py16期 的 成绩列表 ,然后自杀了

11. 学员小晴  跟 讲师 Alex 表白了

 

 

名词列表:

管理员、校区、课程、班级、上课纪录、作业、成绩、讲师、学员

 
 

加属性

连关系 

有了类,也有了属性,接下来自然就是找出它们的关系了。

 



 

目录:

 1 #!/usr/bin/env python3
 2 #-*- coding:utf-8 -*-
 3 '''
 4 Administrator 
 5 2018/7/27
 6 '''
 7 
 8 class Student:
 9     def __init__(self,name,age,classes):
10         self.name=name
11         self.age=age
12         self.classes=classes #报名的班级
13 
14 class Teacher:
15     def __init__(self,name,age,classes):
16         self.name=name
17         self.age=age
18         self.classes=classes  #关联的班级
19 
20 class Classes:
21     def __init__(self,class_name,semester,course,sk_date,teacher):
22         self.class_name=class_name  #班级名称
23         self.semester=semester  #学期
24         self.course=course  #课程
25         self.sk_date=sk_date #开课日期
26         self.teacher=teacher #班级讲师
27 
28 class Course:
29     def __init__(self,name,school):
30         self.name=name
31         self.price=15000
32         self.outline='课程大纲'
33         self.course_time='周期是:6个月'
34         self.school=school
35 
36 class School:
37     def __init__(self,name,address,city):
38         self.name=name
39         self.address=address
40         self.city=city
41 
42 class ClassRecord:
43     def __init__(self,class_name,jc_name,sk_date):
44         self.class_name=class_name  #班级
45         self.jc_name=jc_name     #节次
46         self.sk_date=sk_date     #上课日期
47 
48 class StudyRecord:
49     def __init__(self,class_record,is_sign,sign_date,achievement):
50         self.class_record=class_record   #上课记录
51         self.sign_in=is_sign           #签到状态
52         self.sign_date=sign_date      #签到日期
53         self.achievement=achievement  #成绩
54 
55 
56 if __name__=="__main__":
57     beijing_school=School("北京培训中心","北京天安门城楼上","北京")
58     shanghai_school = School("上海培训中心", "上海外滩水底", "上海")
59 
60     linux_course=Course("linux",beijing_school)
61     python_course=Course("python",beijing_school)
62     go_course=Course("go",shanghai_school)
View Code

 知识回顾:

https://github.com/Mengchangxin/python_green_hand/blob/8.14/%E7%9F%A5%E8%AF%86%E5%9B%9E%E9%A1%BE.py

 1 #!/usr/bin/env python3
 2 #-*- coding:utf-8 -*-
 3 '''
 4 Administrator 
 5 2018/8/14 
 6 '''
 7 import pickle,os,uuid
 8 class School:
 9     def __init__(self,name):
10         self.name=name
11         self.school_id=uuid.uuid1()
12 
13     def save(self):
14 
15         file_address=os.path.join(os.path.dirname(os.path.abspath(__file__)),"accounts","%s.txt"%self.school_id)
16         with open(file_address,"wb") as f:
17             pickle.dump(self,f)
18         #print(file_address)
19         # f=open(file_address,"wb")
20         # pickle.dump(self,f)
21         # f.close()
22     @staticmethod
23     def get_all():
24         obj_list=[]
25         address=os.path.join(os.path.dirname(os.path.abspath(__file__)),"accounts")
26         for item in os.listdir(address): #/home/tom/下找所有的文件
27             item=os.path.join(address,item)
28             with open(item,"rb") as f:
29                 obj=pickle.load(f)
30             obj_list.append(obj)
31         return obj_list
32 
33     def __str__(self):
34         return "学校的名称是:%s"%self.name
35 
36 
37 # s1=School("上海")
38 # s1.save()
39 # #/home/tom/1
40 # s2=School("北京")
41 # s2.save()
42 #/home/tom/2
43 
44 School_obj_list=School.get_all()
45 for obj in School_obj_list:
46     #print("学校名称:%s"%obj.name)
47     print(obj)
8.14_b

 

 

 

 

 

 

 

posted @ 2018-07-26 15:40  巨兽~墨菲特  阅读(405)  评论(0编辑  收藏  举报