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

学生用户 :对于学生用户来说,登陆之后有三个功能
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()

 


分类:

技术点:

相关文章: