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 选课系统的更多相关文章

  1. 一个简单的python选课系统

    下面介绍一下自己写的python程序,主要是的知识点为sys.os.json.pickle的模块应用,python程序包的的使用,以及关于类的使用. 下面是我的程序目录: bin是存放一些执行文件co ...

  2. python选课系统

    程序名称: 选课系统 角色:学校.学员.课程.讲师 要求: 1. 创建北京.上海 2 所学校 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海 ...

  3. python选课系统作业

    # 选课系统# 角色:学校.学员.课程.讲师# 要求:# 1. 创建北京.上海 2 所学校# 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海 ...

  4. python选课系统demo的小练习

    #简化选课系统代码:先登陆,然后判断身份并实例化,根据身份对应的类,让用户选择 class Manager: operate_dict=[ ('创造学生账号',"creat_student& ...

  5. python之选课系统详解[功能未完善]

    作业需求 思路:1.先写出大体的类,比如学校类,学生类,课程类--   2.写出类里面大概的方法,比如学校类里面有创建讲师.创建班级-- 3.根据下面写出大致的代码,并实现其功能       遇到的困 ...

  6. Python开发程序:选课系统-改良版

    程序名称: 选课系统 角色:学校.学员.课程.讲师要求:1. 创建北京.上海 2 所学校2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. ...

  7. python实现学生选课系统 面向对象的应用:

    一.要求: 选课系统 管理员: 创建老师:姓名.性别.年龄.资产 创建课程:课程名称.上课时间.课时费.关联老师 使用pickle保存在文件 学生: 学生:用户名.密码.性别.年龄.选课列表[].上课 ...

  8. Python开发程序:选课系统

    本节作业: 选课系统 角色:学校.学员.课程.讲师要求:1. 创建北京.上海 2 所学校2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. ...

  9. python 面向对象 class 老男孩选课系统

    要求:1. 创建北京.上海 2 所学校 class2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. 课程包含,周期,价格,通过学校创建课 ...

随机推荐

  1. burp基本使用

    记录一个burp最基础的小白使用过程: 以firefox为例设置一下代理,代理到127.0.0.1:8090 设置Burp的相关: 1.为Burp添加一个代理ip和端口:如 127.0.0.1:809 ...

  2. matplotlib散点数据-【老鱼学matplotlib】

    之前我们一直在讲述线段图,这次讲述散点图. 散点图的生成很简单,只要调用plt.scatter()函数就可以. 例如: import numpy as np import pandas as pd i ...

  3. SOUI taobao SVN目录结构说明

  4. windows下创建MySQL定时备份与删除脚本

    今天在windows服务器上面写了一个MySQL定时任务,备份呢与删除 rem *****************************Code start********************* ...

  5. WIN10在安装mysql时,出现“The security settings could not be applied to the database because the connection has failed with the following error. Error Nr. 1045

    解决方法:1, 首先卸载MySQL2, 再根据这个目录 C:\ProgramData,将MySQL删除.3, 重新安装MySQL 就好了(电脑不用重启)

  6. SpringBoot使用Nacos服务发现

    本文介绍SpringBoot应用使用Nacos服务发现. 上一篇文章介绍了SpringBoot使用Nacos做配置中心,本文介绍SpringBoot使用Nacos做服务发现. 1.Eureka闭源 相 ...

  7. centos升级python2.7到3.6之后造成yum命令报错

    今天学习浏览器模拟,把云端centos上的python2.7升级到3.6,但是安装其他软件时发现报如下错误: File "/usr/bin/yum", line 30 except ...

  8. 第八篇 Flask配置

    Flask 是一个非常灵活且小而精的web框架 , 那么灵活性从什么地方体现呢? 列如  Flask配置,这个东西怎么用呢? 它能给我们带来怎么样的方便呢? app配置 首先展示一下: from fl ...

  9. Java菜鸟浅谈OCR

    什么是OCR? 粗暴点说就是图片文本识别!正规点的说法就是:(Optical Character Recognition,光学电子识别) 最近公司开展新项目,考虑到实名认证这方面,然后还要上传身份证正 ...

  10. SDOI2018:原题识别

    题解: https://files.cnblogs.com/files/clrs97/old-solution.pdf Code: #include<cstdio> #include< ...