201771010107-冯志霞 实验二 个人项目-《西北师范大学学生疫情上报系统》项目报告

项目 内容
课程班级博客链接 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计划3030
Estimate估计这个任务需要多少时间,并规划大致工作时间10001500
Development开发10002000
Analysis需求分析(包括学习新技术)5001000
Design Spec生成设计文档3030
Design Review设计复审(和同事审核设计文档)3030
Coding Standard代码规范10080
Design具体设计100150
Coding具体编码500800
Code Review代码复审3030
Test测试(自我测试,修改代码,提交修改)500300
Reporting报告10080
Test Reporting测试报告3030
Size Measurement计算工作量3080
Postmortern & Process Improvement Plan事后总结,并提出过程改进计划20003000
任务三:完成任务2项目开发,将项目源码的完整工程文件提交到本人注册Github账号的项目仓库中

7.总结思考

本次实验其实不难,但是对我来说我是基础知识没掌握牢固,再加上平时不做项目,不进行开发,所以所有的知识点都显得特别生涩,功能想得出来,可是没办法实现,不知道该从何查起,但是这几天的学习加起来,收获还是有的。开发项目的时候采用《构建之法》里面的PSP流程,主要帮助我的时间管理方面,后续会一直采用这个方式进行学习。

原文地址:https://www.cnblogs.com/fzx201626/p/12504919.html