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. 课程包含,周期,价格,通过学校创建课 ...
随机推荐
-
Ferry Loading II_贪心
Description Before bridges were common, ferries were used to transport cars across rivers. River fer ...
-
process thread Fiber(linux)
http://blog.chinaunix.net/uid-21084809-id-2215376.html Processes, kernel threads, user threads, and ...
-
BZOJ 3531: [Sdoi2014]旅游
职务地址:http :// www . lydsy . com / JudgeOnline / problem . php ? id = 3531 标题效果:看到原来的标题. 算法讨论:树链拆分. 就 ...
-
学习在.NET Core中使用RabbitMQ进行消息传递之持久化(二)
前言 上一节我们简单介绍了RabbitMQ和在安装后启动所出现的问题,本节我们开始正式进入RabbitMQ的学习,对于基本概念请从官网或者其他前辈博客上查阅,我这里不介绍基础性东西,只会简单提一下,请 ...
-
OS + CentOS / windows / xrdp / vnc
s 通过windows远程访问linux桌面的方法(简单) https://www.cnblogs.com/lizhangshu/p/9709531.html https://dl.fedorapro ...
-
Linux环境下使用Android NDK编译c/c++生成可执行文件
1.安装Android NDK至Linux(Lubuntu 16) 从网上下载 android-ndk-r13b-linux-x86_64.zip,本人将其解压至/home/guanglun/work ...
-
kmeans
K均值(K-means)算法 ).setSeed(1L) val model=kmeans.fit(dataset) //Make predictions val predictions=model. ...
-
js求时间差,两个日期月份差
var date1=new Date(); //开始时间 alert("aa"); var date2=new Date(); //结束时间 var date3=date2 ...
-
ApplicationContext(三)BeanFactory 初始化
ApplicationContext(三)BeanFactory 初始化 上节我们提到容器初始化的第一步首先进行了属性的检验,下面就要开始第二步:进行 beanFactory 的初始化工作了. App ...
-
Lintcode: Add Two Numbers
C++ /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * List ...