'''
角色:
学生、管理员
功能:
登陆 : 管理员和学生都可以登陆,且登陆之后可以自动区分身份
选课 : 学生可以自由的为自己选择课程
创建用户 : 选课系统是面向本校学生的,因此所有的用户都应该由管理员完成
查看选课情况 :每个学生可以查看自己的选课情况,而管理员应该可以查看所有学生的信息
工作流程:
登陆 :用户输入用户名和密码
判断身份 :在登陆成果的时候应该可以直接判断出用户的身份 是学生还是管理员
学生用户 :对于学生用户来说,登陆之后有三个功能
1、查看所有课程
2、选择课程
3、查看所选课程
4、退出程序
管理员用户:管理员用户除了可以做一些查看功能之外,还有很多创建工作
1、创建课程
2、创建学生学生账号
3、查看所有课程
4、查看所有学生
5、查看所有学生的选课情况
6、退出程序
'''
import json
class Student:
def __init__(self,name):
self.name = name
def check_course(self): # 查看所有课程
with open("course", 'r', encoding="utf-8") as f: # course是课程文件
tmp = {}
for index, i in enumerate(f.read().split("|"), 1):
print(index, i)
tmp[str(index)] = i
return tmp
def select_course(self): # 选择课程
tmp = self.check_course()
n = input("请选择你要选的课程的序号")
if n in tmp: # 判断选的课在不在课程列表里
with open("user_course", 'r', encoding="utf8") as f: # user_course是用户和所选课程的文件,
user_course = json.load(f) # 是一个字典, 键是用户名, 值是所选课的列表
if user_course.get(self.name): # 用户和课程里有没有那个用户
user_course.get(self.name).append(tmp[n])
else:
user_course.setdefault(self.name, [tmp[n]])
with open("user_course", 'w', encoding="utf-8") as f:
json.dump(user_course, f, ensure_ascii=False)
def check_select_course(self): # 查看所选课程
with open("user_course", 'r', encoding="utf8") as f:
user_course = json.load(f)
print(user_course.get(self.name))
def exit(self): # 退出程序
exit()
def show(self):
# student_func 这个字典是功能名和要执行的函数
student_func = {"查看课程": self.check_course, '选择课程': self.select_course, "查看所选课程": self.check_select_course,"退出":self.exit}
while 1:
tmp = {} # 修改gongneng这个字典, 保留索引和函数
for index, i in enumerate(student_func, 1):
print(index, i)
tmp[str(index)] = student_func[i]
C = input("请输入你的选择") # 根据不同的选择, 执行不同的函数
if C in tmp:
tmp[C]()
class Administrator:
def __init__(self, name):
self.name = name
def check_all_course(self): # 查看所有课程
with open("course", 'r', encoding="utf-8") as f: # course是课程文件
for index, i in enumerate(f.read().split("|"), 1):
print(index, i)
def create_course(self): # 创建课程
with open("course", 'r+', encoding="utf-8") as f:
flag = 0
name =input('请输入需创建课程的名称:').strip()
tmp = f.read().split("|")
for i in range(len(tmp)):
if tmp[i] == name:
print('您创建的课程已经存在')
flag = 1
break
else:
continue
if flag == 0:
f.write('|' + name)
print('恭喜你课程创建成功')
def check_all_select_course(self): # 查看所有学生的选课情况(每个学生的选课情况)
with open("user_course", 'r', encoding="utf8") as f:
user_course = json.load(f)
print(user_course)
def check_all_student(self): # 查看所有学生
with open('user', encoding="utf-8", mode='r+') as f:
l1 = []
tmp = f.readlines()
for i in range(len(tmp)):
tmp[i] = tmp[i].split("|")
l1.append(tmp[i][0])
for i in range(len(l1)):
print(l1[i])
def create_student_account(self): # 创建学生账号
with open('user', encoding="utf-8", mode='r+') as f:
name = input("请输入学生的姓名:").strip()
password = input("请输入学生的密码:").strip()
tmp = f.readlines()
while 1:
flag = 0
for i in range(len(tmp)):
tmp[i] = tmp[i].split("|")
if tmp[i][0] == name:
print('您创建的用户名已存在,请重新输入')
flag = 1
break
else:
continue
if flag == 0:
f.write(name + '|' + password + '|' + 'S' + '\n')
print("恭喜你,学生用户创建成功")
break
else:
break
def exit(self): # 退出程序
exit()
def show(self):
# administrator_func 这个字典是功能名和要执行的函数
administrator_func = {"创建课程": self.create_course, '创建学生账号': self.create_student_account,
"查看所有课程": self.check_all_course,'查看所有学生':self.check_all_student,
'查看所有学生的选课情况':self.check_all_select_course,"退出": self.exit
}
while 1:
tmp = {} # 修改gongneng这个字典, 保留索引和函数
for index, i in enumerate(administrator_func, 1):
print(index, i)
tmp[str(index)] = administrator_func[i]
C = input("请输入你的选择") # 根据不同的选择, 执行不同的函数
if C in tmp:
tmp[C]()
with open('user', encoding='utf-8', mode='r') as f:
tmp = f.readlines()
while 1:
name = input("请输入姓名:").strip()
password = input("请输入密码:").strip()
for i in range(len(tmp)):
l2 = tmp[i].strip().split("|")
# print(l2)
if l2[0] == name and l2[1] == password and l2[2] == 'S':
print('%s恭喜你登录成功' %(name))
s = Student(name)
s.show()
elif l2[0] == name and l2[1] == password and l2[2] == 'A':
print('%s恭喜你登录成功' % (name))
a = Administrator(name)
a.show()
else:
print('账号或者密码输入错误,请重新输入')