项目 | 内容 |
---|---|
课程班级博客链接 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE |
作业要求链接 | https://www.cnblogs.com/nwnu-daizh/p/12416880.html |
课程学习目标 | (1)掌握软件项目个人开发流程;(2)掌握Github发布软件项目的操作方法; |
这个作业在哪些方面帮助我实现学习目标 | (2)在githup的使用上;(2)在软件开发的实践上 |
项目githup的仓库地址链接 | https://github.com/980303/xiaochen |
任务一:陈述学生疫情每日上报子系统使用体验:
(1)学校开发疫情上报系统之初的情况是比较匆忙的,所以开发出来的系统对老师和学生来说肯定体验感不是很好,比如每天要填写相当一部分重复信息,感觉没有必要。但是在使用过程中学校也在不断完善和改进系统功能,前一天填写的内容可以保存到第二天,再次填写是只需要先写应该变更的地方;而且一开始的时候系统比较脆弱,经常会因为使用人数过多而崩掉,系统无法打开,这个问题后期也得到了解决;目前个人认为系统还可以完善的地方时可以添加一个提醒用户填写的功能,提醒用户每日上报疫情。
(2)个人认为学校开发的疫情上报系统最大的优点是对权限的控制,教职工、学生和系统管理员从不同的入口进入程序,普通用户不能进入疫情汇总入口,系统和开发者在开发系统的过程中不能把保证系统安全的任务交给用户,而是应该对用户的输入保持谨慎,设置边界值,这样可以最大限度的避免用户输入对系统的威胁。
任务二:总结详细阅读《构建之法》第1-2章、结合第2章2.3节所述PSP流程,开发一款你自己心目中的西北师范大学学生疫情每日填报系统。
- 在以下两类开发要求选择一种完成项目开发任务:
第一类开发要求:
有一个数据文件,保存了100天 2000 个教职工/学生的所有防疫信息,请设计一个命令行程序, 支持查询某人在某一天的疫情情况, 查询某种数据的周/月的疫情统计情况,并用柱状图显示统计结果。
第二类开发要求:
- 系统可采集学生疫情有效信息;
- 系统支持用户在线使用;
- 每日只可填报一次,提交后无法修改,每日十点疫情信息填报截止;
- 各学院指定负责人登录系统,可查看本学院学生填报的汇总数据,可点击查看学生联系方式、班主任联系方式,学院负责人核实本院所有学生数据后,将数据提交给学校防控办;
- 学校防控办指定负责人登录《西北师范大学疫情防控信息统计》子系统,可浏览所有学生填报汇总数据清单,通过【导出】可获取疫情数据的EXCEL文件。
需求分析:
2019年12月末,中国武汉发生新型冠状病毒(2019-nCoV) 感染的肺炎疫情,为遏制疫情蔓延,有效切断病毒传播途径,在中央政府指导下,各级政府部分采取了一系列防控措施: 2020年1 月23 日10时起对武汉“封城”,全国 31个省市也相继实施了严格的防控措施;全国各省市向武汉和湖北派遣医疗队参与救治工作;在全国范围内调配口罩、防护服、药品等急需的医疗资源支援武汉;指导和督促全国范围内拥有医疗物资生产资质的企业尽快恢复生产能力;定向拨付专项财政资金用于疾病防控;从其他省份调集物资保障武汉市民日常生活。
可以看到的是,目前我们能接触到的平台基本都嵌入了与疫情相关的的功能,但是各个平台的侧重点又有所不同。例如微博战疫打卡、微信城市服务每日播报当地疫情,提供疫情线索征集和疫情防控行程查询平台等。这些平台对于疫情辟谣、播报,增强社会信心无疑是非常重要的。中国疫情能在较短的时期内得到控制,除了政府决策果断之外,全民高度配合也是非常重要的。
综上所述,在目前这样的背景之下,开发一个疫情上报系统,可以获取到最直观的数据,这不仅有利于我们对当下社会疫情的分析和判断,帮助我们做出相关的决策,同时获取到的这些数据页能用在医学研究团队对病毒的分析和疫苗的研制上面。可以帮助我们最大限度的从面对病毒无从下手的情况中解脱出来。因此,开发疫情信息采集系统是非常有必要的。
功能设计:
- 实现在校师生的登录功能,用户拥有自己的账号,登录输入错误则无法进入系统。
- 实现用户的疫情上报功能,用户每日进入系统之后点击疫情信息管理菜单,即可进行信息录入。
- 管理员可使用自己的账号进入系统,对系统信息进行处理,例如按照固定条件查询疫情信息,例如某位学生的上报信息或某一天所有学生的信息。
- 使用GUI界面设计,方便用户填写。
设计实现:
系统主要分为两个子模块,分别是学生信息管理系统和疫情上报系统。通过个人账号登录进入系统之后即可选择进入信息管理或是疫情上报系统。进入后即可进行信息的浏览,查询,增添,修改和删除。由于基本功能比较相似,所以编码阶段是在学生信息管理系统基础上进行编程的。系统没有实现的部分是对权限的控制,即所有的用户以相同的方式登陆进入系统,都可以看到两个子模块并进入模块,进行修改。并不安全。
测试运行:
- 登录界面:
- 管理员添加学生数据以及学生进行个人疫情数据添加界面
;
- 按照学号找到某学生的疫情填报数据
; - 数据库包含三张表,分别存放登录者账号,学生基本信息以及学生上报疫情数据。其中学生疫情上报数据中包含3月3日和3月4日两天的数据。
; - 柱状图:
代码部分:
下面是用户进行疫情上报的代码块
package 疫情;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import 疫情.Query;
public class Insert_message extends JPanel implements ActionListener{
Box box1,box2,baseBox;
Query query;
JButton button;
JTextField field[]=null;
String a[]=null;
int n,mark;
Insert insert1;
String tableName;
Insert_message(){
query=new Query();
setBackground(Color.white);
query.setTableName("message");
a=query.getField();
box1=Box.createVerticalBox();
box2=Box.createVerticalBox();
n=a.length;
field =new JTextField[n];
for(int i=0;i<n;i++){
field[i]=new JTextField(10);
if(a[i].equals("学号")==true)
box1.add(new JLabel(a[i]));
else
box1.add(new JLabel(a[i]));
box1.add(Box.createVerticalStrut(8));
box2.add(field[i]);
box2.add(Box.createVerticalStrut(8));
}
box1.add(new JLabel(" 单击添加"));
button=new JButton("添加");
button.addActionListener(this);
box2.add(button);
baseBox=Box.createHorizontalBox();
baseBox.add(box1);
baseBox.add(Box.createHorizontalStrut(8));
baseBox.add(box2);
add(baseBox);
}
public void actionPerformed(ActionEvent e){
int i;
for(i=0;i<n;i++){
if(field[i].getText().toString().equals("")==true){
JOptionPane.showMessageDialog(this, "必须全部填写","消息对话框",JOptionPane.WARNING_MESSAGE);
break;
}
if(a[i].equals("学号")==true){
mark=i;
}
}
if(i==n){
Insert insert=new Insert();
insert.setTableName("message");
insert.setField(field);
insert.setA(a);
insert.Execute_Insert(mark);
}
}
}
任务三:完成任务2项目开发,将项目源码的完整工程文件提交到本人注册Github账号的项目仓库中。
实在不好意思,错了一个字,发现的时候已经没法改正了。
总结:
本次实验开发中,我首先遇到的问题就是数据库的连接,上次数据库小组课程设计的时候我们组就因为数据库的连接反复失败。在个人开发中我依然第一个就卡在了数据库连接的点。随后在编写代码的时候由于系统设计做的不好,导致代码写了一半开始写不下去,最后在已有的一个小型系统上面进行修改完成项目。编程能力差和基础配置的不熟悉浪费了我很多的时间。例如jar包版本不对导致程序无法运行等问题。最后因为个人能力问题,将数据生成Excel以及控制每一天只能填写一次的功能没有完成。
PSP | 内容 | 计划完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 20 | 20 |
*Estimate | 预计开发时长,规划大致工作步骤 | 60 | 60 |
Development | 开发 | 1150 | 4320 |
*Analysis | 需求分析 (包括学习新技术) | 120 | 120 |
*Design Spec | 生成设计文档 | 30 | 40 |
*Design Review | 设计复审 (和同学审核设计文档) | 0 | 0 |
*Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 40 | 40 |
*Design | 具体设计 | 120 | 300 |
*Coding | 具体编码 | 500 | 1500 |
*Code Review | 代码复审 | 60 | 60 |
*Test | 测试(自我测试,修改代码,提交修改) | 60 | 80 |
*Reporting | 报告 | 60 | 180 |
*Test Report | 测试报告 | 40 | 30 |
*Size Measurement | 计算工作量 | 40 | 40 |
*Postmortem & Process Improvement Plan | 事后总结 ,并提出过程改进计划 | 40 | 60 |