项目 | 内容 |
课程班级博客链接 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE |
本次作业要求链接 | https://www.cnblogs.com/nwnu-daizh/p/12416880.html |
我的课程学习目标 | 学会采用PSP方式学习软件工程 |
这个作业在哪些方面帮助我们实现学习目标 | 了解软件开发的一般流程,学会用PSP的方式开发软件,掌握基础技术的应用 |
项目Github的仓库地址 | https://github.com/fengzhixia17393162576/softwareE |
1.实验目的与要求
(1)掌握软件项目个人开发流程
(2)掌握Github发布软件项目的操作方法
2.实验内容和步骤
任务一:陈述学生每日上报子系统使用体验;
经过较长时间体验学生疫情上报系统,得到的体验感如下:
- 系统在后期改善之后可以保存学生之前填过的信息,方便用户填写
- 系统没有提醒打卡的功能,也没有补卡的功能。
- 系统设计的很简单,对于一般性调查我觉得都还不错
任务二:总结详细阅读《构建之法》第1-2章,结合第二章2.3节所描述的PSP流程,开发一款你自己心目中的西北师范大学学生疫情上报系统。
我选择第二类开发要求:
1.系统可采集学生疫情有效信息
2.系统支持用户在线使用
3.每日可填写一次,提交后无法修改,每日疫情信息在10点截至
4.学院指定负责人登陆系统,可查看本院学生填报的汇总数据,可点击查看学生联系方式。班主任联系方式,学院负责人何时本院所有学生数据后,将数据提交给学校方防控办
5.学校防控办指定负责人登录《西北师范大学疫情防控信息统计》子系统,可浏览所有学生填报汇总数据清单,通过【导出】可获取疫情数据的EXCEL文件
r任务三:完成个人项目报告作业
需求分析
1.疫情期间学生不能及时到达学校,为了了解学生实时的安全状况,学校打算开发一个在线学生疫情统计的系统,针对这个项目进行开发。
2、需要编写学生提交的表单,提交完数据需要转向的页面,负责人登录的表单,负责人可以查看学生提交信息统计的数据等等。
功能设计
- 采集学生每天的疫情信息,每人每天只能上交一次,并且无法修改
- 指定负责人(管理员)可查看所有学生填报信息
- 管理员进入后台,可将学生疫情导出到EXCEL
- 管理员可对学生疫情表进行增删改查
- 提交页面能够合理的验证,例如输入不在指定范围内的字符,填写不完整等页面将会提示无法上交
实现过程
1.采用eclipse IDE,sql server2014等开发工具,使用jsp,servlet,javabean等技术,采用MVC开发模式进行的
2.主要的类包括:
(1)com.interface 该类实现在数据库中增删改查数据
(2)com.web该类实现客户端的数据提交到数据库;
(3)com.model该类实现每个字段名的实例化;
(4)com.Util该类实现对数据库的连接操作
3.主要的JSP页面
(1)index.jsp:实现学生提交信息数据的页面
(2)main.jsp:实现再次预览,确定提交的页面
(3)Excel.jsp:实现将数据库中的数据导出到excel的页面
(4)adminLogin.jsp:实现负责人登录的也页面
4.功能展示
开发需要的类
学生提交信息的页面
提交完信息要预览确定的页面
数据从前端提交到数据库的页面
负责人登录查看统计结果的页面
将数据库中的数据导出到excel的页面
5.代码展示
这里粘贴的是利用servlet从表单获取数据并且将提交数据到SQLserver的部分
package com.web;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.Interface.LiteratureInterface;
import com.Util.DbUtil;
import com.model.Literature;
public class PublishServlet extends HttpServlet {
DbUtil db=new DbUtil();
private static final long serialVersionUID = 1L;
public PublishServlet() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
String Institute=request.getParameter("Institute");
String Banji=request.getParameter("Banji");
String Writer=request.getParameter("Writer");
String Telephone=request.getParameter("Telephone");
String Province=request.getParameter("Province");
String City=request.getParameter("City");
String Abroad=request.getParameter("Abroad");
String Hubeiji=request.getParameter("Hubeiji");
String Wuhanyiqu=request.getParameter("Wuhanyiqu");
String Hubeiyiqu=request.getParameter("Hubeiyiqu");
String Atwuhan=request.getParameter("Atwuhan");
String Athubei=request.getParameter("Athubei");
String Fanxiao=request.getParameter("Fanxiao");
String Symptom=request.getParameter("Symptom");
String Infect=request.getParameter("Infect");
String Qita=request.getParameter("Qita");
Literature literature=new Literature();
literature.setInstitute(Institute);
literature.setBanji(Banji);
literature.setWriter(Writer);
literature.setTelephone(Telephone);
literature.setProvince(Province);
literature.setCity(City);
literature.setAbroad(Abroad);
literature.setHubeiji(Hubeiji);
literature.setWuhanyiqu(Wuhanyiqu);
literature.setHubeiyiqu(Hubeiyiqu);
literature.setAtwuhan(Atwuhan);
literature.setAthubei(Athubei);
literature.setFanxiao(Fanxiao);
literature.setSymptom(Symptom);
literature.setInfect(Infect);
literature.setQita(Qita);
LiteratureInterface literatureInter=new LiteratureInterface();
literatureInter.addLiterature(literature);
request.getRequestDispatcher("test.jsp").forward(request, response);
}
}
6.展示PSP
PSP | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
Planning | 计划 | 30 | 30 |
Estimate | 估计这个任务需要多少时间,并规划大致工作时间 | 1000 | 1500 |
Development | 开发 | 1000 | 2000 |
Analysis | 需求分析(包括学习新技术) | 500 | 1000 |
Design Spec | 生成设计文档 | 30 | 30 |
Design Review | 设计复审(和同事审核设计文档) | 30 | 30 |
Coding Standard | 代码规范 | 100 | 80 |
Design | 具体设计 | 100 | 150 |
Coding | 具体编码 | 500 | 800 |
Code Review | 代码复审 | 30 | 30 |
Test | 测试(自我测试,修改代码,提交修改) | 500 | 300 |
Reporting | 报告 | 100 | 80 |
Test Reporting | 测试报告 | 30 | 30 |
Size Measurement | 计算工作量 | 30 | 80 |
Postmortern & Process Improvement Plan | 事后总结,并提出过程改进计划 | 2000 | 3000 |
7.总结思考
本次实验其实不难,但是对我来说我是基础知识没掌握牢固,再加上平时不做项目,不进行开发,所以所有的知识点都显得特别生涩,功能想得出来,可是没办法实现,不知道该从何查起,但是这几天的学习加起来,收获还是有的。开发项目的时候采用《构建之法》里面的PSP流程,主要帮助我的时间管理方面,后续会一直采用这个方式进行学习。