实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告
项目 |
内容 |
课程班级博客链接 |
<https://edu.cnblogs.com/campus/xbsf/nwnu2020SE> |
这个作业要求链接 |
<https://www.cnblogs.com/nwnu-daizh/p/12521474.html> |
我的课程学习目标 |
学习两个人合作完成代码实验,体验合作的意义,尽最大的努力做,希望慢慢地一点点的进步和提升。 |
这个作业在哪些方面帮助我实现学习目标 |
作业确实花费了很长的时间尽管不完美,但是确实也有学习到一些东西,也是尽全力去做了,当然在此过程中也和伙伴一起努力,从同伴的身上也学习到了很多。 |
结对方学号-姓名 |
<201771010126-王燕> |
结对方本次博客作业链接 |
<https://www.cnblogs.com/wy201771010126/p/12587412.html> |
本项目Github的仓库链接地址 |
<https://github.com/yanzhidandang/second.git> |
一、实验内容和步骤
任务1:理解并掌握代码风格规范、代码设计规范、代码复审、结对编程概念;
1.代码规范
代码的规范一般都是比较硬性的要求,并没有什么疑问。
2.代码复审
代码的复审既能找出其中的错误使得代码更符合团队的规范,又是复审的人在彼此的借鉴学习。
3.结对编程
结对编程的过程中使得代码被不断地复审,也解决了不少低级的错误,使得编程过程更容易进行下去。
4.两人合作的技巧
我觉得对于两人合作来说,难易程度取决于两人是否更融洽。性格,做事态度,以及一些小习惯都有可能是其中的因素。可以说两人合作不仅仅存在于编程之中,生活中处处都存在,因此两人合作如何能够很好的进行下去,也就关乎着自己的社交,不仅仅是知识以及技能方面的了。
任务2:两两自由结对,对结对方《实验二 软件工程个人项目》的项目成果进行评价。
对方博客连接:<https://www.cnblogs.com/wy201771010126/p/12587412.html>
对方github仓库连接:<https://github.com/wy-an/wysecond.git>
对伙伴实验二的评论:
(1)克隆结对方项目源码到本地机器,阅读并测试运行代码,参照《现代软件工程—构建之法》4.4.3节核查表复审同伴项目代码并记录。
- 概要部分
- 代码能符合需求和规格说明么?
- 答:能符合需求与规格
- 代码设计是否有周全的考虑?
- 答:考虑周全
- 代码可读性如何?
- 答:基本可以懂
- 代码容易维护么?
- 答:可以维护
- 代码的每一行都执行并检查过了吗?
- 答:检查过
- 设计规范部分
- 设计是否遵从已知的设计模式或项目中常用的模式?
- 答:是
- 有没有硬编码或字符串/数字等存在? 答:
- 有一部分
- 代码有没有依赖于某一平台,是否会影响将来的移植(如Win32到Win64)
- 答:不会影响
- 开发者新写的代码能否用已有的Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以调用而不用全部重新实现?
- 答:可以实现
- 有没有无用的代码可以清除?(很多人想保留尽可能多的代码,因为以后可能会用上,这样导致程序文件中有很多注释掉的代码,这些代码都可以删除,因为源代码控制已经保存了原来的老代码。)
- 答:有,已清除
- 代码规范部分
- 修改的部分符合代码标准和风格么(详细条文略)?
- 答:符合,都是按照代码标准修改的
- 具体代码部分
- 有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常?
- 答:检查以后没有发现异常
- 参数传递有无错误,字符串的长度是字节的长度还是字符(可能是单/双字节)的长度,是以0开始计数还是以1开始计数?
- 答:基本无错误,字符串的长度是字节的长度,以0开始计数
- 效能
- 代码的效能(Performance)如何?最坏的情况是怎样的?
- 答:代码正确,程序运行正常,没有很大的数据量可以测试,可能会慢一点
- 代码中,特别是循环中是否有明显可优化的部分(C++中反复创建类,C#中 string 的操作是否能用StringBuilder 来优化)?
- 答:可以正常运行,自己能力不足,所以我也不知道能不能优化
- 对于系统和网络调用是否会超时?如何处理?
- 答:代码运行过程出现了超时,我将tomcat视图打开重新设定了运行时间。
- 可读性
- 代码可读性如何?有没有足够的注释?
- 答:难懂的部分基本都有注释。
- 可测试性
- 代码可测试吗?
- 答:可以测试,都进行了测试。
(3)依据复审结果尝试利用github的Fork、Clone、Push、Pull request、Merge pull request等操作对同伴个人项目仓库的源码进行合作修改。
博客作业中针对任务2的评分要点:
任务3:采用两人结对编程方式,结合我校师生疫情每日上报系统使用体验,设计开发一款符合我校疫情防控工作需求的信息系统,使之具有以下功能:
需求分析
2019年12月以来,湖北省武汉市持续开展流感及相关疾病监测,发现多起病毒性肺炎病例,均诊断为病毒性肺炎/肺部感染,并造成了大规模的疫情。肺炎感染疫情成为全世界人口都瞩目最大的事,着对于人类来说是一场没有硝烟的战争,总书记强调:生命重于泰山,疫情就是命令,防控就是责任。无论学生还是什么人目前最重要的就是做好疫情防控工作,一起奋斗,打赢这场没有硝烟的战争。因此统计人们的当前信息也成为必须的事情,随意在此次疫情当中,计算机专业人员开发与防疫有关的软件也算是为此次疫做的最大努力的工作。像学校每天统计学生在家的疫情情况一样,提前掌握学生的信息,可以为开学做好充分的准备,所以说疫情统计系统是多么重要。
软件设计说明
实现的功能:
(1)可采集全校各类师生员工疫情信息;
(2)各管理部门疫情防控工作负责人可查看本部门人员疫情汇总,并提供高级查询功能进行多属性组合查询;
(3)学校防控办指定负责人登录《西北师范大学疫情防控信息统计》子系统,可浏览所有人员填报汇总数据清单,利用【高级查询】可进行数据组合筛选,系统以图形化方式展示各学院已填报和未填报学生统计情况和关键疫情数据统计情况,可【导出】查询列表的EXCEL文件;
(4)GUI人机交互界面界面;
软件实现及核心功能代码展示
核心代码部分:
这部这部分代码主要是登录进去的导航菜单以及内容部分。主要是web中的view的system.jsp内容
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>学生疫情管理系统 管理员后台</title> <link rel="shortcut icon" href="favicon.ico"/> <link rel="bookmark" href="favicon.ico"/> <link rel="stylesheet" type="text/css" href="easyui/css/default.css" /> <link rel="stylesheet" type="text/css" href="easyui/themes/default/easyui.css" /> <link rel="stylesheet" type="text/css" href="easyui/themes/icon.css" /> <script type="text/javascript" src="easyui/jquery.min.js"></script> <script type="text/javascript" src="easyui/jquery.easyui.min.js"></script> <script type="text/javascript" src='easyui/js/outlook2.js'> </script> <script type="text/javascript"> var _menus = {"menus":[ {"menuid":"2","icon":"","menuname":"学生疫情信息管理", "menus":[ {"menuid":"21","menuname":"学生疫情收集列表","icon":"icon-user-student","url":"StudentServlet?method=toStudentListView"}, ] }, <c:if test="${userType == 1 || userType == 3}"> {"menuid":"4","icon":"","menuname":"班级疫情信息管理", "menus":[ {"menuid":"42","menuname":"班级收集信息列表","icon":"icon-house","url":"ClazzServlet?method=toClazzListView"} ] }, </c:if> <c:if test="${userType == 1 || userType == 3}"> {"menuid":"3","icon":"","menuname":"教师疫情信息管理", "menus":[ {"menuid":"31","menuname":"教师疫情信息列表","icon":"icon-user-teacher","url":"TeacherServlet?method=toTeacherListView"}, ] }, </c:if> {"menuid":"5","icon":"","menuname":"系统管理", "menus":[ {"menuid":"51","menuname":"修改密码","icon":"icon-set","url":"SystemServlet?method=toPersonalView"}, ] } ]}; </script> </head> <body class="easyui-layout" style="overflow-y: hidden" scroll="no"> <noscript> <div style=" position:absolute; z-index:100000; height:2046px;top:0px;left:0px; 100%; background:white; text-align:center;"> <img src="images/noscript.gif" alt='抱歉,请开启脚本支持!' /> </div> </noscript> <div region="north" split="true" border="false" style="overflow: hidden; height: 30px; background: url(images/layout-browser-hd-bg.gif) #7f99be repeat-x center 50%; line-height: 20px;color: #fff; font-family: Verdana, 微软雅黑,黑体"> <span style="float:right; padding-right:20px;" class="head"><span style="color:red; font-weight:bold;">${user.name} </span>您好 <a href="LoginServlet?method=logout" id="loginOut">安全退出</a></span> <span style="padding-left:10px; font-size: 16px; ">学生疫情信息管理系统</span> </div> <div region="south" split="true" style="height: 30px; background: #D2E0F2; "> <div class="footer">Copyright © By 【颜值担当】</div> </div> <div region="west" hide="true" split="true" title="导航菜单" style="180px;" id="west"> <div id="nav" class="easyui-accordion" fit="true" border="false"> <!-- 导航内容 --> </div> </div> <div id="mainPanle" region="center" style="background: #eee; overflow-y:hidden"> <div id="tabs" class="easyui-tabs" fit="true" border="false" > <jsp:include page="welcome.jsp" /> </div> </div> <iframe width=0 height=0 src="refresh.jsp"></iframe> </body> </html>
软件实现部分:
mysql部分
一共建了三个表,分别是学生,老师和管理员。
三个表分别展示
管理员:
老师:
学生:
eclipse代码部分:
管理思路展示:
学生和老师进行信息上报,管理员可以进行统计和管理。
测试运行:
登录界面:
在登录时输错:
用管理员登录
管理员登录进去的导航菜单可以看到有四个,分别是学生疫情信息管理,班级疫情信息管理,老师疫情信息管理,还有自身的系统管理。
管理员进入学生疫情信息界面:
并且进行添加学生李凯信息
修改
相应的数据库也进行了修改
删除:
相应的数据库也进行了删除王阳的信息:
进行搜索:通过姓名或者班级,或者相匹配
管理员登录下教师的信息和学生一样,管理员可以进行查询,添加,修改,删除 ,搜索在此不一一截图。
班级是为了匹配学生信息,当然相应的班级也可以 进行添加修改和删除:
添加:
相应的数据库就有了:
修改:
修改成功:
相应的数据库也进行了修改
其他操作一样,在此不一一截图展示:
学生登录界面:
我们可以看到,李凯可以对自己的信息进行修改,和查找
修改完成:
数据库显示:
管理员学生老师都可以修改自己的登录密码
输入错误的时候
以老师的角色登录
老师可以管理学生和班级的疫情信息
对学生的信息进行添加修改和删除搜索
对教师信息进行修改:其他功能归管理员所有
对班级也有添加修改和 删除
老师也可以进行密码修改
修改成功自动退出,重新登录
修改前密码
修改后
管理员可以查看学生的填报时间
以下显示所有学生的信息
查看28号上午填报的人
选择学生学院时间来查填报的情况
再完成后将数据库导出为Excel文件为:
根据填报人所填报的体温进行统计
结对讨论:
我们俩的代码编程修改过程两个人都有参加,在参加的过程中主要是通过qq,微信视频,分享电脑页面互相建议,来编写代码和修改功能。
通过讨论,我的队友前端不错,所以我俩用了web用户界面。
过程中的聊天;
视频
PSP
PSP | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 估计这个任务需要多少时间,并规划大致工作步骤 | 15 | 15 |
Development | 开发 | 600 | 1060 |
· Analysis | 需求分析 (包括学习新技术) | 30 | 60 |
· Design Spec | · 生成设计文档 | 15 | 15 |
· Design Review | · 设计复审 (和同事审核设计文档) | 30 | 30 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 15 | 15 |
· Design | · 具体设计 | 60 | 120 |
· Coding | · 具体编码 | 360 | 700 |
· Code Review | · 代码复审 | 60 | 60 |
· Test | · 测试(自我测试,修改代码,提交修改) | 30 | 60 |
Reporting | 报告 | 100 | 250 |
· Test Report | · 测试报告 | 40 | 150 |
· Size Measurement | · 计算工作量 | 30 | 30 |
· Postmortem & Process Improvement Plan | · 事后总结,并提出过程改进计划 | 30 | 70 |
任务4:小结感受:两人合作真的能够带来1+1>2的效果吗?
本次实验确实花了很长的时间,当然是因为自己的能力问题,两个人合作确实比一个人做的好的多,一个人做到快要奔溃的时候有了另一个人的支持与鼓励,有可以不断的坚持下去,而且,两个人可以进行分工合作效率也比一个人搞的多,但是一次的实验花七八天的时间真的很难,因为这样我落了很多其他科目的作业,甚至我除了学校的课还有其他课程,自己的时间不太充裕,虽然做的也不是完美,但是我真的已经尽最大的努力去做了。