一 程序目录结构

1 bin文件夹 二进制文件、代码程序  2 conf 配置文件  3 帮助文档  4 头文件库文件等

二 学生选课系统部分代码 未完待续

1 包内的__init__.py文件
在包下的脚本内 导入包内 的其他包下的文件也叫模块,在2.7下导入没有__init__.py 会报错。在3.5有没有这个文件以后没有影响了。 讲解:
1 老师类 : 需要有添加时间 加工资 减工资
2 管理员类: 封装管理员用户名密码

bin 目录

 #!/usr/bin/env python
# -*- coding:utf-8 -*-
import os, sys, pickle sys.path.append(os.path.dirname(os.path.dirname(__file__)))
from lib.models import *
from conf import settings def create_curriculum(admin_obj):
curriculum_list = []
if os.path.exists(settings.Teacher_dir):
teacher_show = pickle.load(open(settings.Teacher_dir, "rb"))
for i, item in enumerate(teacher_show, 1): # 从1开始
print(i, item.teacher_name)
while True:
curriculum_name = input("请输入课程名(q退出):")
if curriculum_name == "q":
break
curriculum_cost = input("请输入费用:")
curriculum_teacher = input("请输入老师编号:")
curriculum_obj = Curriculum(curriculum_name, curriculum_cost,
teacher_show[int(curriculum_teacher) - 1].teacher_name, admin_obj)
curriculum_list.append(curriculum_obj)
if os.path.exists(settings.Curriculum_dir):
exist_curriculum = pickle.load(open(settings.Curriculum_dir, "rb"))
curriculum_list.append(exist_curriculum)
pickle.dump(curriculum_list, open(settings.Curriculum_dir, "wb"))
else:
print("还没有老师请先创建老师") def create_teacher(admin_obj):
teacher_list = []
while True:
name = input("教师名字:(q退出)")
if name == "q":
break
age = input("年龄")
teacher_obj = Teacher(name, age, admin_obj) # 创建老师
teacher_list.append(teacher_obj)
if os.path.exists(settings.Teacher_dir):
exists_teacher = pickle.load(open(settings.Teacher_dir, "rb"))
teacher_list.extend(exists_teacher)
pickle.dump(teacher_list, open(settings.Teacher_dir, "wb")) def login(user, pwd):
path = os.path.join(settings.Base_admin_dir, user) # 用户名创建一个路径
if os.path.exists(path): # 判断路径是否存在,存在就是说明用户正确。
admin_obj = pickle.load(open(path, "rb")) # 获取用户名对应的对象。
if admin_obj.login(user, pwd): # 执行这个对象的登陆方法
print("登录成功")
while True:
inp = input("1、创建课程。2、创建老师(其他退出)\n>>>")
if inp == "":
create_curriculum(admin_obj)
continue
elif inp == "":
create_teacher(admin_obj)
continue
else:
break
else:
print("密码错误")
else:
print("账号不存在") def register(user, pwd):
admin_obj = Admin()
if admin_obj.register(user, pwd):
print("管理员注册成功")
else:
print("管理员已存在") def main():
inp = input("管理员1、登陆。2、注册。(其他退出)\n>>>")
user = input("账号:")
pwd = input("密码:")
if inp == "":
login(user, pwd)
elif inp == "":
register(user, pwd)
else:
pass if __name__ == "__main__":
main()

administrator.py

 #!/usr/bin/env python
# _*_ coding:utf-8 _*_
import pickle, os, sys sys.path.append(os.path.dirname(os.path.dirname(__file__)))
from lib.models import *
from conf import settings def login(user, pwd):
student_path = os.path.join(settings.Student_dir, user)
if os.path.exists(student_path):
student_obj = pickle.load(open(student_path, "rb"))
if student_obj.login(user, pwd):
print("登录成功")
while True:
inp = input("1、上课。2、选课。3、查看课表。(其他退出)")
if inp == "":
study_curriculum(student_obj)
continue
elif inp == "":
select_curriculum(student_obj)
continue
elif inp == "":
curriculum_info(student_obj)
continue
else:
break
else:
print("登录失败")
else:
print("学生账号不存在") def register(user, pwd):
student_obj = Student() if student_obj.register(user, pwd):
print("学生注册成功")
else:
print("学生已存在") def curriculum_info(student_obj):
print("已选课程信息:")
if student_obj.curriculum:
for i in student_obj.curriculum:
print(i.curriculum_name, i.curriculum_teacher, i.curriculum_cost)
else:
print("课表为空")
print("已上课表信息:")
if student_obj.study:
for i in student_obj.study:
print(i.curriculum_name, str(student_obj.study[i]) + "次")
pass
else:
print("已上课表为空") def study_curriculum(student_obj): for i, item in enumerate(student_obj.curriculum, 1):
print(i, item.curriculum_name, item.curriculum_teacher, item.curriculum_cost)
while True:
inp = input("输入上课序号:(q退出)")
if inp == "q":
break
else:
if student_obj.curriculum_study(student_obj.curriculum[int(inp) - 1]):
print("上课成功")
continue
else:
print("还没选课")
continue
pickle.dump(student_obj, open(os.path.join(settings.Student_dir,student_obj.username), "wb")) def select_curriculum(student_obj):
print("所有课程")
curriculum_obj = pickle.load(open(settings.Curriculum_dir, "rb"))
for i, item in enumerate(curriculum_obj, 1):
print(str(i) + ":", item.curriculum_name, item.curriculum_cost, item.curriculum_teacher)
while True:
inp = input("请输入选课序号:(q退出)")
if inp == "q":
break
else:
select_curriculum_obj = curriculum_obj[int(inp) - 1]
if student_obj.select_curriculum(select_curriculum_obj):
print("选课成功")
continue
else:
print("已有课程,不用在选")
pickle.dump(student_obj, open(os.path.join(settings.Student_dir,student_obj.username), "wb")) def main():
inp = input("学生 1、登录。2、注册(任意推出)\n>>>")
user = input("账号:")
pwd = input("密码:")
if inp == "":
login(user, pwd)
elif inp == "":
register(user, pwd)
else:
pass if __name__ == "__main__":
main()

student.py

conf目录

 import os

 Base_dir = os.path.dirname(os.path.dirname(__file__))
Base_admin_dir = os.path.join(Base_dir, "db", "admin")
Teacher_dir = os.path.join(Base_dir, "db", "teacher")
Curriculum_dir = os.path.join(Base_dir, "db", "curriculum")
Student_dir = os.path.join(Base_dir, "db", "student")

settings.py

db目录

管理员目录 存放密码文件 admin

学生目录 存放密码文件 student

lib 目录

 #!/usr/bin/env python
# -*- coding:utf-8 -*-
import pickle, os, time
from conf import settings class Admin:
"""
管理员类,注册、登陆。
""" def __init__(self):
self.username = None
self.password = None def register(self, name, pwd):
self.username = name
self.password = pwd
path = os.path.join(settings.Base_admin_dir, self.username)
if os.path.exists(path):
return False
else: pickle.dump(self, open(path, 'xb')) # xb如果没有就新建一个
return True def login(self, name, pwd):
if name == self.username and pwd == self.password:
return True
else:
return False class Student:
"""
管理员类,注册、登陆。
""" def __init__(self):
self.username = None
self.password = None self.curriculum = []
self.study = {} def select_curriculum(self, curriculum_obj):
if curriculum_obj in self.curriculum:
return False
else:
self.curriculum.append(curriculum_obj)
return True def curriculum_study(self, curriculum):
if curriculum not in self.curriculum:
return False
elif curriculum not in self.study:
self.study[curriculum] = 1
return True
else:
self.study[curriculum] += 1
return True def register(self, name, pwd):
self.username = name
self.password = pwd
path = os.path.join(settings.Student_dir, self.username)
if os.path.exists(path):
return False
else: pickle.dump(self, open(path, 'xb')) # xb如果没有就新建一个
return True def login(self, name, pwd):
if name == self.username and pwd == self.password:
return True
else:
return False class Curriculum:
def __init__(self, name, cost, teacher, admin):
self.curriculum_name = name
self.curriculum_teacher = teacher
self.curriculum_cost = cost
self.create_time = time.strftime('%Y-%m-%d %H:%M:%S')
self.create_admin = admin.username class Teacher:
def __init__(self, name, age, admin):
self.teacher_name = name
self.teacher_age = age
self.create_time = time.strftime('%Y-%m-%d %H:%M:%S')
self.create_admin = admin.username

models.py

python基础-10 程序目录结构 学生选课系统面向对象练习的更多相关文章

  1. Python基础之软件目录结构规范

    设计一个层次清晰的目录结构,就是为了达到这两点: 可读性高:不熟悉项目的人,一眼就能看懂目录结构. 可维护性高:随着时间的推移,代码/配置的规模增加,项目结构不会混乱,仍然能够组织良好. 目录组织方式 ...

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

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

  3. python开发项目:学生选课系统

    程序要求:1.创建北京.上海两所学校(分析:通过学校类实例化两个学校实例) 2.创建Linux.python.go三个课程,Linux\go在北京开,Linux在上海开(创建Linux.python. ...

  4. 『Python基础-10』字典

    # 『Python基础-10』字典 目录: 1.字典基本概念 2.字典键(key)的特性 3.字典的创建 4-7.字典的增删改查 8.遍历字典 1. 字典的基本概念 字典一种key - value 的 ...

  5. 十. Python基础(10)--装饰器

    十. Python基础(10)--装饰器 1 ● 装饰器 A decorator is a function that take a function as an argument and retur ...

  6. C语言基础知识-程序流程结构

    C语言基础知识-程序流程结构 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.概述 C语言支持最基本的三种程序运行结构:顺序结构,选择结构,循环结构. 顺序结构:程序按顺序执行, ...

  7. 学生选课系统 c语言

    /********************************* *主题:学生选修课程系统设计 * *设计要求: *1.添加功能:程序能够任意添加课程和学生记录,可提供选择界面供用户选择所需要添加 ...

  8. JAVA | 学生选课系统

    这里使用JAVA语言编写的简易的学生选课系统,展现的都是这个系统核心代码. 其中有不足欢迎批评和指正! 链接数据库的代码 package connection;//连接数据库student impor ...

  9. Java项目实例之---学生选课(面向对象复习)

    学生选课(面向对象复习) 设计一个学生选课的程序,分别有学生类(Student)和课程类(Course) 学生类的属性有:学号(String),姓名(String),性别(char),所选科目(Cou ...

随机推荐

  1. Nginx和Apache 转发网络问题

    Linux 环境下,Apache 正常安装,httpd.conf也已正常配置,经测试80端口也已开通,但在外网测试时仍然是提示503错误.经过查资料和分析怀疑是SELinux的原因,于是查看果然是: ...

  2. Codeforces Round #573 (Div. 2) E. Tokitsukaze and Duel (博弈)

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  3. Ubuntu安装SFTP服务,及启动失败处理

    安装openssh-server sudo apt-get install openssh-server 查看是否安装成功 dpkg --get-selections | grep ssh 新建用户组 ...

  4. fs.mkdir

    fs.mkdir(path[, mode], callback) 要求父目录必须存在 let fs = require('fs'); fs.mkdir('./c/b/a', res=>{ // ...

  5. mysql 数据库url

    jdbc:mysql://localhost:3306/database?useUnicode=true&useJDBCCompliantTimezoneShift=true&useL ...

  6. MySQL---时区问题

    1.控制台输入select now();  发现与北京时间相差8小时: 2.解决: 2.1.进入MySQL客户端  mysql -uroot -p 2.2.全局,当前会话时区设置set GLOBAL ...

  7. UVALive 3263: That Nice Euler Circuit (计算几何)

    题目链接 lrj训练指南 P260 //==================================================================== // 此题只需要考虑线 ...

  8. hadoop2.7伪分布式搭建

    0.配置主机名 hostnamectl set-hostname spark1 1.上传hadoop-2.7.1.tar.gz文件并解压 tar -xvf hadoop-2.7.1.tar.gz 2. ...

  9. APP功能测试注意点

    App功能测试的7大注意点 : APP测试   在日常工作的摸索中,我们将如何做好app测试的注意点简单归结为如下内容.  弱网测试,兼容性测试,UI测试.中断测试, 01 运行 1)App安装完成后 ...

  10. 利用Pandas和matplotlib分析我爱我家房租区间频率

    前几天利用python爬取了我爱我家的租房的一些数据,就想着能不能对房租进行一波分析,于是通过书籍和博客等查阅了相关资料,进行了房租的区间分析.不得不说,用python做区间分析比我之前用sql关键字 ...