20177110117-马兴德 实验二 个人项目—《西北师范大学学生疫情上报系统》项目报告

项目 内容
课程班级博客链接 https://www.cnblogs.com/nwnu-daizh/
这个作业要求链接 https://www.cnblogs.com/nwnu-daizh/p/12369881.html
我的课程学习目标 (1)掌握软件项目个人开发流程;
(2)掌握Github发布软件项目的操作方法;
作业在哪些方面帮助我实现学习目标
(1)能够锻炼独立开发项目的能力;
(2)学会用多种形式解决一种问题;
(3)能够帮助我将所学的理论知识运用到实践当中
项目Github的仓库链接地址 https://github.com/mxd791683057/student_system

实验内容:

任务一:陈述学生疫情每日上报子系统使用体验

 由于疫情上报系统是为本次疫情服务所开发的一款软件,所以在刚开始用的时候由于人数过多出现了崩溃现象,导致许多同学没有打卡成功;后来再经过修改之后软件可以正常运行,但在当时我们在第二天上报的时候所有的信息都没有保存,需要重新填写,这也浪费了一些时间,但在后来这些都得到了改善,但是现在还有一点就是,每天的上报时间是早上九点到十点,所以我觉得这个软件应该设定一个定时器,提醒那些忘记打卡的同学,我觉得这是很重要的,最后就是界面了,我觉得在那个基础上还可以再进一步做修改。

任务二:总结详细阅读《构建之法》第1-2章、结合第2章2.3节所述PSP流程,开发一款你自己心目中的西北师范大学学生疫情每日填报系统

可在以下两个项目开发要求中任意选择一个自己喜欢的开发项目开发

第一类开发要求

  有一个数据文件,保存了100天 2000 个教职工/学生的所有防疫信息,请设计一个命令行程序, 支持查询某人在某一天的疫情情况, 查询某种数据的周/月的疫情统计情况,并用柱状图显示统计结果。

第二类开发要求

  1. 系统可采集学生疫情有效信息;
  2. 系统支持用户在线使用;
  3. 每日只可填报一次,提交后无法修改,每日十点疫情信息填报截止;
  4. 各学院指定负责人登录系统,可查看本学院学生填报的汇总数据,可点击查看学生联系方式、班主任联系方式,学院负责人核实本院所有学生数据后,将数据提交给学校防控办;
  5. 学校防控办指定负责人登录《西北师范大学疫情防控信息统计》子系统,可浏览所有学生填报汇总数据清单,通过【导出】可获取疫情数据的EXCEL文件。
  我选择的是第二类发开发要求

1.项目开发背景简介

  2019年12月末,中国武汉发生新型冠状病毒(2019-nCoV) 感染的肺炎疫情,为遏制疫情蔓延,有效切断病毒传播途径,在中央政府指导下,各级政府部分采取了一系列防控措施: 2020年1 月23 日10时起对武汉“封城”,全国 31个省市也相继实施了严格的防控措施;全国各省市向武汉和湖北派遣医疗队参与救治工作;在全国范围内调配口罩、防护服、药品等急需的医疗资源支援武汉;指导和督促全国范围内拥有医疗物资生产资质的企业尽快恢复生产能力;定向拨付专项财政资金用于疾病防控;从其他省份调集物资保障武汉市民日常生活。
  值得一提的是,中国互联网企业在此次疫情防控中发挥了社会治理方面的重要作用。以腾讯为例,围绕应对疫情管控需求开发了十一款产品。其中疫情在线问诊功能,对于减少发热病人之间的相互交叉感染具有重要的作用,患者在家通过互联网向在线医生问诊,减少了病毒传播或感染的风险;谣言粉碎对于公众采取理性态度看待疫情的发展具有重要意义。滴滴出行还在武汉专门组建车队,服务于医护人员的通勤,这在实施交通管制的武汉具有重要作用。此外,还有新型肺炎确诊患者同行程查询工具,用户只需要输入自己所乘坐交通工具的时间和班次,就可以确认是否与被确诊感染者同行,提前做好自我隔离和就诊工作。在疫情防控中,中国互联网企业不仅发展壮大,在承担社会责任方面也越来越成熟。
  为有效配合防控机构有关疫情信息的采集、统计与排查,我校开发了教职工/学生疫情上报系统,该系统由教职工疫情每日上报、学生疫情每日上报、二级部门疫情每日汇总表、疫情防控填报统计四个子系统组成。实现对我校各类人员基本情况、所在区域及活动轨迹及健康状况的信息收集。师生通过我校企业微信服务大厅访问该系统进行远程信息填报

2.需求分析

  (1)在疫情期间,为了有效了解到学生老师的健康情况,开发一款能够被同学老师所使用的软件,进行每天的健康信息签到;
  (2)在校师生可以使用此软件来进行健康信息签到,同时学校主管也可以使用此软件统计所有学生的信息,以便上报给学校疫情防控中心;
  (3)因为要进行数据的存储,所以我们要用MySql数据库保存师生的信息,还有一点就是师生还要在这个软件上面签到,可能需要进行信息的修改,所以用Mysql创建数据库也是很方便让学生修改自己的信息;
  (4)因为之前学过许多开发语言,但是在这个软件需要设计GUI设计界面,而且我对java开发GUI设计界面也是更为熟练,所以选择java语言,这样也便于用户操作。

3.功能设计

(1)基本功能

  - 实现用户的疫情上报功能
  - 实现在校师生的登录功能,并且有效填报自己的信息的功能
  - 实现管理员对我校师生的情况做统计以便上报

(2)扩展功能

  - 舍弃以前的命令行格式,采用GUI设计界面,不但方便,而且看起来效果更好
  - 学生可以登录自己账号密码登记自己的信息,同时也可以登录自己专属账号查询自己信息是否与之前填的无误
  - 管理员有自己登录账号,同时学生和老师也有自己的登录窗口随时查看自己信息
  - 管理员可以查询全部学生的信息,同时也可以采用高级查询功能,查询单个学生的信息
  - 学生如果忘记签到,可以在后续的查询自己信息当中说明自己没有签到的原因

4.设计实现

(1)代码设计实现

  首先在Eclipse上会建立一个项目,然后建一个包,分别新建五个类,每一个都有其对应的涉及功能实现

  • admin_listener
      主要就是学生的一些基本信息的添加以及学校管理员的信息统计的设计,这里都会有添加、修改、删除等操作。
  • admin
      这个界面主要是用来设计一个登录成功以及进入的GUI设计界面,主要包括登录窗口,登录成功后的学生的个人信息、地址信息、健康信息以及签到信息等界面的相关操作。
  • connect
      这个就是最重要的也是最基本的一个,就是涉及GUI界面与后台数据库连接的一部分,只有连接成功才可以进行一些相关的操作
  • login
      这是登录窗口与数据库相连接的一部分,如果连接成功会显示连接成功,否则显示用户名或密码输入错误
  • user_listener
      这是登录成功进入管理员界面和师生界面会添加一些信息的操作
  • user
      在这个里面学生可以更加详细的查询到自己信息

(2)数据库设计实现

  在系统的框架基本搭建好之后,紧接着创建数据库,在这儿我创建了五个数据库,分别是Site(地址)、student表(学生基本信息表)、Position表(学校管理员表)、Health表(记录学生的健康信息)和Sign表(学生签到详细信息表)
  Site表

  Student表

  Position表

  Health表

  Sign表

5.测试运行

基本功能

  • 登陆部分
      登录窗口

      如果用户账号与密码都正确则会进入下一个页面,反之显示登录不成功
  • 学生基本信息

      如果管理员登录自己账号则可以查询到学生的基本信息,反之学生登录账号,可以添加自己的信息进行签到,也可以修改自己的信息
      - 管理员可以查询所有学生信息

      - 同时学生也可以添加自己信息并且可以进行修改

      我们看到信息添加成功,然后去数据库查找也是成功的
  • 学生地址信息
  • 和学生基本信息一样,管理员和学生拥有自己账号都可以进行类似的操作(下面的操作是一样的,直接展示结果)
  • 学生添加信息成功,也可以修改信息

  • 学生健康状况
  • 学生签到情况

      - 如果当天已经签到,再次签到也会显示当天已经签到

扩展功能

  • 学生登录自己的专属窗口查询自己的签到信息


6.代码展示

package pkh;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class connect {

	Connection conn;
    Statement st;

    private static String driverStr = "com.microsoft.sqlserver.jdbc.SQLServerDriver";//显示加载数据库成功
    private static String connStr = "jdbc:sqlserver://localhost:1433; DatabaseName=人事管理系统";
    private static String dbusername = "sa";//数据库用户名
    private static String dbpassword = "mxd980302";//登录数据库的密码
    
    public connect(){}
	
	/* 获取数据库连接的函数*/
	public static Connection getConnection() {
		Connection con = null;	//创建用于连接数据库的Connection对象
		try {
			Class.forName(driverStr);// 加载sql server数据驱动
		//	System.out.println("ok");
			con = DriverManager.getConnection(
					connStr,dbusername,dbpassword);// 创建数据连接
			
		} catch (Exception e) {
			System.out.println("数据库连接失败" + e.getMessage());
		}
		return con;	//返回所建立的数据库连接
	}

}

7.总结

  通过本次项目的学习,我对PSP的重要性有了更进一步的认识,制定详细的计划也有利于自己的开发,同时在此过程中我对之前学过的Sql语句也进行了一些复习,但是在此项目的过程中还有一点就是因为个人能力问题在到处数据生成excel时还有点问题,我会在后续的学习过程当中将这一部分实现出来,生成完整的软件。

8.展示PSP

PSP2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 30 25
·  Estimate 估计这个任务需要多
少时间,并规划大致
工作步骤
30 25
Development 开发 720 930
··  Analysis 需求分析 (包括学习
新技术)
60 55
·  Design Spec 生成设计文档 30 30
·  Design Review 设计复审 (和同学审
核设计文档)
0 30
·  Coding Standard 代码规范 (为目前的
开发制定合适的规范)
10 20
·  Design 具体设计 260 240
·  Coding 具体编码 300 400
·  Code Review 代码复审 50 45
·  Test 测试(自我测试,
修改代码,提交修改)
40 60
Reporting 报告 120 150
··  Test Report 测试报告 30 20
·  Size Measurement 计算工作量 30 30
·  Postmortem &
Process Improvement Plan
事后总结 ,并提出过
程改进计划
30 40

  在开发项目过程中最大的就是埃及有些原先设定的时间和自己实行的时间有些相差有点大,后来看了自己的报告之后最大的问题就是自己的编程能力还是相对来说比较薄弱,在实际的开发项目过程当中遇到了许多问题,有些是知识点忘记了,有些是没学习国需要自己去自学一遍,所以给自己带来了一些困扰,我总结出以下几点:
(1)首先,当有项目任务的时候我们不应该胆怯,而应该去积极的查阅资料,完成自己所要完成的任务;
(2)在做项目的过程当中不应该眼高手低,之所以我会浪费许多时间就是因为我自己认为我知道知识点,可是真正用到的时候我才发现自己已经忘记了,还需要重新查阅资料,所以浪费了许多时间;

任务三:完成任务2项目开发,将项目源码的完整工程文件提交到本人注册Github账号的项目仓库中

  已将GitHub上传,点击这里可以查看

原文地址:https://www.cnblogs.com/791683057mxd/p/12499686.html