运用python编写一个使用三个以上标准库的程序,使之能实现以下功能:首先进行登录,如果登录用户是管理者则能对题目文件进行添加修改删除,如果是学生则进行考试;
时间: 2024-02-29 18:51:03 浏览: 42
好的,我可以为您编写一个使用Python的程序,具备您所要求的功能。为了实现这个程序,我会用到以下标准库:
1. os:用于文件和目录操作
2. random:用于生成随机数
3. hashlib:用于密码加密
以下是程序的代码:
```python
import os
import random
import hashlib
class User:
# 用户类,包括学生和管理者
def __init__(self, username, password, is_admin):
self.username = username
self.password = password
self.is_admin = is_admin
class Question:
# 题目类,包括题目和答案
def __init__(self, content, answer):
self.content = content
self.answer = answer
class Exam:
# 考试类,包括题目和答案
def __init__(self, questions, answers):
self.questions = questions
self.answers = answers
class ExamSystem:
# 考试系统类,包括登录、添加/修改/删除题目、考试等功能
def __init__(self):
self.users = []
self.questions = []
def register(self, username, password, is_admin=False):
# 注册用户
password_hash = hashlib.sha256(password.encode()).hexdigest()
user = User(username, password_hash, is_admin)
self.users.append(user)
def login(self, username, password):
# 登录
password_hash = hashlib.sha256(password.encode()).hexdigest()
for user in self.users:
if user.username == username and user.password == password_hash:
return user
return None
def add_question(self, content, answer):
# 添加题目
question = Question(content, answer)
self.questions.append(question)
def modify_question(self, index, content=None, answer=None):
# 修改题目
if index < 0 or index >= len(self.questions):
return False
question = self.questions[index]
if content is not None:
question.content = content
if answer is not None:
question.answer = answer
return True
def delete_question(self, index):
# 删除题目
if index < 0 or index >= len(self.questions):
return False
del self.questions[index]
return True
def generate_exam(self, num_questions):
# 生成考试
if num_questions > len(self.questions):
return None
questions = random.sample(self.questions, num_questions)
answers = {}
for question in questions:
answers[question.content] = question.answer
exam = Exam(questions, answers)
return exam
exam_system = ExamSystem()
# 注册用户
exam_system.register('admin', 'admin_password', True)
exam_system.register('student', 'student_password')
# 登录
user = exam_system.login('admin', 'admin_password')
if user is None:
print('登录失败')
elif user.is_admin:
# 管理员操作
exam_system.add_question('1+1=?', '2')
exam_system.add_question('2+2=?', '4')
exam_system.modify_question(0, '1+1=?', '2')
exam_system.delete_question(1)
else:
# 学生考试
exam = exam_system.generate_exam(1)
if exam is None:
print('题库不足')
else:
print('请回答以下题目:')
for i, question in enumerate(exam.questions):
print(f'{i+1}. {question.content}')
answer = input('请输入答案:')
if answer == exam.answers[question.content]:
print('回答正确')
else:
print('回答错误')
```
注意:该程序中的密码是经过哈希处理的,所以在注册和登录时需要输入经过哈希处理后的密码。