python 选课系统

couser.py:
import sys,os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR) from core import main if __name__ == '__main__': #__main__就是导入的模块,main,__name__是系统变量
a = main.Run() #实例化类
a.interactive() #调用类的方法 uid.py:
import hashlib
import time def create_md():
m = hashlib.md5()
m.update(bytes(str(time.time()),encoding='utf-8')) #hash的数值
return m.hexdigest() #16进制的hash值 main.py:
import sys,os
import json
import pickle BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
from core import uid
#数据库文件路径
db_DIR = BASE_DIR + r"\db"
db_school = db_DIR + r"\school"
db_teacher = db_DIR + r"\student"
db_classes = db_DIR + r"\classes"
db_course = db_DIR + "r\course"
db_admin = db_DIR + r"\admin"
db_class_record = db_DIR + r"\class_record"
db_class_grade = db_DIR + r"\class_grade" class Baseclass(object):
def __init__(self):
pass
def save(self,type,dict):
"""
school是一个字典格式,这个函数是对创建的学校进行存档
:param type:type输入的其实是db中的文件夹
:param dict:
:return:
"""
filename = uid.create_md()
dict['uid'] = filename #
file_path = "%s\%s"%(db_DIR,type) #type就是文件夹的名称
ab_file = "%s\%s"%(file_path,filename) #文件夹下的文件名称,filename是hash的id值
with open(ab_file,"wb") as f:
# dumps 将数据通过特殊的形式转换为只有python语言认识的字符串
f.write(pickle.dumps(dict))
print("-------",type,"创建成功","-------")
for key in dict:
print(key,":\t",dict[key]) def seek_list(self,type,list):
"""
此方法是将班级中的学生,学校的老师等列表进行存储
:param type: 学生,学校,班级中学生登记,班级等类别
:param list: 每种课程中的学生信息
:return:
"""
filename = uid.create_md()
file_path = "%s\%s" %(db_DIR,type)
ab_file = "%s\%s" %(file_path,filename)
with open(ab_file,"wb") as f: #二进制读入,二进制打开,最好的方式
f.write(pickle.dumps(list))
print("-------",type,"创建成功","--------")
for i in list: #i就是相关学生,老师的选课信息的字典
for key in i:
print(key,i[key])
print('\n')
return True def open(self,type):
"""
此方法是将相关数据中的进行还原
:param type:数据类型
:return: 返回一个列表
"""
all_data = []
db_path = "%s\%s" %(db_DIR,type) #相对应的文件夹
for i in os.listdir(db_path): #直接就将文件显示出来了
if os.path.isfile(os.path.join(db_path,i)):
db_file = os.path.join(db_path,i) #变成绝对路径,os.path.join直接就把路径\合并了
with open(db_file,"rb") as f: #二进制打开
file_dict = pickle.load(f) #还原pickle的数据
all_data.append(file_dict) #可以把字典直接还原,返回的是列表 return all_data class Admin(Baseclass):
def __init__(self):
super(Admin,self).__init__()
def create_school(self):
school_dict = {}
school_name = input("校名:")
school_address = input("地址:")
s1 = School(school_name,school_address)
school_dict["校名"] = s1.school_name
school_dict["地址"] = s1.school_address
Baseclass.save(self,"school",school_dict)
def create_teacher(self):
teacher_dict = {}
teacher_name = input("讲师姓名:")
teacher_salary = input("讲师工资:")
teacher_school = input("所属学校:")
t1 = Teacher(teacher_name,teacher_salary,teacher_school) #这些有点多余,其它也没有关联起来
teacher_dict["姓名"] = t1.teacher_name
teacher_dict["工资"] = t1.teacher_salary
teacher_dict["所属学校"] = t1.teacher_school
print(teacher_dict) #进行测试
Baseclass.save(self,"teacher",teacher_dict)
def create_student(self):
student_dict = {}
student_name = input("学员姓名:")
student_sex = input("学员性别:")
student_school = input("所属学校:")
student_classes = input("学员班级:")
# st1 = Student(student_name,student_sex,student_school,student_classes)
student_dict["姓名"] = student_name
student_dict["性别"] = student_sex
student_dict["学校"] = student_school
student_dict["班级"] = student_classes
Baseclass.save(self,"student",student_dict)
def create_course(self):
course_dict = {}
course_name = input("课程名:")
course_period = input("周期:")
course_prices = input("价格:")
c1 = Course(course_name,course_period,course_prices) #实例化Course类
course_dict["课程名"] = c1.course_name 阐述:
以上的就是pickle的基本使用,对文件目录文件读取写入等,在继承方面,指继承了基类的方法,注册什么的都是没有什么效果,最主要是类的继承比较繁琐,还是可以学习到一点东西。
python 选课系统的更多相关文章
- 一个简单的python选课系统
下面介绍一下自己写的python程序,主要是的知识点为sys.os.json.pickle的模块应用,python程序包的的使用,以及关于类的使用. 下面是我的程序目录: bin是存放一些执行文件co ...
- python选课系统
程序名称: 选课系统 角色:学校.学员.课程.讲师 要求: 1. 创建北京.上海 2 所学校 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海 ...
- python选课系统作业
# 选课系统# 角色:学校.学员.课程.讲师# 要求:# 1. 创建北京.上海 2 所学校# 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海 ...
- python选课系统demo的小练习
#简化选课系统代码:先登陆,然后判断身份并实例化,根据身份对应的类,让用户选择 class Manager: operate_dict=[ ('创造学生账号',"creat_student& ...
- python之选课系统详解[功能未完善]
作业需求 思路:1.先写出大体的类,比如学校类,学生类,课程类-- 2.写出类里面大概的方法,比如学校类里面有创建讲师.创建班级-- 3.根据下面写出大致的代码,并实现其功能 遇到的困 ...
- Python开发程序:选课系统-改良版
程序名称: 选课系统 角色:学校.学员.课程.讲师要求:1. 创建北京.上海 2 所学校2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. ...
- python实现学生选课系统 面向对象的应用:
一.要求: 选课系统 管理员: 创建老师:姓名.性别.年龄.资产 创建课程:课程名称.上课时间.课时费.关联老师 使用pickle保存在文件 学生: 学生:用户名.密码.性别.年龄.选课列表[].上课 ...
- Python开发程序:选课系统
本节作业: 选课系统 角色:学校.学员.课程.讲师要求:1. 创建北京.上海 2 所学校2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. ...
- python 面向对象 class 老男孩选课系统
要求:1. 创建北京.上海 2 所学校 class2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. 课程包含,周期,价格,通过学校创建课 ...
随机推荐
- [原创]基于Zynq AXI-Bram Standalone & Linux 例程
基于Zynq AXI-Bram Standalone & Linux 例程 待添加完善中
- jsp中静态include和动态include的区别
jsp中静态include和动态include的区别 动态 INCLUDE 用 jsp:include 动作实现 <jsp:include page="included.jsp&quo ...
- 自定义InputFormat和OutputFormat案例
一.自定义InputFormat InputFormat是输入流,在前面的例子中使用的是文件输入输出流FileInputFormat和FileOutputFormat,而FileInputFormat ...
- Mapreduce的排序(全局排序、分区加排序、Combiner优化)
一.MR排序的分类 1.部分排序:MR会根据自己输出记录的KV对数据进行排序,保证输出到每一个文件内存都是经过排序的: 2.全局排序: 3.辅助排序:再第一次排序后经过分区再排序一次: 4.二次排序: ...
- python基础篇_005_迭代器和生成器
Python迭代器和生成器 1.迭代器 迭代:可以将某个数据集内的数据“一个挨着一个的取出来” for i in range(1, 10, 2): # in 后面的对象必须是一个可迭代的 print( ...
- ubuntu创建新用户
ubuntu和windows一样,可以任意创建或者删除新的用户,windows下比较简单,ubuntu下需要使用命令,不过操作起来不是很繁琐,所以我尽量写的详细一些. 如何创建ubuntu新用户? ...
- 03-Python入门学习-Python基础
一.与用户交互 1.什么是与用户交互 程序等待用户输入一些数据,然后程序执行完毕后为用户反馈信息 2.为何程序要与用户交互 为了让计算机能够像人一样与用户的交互 3.如何用 在python3中:inp ...
- (71)Wangdao.com第十一天_JavaScript 数学对象 Math
Math 对象 封装了数学相关的 属性和方法. 和其他对象不一样,Math 不是一个构造函数,所以不能 new 生成实例, 其所有属性和方法都必须在 Math 对象上调用. 静态属性 Math.PI ...
- ubuntu重复登录问题
第一次遇到: 昨天好不容易装好了驱动,紧接着装了CUDA,cuDNN,Anaconda,VSCode等等.然后安装pytorch的时候遇到了下载的问题,后来也算搞定了.但是在更换了显示器后重启(好像是 ...
- Kali 2.0使用SSH进行远程登录
注:此文为转载他人博客,不用做商业用途,如有侵权,请联系我删除 一.配置SSH参数 修改sshd_config文件,命令为: vi /etc/ssh/sshd_config 将#PasswordAut ...