选课系统

作业要求:

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

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

  1 import pickle
  2
  3 class School(object):
  4     def __init__(self, addr):
  5         self.addr = addr
  6
  7     def hire_teacher(self):
  8         ‘‘‘
  9         保存老师信息
 10         :return:
 11         ‘‘‘
 12         teacher_dict = pickle.load(open(‘teacher‘, ‘rb‘))
 13         T = 0
 14         while T>=0:
 15             name = input(‘请输入老师名‘)
 16             for key in teacher_dict:
 17                 if key == name:
 18                     print(‘此老师已存在,请重新输入‘)
 19                     T+=1
 20             T-=1
 21         age = input(‘请输入年龄‘)
 22         print(‘创建成功‘)
 23         teacher = Teacher(name, age, self.addr)
 24         teacher_dict[name] = teacher
 25         pickle.dump(teacher_dict, open(‘teacher‘, ‘wb‘))
 26
 27     def create_course(self):
 28         ‘‘‘
 29         保存课程信息
 30         :return:
 31         ‘‘‘
 32         course_dict = pickle.load(open(‘course‘, ‘rb‘))
 33         name = input(‘请输入课程名‘)
 34         money = input(‘请输入课程价钱‘)
 35         cycle = input(‘请输入课程周期‘)
 36         course_dict[name] = Course(name, money, cycle)
 37         pickle.dump(course_dict, open(‘course‘, ‘wb‘))
 38
 39     def create_class(self):
 40         ‘‘‘
 41         创造班级,关联老师和课程
 42         :return:
 43         ‘‘‘
 44         teacher_dict = pickle.load(open(‘teacher‘, ‘rb‘))
 45         course_dict = pickle.load(open(‘course‘, ‘rb‘))
 46         class_dict = pickle.load(open(‘class‘, ‘rb‘))
 47
 48         name = input(‘请输入班级名:‘)
 49         for key in teacher_dict:
 50             print(key)
 51         teacher = input(‘请选择上课老师‘)
 52         for key in course_dict:
 53             print(key)
 54         course = input(‘请输入对应课程‘)
 55         if teacher in class_dict:
 56             class_dict [teacher].append(Classroom(name, course_dict[course], teacher_dict[teacher]))
 57         else:
 58             class_dict [teacher] = [Classroom(name, course_dict[course], teacher_dict[teacher])]
 59         print(‘创建成功‘)
 60         pickle.dump(class_dict, open(‘class‘, ‘wb‘))
 61
 62
 63 class Course (object):
 64     def __init__(self, course, money, cycle):
 65         self.course = course
 66         self.money = money
 67         self.cycle = cycle
 68
 69     def show_course(self):
 70         print(‘课程名:%s; 价钱: %s; 上课周期:%s‘ % (self.course, self.money, self.cycle))
 71
 72 class Classroom(object):
 73     def __init__(self, name, course, teacher):
 74         self.name = name
 75         self.course = course
 76         self.student = []
 77         self.teacher = teacher
 78
 79     def show_classroom(self):
 80         self.teacher.show_teacher()
 81         print (‘班级名: %s‘ %  self.name)
 82         self.course.show_course()
 83
 84
 85 class Student(object):
 86     def __init__(self, name):
 87         self.name = name
 88         self.account = 0
 89         self.sorce = 0
 90         self.course = []
 91
 92
 93
 94 class Teacher(object):
 95     def __init__(self, name, age, addr):
 96         self.name = name
 97         self.age = age
 98         self.addr = addr
 99
100     def show_teacher(self):
101         print(‘‘‘老师姓名:%s \n老师年龄: %s\n老师所在学校:%s‘‘‘ % (self.name, self.age,self.addr))
102
103
104 def set_student():
105     ‘‘‘
106     学生登陆或注册,选课
107     :return:
108     ‘‘‘
109     class_dict = pickle.load(open(‘class‘, ‘rb‘))
110     student_dict = pickle.load(open(‘student‘, ‘rb‘))
111     name = input(‘请输入学生姓名‘).capitalize()
112     obj = Student(name)
113     if name in student_dict:
114         print (‘欢迎 %s‘ % name)
115     else:
116         print(‘注册成功‘)
117     while True:
118         for key in class_dict:
119             a = class_dict[key]
120             a[-1].show_classroom()
121             print(‘*‘ *30)
122         while True:
123             b = input(‘请选择课程对应的老师‘).capitalize()
124             if b in class_dict:
125                 c = class_dict[b][-1]
126                 break
127             else:
128                 print(‘没有该老师,请重新选择‘)
129         k = input(‘请确认付费,y = yes, 其他键 = 返回, q = 退出‘).lower()
130         if k == ‘y‘:
131             while True:
132                 if obj.account >= int(c.course.money):
133                     obj.account -= int(c.course.money)
134                     print(‘扣费成功‘)
135                     obj.course.append(c)
136                     c.student.append(Student(name))
137                     y = input(‘请选择:1 继续选课, 其他键 = 退出‘)
138                     if y == ‘1‘:
139                         break
140                     else:
141                         obj.course.append(c)
142                         student_dict[name] = obj
143                         pickle.dump(class_dict, open(‘class‘, ‘wb‘))
144                         pickle.dump(student_dict, open(‘student‘, ‘wb‘))
145                         exit()
146                 else:
147                     charge = input(‘余额不足,y = 充值,q = 退出, 其他键返回‘).lower()
148                     if charge == ‘y‘:
149                         mk = input(‘请输入充值金额‘)
150                         obj.account += int(mk)
151                     elif charge == ‘q‘:
152                         exit()
153                     else:
154                         break
155         elif k == ‘q‘:
156             exit()
157         else:
158             continue
159
160 def check_student(name):
161     ‘‘‘
162     老师上课,查看学生,或修改成绩
163     :param name:
164     :return:
165     ‘‘‘
166
167     class_dict = pickle.load(open(‘class‘, ‘rb‘))
168     a = class_dict[name]
169
170     for k, i in enumerate(a,1):
171         print(k)
172         print(‘班级名:%s\n课程:%s‘% (i.name, i.course.course))
173         print ("*" * 60)
174     c = input(‘请选择班级对应的数字‘)
175     while True:
176         if int(c)>0 and int(c)<=len(a):
177             e = input(‘请选择:1 上课; 2 查看班级成员,3 修改学员成绩,其他键 = 退出‘)
178             if e == ‘1‘:
179                 print (‘开始上课...‘)
180             elif e == ‘2‘:
181                 d = a[int(c)-1].student
182                 for o in d:
183                     print (‘学生姓名 %s‘ % o.name)
184             elif e == ‘3‘:
185                 d = a[int(c)-1].student
186                 for n, j in enumerate(d, 1):
187                     print (‘%s. 学生姓名 %s, 分数 %s‘ % (n, j.name, j.sorce))
188                 f = input(‘请选择学生的对应数字‘)
189                 if int(f)>0 and int(f)<=len(d):
190                     sorce = input(‘修改的分数为‘)
191                     d[int(f)-1].sorce = sorce
192                     pickle.dump(class_dict,open(‘class‘, ‘wb‘))
193         else:
194             print (‘输入有误‘)
195
196 def manage():
197     ‘‘‘
198     管理员菜单
199     :return:
200     ‘‘‘
201     while True:
202         b = input(‘输入学校地址: 北京; 上海‘)
203         if b == ‘北京‘ or b ==‘上海‘:
204             obj = School(b)
205             break
206         else:
207             print(‘没有这地址‘)
208             continue
209     while True:
210         a = input(‘请选择: 1 创建老师, 2 创建课程, 3 创建班级, 4 返回‘)
211         if a == ‘1‘:
212             obj.hire_teacher()
213         elif a == ‘2‘:
214             obj.create_course()
215         elif a == ‘3‘:
216             obj.create_class()
217         elif a==‘4‘:
218             break
219         else:
220             print (‘输入有误‘)
221
222 def main():
223     ‘‘‘
224     主菜单
225     :return:
226     ‘‘‘
227     while True:
228         a = input(‘请选择: 1 学生; 2 老师, 3 管理员, 其他键 退出‘)
229         if a == ‘1‘:
230             set_student()
231         elif a == ‘2‘:
232             name = input(‘请输入老师姓名‘).capitalize()
233             teacher_dict = pickle.load(open(‘teacher‘, ‘rb‘))
234             if name in teacher_dict:
235                 check_student(name)
236             else:
237                 print (‘不是我们学校的老师,请重新输入‘)
238         elif a == ‘3‘:
239             manage()
240         else:
241             exit()
242
243
244
245 main()
时间: 2024-10-16 10:40:12

选课系统的相关文章

NOJ 2015年陕西省程序设计竞赛网络预赛(正式赛)(忙碌的选课系统-拓扑排序注意重边)

D - 忙碌的选课系统 Time Limit: 10000 ms        Memory Limit: 65536 KB Submit Description 每学期末,都是万众瞩目的选课时间,由于人数过多,某学校的服务器常常被无数的学生挤的爆掉,这是,教务系统大人说,你们选个课都这么慢,居然还怪我们.于是,每次教务系统都会在服务器快要瘫痪前关闭它.在无数学生的强烈抗议下,教务系统妥协了,再给每个人一次机会,但他让我们用最快的方式决定该选的课程,选上后就退出. 这让大一学渣狗犯了难,在新的选

网上选课系统的需求分析

项目:网上选课系统 团队:小狗狗们 成员:曲承玉.荆彩虹.丁胜男 N(need) 1性能需求 根据用户对本系统的要求,确定系统在响应时间.可靠性.安全等方面有较高的性能要求. 2 系统的界面要求如下: 1)页面内容:主题突出,站点定义.术语和行文格式统一.规范.明确,栏目.菜单设置和布局合理,传递的信息准确.及时.内容丰富,文字准确,语句通顺:专用术语规范,行文格式统一规范. 2)导航结构:页面具有明确的导航指示,且便于理解,方便用户使用. 3)技术环境:页面大小适当,能用各种常用浏览器以不同分

C#控制台应用程序之选课系统

本程序以文本文件作为存储媒介,实现了一个简化版的选课系统,主要实现了以下功能 对学生信息的增删改查 对课程信息的增删改查 对学生选课的增删改查 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.IO; 6 using System.Diagnostics; 7 8 namespace curricula_Variable 9 {

3.python小项目:学生选课系统

学生选课系统 编程核心:在对象中封装对象 目录结构: 1.administrator.py import random import os import sys sys.path.append(os.path.dirname(os.path.dirname(__file__))) import time import pickle from lib import models from config import settings from lib.models import * # 全部导入

学生选课系统----TeacherDAO

老师信息操作: /** * @author 李佩 * * @version v1 * * @time 2016/12/2 14:54 * * @program 老师信息与数据库之间的操作 * */ package com.csms.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import ja

python之选课系统详解[功能未完善]

作业需求 思路:1.先写出大体的类,比如学校类,学生类,课程类--   2.写出类里面大概的方法,比如学校类里面有创建讲师.创建班级-- 3.根据下面写出大致的代码,并实现其功能       遇到的困难: 1.在类与类关联上卡住了,比如: 老师如何查看班级信息?? 老师有班级名称的属性, 而要查看班级信息,需要班级对象 那应该将老师的班级名称与班级对象相关联起来 那不同老师怎么办?? 所以学校创建 老师对象时,应该将老师名称与老师对象相关联起来 通过输入老师名称即可找到老师对象 2. 想把讲师对

基于SSH的高校网上选课系统的质量属性的实现

我对于基于SSH的高校网上选课系统的质量属性的实现是从可用性.性能.安全性.可维护性.易用性五个方面进行的实现. 可用性方面: 实现方式:(1)当系统试图超出限制范围来进行课程查询或选课时必须进行错误检测并且抛出异常,中止进一步的错误操作,所采用的战术为错误(异常)检测, 此异常属于Action层,只捕获自定义应用异常,其他异常上抛.Struts2提供了异常拦截器,拦截器会将定义的异常捕获,记录日志,然后根据配置的异常的类型顺序跳转到相应的页面.(2)遵从J2EE的系统提供了可以使用的事务服务,

第六周作业——选课系统

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

Python作业-选课系统

Python作业-选课系统 学习 python Python作业-选课系统 days6作业-选课系统: 1. 程序说明 2. 思路和程序限制 3. 选课系统程序目录结构 4. 测试帐户说明 5. 程序测试过程 days6作业-选课系统: 角色:学校.学员.课程.讲师 作业需求 1.创建北京.上海 2 所学校 2.创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开 3.课程包含,周期,价格,通过学校创建课程 4.通过学校创建班级, 班级关联课程.

python第三十五天-----作业完成--学校选课系统

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