Python Version 2.7x

一,bin目录:程序启动入口

  •   SelectLesson_start.py
 #!usr/bin/env python
# -*- coding:utf-8 -*-
# auther:Mr.chen
# 描述: import sys
sys.path.append('..')
from src import users_business users_business.user_Main()

二,lib目录:公共模型目录

  • Teachers_model.py
#!usr/bin/env python
# -*- coding:utf-8 -*-
# auther:Mr.chen
# 描述:教师模型类 class teacher_Model:
'''
教师模型类
'''
def __init__(self,name,age,sex):
self.Name = name #姓名
self.Age = age #年龄
self.Sex = sex #性别
self.__Calary = 0 #工资 def teacher_Accident(self): #教学事故
self.__Calary -= 10 def teacher_Success(self,cost): #教学成功
self.__Calary += int(cost) def calary_Return(self): #返回工资数据
return self.__Calary
  • Lessons_model.py
#!usr/bin/env python
# -*- coding:utf-8 -*-
# auther:Mr.chen
# 描述: import random,time class lesson_Model:
'''
课程模型类
'''
def __init__(self,lname,lcost,tobj):
self.Lname = lname #课程名
self.Lcost = lcost #课时费
self.Tobj = tobj #授课老师
self.difficulty = random.randrange(10,40) #授课难度 def classBegins(self): #上课方法
if self.success_Radio():
self.Tobj.teacher_Success(self.Lcost)
return True
else:
self.Tobj.teacher_Accident()
return False def success_Radio(self): #授课随机意外率
num = random.randrange(1, 1000)
if num <= (100-self.difficulty) * 10:
return True
else:
a = random.randrange(1, 5)
# print (type(a))
lesson_Model.event(str(a))
return False @staticmethod
def event(num): #授课意外事件
dict = {'': '据说老师刚刚失恋了,授课状态很差', '': '据说老师已经递交了辞职报告,授课状态很差',
'': '据说老师相亲去了,到现在状态都还没恢复。', '': '据说老师家里节哀了,心情极度悲伤',
'': '据说老师钱包丢了,内心无比哀叹'}
time.sleep(1)
print(dict[num])
  • Students_model.py
#!usr/bin/env python
# -*- coding:utf-8 -*-
# auther:Mr.chen
# 描述:
import random,time class student_Model:
'''
学生模型类
''' # num = 0
def __init__(self,name,age,account,password,lobj):
self.Name = name #姓名
self.Age = age #年龄
self.Account = account #账户名
self.Password = password #密码
self.Lobj = lobj #课程对象列表
self.IQ= random.randrange(40,90) #随机智商
self.schedule = {}
self.num = {}
for lesson in self.Lobj:
self.schedule[lesson] = 0 #课程进度率字典
self.num[lesson] = 0 #课程修业次数 def Classbegins(self,lesson_name): #上课
for obj in self.Lobj:
if obj.Lname == lesson_name :
# print (self.num)
print('{0}课程进行第{1}次修业...'.format(obj.Lname, str(self.num[obj] + 1)))
time.sleep(1)
if self.success_Radio():
tag = obj.classBegins()
if tag:
self.schedule[obj] += 20
self.num[obj] += 1
time.sleep(1)
print ('你感觉非常好!')
time.sleep(1)
print ('{0}:{1}课程学习成功!完成率提高20%,达成率变为{2}%'.format(self.Name,obj.Lname,str(self.schedule[obj])))
else:
self.num[obj] += 1
time.sleep(1)
print ('你突然有一种骂娘的冲动...')
time.sleep(1)
print ('{0}:{1}课程学习失败,你对课程的理解没有丝毫提高,达成率为{2}%'.format(self.Name,obj.Lname,str(self.schedule[obj])))
else:
tag = obj.classBegins()
if tag:
self.schedule[obj] += 10
self.num[obj] += 1
time.sleep(1)
print('{0}:{1}课程学习欠佳!完成率提高10%,达成率变为{2}%'.format(self.Name,obj.Lname, str(self.schedule[obj])))
else:
self.num[obj] += 1
time.sleep(1)
print('你突然萌生了轻生的念头...')
time.sleep(1)
print('{0}:{1}课程学习失败,你对课程的理解没有丝毫提高,达成率为{2}%'.format(self.Name, obj.Lname,
str(self.schedule[obj])))
else:
pass def success_Radio(self): #学习随机意外率
num = random.randrange(1, 1000)
if num <= self.IQ * 10:
return True
else:
a = random.randrange(1,5)
# print (type(a))
student_Model.event(str(a))
return False @staticmethod
def event(num): #学习意外事件
dict = {'':'你感觉头晕脑胀,浑身乏力!','':'外面突然飞过一只蜻蜓,你看着他飞了一节课!',
'':'女朋友来短信了,你激动的忘了听课','':'你突然感觉肚子疼...原来是想拉屎了',
'':'你的眼镜片碎了....'}
time.sleep(1)
print (dict[num])
  •  common.py
#!usr/bin/env python
# -*- coding:utf-8 -*-
# auther:Mr.chen
# 描述: #!/usr/bin/python
# -*- coding: utf-8 -*-
# 公共方法层 import os,time,random,pickle DIR = os.path.dirname(__file__)
DIR = DIR.replace('lib','db/') TAG = True #循环控制标志 def Exit():
'''
系统退出
:return:None
'''
print ('程序退出!')
exit() def MD5(password):
'''
加密函数
:param firstsite: 密码字符串
:return: 加密字符串
'''
import hashlib
return hashlib.md5(password).hexdigest() def Verification_input():
'''
登录验证码校验
:return: True
'''
while TAG:
re = Verification_Code()
code = raw_input('请输入括号里的验证码,不区分大小写({0}):'.format(re))
if code.strip().lower() != re.lower():
print('您输入的验证码有误,请重新输入!')
else:
return True def Verification_Code():
'''
生成随机的6位验证码:大小写字母数字的组合
:return: 验证码
'''
code = ''
b = random.randrange(0, 5)
c = random.randrange(0, 5)
for i in range(6):
if i == b:
a = random.randrange(1, 9)
code = code + str(a)
else:
a = random.randrange(65, 90)
if i == c:
code = code + chr(a).lower()
else:
code = code + chr(a)
return code def log_info_read(dir):
'''
配置文件全部读取
:param user:用户名
:return:dict字典
如果无文件返回False
'''
if os.path.exists(dir):
with open(dir,'r') as f:
dict = pickle.load(f)
return dict
else:
return False def log_info_write(dir,dict):
'''
配置文件全部写入
:param user:用户名
:param dict: 日志字典
:return: True or False
'''
#if os.path.exists(user+'_log'):
#print (DIR+user+'_log')
with open(dir,'w') as f:
pickle.dump(dict,f)
return True

三,src目录:程序业务目录

  • admin_business.py
#!usr/bin/env python
# -*- coding:utf-8 -*-
# auther:Mr.chen
# 描述: import os,sys
sys.path.append('..')
from lib.Teachers_model import teacher_Model
from lib.Lessons_model import lesson_Model
from lib import common DIR = os.path.dirname(__file__)
DIR = DIR.replace('src','db/') TAG = True def create_Teachers_model():
"""
创建老师模型
:return: None
"""
while TAG:
name = raw_input("请输入老师的姓名:")
age = raw_input("请输入老师的年龄:")
sex = raw_input("请输入老师的性别:")
while TAG:
text = """
老师信息如下:
姓名:{0}
年龄:{1}
性别:{2}
""".format(name,age,sex)
print (text)
decide = raw_input("是否确认(y/n):")
if decide == 'y':
P = teacher_Model(name,age,sex)
dict = common.log_info_read(DIR+'config_conf')
if dict != False:
dict['teachers'].append(P)
common.log_info_write(DIR + 'config_conf', dict)
print ("老师信息保存成功!")
return
else:
dict = {
'teachers':[P],
'lessons':[],
'students':[]
}
common.log_info_write(DIR+'config_conf',dict)
print ("老师信息保存成功!")
return
elif decide == 'n':
break
else:
print ("您的输入有误!") def create_Lesson_model():
"""
创建课程模型
:return: None
"""
num = 0
list = []
dict = common.log_info_read(DIR + 'config_conf')
if dict == False:
print ("请先创建老师模型后再来!")
return
name = raw_input("请输入课程名称:")
cost = raw_input("请输入课时费:")
while TAG:
print ("目前有{0}个老师可供选择,如下:".format(str(len(dict['teachers']))))
for P in dict['teachers']:
print ("{0}:姓名:{1},年龄:{2},性别:{3}".format(str(num+1),P.Name,P.Age,P.Sex))
num += 1
list.append(str(num))
choose = raw_input("请输入索引选择授课老师:")
if choose in list:
tobj = dict['teachers'][int(choose)-1]
L = lesson_Model(name,cost,tobj)
while TAG:
text = """
课程的信息如下:
课程名:{0}
课时费:{1}
授课老师:{2}
""".format(name, cost, L.Tobj.Name)
print (text)
decide = raw_input("是否确认(y/n):")
if decide == 'y':
dict['lessons'].append(L)
common.log_info_write(DIR + 'config_conf', dict)
return
elif decide == 'n':
return
else:
print ("您的输入有误!")
else:
print ("您的输入有误!")
num = 0 def model_Config():
"""
查看已经创建的模型
:return: None
"""
num = 0
Num = 0
dict = common.log_info_read(DIR + 'config_conf')
if dict == False:
print ("请先创建老师模型后再来!")
return
print ("已经创建的老师模型,如下:".format(str(len(dict['teachers']))))
for P in dict['teachers']:
print ("{0}:姓名:{1},年龄:{2},性别:{3}".format(str(num + 1), P.Name, P.Age, P.Sex))
num += 1
print ("已经创建的课程模型,如下:".format(str(len(dict['teachers']))))
for P in dict['lessons']:
print ("{0}:课程名:{1},课时费:{2},授课老师:{3}".format(str(Num + 1), P.Lname, P.Lcost, P.Tobj.Name))
Num += 1 def admin_Main(log = None):
"""
管理员管理界面
:param log: 用户登录标志
:return: None
"""
while TAG:
text = """
欢迎来到管理员界面 {0}登陆中
1,创建老师模组
2,创建课程模组
3,查看模组配置
4,系统退出
""".format(log)
print (text)
while TAG:
choose = raw_input('请输入你的选择:')
if choose == '':
create_Teachers_model()
break
elif choose == '':
create_Lesson_model()
break
elif choose == '':
model_Config()
break
elif choose == '':
common.Exit()
else:
print ('您的输入有误!') if __name__ == "__main__":
admin_Main('admin')
  • users_business.py
#!usr/bin/env python
# -*- coding:utf-8 -*-
# auther:Mr.chen
# 描述: LOGIN = []
TAG = True
import os,sys
sys.path.append('..')
from lib import common
from lib.Students_model import student_Model
from src import admin_business DIR = os.path.dirname(__file__)
DIR = DIR.replace('src','db/') def user_Login():
dict = common.log_info_read(DIR + 'config_conf')
if dict == False:
print ("请让管理员先创建老师及课程模型后再来!")
return
while TAG:
account = raw_input("请输入你的登录名:")
if account == 'admin':
password = raw_input("请输入你的登陆密码:")
if password == '':
admin_business.admin_Main('admin')
for S in dict['students']:
if S.Account == account:
while TAG:
password = raw_input("请输入你的登陆密码:")
if S.Password == password:
print ('登陆成功')
LOGIN.insert(0,S)
user_Main(S.Name)
else:
print ("您输入的密码有误!")
else:
print ("您输入的账号有误,请重新输入!") def login_Check():
dict = common.log_info_read(DIR + 'config_conf')
if dict == False:
print ("请让管理员先创建老师及课程模型后再来!")
return
name = raw_input("请输入你的姓名:")
age = raw_input("请输入你的年龄:")
account = raw_input("请输入你的登录账号:")
password = raw_input("请输入你的登陆密码:")
text = """
你的注册信息如下:
姓名:{0}
年龄:{1}
登陆账号:{2}
登陆密码:{3}
""".format(name,age,account,password)
while TAG:
print (text)
decide = raw_input("是否确认(y/n):")
if decide == 'y':
S = student_Model(name,age,account,password,[])
dict['students'].append(S)
common.log_info_write(DIR + 'config_conf', dict)
LOGIN.insert(0,S)
print ('信息注册成功')
user_Main(name)
elif decide == 'n':
return
else:
print ('你的输入有误!') def select_Lesson():
num = 0
List = []
dict = common.log_info_read(DIR + 'config_conf')
if LOGIN == []:
print ('请登陆后再来!')
return
if dict == False:
print ("请让管理员先创建老师及课程模型后再来!")
return
print ("目前的可选课程有{0}门,如下:".format(str(len(dict['lessons']))))
for lesson in dict['lessons']:
print ('{0},课程名:{1},课时费:{2},授课老师:{3}'.format(str(num+1),lesson.Lname,lesson.Lcost,lesson.Tobj.Name))
num += 1
List.append(str(num))
while TAG:
choose = raw_input("请输入索引选择课程(可以多选但不能重复):")
if choose.isdigit():
if len(choose) == len(set(choose)):
if set(choose) & set(List) == set(choose):
for S in dict['students']:
if S.Name == LOGIN[0].Name:
for i in list(choose):
if dict['lessons'][int(i)-1] in S.Lobj:
print ("您已经添加过{0}课程了".format(dict['lessons'][int(i)-1].Lname))
else:
S.Lobj.append(dict['lessons'][int(i)-1])
S.schedule[dict['lessons'][int(i)-1]] = 0
S.num[dict['lessons'][int(i) - 1]] = 0
common.log_info_write(DIR + 'config_conf', dict)
print ('选课成功!')
return
else:
pass
else:
print ("您的选择超范围,请重新选择!")
else:
print ("您的选择里有重复内容,请重新输入!")
else:
print ('您的输入必须是纯数字,请重新输入!') def class_Begins():
num = 0
List = []
dict = common.log_info_read(DIR + 'config_conf')
if LOGIN == []:
print ('请登陆后再来!')
return
if dict == False :
print ("请让管理员先创建老师及课程模型后再来!")
return
for S in dict['students']:
if S.Name == LOGIN[0].Name and S.Lobj == []:
print ("您还没有选课,请选课后再来!")
return
while TAG: for obj in dict['students']:
if obj.Name == LOGIN[0].Name:
print ("您有{0}门待修业课程,如下:".format(str(len(obj.Lobj))))
for lesson in obj.Lobj:
if obj.schedule[lesson] >= 100:
finished = '已达成'
elif obj.num[lesson] >= 9:
finished = '修业失败'
else:
finished = obj.schedule[lesson]
print ('{0},课程名:{1},课时费:{2},授课老师:{3},修业达成率:{4},已修业次数:{5}'.format(str(num+1),lesson.Lname,lesson.Lcost,lesson.Tobj.Name,finished,obj.num[lesson]))
num += 1
List.append(str(num))
choose = raw_input("请输入你的选择(单选)(输入n返回上一级菜单):")
if choose in List:
# if LOGIN[0].schedule[LOGIN[0].Lobj[int(choose)]] < 100:
for obj in dict['students']:
if obj.Name == LOGIN[0].Name:
for i in range(9):
# print (obj.Lobj[int(choose)-1])
if obj.schedule[obj.Lobj[int(choose)-1]] < 100 and obj.num[obj.Lobj[int(choose)-1]] < 9:
obj.Classbegins(obj.Lobj[int(choose)-1].Lname)
num = 0
else:
print ('您选择的课程已经修业完成,请重新选择!')
common.log_info_write(DIR + 'config_conf', dict)
num = 0
break
common.log_info_write(DIR + 'config_conf', dict)
elif choose == 'n':
return
else:
print ("您的输入有误!")
num = 0 def user_Main(log = None):
if log == None:
log = '用户未登录...'
else:
log = "{0}登陆中...".format(log)
text = """
欢迎光临选课系统 {0}
1,学生登录
2,学生注册
3,学生选课
4,学生上课
5,系统退出
""".format(log)
while TAG:
print (text)
dict = {'':user_Login,'':login_Check,'':select_Lesson,'':class_Begins,'':common.Exit}
choose = raw_input("请输入你的选择:")
if choose in dict.keys():
dict[choose]()
else:
print ("你的输入有误!") if __name__ == "__main__":
user_Main()

四,db目录:配置文件目录,程序自动生成

从零开始学Python06作业源码(仅供参考)的更多相关文章

  1. 从零开始学Python04作业源码:模拟ATM电子银行(仅供参考)

    bin目录:程序启动入口 ATM_start.py: #!/usr/bin/python # -*- coding: utf-8 -*- # 模拟ATM电子银行+登录账户权限控制+管理员管理模块 # ...

  2. 从零开始学Python08作业源码:开发简单的FTP(仅供参考)

    服务器端:server_server.py #!usr/bin/env python # -*- coding:utf-8 -*- # auther:Mr.chen # 描述: import sock ...

  3. 从零开始学Python07作业源码:虚拟人生(仅供参考)

    bin目录: Simulated_life_start.py #!usr/bin/env python # -*- coding:utf-8 -*- # auther:Mr.chen # 描述: im ...

  4. 【原创】从零开始学SpagoBI5.X源码汉化编译

    从零开始学SpagoBI5.X源码汉化编译 一.新建Tomact Server 服务器并配置测试1.文件-新建-其他-过滤server-服务类型选择Tomact V7.0 Server2.根据需要修改 ...

  5. 从零开始学Python06作业思路:学生选课系统

    一,作业要求 选课系统: 管理员: 创建老师:姓名.性别.年龄.资产 创建课程:课程名称.上课时间.课时费.关联老师 学生:用户名.密码.性别.年龄.选课列表[].上课记录{课程1:[di,a,]} ...

  6. Unity上一页下一页切换功能实现源码(仅供参考)

    在做项目时我们有时需要实现切换上一页下一页图片,切换上一首下一首歌曲等等类似的功能.这里写了个简单的实现源码(仅供参考),要是有更好的方法欢迎提出来,共同进步~ 以切换上一页下一页图片为例: usin ...

  7. 最新咕咆+鲁班+图灵+享学+蚂蚁+硅谷+源码 Java架构师资料《Java架构师VIP课程》

    最新的Java架构师完整资料,完整视频+源码+文档. 每一套都是一百多个G的资料,无密. JAVA架构师全套课程 咕泡学院互联网架构师第一期 咕泡学院互联网架构师第二期 咕泡学院互联网架构师第三期 博 ...

  8. Ubuntu 12.04 分区方案(仅供参考)

    Ubuntu 12.04 分区方案(仅供参考)   总空间大小:50G 目录 建议大小 实际大小 格式 描述 / 10G~20G 10G ext4 根目录 swap <2048M 1G swap ...

  9. VSS的运用小内容(针对于vs2008版本)(小的问题都是,仅供参考--只针对于菜鸟级的)

    自己开始接触vss 的时候有些小的习惯没有很好的养成,下面的有关VSS内容都是简单的迁入迁出的问题,(仅供参考) 1.文件的迁入迁出:(.txt..xlsx..doc) a:文件的覆盖问题: 对于文件 ...

随机推荐

  1. Got the Best Employee of the year 2015 Star Award

    Got "The Best Employee of the year 2015 Star Award" from the company, thanks to all that h ...

  2. 【js技巧】~(按位非)运算符的妙用

    今天在reivew部门牙套姐MM的代码的时候,有点小心得,给大家分享.我们常常说到,“学以致用”,但我发现自己却很少能真正做到.<javascript高级程序设计>即大家常说的“红宝书”, ...

  3. Jenkins常用插件说明(持续更新)

    本文主要记录在学习以及使用Jenkins过程中常用的对我们有帮助的插件,同时本文将会持续进行更新.如果大家发现有其他野很好用的插件,也欢迎参照下面的格式,在评论中进行回复反馈. 一.通用插件 1.Em ...

  4. 谷歌chrome浏览器www.tradeadexchange.com广告弹窗跳转劫持病毒

    近期大量网友出现chrome浏览器被劫持的情况,表现如下:           ·  点击(访问)任意网站任意链接均有概率弹出www.tradeadexchange.com.           ·  ...

  5. Java中instanceof和isInstance区别详解

     一次性搞定instanceof和isInstance,instanceof和isInstance长的非常像,用法也很类似,先看看这两个的用法: obj.instanceof(class) 也就是说这 ...

  6. JAVA理论概念大神之概念汇总

    我个人觉得,JAVA之所以能够经久不衰,有一个很重要的原因就是:JAVA的理论总是给人一种,虽然不知道是什么,但是感觉很厉害的样子.就单是这一点,他就已经超越许多其他语言了,至少吹牛的时候谈资总是很多 ...

  7. iOS---iOS9搜索功能

    前言 在iOS9之前我们只能使用Spotlight来搜索应用名称来打开指定App,而其他的内容都是提供给系统使用(信息,联系人,邮件等).在iOS9以后Apple允许开发者设置应用中任意内容可以被Sp ...

  8. android studio sdk 不能更新

    网上看到好多sdk不能更新的,解决办法基本上一下,试了下大都没用,,有人说改hosts ,我试了 貌似没用 下面是我亲测可以更新的一种方法:使用镜像地址更新 步骤: 1. 打开 SDK Manager ...

  9. LINQ系列:LINQ to XML操作

    LINQ to XML操作XML文件的方法,如创建XML文件.添加新的元素到XML文件中.修改XML文件中的元素.删除XML文件中的元素等. 1. 创建XML文件 string xmlFilePath ...

  10. 深入学习jQuery选择器系列第八篇——过滤选择器之伪子元素选择器

    × 目录 [1]通用形式 [2]反向形式 [3]首尾元素 [4]唯一元素 前面的话 本文是子元素选择器的续篇,主要介绍关于nth-of-type()选择器的内容.该部分内容并非没有出现在<锋利的 ...