python【项目】:选课系统【简易版】
- 功能要求
角色:学校、学员、课程、讲师
要求:
1. 创建学校
2. 创建课程
3. 课程包含,周期,价格,通过学校创建课程
4. 通过学校创建班级, 班级关联课程、讲师
5. 创建学员时,选择学校,关联班级
5. 创建讲师角色时要关联学校,
6. 提供两个角色接口
6.1 学员视图, 可以注册, 交学费, 选择班级,
6.2 讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 创建学员的成绩
6.3 管理视图,创建讲师, 创建班级,创建课程
7. 上面的操作产生的数据都通过pickle序列化保存到文件里
8. 增加日志文件,能同时输出到控制台
9. 用户认证采用装饰
10.增加try捕捉错误信息
- 开发环境
- python 3.6.1
- PyCharm 2016.2.3
- 数据流图与业务功能图
- 主程序数据流图
2.业务功能图

- 目录结构

- 程序设计
#!/usr/bin/env python
#coding=utf-8
__author__ = 'yinjia' import os BASE_DIR = os.path.dirname(os.path.dirname(__file__)) BASE_ADMIN_DIR = os.path.join(BASE_DIR, "db", "admin") BASE_STUDENTS_DIR = os.path.join(BASE_DIR, "db", "students") BASE_TEACHER_DIR = os.path.join(BASE_DIR,"db","teacher") TEACHER_DB_DIR = os.path.join(BASE_DIR, "db", "teacher_list") COURSE_DB_DIR = os.path.join(BASE_DIR, "db", "course_list") SHOOL_DB_DIR = os.path.join(BASE_DIR,"db", "shool_list") STUDENTS_DB_DIR = os.path.join(BASE_DIR,"db", "students_list") SCHOOLCLASS_DB_DIR = os.path.join(BASE_DIR,'db','schoolclass_list') SCORE_DB_DIR = os.path.join(BASE_DIR,'db','score_list') BASE_LOG_DIR = os.path.join(BASE_DIR,'log','AAP_')
settings.py
#!/usr/bin/env python
#coding=utf-8
__author__ = 'yinjia' import os,sys,time,logging,pickle
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
from lib import models
from config import settings
from lib.models import *
from bin import students
from bin import admin
from bin import teacher def Auth(type):
"""
统一入口用户注册、认证
:param type: 判断属于哪认证类型:students、admin、teacher
:return: 返回认证结果
"""
def inner(func):
def wrapper():
logger = Logger('auth').getlog()
auth_msg = ["注册", "登录"]
if type == "students_auth":
func()
for x, y in enumerate(auth_msg, 1):
print("%s%s%s" % (x, ".", y))
while True:
inp = str(input("\33[35;0m请按序号选择[输入q|Q退出]:\33[0m")).strip().lower()
if inp == "":
use = str(input("\33[36;0m请输入用户名:\33[0m")).strip()
pwd = str(input("\33[36;0m请输入密码:\33[0m")).strip()
obj = models.Students()
if obj.register(use,pwd):
logger.error("[用户名]" + use + ":不能注册,当前已存在账户!")
else:
logger.info("[用户名]" + use + ":注册成功")
elif inp == "":
use = str(input("\33[36;0m请输入用户名:\33[0m")).strip()
pwd = str(input("\33[36;0m请输入密码:\33[0m")).strip()
if os.path.exists(os.path.join(settings.BASE_STUDENTS_DIR, use)):
try:
students_obj = pickle.load(open(os.path.join(settings.BASE_STUDENTS_DIR,use),'rb'))
except IOError as e:
logger.error(e)
if students_obj.login(use,pwd):
logger.info("[用户名]" + use + ":登录成功!")
students.main(students_obj)
else:
logger.error("[用户]" + use + ":密码错误!")
else:
logger.error("[用户名]" + use + "不存在!")
elif inp == "q":
print("\33[32;0m谢谢您的光临,再见!\33[0m".center(40, "*"))
sys.exit()
else:
logger.error("无效选择!") elif type == "admin_auth":
func()
for x, y in enumerate(auth_msg, 1):
print("%s%s%s" % (x, ".", y))
while True:
inp = str(input("\33[35;0m请按序号选择[输入q|Q退出]:\33[0m")).strip().lower()
if inp == "":
use = str(input("\33[36;0m请输入用户名:\33[0m")).strip()
pwd = str(input("\33[36;0m请输入密码:\33[0m")).strip()
obj = models.Admin()
if obj.register(use,pwd):
logger.error("[用户名]" + use + ":不能注册,当前已存在账户!")
else:
logger.info("[用户名]" + use + ":注册成功")
elif inp == "":
use = str(input("\33[36;0m请输入用户名:\33[0m")).strip()
pwd = str(input("\33[36;0m请输入密码:\33[0m")).strip()
if os.path.exists(os.path.join(settings.BASE_ADMIN_DIR, use)):
try:
admin_obj = pickle.load(open(os.path.join(settings.BASE_ADMIN_DIR,use),'rb'))
except IOError as e:
logger.error(e)
if admin_obj.login(use,pwd):
logger.info("[用户名]" + use + ":登录成功")
admin.main(admin_obj)
else:
logger.error("[用户名]" + use + ":密码错误!")
else:
logger.error("[用户]" + use + "不存在!") elif inp == "q":
print("\33[32;0m谢谢您的光临,再见!\33[0m".center(40, "*"))
sys.exit()
else:
logger.error("无效选择!") elif type == "teacher_auth":
func()
for x, y in enumerate(auth_msg, 1):
print("%s%s%s" % (x, ".", y))
while True:
inp = str(input("\33[35;0m请按序号选择[输入q|Q退出]:\33[0m")).strip().lower()
if inp == "":
use = str(input("\33[36;0m请输入用户名:\33[0m")).strip()
pwd = str(input("\33[36;0m请输入密码:\33[0m")).strip()
obj = models.TeacherAuth()
if obj.register(use,pwd):
logger.error("[用户名]" + use + ":不能注册,当前已存在账户!")
else:
logger.info("[用户名]" + use + ":注册成功")
elif inp == "":
use = str(input("\33[36;0m请输入用户名:\33[0m")).strip()
pwd = str(input("\33[36;0m请输入密码:\33[0m")).strip()
if os.path.exists(os.path.join(settings.BASE_TEACHER_DIR, use)):
try:
teacher_obj = pickle.load(open(os.path.join(settings.BASE_TEACHER_DIR,use),'rb'))
except IOError as e:
logger.error(e)
if teacher_obj.login(use,pwd):
logger.info("[用户名]" + use + ":登录成功")
teacher.main(teacher_obj)
else:
logger.error("[用户名]" + use + ":密码错误!")
else:
logger.error("[用户名]" + use + "不存在!") elif inp == "q":
print("\33[32;0m谢谢您的光临,再见!\33[0m".center(40, "*"))
sys.exit()
else:
logger.error("无效选择!")
else:
pass
return wrapper
return inner @Auth(type="students_auth")
def students_auth():
print("\33[32;0m学生登录认证\33[0m".center(40,"*"))
return True @Auth(type="admin_auth")
def admin_auth():
print("\33[32;0m管理员登录认证\33[0m".center(40,"*"))
return True @Auth(type="teacher_auth")
def teacher_auth():
print("\33[32;0m讲师登录认证\33[0m".center(40,"*"))
return True def main():
main_msg = ["学生视图", "讲师视图", "管理视图","退出"]
print("\33[32;0m学员选课系统\33[0m".center(40, "*"))
for i, j in enumerate(main_msg, 1):
print("%s%s%s" % (i, ".", j))
while True:
inp = str(input("\33[35;0m请按序号选择:\33[0m")).strip()
if inp == "":
students_auth()
elif inp == "":
teacher_auth()
elif inp == "":
admin_auth()
elif inp == "":
print("\33[32;0m谢谢您的光临,再见!\33[0m".center(40, "*"))
sys.exit()
else:
print("无效选择!")
auth.py
#!/usr/bin/env python
#coding=utf-8
__author__ = 'yinjia' import os,sys,time,logging,pickle
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
from lib import models
from config import settings
from lib.models import *
from bin import auth logger = Logger('admin').getlog() def create_shools(admin_obj):
"""
创建学校
:param admin_obj:
:return:
"""
school_list = []
while True:
school_name = str(input("\33[36;0m请输入校区名[输入q退出]:\33[0m")).strip().lower()
if school_name == "q":
break
school_addr = str(input("\33[36;0m请输入校区地址:\33[0m")).strip()
obj = models.School(school_name,school_addr,admin_obj)
school_list.append(obj)
if os.path.exists(settings.SHOOL_DB_DIR):
try:
exists_list = pickle.load(open(settings.SHOOL_DB_DIR,'rb'))
school_list.extend(exists_list)
except IOError as e:
logger.error(e)
try:
pickle.dump(school_list,open(settings.SHOOL_DB_DIR,'wb'))
except IOError as e:
logger.error(e) def create_schoolclass(admin_obj):
"""
创建班级
:param admin_obj:
:return:
"""
schoolclass_list = []
print(' 序号 校区 校址 创建时间 管理员')
print('------------------------------------------------------')
school_list = pickle.load(open(settings.SHOOL_DB_DIR, 'rb'))
for num, item in enumerate(school_list, 1):
print("%3s%5s%5s%25s%10s" % (num, item.school_name, item.school_addr,
item.create_time, item.create_admin.username))
while True:
schoolclass_name = str(input("\33[36;0m请输入班级名[输入q退出]:\33[0m")).strip().lower()
if schoolclass_name == "q":
break
school_num = str(input("\33[36;0m请序号选择校区:\33[0m")).strip()
obj = models.SchoolClass(school_list[int(school_num) - 1],schoolclass_name,admin_obj)
schoolclass_list.append(obj)
if os.path.exists(settings.SCHOOLCLASS_DB_DIR):
try:
exists_list = pickle.load(open(settings.SCHOOLCLASS_DB_DIR,'rb'))
schoolclass_list.extend(exists_list)
except IOError as e:
logger.error(e)
try:
pickle.dump(schoolclass_list,open(settings.SCHOOLCLASS_DB_DIR,'wb'))
except IOError as e:
logger.error(e) def create_teacher(admin_obj):
"""
创建讲师
:param admin_obj:
:return:
"""
teacher_list = []
print(' 序号 校区 班级 创建时间 管理员')
print('------------------------------------------------------')
school_list = pickle.load(open(settings.SCHOOLCLASS_DB_DIR, 'rb'))
for num, item in enumerate(school_list, 1):
print("%3s%5s%8s%25s%10s" % (num, item.schoolBJ.school_name, item.schoolclass_name,
item.create_time, item.create_admin.username))
while True:
teacher_name = str(input("\33[36;0m请输入讲师姓名[输入q退出]:\33[0m")).strip().lower()
if teacher_name == "q":
break
age = str(input("\33[36;0m请输入讲师年龄:\33[0m")).strip()
salary = str(input("\33[36;0m请输入讲师工资:\33[0m")).strip()
num = str(input("\33[36;0m请序号选择班级:\33[0m")).strip()
obj = models.Teacher(school_list[int(num) - 1],school_list[int(num) - 1],teacher_name,age,salary,admin_obj)
teacher_list.append(obj)
if os.path.exists(settings.TEACHER_DB_DIR):
try:
exists_list = pickle.load(open(settings.TEACHER_DB_DIR,'rb'))
teacher_list.extend(exists_list)
except IOError as e:
logger.error(e)
try:
pickle.dump(teacher_list,open(settings.TEACHER_DB_DIR,'wb'))
except IOError as e:
logger.error(e)
def create_course(admin_obj):
"""
创建课程
:param admin_obj:
:return:
"""
course_list = []
print(' 序号 校区 班级 讲师 年龄 工资 创建时间 管理员')
print('---------------------------------------------------------------------------')
teacher_list = pickle.load(open(settings.TEACHER_DB_DIR, 'rb'))
for num, item in enumerate(teacher_list, 1):
print("%3s%5s%8s%5s%4s%11s%23s%10s" % (
num, item.schoolname.schoolBJ.school_name, item.schoolclass.schoolclass_name,
item.teacher_name, item.age, item.salary,
item.create_time, item.create_admin.username))
while True:
course_name = str(input("\33[36;0m请输入课程名[输入q退出]:\33[0m")).strip().lower()
if course_name == "q":
break
course_cost = str(input("\33[36;0m请输入课时费:\33[0m")).strip()
course_cycle = str(input("\33[36;0m请输入课程周期:\33[0m")).strip()
num = str(input("\33[36;0m请序号选择校区:\33[0m")).strip()
obj = models.Course(teacher_list[int(num) - 1], teacher_list[int(num) - 1],
teacher_list[int(num) - 1],course_name,course_cost,course_cycle, admin_obj)
course_list.append(obj)
if os.path.exists(settings.COURSE_DB_DIR):
try:
exists_list = pickle.load(open(settings.COURSE_DB_DIR, 'rb'))
course_list.extend(exists_list)
except IOError as e:
logger.error(e)
try:
pickle.dump(course_list, open(settings.COURSE_DB_DIR, 'wb'))
except IOError as e:
logger.error(e) def main(admin_obj):
logger = Logger('auth').getlog()
while True:
print("\33[32;0m综合管理中心\33[0m".center(40, "*"))
msg = ["创建校区", "查看校区详情","创建班级", "查看班级详情","创建讲师", '查看讲师详情',"创建课程","查看课程详情"]
for x, y in enumerate(msg, 1):
print("%s%s%s" % (x, ".", y))
inp = str(input("\33[35;0m请按序号选择[输入q|Q退出]:\33[0m")).strip().lower()
if inp == '':
create_shools(admin_obj)
elif inp == '':
print(' 序号 校区 校址 创建时间 管理员')
print('------------------------------------------------------')
info_list = pickle.load(open(settings.SHOOL_DB_DIR, 'rb'))
for num, item in enumerate(info_list, 1):
print("%3s%5s%5s%25s%10s" % (num, item.school_name, item.school_addr,
item.create_time, item.create_admin.username))
input("\33[35;0m>>>>>>>>>按任意键退出...\33[0m")
elif inp == '':
create_schoolclass(admin_obj)
elif inp == '':
print(' 序号 校区 班级 创建时间 管理员')
print('------------------------------------------------------')
school_list = pickle.load(open(settings.SCHOOLCLASS_DB_DIR, 'rb'))
for num, item in enumerate(school_list, 1):
print("%3s%5s%8s%25s%10s" % (num, item.schoolBJ.school_name, item.schoolclass_name,
item.create_time, item.create_admin.username))
input("\33[35;0m>>>>>>>>>按任意键退出...\33[0m")
elif inp == '':
create_teacher(admin_obj)
elif inp == '':
print(' 序号 校区 班级 讲师 年龄 工资 创建时间 管理员')
print('---------------------------------------------------------------------------')
teacher_list = pickle.load(open(settings.TEACHER_DB_DIR, 'rb'))
for num, item in enumerate(teacher_list, 1):
print("%3s%5s%8s%5s%4s%11s%23s%10s" % (num, item.schoolname.schoolBJ.school_name, item.schoolclass.schoolclass_name,
item.teacher_name, item.age, item.salary,
item.create_time, item.create_admin.username))
input("\33[35;0m>>>>>>>>>按任意键退出...\33[0m")
elif inp == '':
create_course(admin_obj)
elif inp == '':
print(' 序号 校区 班级 讲师 课程名 课时费 周期 创建时间 管理员')
print('--------------------------------------------------------------------------------------')
teacher_list = pickle.load(open(settings.COURSE_DB_DIR, 'rb'))
for num, item in enumerate(teacher_list, 1):
print("%3s%5s%8s%5s%8s%8s%9s%23s%10s" % (
num, item.course_schoolname.schoolname.schoolBJ.school_name, item.course_schoolclass.schoolclass.schoolclass_name,
item.course_teacher_name.teacher_name,
item.course_name,item.cost,item.cycle,item.create_time, item.create_admin.username))
input("\33[35;0m>>>>>>>>>按任意键退出...\33[0m")
elif inp == 'q':
print("\33[32;0m谢谢您的光临,再见!\33[0m".center(40, "*"))
sys.exit()
else:
logger.error("无效选择!") def register():
auth.main()
admin.py
#!/usr/bin/env python
#coding=utf-8
__author__ = 'yinjia' import os,sys,time,logging,pickle
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
from lib import models
from config import settings
from lib.models import *
from bin import auth,teacher
logger = Logger('admin').getlog() def select_course(students_obj):
"""
选择课程
:param students_obj:
:return:
"""
print(' 序号 校区 班级 讲师 课程名 课时费 周期 ')
print('-------------------------------------------------------')
try:
course_list = pickle.load(open(settings.COURSE_DB_DIR, 'rb'))
except IOError as e:
logger.error(e)
else:
for num, item in enumerate(course_list, 1):
print("%3s%5s%8s%5s%8s%8s%9s" % (
num, item.course_schoolname.schoolname.schoolBJ.school_name,
item.course_schoolclass.schoolclass.schoolclass_name,
item.course_teacher_name.teacher_name,
item.course_name, item.cost, item.cycle))
while True:
num = str(input("\33[36;0m请序号选择课程名[输入q退出]:\33[0m")).strip().lower()
if num == "q":
break
select_course_obj = course_list[int(num) - 1]
students_obj.course_list.append(select_course_obj)
try:
pickle.dump(students_obj, open(os.path.join(settings.BASE_STUDENTS_DIR,students_obj.username),'wb'))
except IOError as e:
logger.error(e) def course_info(students_obj):
"""
查看选课信息
:param students_obj:
:return:
"""
print(' 序号 校区 班级 讲师 课程名 课时费 周期 ')
print('-------------------------------------------------------')
for num, item in enumerate(students_obj.course_list, 1):
print("%3s%5s%8s%5s%8s%8s%9s" % (
num, item.course_schoolname.schoolname.schoolBJ.school_name,
item.course_schoolclass.schoolclass.schoolclass_name,
item.course_teacher_name.teacher_name,
item.course_name, item.cost, item.cycle))
input("\33[35;0m>>>>>>>>>按任意键退出...\33[0m") def result_info(students_obj):
"""
查看学习详情
:param students_obj:
:return:
"""
print(' 学员 校区 班级 课程 成绩')
print('---------------------------------')
try:
students_dic = pickle.load(open(settings.SCORE_DB_DIR, 'rb'))
except IOError as e:
logger.error(e)
else:
for i, item in students_dic.items():
for x, y in item.score_schoolname.items():
print("%3s%6s%9s%5s%5s" % (x.username, y.course_schoolname.schoolname.schoolBJ.school_name,
y.course_schoolclass.schoolclass.schoolclass_name, y.course_name, item.score))
input("\33[35;0m>>>>>>>>>按任意键退出...\33[0m") def study(students_obj):
"""
学员上课
:param students_obj:
:return:
"""
print(' 序号 校区 班级 讲师 课程名 课时费 周期 ')
print('-------------------------------------------------------')
for num, item in enumerate(students_obj.course_list, 1):
print("%3s%5s%8s%5s%8s%8s%9s" % (
num, item.course_schoolname.schoolname.schoolBJ.school_name,
item.course_schoolclass.schoolclass.schoolclass_name,
item.course_teacher_name.teacher_name,
item.course_name, item.cost, item.cycle))
while True:
num = str(input("\33[36;0m请按序号选择课程上课[输入q退出]:\33[0m")).strip().lower()
if num == "q":
break
obj = students_obj.course_list[int(num) - 1]
if students_obj in students_obj.study_dict.keys():
students_obj.study_dict[students_obj].append(obj)
else:
students_obj.study_dict[students_obj] = obj
try:
pickle.dump(students_obj.study_dict, open(settings.STUDENTS_DB_DIR, 'wb'))
except IOError as e:
logger.error(e) def main(students_obj):
while True:
print("\33[32;0m学员学习中心\33[0m".center(40, "*"))
msg = ['选课','上课','查看选课信息','查看学习成绩']
for x, y in enumerate(msg, 1):
print("%s%s%s" % (x, ".", y))
inp = str(input("\33[35;0m请按序号选择[输入q|Q退出]:\33[0m")).strip().lower()
if inp == '':
select_course(students_obj)
elif inp == '':
study(students_obj)
elif inp == '':
course_info(students_obj)
elif inp == '':
result_info(students_obj)
elif inp == 'q':
print("\33[32;0m谢谢您的光临,再见!\33[0m".center(40, "*"))
sys.exit()
else:
logger.error("无效选择!") def register():
auth.main()
students.py
#!/usr/bin/env python
#coding=utf-8
__author__ = 'yinjia' import os,sys,time,logging,pickle
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
from lib import models
from config import settings
from lib.models import *
from bin import auth
logger = Logger('admin').getlog() def Create_Score(teacher_obj):
score_dic = {}
print(' 学员 校区 班级 课程 ')
print('------------------------------')
try:
students_dic = pickle.load(open(settings.STUDENTS_DB_DIR, 'rb'))
except IOError as e:
logger.error(e)
else:
for i, item in students_dic.items():
print(i.username,item.course_schoolname.schoolname.schoolBJ.school_name,
item.course_schoolclass.schoolclass.schoolclass_name,
item.course_name)
while True:
students_name = str(input("\33[36;0m请输入学员[输入q退出]:\33[0m")).strip()
if students_name == "q":
break
score = str(input("\33[36;0m请输入学员成绩:\33[0m")).strip()
obj = models.Score(students_name,students_dic,students_dic,students_dic,score) if teacher_obj in score_dic.keys():
score_dic[teacher_obj].append(obj)
else:
score_dic[teacher_obj] = obj
if os.path.exists(settings.SCORE_DB_DIR):
try:
exists_dic = pickle.load(open(settings.SCORE_DB_DIR, 'rb'))
except IOError as e:
logger.error(e)
else:
if teacher_obj in exists_dic.keys():
score_dic[teacher_obj].append(exists_dic)
try:
pickle.dump(score_dic, open(settings.SCORE_DB_DIR, 'wb'))
except IOError as e:
logger.error(e) def show_info(teacher_obj):
print(' 学员 校区 班级 课程 成绩')
print('---------------------------------')
try:
students_dic = pickle.load(open(settings.SCORE_DB_DIR, 'rb'))
except IOError as e:
logger.error(e)
else:
for i, item in students_dic.items():
for x,y in item.score_schoolname.items():
print("%3s%6s%9s%5s%5s" % (x.username,y.course_schoolname.schoolname.schoolBJ.school_name,
y.course_schoolclass.schoolclass.schoolclass_name,y.course_name,item.score))
input("\33[35;0m>>>>>>>>>按任意键退出...\33[0m") def main(teacher_obj):
while True:
print("\33[32;0m学员学习中心\33[0m".center(40, "*"))
msg = ['创建学员成绩','查看学员信息']
for x, y in enumerate(msg, 1):
print("%s%s%s" % (x, ".", y))
inp = str(input("\33[35;0m请按序号选择[输入q|Q退出]:\33[0m")).strip().lower()
if inp == '':
Create_Score(teacher_obj)
elif inp == '':
show_info(teacher_obj)
elif inp == 'q':
print("\33[32;0m谢谢您的光临,再见!\33[0m".center(40, "*"))
sys.exit()
else:
logger.error("无效选择!") def register():
auth.main()
teacher.py
- 类模板定义

- 效果演示

python【项目】:选课系统【简易版】的更多相关文章
- Python作业-选课系统
目录 Python作业-选课系统 days6作业-选课系统: 1. 程序说明 2. 思路和程序限制 3. 选课系统程序目录结构 4. 测试帐户说明 5. 程序测试过程 title: Python作业- ...
- Python开发【项目】:选课系统-改良版
程序名称: 选课系统 角色:学校.学员.课程.讲师要求:1. 创建北京.上海 2 所学校2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. ...
- Python开发程序:选课系统-改良版
程序名称: 选课系统 角色:学校.学员.课程.讲师要求:1. 创建北京.上海 2 所学校2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. ...
- python之选课系统详解[功能未完善]
作业需求 思路:1.先写出大体的类,比如学校类,学生类,课程类-- 2.写出类里面大概的方法,比如学校类里面有创建讲师.创建班级-- 3.根据下面写出大致的代码,并实现其功能 遇到的困 ...
- python编辑选课系统
一.需求分析 1. 创建北京.上海 2 所学校 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开 3. 课程包含,周期,价格,通过学校创建课 ...
- Python作业选课系统(第六周)
作业需求: 角色:学校.学员.课程.讲师.完成下面的要求 1. 创建北京.上海 2 所学校 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开 ...
- Python 28 选课系统的讲解
1.首先我们要对每一个新的项目有一个明确的思路,脑子是好东西,但是好记性不如烂笔头,所以,要把能想到的都写下来 2.然后就是创建项目的整体结构框架,比如说:conf ( 配置文件 ) .core ( ...
- [ python ] 面向对象 - 选课系统
根据源程序进行改写: 原程序地址:http://www.cnblogs.com/lianzhilei/p/5985333.html 如有侵权立即删除. 感谢原作者将完整的代码提供参考. ...
- select 项目<选课系统>
"""1. 创建北京.上海 2 所学校 学校类对象 属性:名字,地址 行为: 2. 创建linux , python , go 3个课程 , linux\py 在北京开, ...
- 一个简单的python选课系统
下面介绍一下自己写的python程序,主要是的知识点为sys.os.json.pickle的模块应用,python程序包的的使用,以及关于类的使用. 下面是我的程序目录: bin是存放一些执行文件co ...
随机推荐
- 浅谈Android发展趋势分析
去年11月16.17日,我有幸参加了北京2017安卓技术大会,做了关于车载Android系统的演讲,并主持了诸多大咖参与的圆桌讨论,对Android未来几年的发展趋势进行了一番讨论.来自小米.百度.高 ...
- 循环神经网络 RNN
随着科学技术的发展以及硬件计算能力的大幅提升,人工智能已经从几十年的幕后工作一下子跃入人们眼帘.人工智能的背后源自于大数据.高性能的硬件与优秀的算法的支持.2016年,深度学习已成为Google搜索的 ...
- Canny边缘检测算法原理及其VC实现详解(二)
转自:http://blog.csdn.net/likezhaobin/article/details/6892629 3. Canny算法的实现流程 由于本文主要目的在于学习和实现算法,而对于图像 ...
- Codeforces Round #306 (Div. 2)A B C D 暴力 位/暴力 暴力 构造
A. Two Substrings time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- thinkphp 3.2 部分数据库连贯操作phpstorm helper 文件
<?php class Helper { /** * 用于设置数据写入和查询是否严格检查是否存在字段. * 默认情况下不合法数据字段自动删除,如果设置了严格检查则会抛出异常 * 如: * str ...
- STL源码分析-priority_queue
http://note.youdao.com/noteshare?id=402cd1487d34af1a11f0daac6d16132f
- apk签名验证机制
声明: 1.本帖转载自:http://riusksk.blogbus.com/logs/272154406.html,仅供自用,勿喷 2.欢迎交流学习 签名后的APK,在/META-INF目录下会生成 ...
- 2.redis设计与实现--链表
1.链表节点: 2.链表: 3.总结
- 782E. Underground Lab DFS 好题
Link 题意:给出一个图,有n个点,m条边,k个人,每个人至多只能走$\lceil\frac{2n}{k}\rceil$步,输出可行的方案即输出每个人所走的步数和所走点 思路: 由于保证给出的是连通 ...
- Atcoder #014 agc014_C BFS
LINK 题意:给定起点和最大操作次数$k$,地图'#'为上锁房间, 每次可以走$k$步,并任意解锁$k$个房间,问到达地图边界的最小次数. 思路:其实上锁与否并没有关系,因为先把$k$步走的次数用完 ...

