杭州seo推广服务_重庆做网络推广的公司_石家庄大型网站设计公司_游戏开发者
第 3 章 本科生毕业论文管理系统总体设计 在分析了项目开发的背景、意义以及其开发的可行性后,接下来就是探讨项目的功能划分,以及具体实现的时候对项目数据库各种表的设计,在本章会做一个系统的介绍。
3.1 系统功能模块设计
系功能模块的设计就是把系统具体要实现哪些功能,功能如何划分做一个系统的架构,以模块图的方式展示出来,方便我们进行功能得罗列以及涉及。在系统的功能方面,项目分成了管理员+学生两个模块,每个模块登录进去对应相应的功能,具体的功能模块图如图3.1所示。
图3.1 本科生毕业论文管理系统功能模块图
3.2 数据库设计
数据库的设计承载者系统的各种数据,在一个系统中各种数据都需要一个专门的容器,数据库就是这个容器,在建立数据库的时候,主要是数据库模型的设计以及各个数据库表的设计两部分。
3.2.1 数据库概念结构设计
本科生毕业论文管理系统的E-R图主要是根据学生以及管理员的实际需求设计的,学生登录以后可以查看课题任务,只有登录以后才可以进行问题交流、论文成绩等;管理员对整个系统的公告、学生用户、论文定稿、毕业资源、学生选题等进行综合管理。本科生毕业论文管理系统采用的是MYSQL的数据库进行存储的,数据库里面储存了很多的表信息,在此罗列出来一些主要的数据库E-R模型图。
图3.2 学生用户E-R关系图
图3.3 论文定稿E-R关系图
图3.4 问题交流E-R关系图
图3.5 通知公告信息E-R关系图
图3.6毕业资源E-R关系图
图3.8 课题任务E-R关系图
图3.9 学生选题E-R关系图
下面是整个本科生毕业论文管理系统中主要的数据库表总E-R实体关系图。
图3.9 本科生毕业论文管理系统总E-R关系图
3.2.2 数据库逻辑结构设计
通过前面E-R关系图可以看到项目需要创建很多个数据表。以下是项目中的主要数据库表的关系模型:
(1)表document_upload实体用来存放文档上传信息中的教师、教师姓名、课题名称、学号、学生姓名、班级名称、文档名称、文档、文档备注、教师批复等;
表3.1 文档上传信息document_upload表
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | document_upload_id | int | 10 | 0 | N | Y | | 文档上传ID |
2 | teacher | int | 10 | 0 | Y | N | 0 | 教师 |
3 | teachers_name | varchar | 64 | 0 | Y | N | | 教师姓名 |
4 | topic_name | varchar | 64 | 0 | Y | N | | 课题名称 |
5 | student_id | int | 10 | 0 | Y | N | 0 | 学号 |
6 | student_name | varchar | 64 | 0 | Y | N | | 学生姓名 |
7 | class_name | varchar | 64 | 0 | Y | N | | 班级名称 |
8 | document_name | varchar | 64 | 0 | Y | N | | 文档名称 |
9 | document | varchar | 255 | 0 | Y | N | | 文档 |
10 | document_notes | text | 65535 | 0 | Y | N | | 文档备注 |
11 | teachers_approval | longtext | 2147483647 | 0 | Y | N | | 教师批复 |
12 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
13 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
14 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
(2)表finalized_paper实体用来存放论文定稿信息中的教师、教师姓名、课题名称、学号、学生姓名、论文等;
表3.2 论文定稿信息finalized_paper表
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | finalized_paper_id | int | 10 | 0 | N | Y | | 论文定稿ID |
2 | teacher | int | 10 | 0 | Y | N | 0 | 教师 |
3 | teachers_name | varchar | 64 | 0 | Y | N | | 教师姓名 |
4 | topic_name | varchar | 64 | 0 | Y | N | | 课题名称 |
5 | student_id | int | 10 | 0 | Y | N | 0 | 学号 |
6 | student_name | varchar | 64 | 0 | Y | N | | 学生姓名 |
7 | paper | varchar | 255 | 0 | Y | N | | 论文 |
8 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
(3)表student_users实体用来存放用户信息中的姓名、学号、专业、班级名称等;
表3.3学生信息student_users表
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | student_users_id | int | 10 | 0 | N | Y | | 学生用户ID |
2 | student_id | varchar | 64 | 0 | Y | N | | 学号 |
3 | student_name | varchar | 64 | 0 | Y | N | | 学生姓名 |
4 | major | varchar | 64 | 0 | Y | N | | 专业 |
5 | class_name | varchar | 64 | 0 | Y | N | | 班级名称 |
6 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
7 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
8 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
(4)表graduation_project实体用来存放毕业课题中的教师、教师姓名、课题名称、课题类型、状态、研究内容等;
表3.4毕业课题graduation_project表
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | graduation_project_id | int | 10 | 0 | N | Y | | 毕业课题ID |
2 | teacher | int | 10 | 0 | Y | N | 0 | 教师 |
3 | teachers_name | varchar | 64 | 0 | Y | N | | 教师姓名 |
4 | topic_name | varchar | 64 | 0 | Y | N | | 课题名称 |
5 | topic_type | varchar | 64 | 0 | Y | N | | 课题类型 |
6 | state | varchar | 64 | 0 | Y | N | | 状态 |
7 | research_contents | text | 65535 | 0 | Y | N | | 研究内容 |
8 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
(5)表graduation_resources实体用来存放系统中毕业资源的资源名称、资源、备注等;
表3.5毕业资源信息graduation_resources表
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | graduation_resources_id | int | 10 | 0 | N | Y | | 毕业资源ID |
2 | resource_name | varchar | 64 | 0 | Y | N | | 资源名称 |
3 | resource | varchar | 255 | 0 | Y | N | | 资源 |
4 | remarks | text | 65535 | 0 | Y | N | | 备注 |
5 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
(6)表outstanding_graduates实体用来存放系统中优秀毕业生的信息,包含了学生姓名、教师、教师姓名、学号、成绩、成绩等级、申请原因等;
表3.6优秀毕业生outstanding_graduates表
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | outstanding_graduates_id | int | 10 | 0 | N | Y | | 优秀毕业生ID |
2 | student_name | varchar | 64 | 0 | Y | N | | 学生姓名 |
3 | teacher | int | 10 | 0 | Y | N | 0 | 教师 |
4 | teachers_name | varchar | 64 | 0 | Y | N | | 教师姓名 |
5 | student_id | int | 10 | 0 | Y | N | 0 | 学号 |
6 | achievement | varchar | 64 | 0 | Y | N | | 成绩 |
7 | grade_level | varchar | 64 | 0 | Y | N | | 成绩等级 |
8 | reason_for_application | text | 65535 | 0 | Y | N | | 申请原因 |
9 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
10 | examine_reply | varchar | 16 | 0 | Y | N | | 审核回复 |
11 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
(7)表problem_communication实体用来存放系统中问题交流的信息,包含了教师、教师姓名、课题名称、学号、学生姓名、学生提问、教师回复等;
表3.7问题交流problem_communication表
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | problem_communication_id | int | 10 | 0 | N | Y | | 问题交流ID |
2 | teacher | int | 10 | 0 | Y | N | 0 | 教师 |
3 | teachers_name | varchar | 64 | 0 | Y | N | | 教师姓名 |
4 | topic_name | varchar | 64 | 0 | Y | N | | 课题名称 |
5 | student_id | int | 10 | 0 | Y | N | 0 | 学号 |
6 | student_name | varchar | 64 | 0 | Y | N | | 学生姓名 |
7 | student_questioning | text | 65535 | 0 | Y | N | | 学生提问 |
8 | teacher_response | text | 65535 | 0 | Y | N | | 教师回复 |
9 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
教师11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
(8)表project_tasks实体用来存放系统中课题任务的信息,包含了教师、教师姓名、课题名称、学号、学生姓名、班级名称、相关附件、任务内容等;
表3.8课题任务project_tasks表
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | project_tasks_id | int | 10 | 0 | N | Y | | 课题任务ID |
2 | teacher | int | 10 | 0 | Y | N | 0 | 教师 |
3 | teachers_name | varchar | 64 | 0 | Y | N | | 教师姓名 |
4 | topic_name | varchar | 64 | 0 | Y | N | | 课题名称 |
5 | student_id | int | 10 | 0 | Y | N | 0 | 学号 |
6 | student_name | varchar | 64 | 0 | Y | N | | 学生姓名 |
7 | class_name | varchar | 64 | 0 | Y | N | | 班级名称 |
8 | task_name | varchar | 64 | 0 | Y | N | | 任务名称 |
9 | related_attachments | varchar | 255 | 0 | Y | N | | 相关附件 |
10 | task_content | text | 65535 | 0 | Y | N | | 任务内容 |
11 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
(9)表notice_announcement通知公告实体用来存放系统中通知公告的信息,包含了标题、发布人、发布时间、内容、相关附件等;
表3.8通知公告信息notice_announcement表
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_announcement_id | int | 10 | 0 | N | Y | | 通知公告ID |
2 | title | varchar | 64 | 0 | Y | N | | 标题 |
3 | publisher | varchar | 64 | 0 | Y | N | | 发布人 |
4 | published_on | date | 10 | 0 | Y | N | | 发布时间 |
5 | relevant_attachments | varchar | 255 | 0 | Y | N | | 相关附件 |
6 | content | text | 65535 | 0 | Y | N | | 内容 |
7 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
(10)表student_topic_selection实体用来存放系统中学生选题的信息,包含了教师、教师姓名、课题名称、学号、学生姓名、班级名称、选题原因等;
表3.10学生选题student_topic_selection表
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | student_topic_selection_id | int | 10 | 0 | N | Y | | 学生选题ID |
2 | teacher | int | 10 | 0 | Y | N | 0 | 教师 |
3 | teachers_name | varchar | 64 | 0 | Y | N | | 教师姓名 |
4 | topic_name | varchar | 64 | 0 | Y | N | | 课题名称 |
5 | student_id | int | 10 | 0 | Y | N | 0 | 学号 |
6 | student_name | varchar | 64 | 0 | Y | N | | 学生姓名 |
7 | class_name | varchar | 64 | 0 | Y | N | | 班级名称 |
8 | reason_for_selecting_the_topic | text | 65535 | 0 | Y | N | | 选题原因 |
9 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
10 | examine_reply | varchar | 16 | 0 | Y | N | | 审核回复 |
11 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
第 4 章 关键模块的设计与实现
4.1 登录模块
管理员、教师和学生在登录界面输入账号+密码,点击“登录”按钮,系统在用户数据库表中会对管理员和用户的账号进行匹配,账号+密码正确的话,就会登录到系统中各个用户的主管理界面,否则提示对应的信息,返回到登录的界面,其主界面展示如下图4.1所示。
图4.1 登录界面图
登录的逻辑代码如下所示。
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
QueryWrapper wrapper = new QueryWrapper<User>();
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
public String select(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer("select ");
sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
}
if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
}
if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
}
log.info("[{}] - 查询操作,sql: {}",table,sql);
return sql.toString();
}
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
4.2 用户管理模块
管理员可以对系统中所有的用户角色进行管控,包含了管理员、教师以及学生这三种角色,如果需要添加新的用户,点击页面中的“添加”按钮根据提示输入上用户信息,点击“提交”以后在对应的用户界面就可以查看到了,可以点击用户后面的“删除”按钮直接删除某一用户,这里以学生用户为例。界面如下图4.2所示。
图4.2 用户管理界面图
用户管理界面逻辑代码如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
@Transactional
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
4.3 毕业课题模块
点击“毕业课题”这个菜单,可以查看到系统中所有添加的毕业课题,支持通过教师姓名或者课题名称对毕业课题进行查询,如果想要了解某一毕业课题的详细信息,点击后面的“详情”会进入详情界面,学生和管理员如果想要选择某一毕业课题,点击“选题”按钮,根据提示填写对应的信息,点击“提交”按钮,信息没有错误在数据库就会提交成功,选题成功。界面如下图4.3所示。
图4.3 毕业课题界面图
4.4 课题任务模块
管理员和学生点击“课题任务”这个按钮可以查看到系统中的课题任务信息,支持通过教师姓名或者课题名称进行查询课题任务信息,如果想要添加新的课题任务信息,点击“添加”按钮然后根据提示输入课题任务信息,点击“提交”后,在课题任务界面就会显示新增的课题任务信息,可以点击某一课题任务信息查看课题任务信息的详情,也可以直接点击“删除”进行删除课题任务。界面如下图4.4所示。
图4.4 课题任务界面图
课题任务管理的逻辑代码如下:
@RequestMapping("/get_obj")
public Map<String, Object> obj(HttpServletRequest request) {
List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));
if (resultList.size() > 0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
} else {
return success(null);
}
}
4.5 毕业资源模块
管理员和学生点击“毕业资源”这个按钮可以查看到系统中的毕业资源信息,支持通过资源名称或者资源进行查询毕业资源信息,如果想要添加新的毕业资源信息,点击“添加”按钮然后根据提示输入毕业资源信息,点击“提交”后,在毕业资源界面就会显示新增的毕业资源信息,可以点击某一毕业资源信息查看毕业资源信息的详情,也可以直接点击“删除”进行删除毕业资源。界面如下图4.5所示。
图4.5 毕业资源界面图
毕业资源界面逻辑代码如下:
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
4.6 论文定稿模块
点击“论文定稿”这个按钮可以查看到自己提交的论文定稿,支持通过教师姓名或者课题名称进行查询论文定稿,如果想要了解某一论文定稿的详细信息,点击后面的“查看”会进入详情界面,也支持对自己选择的论文定稿进行删除;教师和管理员可以对学生提交的论文定稿进行成绩添加,选择某一论文定稿,点击后面的“成绩”按钮,根据提示输入对应的信息,点击“提交”后,成绩就录入成功了。界面如下图4.6所示。
图4.6 论文定稿界面图
4.7 论文成绩模块
点击“论文成绩”这个按钮可以查看到自己所有的论文的成绩,支持通过静教师姓名或者成绩等级进行查询论文成绩信息,管理员和教师可以对所添加的论文成绩进行删除。界面如下图4.7所示。
图4.7 论文成绩界面图
4.8 通知公告模块
点击“通知公告”这个菜单,可以查看到系统中所有添加的通知公告信息,支持通过标题或者发布时间对通知公告信息进行查询,只有管理员用户可以添加新的通知公告,点击“添加”按钮,根据提示输入通知公告信息,点击“提交”按钮,新的通知公告信息就在系统中显示出来了,也可以对添加的通知公告信息进行删除。界面如下图4.8所示。
图4.8 通知公告界面图
通知公告界面逻辑代码如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
@Transactional
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
第 5 章 系统实验与结果分析
5.1 测试的目的
通过前面章节的介绍,我们可以看到本本科生毕业论文管理系统已经完成了,但是能不能投入使用还是未知,因为在每个项目正式使用之前必须对开发的项目进行测试,如果不进行测试一旦投入使用可能会出现很多未可知的问题,比如使用人数太多导致系统瘫痪,比如某一功能存在bug信息填写错误等等,这些错误将给使用者带来很多的困扰,甚至造成更大的损失,因此测试是项目投入使用的最后一步,为用户提供一个运行顺畅、完美的项目也就是我们进行最后测试的目的。
5.2 系统部分测试
用户登录功能测试:
表5.1 用户登录功能测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
用户登录模块测试 | 用户登录成功的情况 | 点击前登录界面输入账号和密码分别输入admin和admin后点击“登录”按钮。 | 登录成功并调整到用户界面 | 正确 |
文档上传信息添加功能测试:
表5.2 文档上传信息添加功能测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
文档上传添加模块测试 | 文档上传添加成功的情况 | 在文档上传的页面中将点击添加,输入文档上传关信息,输入正确的信息后然后点击“提交”按钮。 | 提示添加成功 | 正确 |
文档上传添加模块测试 | 文档上传添加失败的情况 | 在文档上传页面中不填写的教师、教师姓名,其他信息正常输入“提交”按钮。 | 提示“添加失败,信息不能为空” | 正确 |
查询论文定稿信息功能模块测试:
表5.3 查询论文定稿信息功能测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
查询论文定稿信息功能测试 | 查询成功的情况 | 在论文定稿界面输入教师或者教师姓名进行查询 | 查询成功 | 正确 |
毕业课题信息添加功能测试:
表5.4 毕业课题添加功能测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
毕业课题添加模块测试 | 毕业课题添加成功的情况 | 在毕业课题的页面中将点击添加,输入毕业课题相关信息,输入正确的信息后然后点击“提交”按钮。 | 提示添加成功 | 正确 |
毕业课题添加模块测试 | 毕业课题添加失败的情况 | 在毕业课题页面中不填写的区域,其他信息正常输入“提交”按钮。 | 提示“添加失败,信息不能为空” | 正确 |
5.3 系统测试结果
通过编写本科生毕业论文管理系统的测试用例,已经检测完毕用户的登录模块、文档上传信息添加模块、查询论文定稿模块、毕业课题添加模块的功能测试,在对以上功能得测试过程中,发现了系统中的很多漏送并进行了完善,经过多人在线进行测试,系统完全可以正常运行,当然在后期的维护中系统将不断完善。
第 6 章 结论
">