zoukankan      html  css  js  c++  java
  • 学生选课系统(模拟)

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

    学生用户 :对于学生用户来说,登陆之后有三个功能
    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('
    {}|{}'.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()
    
    
    努力到无能为力,拼搏到感动自己。
  • 相关阅读:
    Maven 集成Tomcat插件
    dubbo 序列化 问题 属性值 丢失 ArrayList 解决
    docker 中安装 FastDFS 总结
    docker 从容器中拷文件到宿主机器中
    db2 相关命令
    Webphere WAS 启动
    CKEDITOR 4.6.X 版本 插件 弹出对话框 Dialog中 表格 Table 自定义样式Style 问题
    SpringMVC JSONP JSON支持
    CKEDITOR 3.4.2中 按钮事件中 动态改变图标和title 获取按钮
    git回退到远程某个版本
  • 原文地址:https://www.cnblogs.com/jin-yuana/p/9969119.html
Copyright © 2011-2022 走看看