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 ...
随机推荐
- 康托展开&康托逆展开 的写法
康托展开 康托展开解决的是当前序列在全排序的名次的问题. 例如有五个数字组成的数列:1,2,3,4,5 那么1,2,3,4,5就是全排列的第0个[注意从0开始计数] 1,2,3,5,4就是第1个 1, ...
- MSF下ms17_010_psexec模块使用技巧
0x01 前言 MS17-010 的psexec是针对Microsoft Windows的两款最受欢迎的漏洞进行攻击. CVE-2017-0146(EternalChampion / EternalS ...
- linux下shell显示-bash-3.2$ 不显示路径解决方法
linux操作下脚本不小心误删了很多东西,变成了下面的样子 在linux shell中不显示路径了,用起来很不方便. 如何改为显示路径的shell呢 步骤如下: vi ~/.bash_profi ...
- tmp_table_size ---> 优化 MYSQL 经验总结
数据库连接突然增多到1000的问题 查看了一下,未有LOCK操作语句. 但是明显有好多copy to tmp table的SQL语句,这条语读的时间比较长,且这个表会被加读锁,相关表的update语句 ...
- CSS3制作3D水晶糖果按钮
本人仿照20个漂亮 CSS3 按钮效果及优秀的制作教程中的BonBon(Candy)Button实现了其棒棒糖果按钮,如下图所示: 在线演示地址见here. 使用完全使用CSS实现,无需JS.源码如下 ...
- hadoop(三)HDFS基础使用
一.HDFS前言 1. 设计思想 分而治之:将大文件,大批量文件,分布式的存放于大量服务器上.以便于采取分而治之的方式对海量数据进行运算分析 2. 在大数据系统架构中的应用 ...
- profit
Portal --> broken qwq Description 大M成立的怪兽电力公司最近刚建立了一个网站.这个季度共有\(n\)天,第\(i\)天共有\(v[i]\)个用户点击该网站,总的 ...
- STL源码分析归档
1) algorithm 2) traits 3) iterator 4) list 5) function 6) rbtree 7) bitset 8) priority_queue 9) hash ...
- 类的起源与metaclass
一.概述 我们知道类可以实例化出对象,那么类本身又是怎么产生的呢?我们就来追溯一下类的起源. 二.类的起源 2.1 创建一个类 class Foo(object): def __init__(self ...
- 转:数据标准化/归一化normalization
转自:数据标准化/归一化normalization 这里主要讲连续型特征归一化的常用方法.离散参考[数据预处理:独热编码(One-Hot Encoding)]. 基础知识参考: [均值.方差与协方差矩 ...

