学生选课系统(模拟)

从“学生选课系统” 这几个字就可以看出来,我们最核心的功能其实只有 选课。
角色:
学生、管理员
功能:
登陆 : 管理员和学生都可以登陆,且登陆之后可以自动区分身份
选课 : 学生可以自由的为自己选择课程
创建用户 : 选课系统是面向本校学生的,因此所有的用户都应该由管理员完成
查看选课情况 :每个学生可以查看自己的选课情况,而管理员应该可以查看所有学生的信息
工作流程:
登陆 :用户输入用户名和密码
判断身份 :在登陆成果的时候应该可以直接判断出用户的身份 是学生还是管理员

学生用户 :对于学生用户来说,登陆之后有三个功能
1、查看所有课程
2、选择课程
3、查看所选课程
4、退出程序
管理员用户:管理员用户除了可以做一些查看功能之外,还有很多创建工作
1、创建课程
2、创建学生学生账号
3、查看所有课程
4、查看所有学生
5、查看所有学生的选课情况
6、退出程序
注意:
'''代码还有待完善,写了两遍emmmm'''
'''注意:在执行前先创建一个user.txt文件用于存放账号,还得进入里面编辑一行:admin|123|admin,
这个用作后面的管理员与用户区分。
还得创建两个空文件:class_all.txt 用于存放所有课程名
choice_class.txt 用于存放用户所选课程,注意还得在里面添加一个 {} 用于序列化
注意管理员为:admin pass:123'''
import os
import json


class User:
    def __init__(self, name):  # 传入用户名
        self.name = name

    def User_see(self):  # 查看所有课程
        with open('class_all.txt', encoding='utf-8') as file:
            tmp = {}     # 通过字典添加值
            for index, i in enumerate(file.read().split('|'), 1):
                print(index, i)
                tmp.setdefault(str(index), i)  # 把得到的结果放入到tmp中
            return tmp   # 把返回值return出去

    def Choice_course(self):    # 选择课程
        tmp = self.User_see()   # 调用查看课程的方法显示
        Choice = input('请输入你选择的课程序号')
        if Choice in tmp:    # 判断选的课在不在列表里
            with open('choice_class.txt', encoding='utf-8') as file:
                chice_class = json.load(file)  # 把chice_class.txt序列化出来,得到字典
                if chice_class.get(self.name):  # 判断用户和课程里有没有那个用户
                    chice_class.get(self.name).append(tmp[Choice])  # 添加到字典中
                else:
                    chice_class.setdefault(self.name, [tmp[Choice]])
            with open('choice_class.txt', encoding='utf-8', mode='w') as file:
                json.dump(chice_class, file, ensure_ascii=False) # 再把chice_class值放入到文件中
        else:
            print('不在范围内')

    def Selected(self):  # 查看所选课程
        with open('choice_class.txt', encoding='utf-8') as file:
            user_course = json.load(file)  # 把chice_class.txt序列化出来,得到字典
            print(user_course.get(self.name))

    def Exit(self):  # 退出
        exit()

    def Show(self):
        # see_all 这个字典是功能名和要执行的函数
        see_all = {"查看课程": self.User_see, '选择课程': self.Choice_course, "查看所选课程": self.Selected, "退出": self.Exit}
        while True:
            tmp = {} # 修改see_all这个字典,保留索引和函数
            for index, i in enumerate(see_all, 1):
                print(index, i)
                tmp[str(index)] = see_all[i]
            Choice = input('请输入你选择')  # 根据不同的选择执行不同的函数
            if Choice in tmp:
                tmp[Choice]()


class Admin:
    def __init__(self, name):
        self.name = name

    def Create_course(self):  # 创建课程
        Choice = input('输入创建课程名称')
        with open('class_all.txt', encoding='utf-8', mode='a') as file:
            file.write(Choice + '|')

    def Create_user(self):  # 创建学生账号
        stu_name = input('请输入学生账号:').strip()
        stu_pwd = input('请输入学生密码:').strip()
        # stu_pwd_md5 = get_pwd(stu_pwd)
        with open('user.txt', encoding='utf-8', mode='a') as file:
            file.write('\n{}|{}'.format(stu_name, stu_pwd))

    def Select_all_course(self):  # 查看所有课程
        with open('class_all.txt', encoding='utf-8') as f:
            tmp = {}
            for index, i in enumerate(f.read().split('|'), 1):
                print(index, i)
                tmp.setdefault(str(index), i)
            return tmp

    def Select_user_all(self):  # 查看所有学生
        with open('user.txt', encoding='utf-8') as file:
            for i in file.readlines():
                print(i.strip())

    def Select_course_user(self):  # 查看所有学生的选课情况
        with open('choice_class.txt', encoding='utf-8') as file:
            for i in file.readlines():  # 列出文件的每行类容
                print(i)

    def Exit(self):  # 退出
        exit()

    def Show(self):  # 宗上所述
        see_all = {"创建课程": self.Create_course, '创建学生学生账号': self.Create_user, "查看所有课程": self.Select_all_course,
                   "查看所有学生": self.Select_user_all, "查看所有学生的选课情况": self.Select_course_user, '退出程序': self.Exit}
        while True:
            tmp = {}
            for index, i in enumerate(see_all, 1):
                print(index, i)
                tmp[str(index)] = see_all[i]
            Choice = input('请输入你选择')
            if Choice in tmp:
                tmp[Choice]()


user = {'user': None,
        'status': False}


def login():
    print('欢迎来到学员管理系统')
    flag = True
    while flag:
        if user['status']:
            print('你已经登录')
            break
        else:
            username = input('输入用户名')
            password = input('输入密码')
            with open('user.txt', encoding='utf-8') as f1:

                for i in f1:
                    p1 = i.strip().split('|')
                    p2 = len(p1)
                    if username == p1[0] and password == p1[1]:
                        if p2 == 2:  # 用于判断是否为普通用户
                            user['user'] = username
                            user['status'] = True
                            flag = False
                            return username  # 返回登录名
                        elif p2 == 3:  # 判断是否为管理员
                            user['user'] = username
                            user['status'] = True
                            flag = False
                            return 2    # 返回2 用于下面判断

                else:
                    print('输入的用户名或者密码错误,请再次输入')
                    continue


ret = login()
while True:
    if ret == 2:  # 执行管理员class
        p1 = Admin('admin')
        p1.Show()
    else:    # 执行用户class
        p2 = User(ret)
        p2.Show()

猜你喜欢

转载自www.cnblogs.com/jin-yuana/p/9969119.html