python--面向对象编程之学生选课系统练习

Posted 梦想一步登天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python--面向对象编程之学生选课系统练习相关的知识,希望对你有一定的参考价值。

1、admin.py

  主要是系统管理初始化,用于管理员注册、登录系统、创建授课老师、创建课程等操作。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
模拟学校的选课系统
"""

import random
import time
import  pickle
import os

#定义老师类
class Teacher:
    """
    封装老师的相关信息
    """
    def __init__(self, name, age, admin):
        self.name = name
        self.age = age
        self.__assets = 0
        self.create_time = time.strftime(%Y-%m-%d %H:%M:%S)
        self.create_admin = admin

    def gain(self, cost):
        """
        增加资产
        :param cost: 增加的数量
        :return:
        """
        self.__assets += cost

    def decrease(self, cost):
        """
        减少资产
        :param cost: 减少的数量
        :return:
        """
        self.__assets -= cost

#定义课程类
class Course:
    """
    课程相关信息
    """
    def __init__(self, course_name, cost, teacher_obj, admin):
        self.course_name = course_name
        self.cost = cost
        self.teacher = teacher_obj
        self.create_time = time.strftime(%Y-%m-%d %H:%M:%S)
        self.create_admin = admin


#定义管理员类
class Admin:
    """
    封装管理员
    """
    def __init__(self):
        self.username = None
        self.password = None

    def login(self, user, pwd):
        """
        管理员登录
        :param user:
        :param pwd:
        :return:
        """
        if self.username == user and self.password == pwd:
            return True
        else:
            return False

    def register(self, user, pwd):
        """
        管理员注册
        :param user:
        :param pwd:
        :return:
        """
        self.username = user
        self.password= pwd

        path = self.username
        pickle.dump(self, open(path, xb))

#定义创建老师的方法
def create_teacher(admin_obj):
    teacher_list = []
    while True:
        teacher_name = input("请输入老师的姓名:(q退出)")
        if teacher_name == "q":
            break
        teacher_age = input("请输入老师的年龄:")
        obj = Teacher(teacher_name, teacher_age, admin_obj)
        teacher_list.append(obj)
        if os.path.exists("teacher_list"): #判断老师列表是否存在
            exists_list = pickle.load(open(teacher_list, rb))
            teacher_list.extend(exists_list)
        pickle.dump(teacher_list, open(teacher_list, wb))

#定义创建课程的方法
def create_course(admin_obj):
    teacher_list = pickle.load(open(teacher_list, rb))
    for num, item in enumerate(teacher_list, 1):
        print(num, item.name, item.age, item.create_time, item.create_admin.username)
    course_list = []
    while True:
        name = input("请输入课程名(q退出):")
        if name == "q":
            break
        cost = input("请输入课时费:")
        num = input(请选择老师(序号):)
        obj = Course(name, cost, teacher_list[int(num) - 1], admin_obj)
        course_list.append(obj)
    if os.path.exists("course_list"): #判断课程列表是否存在
        exists_list = pickle.load(open(course_list, rb))
        course_list.extend(exists_list)
    pickle.dump(course_list, open(course_list, wb))

#定义查看课程表的方法
def look_course():
    course_list = pickle.load(open(course_list, rb))
    for num, item in enumerate(course_list, 1):
        print(num, item.course_name, item.cost, item.teacher.name, item.create_time, item.create_admin.username)

#定义管理员登录方法
def to_login(user, pwd):
    if os.path.exists(user):
        # 从文件中将管理员对象读取出来(里面封装了用户信息以及提供了登录访求)
        admin_obj = pickle.load(open(user, rb))
        if admin_obj.login(user, pwd):
            print(登录成功!)
            while True:
                sel = input("1、创建老师;2、创建课程; 3、查看课程表(q退出程序) 
 >>>>")
                if sel == 1:  #创建老师
                    create_teacher(admin_obj)
                elif sel == 2:  #创建课程
                    create_course(admin_obj)
                elif sel == 3:
                    look_course()
                else:
                    break
        else:
            return 1
    else:
        return 0

#定义管理员注册方法
def to_register(user, pwd):
    admin_obj = Admin()
    admin_obj.register(user, pwd)

def main():
    inp = input("1、管理员登录; 2、管理员注册;
 >>>>>")
    user = input(请输入用户名:)
    pwd = input(请输入密码:)
    if inp == 1:
        ret = to_login(user, pwd)
        if ret == 1:
            print("密码错误!")
        elif ret == 0:
            print("用户不存在!")

    elif inp == 2:
        to_register(user, pwd)


if __name__ == "__main__":
    main()

 

以上是关于python--面向对象编程之学生选课系统练习的主要内容,如果未能解决你的问题,请参考以下文章

python面向对象练习--选课系统

python面向对象(选课系统)

面向对象的应用:学生选课系统

python选课系统demo的小练习

面向对象实现简单的学生课程选择

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