实验二 软件工程个人项目
项目 | 内容 |
课程班级博客 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE |
作业要求 | https://www.cnblogs.com/nwnu-daizh/p/12416880.html |
课程学习目标 | 掌握软件项目个人开发流程及Github发布软件项目的操作方法。 |
这个作业在哪些方面帮助我实现学习目标 | 对软件项目个人开发流程的熟悉及了解 |
项目的Github仓库链接 | https://github.com/wait1234-111/cherubi |
实验内容和步骤:
任务1:陈述学生疫情每日上报子系统使用体验;
首先因为学生疫情上报系统是短时间内设计出来投入使用的,页面简洁,基本使用也没大的问题,但如果仅从用户的角度来考虑疫情上报系统的不足,主要有以下几点:
1.缺少提醒功能,很容易忘记
2.之前的系统填报时每天都要重新填报选项,即使有些选项是完全不用变化的
3.不能查看提交情况,(一旦提交之后点进去,看不到之前填的历史记录,只会显示已填过,然后就自动退出了)
4.对敏感选项的标记提醒不够明显
5.在填好选项提交的时候,最好出现确认提交页面,并以表格的形式直观的显示提交选项,进行第二次的确认再提交。
任务二:总结详细阅读《构建之法》第1-2章、结合第2章2.3节所述PSP流程,开发一款你自己心目中的西北师范大学学生疫情每日填报系统。(第二类开发要求)
1.需求分析:
2019年12月末,中国武汉发生新型冠状病毒(2019-nCoV) 感染的肺炎疫情,为遏制疫情蔓延,有效切断病毒传播途径,在中央政府指导下,各级政府部分采取了一系列防控措施: 2020年1 月23 日10时起对武汉“封城”,全国 31个省市也相继实施了严格的防控措施;全国各省市向武汉和湖北派遣医疗队参与救治工作;在全国范围内调配口罩、防护服、药品等急需的医疗资源支援武汉;指导和督促全国范围内拥有医疗物资生产资质的企业尽快恢复生产能力;定向拨付专项财政资金用于疾病防控;从其他省份调集物资保障武汉市民日常生活。值得一提的是,中国互联网企业在此次疫情防控中发挥了社会治理方面的重要作用。以腾讯为例,围绕应对疫情管控需求开发了十一款产品。其中疫情在线问诊功能,对于减少发热病人之间的相互交叉感染具有重要的作用,患者在家通过互联网向在线医生问诊,减少了病毒传播或感染的风险;谣言粉碎对于公众采取理性态度看待疫情的发展具有重要意义。滴滴出行还在武汉专门组建车队,服务于医护人员的通勤,这在实施交通管制的武汉具有重要作用。此外,还有新型肺炎确诊患者同行程查询工具,用户只需要输入自己所乘坐交通工具的时间和班次,就可以确认是否与被确诊感染者同行,提前做好自我隔离和就诊工作。在疫情防控中,中国互联网企业不仅发展壮大,在承担社会责任方面也越来越成熟。为有效配合防控机构有关疫情信息的采集、统计与排查,我校开发了教职工/学生疫情上报系统,该系统由教职工疫情每日上报、学生疫情每日上报、二级部门疫情每日汇总表、疫情防控填报统计四个子系统组成。实现对我校各类人员基本情况、所在区域及活动轨迹及健康状况的信息收集。师生通过我校企业微信服务大厅访问该系统进行远程信息填报。
基于以上背景,学生疫情每日上报系统的设计开发显得格外重要,既要实现学生疫情有效信息的在线使用及采集,又要能够让学院指定负责人有效地查看查找学生提交的相关信息。
2.功能设计
- 基本功能
- 系统可采集学生疫情有效信息;
- 学生在前端提交信息到管理员端;
- 各学院指定负责人登录系统,可查看学生填报的所有汇总数据
- 负责人可根据学生的姓名,学院,地址查找相关信息
- 扩展功能
- 负责人通过页面跳转可以查看学生信息
- 负责人可直接添加学生的信息
- 负责人也可将填写有误的学生信息进行修改及删除
- 负责人通过【确认导出】可获取疫情数据的EXCEL文件
3.设计实现
①.数据库(mysql)
数据库名:zy
表名:khxxdj
②.eclipse工程目录
4.测试运行
①.主界面:
②.用户填报界面(学生及教职工疫情情况每日上报表):
③.管理员界面(疫情防控填报统计管理)
- 直接添加学生信息
可以观察到添加成功,如下图所示:
- 在已提交的学生信息中修改部分信息
可将此位学生的学院修改为美术学院
- 直接删除信息
- 根据信息查找
如查找学院为音乐学院的学生
- 通过【确认导出】可获取疫情数据的EXCEL文件
代码片段
以下代码为用户提交的相关代码
public class KhInsertServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public KhInsertServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Connection con = dbConnection.getConn();
PreparedStatement pstmt = null;
// 执行SQL语句,返回记录结果
// 执行SQL语句
String xm = request.getParameter("xm"); //姓名
String xh = request.getParameter("xh"); //学号
String xb = request.getParameter("xb"); //性别
String xy = request.getParameter("xy"); //学院
String szd = request.getParameter("szd"); //所在地
String jbqk= request.getParameter("jbqk"); //疾病情况
String sbrq= request.getParameter("sbrq"); //上报日期
String lxfs = request.getParameter("lxfs"); //联系方式
//把用户填写的信息写入表中
String sql = "insert into khxxdj(sqdbh,gzl,wtdw,slry,slzt,jylb,jymd,pjbz) values(?,?,?,?,?,?,?,?)";
try {
pstmt = con.prepareStatement(sql);
pstmt.setString(1, xm);
pstmt.setString(2, xh);
pstmt.setString(3,xb);
pstmt.setString(4,xy);
pstmt.setString(5,szd);
pstmt.setString(6,jbqk);
pstmt.setString(7,sbrq);
pstmt.setString(8,lxfs);
pstmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("数据库执行失败!");
}
//
response.sendRedirect("zy/AfterInsert.html");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
6.总结
开始编写时想采用SQL server数据库,但之前的SQL server出现了一点问题,重新安装总是出错,所以选择了MySQL数据库。此外,由于自己编程能力较弱,动手能力也不太强,此次设计的个人项目虽然花费很多时间,页面不够美观,功能也存在很多缺陷。但从开始时的迷茫到一点一点地实现页面和功能,也试着把模块化原则应用到项目设计中,希望后期通过学习实践能够逐渐提升效率和质量。
7.PSP展示
PSP | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间 |
Planning | 估计这个任务需要多少时间,并规划大致工作步骤 | 15 | 15 |
Deveploment | 开发 | 1080 | 1800 |
Analysis | 需求分析 (包括学习新技术) | 60 | 90 |
Design Spec | 生成设计文档 | 0 | 0 |
Design Review | 设计复审 (和同事审核设计文档) | 0 | 0 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
Design | 具体设计 | 120 | 210 |
Coding | 具体编码 | 400 | 750 |
Code Review | 代码复审 | 60 | 60 |
Test | 测试(自我测试,修改代码,提交修改) | 120 | 120 |
Reporting | 报告 | 120 | 150 |
Test Report | 测试报告 | 15 | 15 |
Size Measurement | 计算工作量 | 15 | 20 |
Postmortem & Process Improvement Plan | 事后总结 ,并提出过程改进计划 | 30 | 30 |