赞
踩
目 录
1 绪 论 8
1.1 选题背景 8
1.2 国内外研究现状 8
1.3 选题意义 9
1.4 论文结构 9
2 可行性研究 10
2.1 经济可行性 10
2.2 技术可行性 10
2.3 操作可行性 10
3 需求分析 11
3.1 安全需求 11
3.2 功能需求 11
3.3数据库E-R模型分析及数据词典 19
3.4 性能需求 27
3.5 可靠性和可用性需求 27
3.6 出错处理需求 27
3.7 接口需求 27
3.8 约束 28
3.9 将来可能提出的需求 28
4 总体设计 29
4.1 系统架构设计 29
4.2 平台功能模块设计 29
4.2.1 平台总体功能结构图 29
4.2.2 学生用户功能设计 30
4.2.3 教师用户功能设计 33
4.2.3 管理员用户功能设计 33
4.3 数据库概要设计 34
4.3.1 用户信息表设计 34
4.3.2 项目信息表设计 35
4.3.3 研究方向信息表设计 36
4.3.4 职称信息表设计 37
4.3.5 学历信息表设计 37
4.3.6 开发语言信息表设计 37
4.3.7 开发平台信息表设计 38
4.3.8 新闻信息表设计 38
4.3.9 数据库备份信息表设计 39
5 详细设计及实现 40
5.1 系统主要类图设计 40
5.2 系统界面设计 40
5.2.1 学生用户操作界面设计 40
5.2.2 教师用户操作界面设计 45
5.2.3 管理员用户操作界面设计 46
5.3 主要模块详细设计及实现 47
5.3.1 用户登录模块详细设计 47
5.3.2 项目创建模块详细设计 50
5.3.3 项目审核模块详细设计 52
5.3.4 更新项目状态模块详细设计 53
6 平台测试 55
6.1 测试范围 55
6.2 平台功能测试 55
6.2.1 注册功能测试 55
6.2.2 项目创建功能测试 55
6.2.3 项目审核功能测试 56
6.2.4 团队管理功能测试 56
6.2.5 用户修改个人资料功能测试 56
6.3 平台性能测试 57
7 结束语 58
致谢 59
参考文献 60
3 需求分析
3.1 安全需求
现如今在做web开发的过程中必须要考虑到的信息安全的各种问题,一般引起信息安全风险的情况也有很多种情况,如:SQL注入风险、识别风险、XSS、CSRF攻击等、在这些方面一般有各种各样的解决方案,例如:数据加密传输、使用https加密协议传输数据、数据库存储密文、做到普通用户与系统管理员用户的权限要有严格的区分、sql强迫使用参数化语句、加强对用户输入的验证等方法来进行避免网络攻击。考虑到本系统“校园软件在线开发协同平台”,是面向学校的软件开发学生故网络安全性显得尤为重要。本系统至少需要要考虑到:SQL注入风险、识别风险、XSS、文件上传的安全性、用户信息安全性、数据传输安全性。
经以上分析该平台在安全性上是完全可行的。
3.2 功能需求
对于校园软件在线开发协同平台,我采用从参与者的角度来进行分模块的设计,主要分为以下3个模块:学生用户模块,教师模块,平台管理员模块,其中学生用户又可以分为项目参与者和项目创建者,对于这3个模块的功能需求分析具体如下:
3.2.1 学生用户模块
1.浏览项目动态、新闻信息、师资力量
学生用户没有注册之前可以在系统前台可以浏览项目演示视频,可以在新闻动态中查看最近关于平台的新闻事件。
2.用户注册、登录
用户在未登录的情况下,如果想进入系统进行项目参与或者创建管理系统会提示用户登陆注册,用户若没有账号只需要在首页输入很少的信息即可注册,不过为确保恶意注册,本系统设置了注册信息的审核,待管理员审核完毕将账号启动后即可登录享有本系统核心强大的项目管理、团队管理、任务管理等功能。
3.项目管理
用户可在后台项目管理中可以进行项目管理(包括项目创建、项目修改、查看创建,参与项目、删除未启动创建项目)。
核心代码如下: public StateResult creatProjectHandle(BaseProject baseProject, StateResult stateResult, @RequestParam(value = "file", required = true) MultipartFile[] file, HttpServletRequest request) { try { BaseUser users = SessionController.getLoginInfomation(request); String projectid = DateDealwith.getSHC(); String uuid0 = UUID.randomUUID().toString(); String uuid1 = UUID.randomUUID().toString(); // 预算文件物理地址 String BudgetfilePath = GetResousePath.getUserProjectFilePath(users.getId().toString(), projectid, uuid1 + file[1].getOriginalFilename()); // 立项书物理地址 String ProgectfilePath = GetResousePath.getUserProjectFilePath(users.getId().toString(), projectid, uuid0 + file[0].getOriginalFilename()); if (!upload(stateResult, file[0], ProgectfilePath)) { stateResult.setMsg(stateResult.getMsg()); return stateResult; } if (!upload(stateResult, file[1], BudgetfilePath)) { stateResult.setMsg(stateResult.getMsg()); return stateResult; } baseProject.setProjid(projectid); // 设置网络地址 baseProject.setProjbudgetfile(BudgetfilePath); baseProject.setProjprogectfile(ProgectfilePath); baseProject.setProjcreattime(DateDealwith.getCurrDate()); baseProject.setProjcurrentnumber(ConfigStr.currentnumber); baseProject.setProjemail(users.getEmail()); baseProject.setCreatpersionname(users.getName()); baseProject.setProjphone(users.getPhone()); baseProject.setProjstatus(Integer.parseInt(ConfigStr.close)); baseProject.setProjupdatetime(DateDealwith.getCurrDate()); baseProject.setProjstartupevaluationstate(0); baseProject.setProjresultevaluationstate(0); baseProject.setProjgrade("0"); baseProject.setProjstatus(0); baseProjectMapper.insert(baseProject); // 添加默认视屏任务:数据库插入默认视屏上传任务,最后一天上传视频 BaseTask bt = new BaseTask(projectid, baseProject.getProjemail(), users.getName(), baseProject.getProjendtime(), baseProject.getProjendtime()); bt.setDescription(ConfigStr.defaultTaskview); bt.setResultfile(ConfigStr.defaultTaskviewResultFile); bt.setTaskfile(ConfigStr.defaultTaskTXTResultFile); bt.setUpdatetime(DateDealwith.getCurrDate()); baseTaskMapper.insert(bt); // 添加自定义默认任务 stateResult.setMsg("服务器端:项目创建成功!"); stateResult.setStatus(0); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return stateResult; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。