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()
    
    
    努力到无能为力,拼搏到感动自己。
  • 相关阅读:
    【Beta阶段】第五次Scrum Meeting
    wireshark怎么抓包、wireshark抓包详细图文教程
    Java环境变量的配置
    Office2007 每次打开斗需要检查 【配置进度】
    思科SVI接口和路由接口区别
    Windows Server 2008 R2之管理Sysvol文件夹
    Windows Server 2008 R2之六活动目录域服务的卸载
    Windows Server 2008 R2之五操作主控的管理
    Windows Server 2008 R2之三管理活动目录数据库
    23. Merge k Sorted Lists
  • 原文地址:https://www.cnblogs.com/jin-yuana/p/9969119.html
Copyright © 2011-2022 走看看