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 ...
随机推荐
- 解决Maven下载依赖慢
微服务spring boot,在使用maven下载依赖的时候非常慢,几十K的依赖JAR,也需要漫长的等待,更悲剧呢的漫长等待结果提示下载失败,为彻底解决这个问题,决定使用国内的镜像库,想象总是美好的, ...
- 【bzoj4872】【shoi2017】分手即是祝愿
4872: [Shoi2017]分手是祝愿 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 746 Solved: 513[Submit][Statu ...
- poj4052 Hrinity
pdf题面:传送门 题目大意:给定一些单词和一个句子,问有多少个单词在句子中出现过,如果一个但单词包含另一个单词,并且两个单词都出现过,那么只算最外层的单词(包含另一个单词的单词). 分析:这道题如果 ...
- poj 3261 后缀数组 可重叠的 k 次最长重复子串
Milk Patterns Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 16430 Accepted: 7252 Ca ...
- bzoj 1879 状压dp
879: [Sdoi2009]Bill的挑战 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 852 Solved: 435[Submit][Status ...
- 「Django」与mysql8连接的若干问题
1.setting配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', #数据库驱动名 'NAME': 'my_tes ...
- SpringBoot(五) :spring data jpa 的使用
原文出处: 纯洁的微笑 在上篇文章springboot(二):web综合开发中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring data jpa 常见用法 ...
- net-speeder
有的同学反映自己的搬瓦工速度慢,丢包率高.这其实和你的网络服务提供商有关.据我所知一部分上海电信的同学就有这种问题.那么碰到了坑爹的网络服务商,我们应该怎么办呢? duangduang~~~~~~有请 ...
- Scrapy的安装--------Windows、linux、mac等操作平台
Scrapy安装 Scrapy的安装有多种方式,它支持Python2.7版本及以上或者是Python3.3版本及以上.下面来说py3环境下,scrapy的安装过程. Scrapy依赖的库比较多,至少需 ...
- jQuery.fill 数据填充插件
博客园的伙伴们,大家好,I'm here,前段时间特别的忙,只有零星分散的时间碎片,有时仰望天空,有时发呆,有时写代码,正如下面给大家介绍的这个jQuery.fill插件,正是在这样的状态下写出来的. ...

