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