首页 > 其他 > 详细

自己琢磨的学生选课系统

时间:2019-03-29 22:00:12      阅读:225      评论:0      收藏:0      [点我收藏+]
import hashlib
import pickle
import os


class Iden:
    # 用户的父类
    def __init__(self, user, pwd, ):
        self.user = user
        self.pwd = pwd


#  学生类
class Normal(Iden):
    def __init__(self, user, pwd, course=):
        super().__init__(user, pwd)
        self.groupwork = student

    #  普通用户的注册
    def normal_regedist(user, pwd, ):
        pwd = hashli(user, pwd)
        person = Normal(user, pwd)
        picke_write(person, f./user/{user})
        return True

    #  学生选择课程
    def use_course(self, course):
        self.course = course
        picke_write(self, f./user_course/{self.user}_course)
        return 添加成功

    #  读取自己的课程
    def read_course(self):
        student_user_course = os.listdir(./user_course/)
        if f{self.user}_course in student_user_course:
            return picke_read(f./user_course/{self.user}_course)
        return False


#  管理员类
class Admin(Iden):
    def __init__(self, user, pwd, ):
        super().__init__(user, pwd)
        self.groupwork = administrator

    #  管理员的注册,
    def __admin_regedist(user, pwd):
        pwd = hashli(user, pwd)
        person = Admin(user, pwd, )
        picke_write(person, f./user/{user})
        return True

    # 查看所有的学生
    def see_all_student(self):
        student_user = os.listdir(./user/)
        for us in student_user:
            if us != self.user:
                print(f"账号:{picke_read(f‘./user/{us}‘).user}")

    # 查看所有的学生的课程
    def see_all_student_course(self):
        student_user_course = os.listdir(./user_course/)
        for us in student_user_course:
            course_read(picke_read(f./user_course/{us}))


#  使用picke读取文件
def picke_read(path):
    with open(path, rb)as f:
        a = pickle.load(f)
        return a


#  使用picke写入文件
def picke_write(self, path):
    with open(path, wb)as f:
        pickle.dump(self, f)


#  打印课程信息,格式化
def course_read(a): print(f账号:{a.user},课程名称:{a.course.name},课程价格:{a.course.price},
                          f课程周期:{a.course.month},课程讲师:{a.course.teacher})


#  课程类
class Course:
    def __init__(self, name, price, month, teacher):
        self.name = name
        self.price = price
        self.month = month
        self.teacher = teacher

    @staticmethod
    #  创建课程
    def create_course(name, price, month, teacher):
        course = Course(name, price, month, teacher)
        print(course.name)
        with open(./course/course, ab) as f:
            pickle.dump(course, f)
        return True

    @staticmethod
    # 读取所有的课程,并将结果以列表的形式返回
    def read_all_course():
        li = []
        with open(./course/course, rb) as f:
            while True:
                try:
                    li.append(pickle.load(f).__dict__)
                except:
                    break
            return li


#  查看所有的课程
def see_course():
    course = Course.read_all_course()
    for i in range(len(course)):
        print(f序号{i + 1}   课程名称{course[i]["name"]},课程价格{course[i]["price"]},      课程周期{course[i]["month"]},课程讲师{course[i]["teacher"]})
    return course


# 数据加密
def hashli(user, pwd):
    md5 = hashlib.sha256(user.encode(utf-8))
    md5.update(pwd.encode(utf-8))
    return md5.hexdigest()


#   登录验证,正确就返回账户的信息(包含类中的方法)
def login(user, pwd):
    lisdis = os.listdir(./user/)
    if user in lisdis:
        with open(f./user/{user}, rb) as f:
            user_pwd_dic = pickle.load(f)
            if user == user_pwd_dic.user and hashli(user, pwd) == user_pwd_dic.pwd:
                return user_pwd_dic
            else:
                return
    else:
        return


# 用户登录输入
def login_input():
    while 1:
        user = input(请输入用户名>>>).replace( , ‘‘)
        pwd = input(请输入密码>>>).replace( , ‘‘)
        if user and pwd:
            break
        else:
            print(输入有误,请重新输入)
    return user, pwd


#  创建课程输入
def courese_input():
    name = input(请输入课程名称>>>).replace( , ‘‘)
    price = int(input(请输入课程价格>>>).replace( , ‘‘))
    month = input(请输入课程周期>>>).replace( , ‘‘)
    teacher = input(请输入授课老师>>>).replace( , ‘‘)
    Course.create_course(name, price, month, teacher)
    return


flag = True
while flag:
    user, pwd = login_input()  # 输入用户密码
    a = login(user, pwd)  # 登录验证
    if a:
        if a.groupwork == administrator:  # 如果身份是管理员身份
            print(f欢迎管理员{a.user}登录)
            while flag:
                print(1,创建用户。 2,创造课程  3,查看课程 4,查看学生 5,查看学生选课 6,退出程序  )
                choose = input(请输入你要选择的操作).replace( , ‘‘)
                if choose and choose.isnumeric() and int(choose) <= 6 and int(choose) > 0:
                    if choose == 1:
                        user, pwd = login_input()
                        if Normal.normal_regedist(user, pwd): print(f创建学生用户{user}成功)
                    elif choose == 2:
                        b = courese_input()
                    elif choose == 3:
                        look_course = see_course()
                    elif choose == 4:
                        a.see_all_student()
                    elif choose == 5:
                        a.see_all_student_course()
                    elif choose == 6:
                        print(欢迎下次使用)
                        flag = False
                        break
                else:
                    print(输入不正确,请重新输入)

        elif a.groupwork == student:
            print(f欢迎学生{a.user})
            while True:
                print(1,查看课程  2,选择课程  3,查看所选课程 4,退出程序 )
                choose = input(请输入你要选择的操作).replace( , ‘‘)
                if choose and choose.isnumeric() and int(choose) <= 4 and int(choose) > 0:
                    if choose == 1:
                        look_course = see_course()
                    elif choose == 2:
                        while flag:
                            course = see_course()
                            n = input(请输入课程编号(输入q退出)>>>).replace( , ‘‘)
                            if n and n.isnumeric() and int(n) <= len(course) and int(n) > 0:
                                n = int(n) - 1
                                choose_course = Course(course[n][name], course[n][price], course[n][month],
                                                       course[n][teacher])
                                a_course = a.use_course(choose_course)
                                print(a_course)
                            elif n.lower() == q:
                                break
                            else:
                                print(输入有误,请重新输入)
                    elif choose == 3:
                        is_course = (a.read_course())
                        if is_course == False:
                            print(你现在还没有选择课程)
                        else:
                            course_read(is_course)
                    elif choose == 4:
                        print(欢迎下次使用)
                        flag = False
                        break
                else:
                    print(输入有误,请重新输入)
    else:
        print(用户不存在,或者密码错误)

 

自己琢磨的学生选课系统

原文:https://www.cnblogs.com/mk-lovefreedom/p/10624110.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!