四则运算题目生成器
软件工程大作业的结对项目–四则运算题目生成器
这是第三阶段的需求分析、概要设计和详细设计
第一,二阶段的链接
软件工程项目 四则运算表达式生成----2
可行性分析和问题定义、PSP表格部分
软件工程项目 四则运算表达式生成----1
第三阶段:网页部分
描述
使用Django架构,版本2.27
网页功能概述
1.希望网页端可以实现用户输入参数从题库中随机生成题目的功能,这个功能因为有数据库的辅助实现起来还是比较简单的;
2.希望可以做到用户管理,用户可以注册,登录,如果忘记密码可以通过预留的邮箱找回密码,这个功能也是可以实现的;
3.希望可以像第三阶段的第一个要求让用户在线答题,并且由于有用户管理的准备工作可以生成用户答题的历史记录,并且记录错题信息
框架
模型
Django中的模型由models.py构成,保存数据,不用频繁更新数据库,用migrate进行数据迁移。views调用models中的表
视图
Django中的视图由views文件构成,做逻辑处理,实现对数据库的增删改查,并将模板的内容渲染到页面上。
控制器
Django的控制器是用的urls文件,调用不同apps中的不同views函数实现对用户输入的控制,跳转到对应的页面,并且向模型发送数据
概要设计和详细设计
用例图
类图
login的类图
reset_password的类图
question的类图
顺序图
顺序图描述了几个较为重要的功能动态模型,有的只描述了操作正确的情况,对于一些操作中的其他情况没有绘制
登录
出题
重置密码
一段时间后的代码结构大致如下:
.
├── QuestGeneratorWebsite
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── SouSouSou
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── forms.py
│ ├── models.py
│ ├── templates
│ │ └── SouSouSou
│ │ ├── Generator.html
│ │ └── main.html
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── db.sqlite3
├── generate
│ ├── OriginRequest.py
│ ├── main.py
│ └── solve.py
├── login
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── forms.py
│ ├── migrations
│ ├── models.py
│ ├── templates
│ │ └── login
│ │ ├── login.html
│ │ └── register.html
│ ├── tests.py
│ └── views.py
├── manage.py
├── out.txt
├── question
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── forms.py
│ ├── inti_data.py
│ ├── migrations
│ │ ├── __init__.py
│ ├── models.py
│ ├── templates
│ │ └── question
│ │ ├── Question.html
│ │ └── Question_list.html
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── reset_passowrd
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── forms.py
│ ├── models.py
│ ├── templates
│ │ └── reset_passowrd
│ │ ├── _message.html
│ │ ├── confirm.html
│ │ ├── pass.html
│ │ └── reset.html
│ ├── tests.py
│ ├── urls.py
│ └── views.py
└── templates
├── base.html
├── footer.html
└── top.html
项目的大致设置settings.py里包含项目里的app 模板 和static静态文件的路径:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'login',
'captcha',
'question',
'reset_passowrd',
'SouSouSou',
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
<