201771030110-李松谕 实验二 个人项目—《西北师范大学学生疫情上报系统》项目报告
项目 | 内容 |
---|---|
课程班级博客链接 | 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/Unicorn-snow/StudySystem |
实验内容:
任务一:陈述学生疫情每日上报子系统使用体验
(1)系统刚开始使用的时候问题比较多,第一天使用出现崩溃现象,致使许多同学未能打卡成功,第二天便做出改善;
(2)刚开始,系统没有对于前一天打卡信息的记录功能,这给许多信息未出现更改的同学带来些许不便,后来也已做出修改;
(3)地理位置信息的采集可以采取定位方式,这样不仅可以更方便的收集大家的位置信息,也能够在一定程度上避免同学们虚报、瞒报的现象;
(4)界面比较简洁但是并不美观,可以稍作修改;
(5)系统打卡可加入定时提醒功能,以此帮助同学们尽量不错过打卡时间;
任务二:总结详细阅读《构建之法》第1-2章、结合第2章2.3节所述PSP流程,开发一款你自己心目中的西北师范大学学生疫情每日填报系统
我选择的是第二类发开发要求:
1. 系统可采集学生疫情有效信息;
2. 系统支持用户在线使用;
3. 每日只可填报一次,提交后无法修改,每日十点疫情信息填报截止;
4. 各学院指定负责人登录系统,可查看本学院学生填报的汇总数据,可点击查看学生联系方式、班主任联系方式,学院负责人核实本院所有学生数据后,将数据提交给学校防控办;
5. 学校防控办指定负责人登录《西北师范大学疫情防控信息统计》子系统,可浏览所有学生填报汇总数据清单,通过【导出】可获取疫情数据的EXCEL文件。
1.需求分析
2019年12月末,中国武汉发生新型冠状病毒(2019-nCoV) 感染的肺炎疫情,为遏制疫情蔓延,有效切断病毒传播途径,在中央政府指导下,各级政府部分采取了一系列防控措施: 2020年1 月23 日10时起对武汉“封城”,全国 31个省市也相继实施了严格的防控措施;全国各省市向武汉和湖北派遣医疗队参与救治工作;在全国范围内调配口罩、防护服、药品等急需的医疗资源支援武汉;指导和督促全国范围内拥有医疗物资生产资质的企业尽快恢复生产能力;定向拨付专项财政资金用于疾病防控;从其他省份调集物资保障武汉市民日常生活。
值得一提的是,中国互联网企业在此次疫情防控中发挥了社会治理方面的重要作用。以腾讯为例,围绕应对疫情管控需求开发了十一款产品。其中疫情在线问诊功能,对于减少发热病人之间的相互交叉感染具有重要的作用,患者在家通过互联网向在线医生问诊,减少了病毒传播或感染的风险;谣言粉碎对于公众采取理性态度看待疫情的发展具有重要意义。滴滴出行还在武汉专门组建车队,服务于医护人员的通勤,这在实施交通管制的武汉具有重要作用。此外,还有新型肺炎确诊患者同行程查询工具,用户只需要输入自己所乘坐交通工具的时间和班次,就可以确认是否与被确诊感染者同行,提前做好自我隔离和就诊工作。在疫情防控中,中国互联网企业不仅发展壮大,在承担社会责任方面也越来越成熟。
为有效配合防控机构有关疫情信息的采集、统计与排查,我校开发了教职工/学生疫情上报系统,该系统由教职工疫情每日上报、学生疫情每日上报、二级部门疫情每日汇总表、疫情防控填报统计四个子系统组成。实现对我校各类人员基本情况、所在区域及活动轨迹及健康状况的信息收集。师生通过我校企业微信服务大厅访问该系统进行远程信息填报。
此次作业便是给我们一个理论与实际相结合,充分利用我们所学知识的大好机会,面对疫情,作为大学生的我们便可以利用专业优势,制作疫情上报系统,贡献自己绵薄之力,方便防控机构对疫情相关信息进行采集、统计和排查。
2.功能设计
(1)基本功能:
a. 实现有效学籍学生以及教职工的系统登录功能;
b. 实现了用户的疫情上报功能;
c. 实现管理员对于疫情上报信息的查阅、添加、删除、修改功能;
(2)扩展功能:
a. 实现学生基本信息管理部分的功能;
b. 在疫情上报系统的基础上增加了健康信息核对及出入申请的系统;
c. 用户可以根据个人需要查询本人健康信息;
d. 已经实现的所有系统,均已实现“高级查询”功能。
3.设计实现:
(1)整体设计:
(2)程序设计:
我一共用到五个package,其中每部分与各自系统对应,并与相应的数据库相对应;
- com.nwnu.g是个人信息的管理部分;
其中包含的各个类分别对应关于个人信息的基本操作; - com.nwnu.health是健康信息系统部分;
其中包含的各个类分别对应关于个人信息的添加和查询操作; - com.nwnu.sign是疫情上报系统部分;
其中包含的类是对于疫情信息的上报、高级查询以及信息统计功能的实现; - com.nwnu.student是学生管理系统部分;
其中包含的类是对于学生信息的添加、删除、修改、高级查询功能的实现; - com.nwnu.pojo是关于对系统的基本操作所构成的包;
其中CommFrame.java是对于图形用户界面的大致框架的描述;
LLogin.java是数据库连接以及用户登录界面的实现;
Insert.java、Delete.java、Update.java分别是对数据进行增加、删除和更新操作的具体执行部分;
Query.java、Search.java是对数据进行查操作的具体执行部分;
(3)数据库设计:
与系统程序设计相对应,数据库中,我主要设计了4张表,分别是:health(健康状况及人员流动表)、login(登录信息表)、sign(疫情上报情况表)和stu(学生基本信息表),其中stu表中的信息和login表中的信息可以从教务处获取,我这里进行举例测试。
①stu表(学号,姓名,性别,年龄,专业,年级)
②login表(name、pwd)
③health表(学号、姓名、体温、当前健康状况、是否进行今日疫情上报、出发日期、出发地、目的地)
④sign表(学号、姓名、填报时间、所在地、是否为武汉籍学生、[是否为湖北省(不含武汉)籍学生]、是否与疫区人员接触过、是否在武汉、是否今日返校、是否为留校中国学生)
(4)重要函数:
①数据库的连接部分,如果数据库连接失败,那么后续操作则将不复存在;
②系统登录部分,如果系统登录失败,后面的内容也无法开展;
③数据的高级查找部分,为了方便数据的管理,对数据进行高级查找是至关重要的。
4.测试运行:
(1)登录部分
登录成功界面
(2)疫情上报部分
①用户打卡:
可以发现,“熊大”已经打卡成功
②高级查找:
③信息统计:
(3)健康系统:
①信息添加:
②高级查找:
(4)学生信息管理系统:
①浏览全部信息部分:
②删除信息操作:
可以发现学号为001的“熊大”的信息已经被成功删除;
③添加信息操作:
可以发现我们已经把“熊大”的信息成功加入系统
④高级查询:
5.关键代码:
public void actionPerformed(ActionEvent e){
String name,pwd;
name=nameField.getText();
pwd=pwdField.getText();
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //加载数据库驱动
}
catch(ClassNotFoundException ex){
System.out.println(ex);
}
try{
Connection con;
Statement sql;
ResultSet rs;
String url,userName,userPwd;
// 连接数据库的语句
url="jdbc:sqlserver://localhost:1433;DatabaseName=Student";
userName="sa"; //用户
userPwd="123456"; //密码
con=DriverManager.getConnection(url,userName,userPwd);
sql=con.createStatement();
rs=sql.executeQuery("select * from login where name ='"+name+"' and pwd='"+pwd+"'"); //查询语句
int q=0;
while(rs.next()){
q++;
}
if(q>0){ //登录成功
JOptionPane.showMessageDialog(this, "登录成功!","消息对话框",JOptionPane.WARNING_MESSAGE);
this.dispose();
new CommFrame();
}
else //登录失败
JOptionPane.showMessageDialog(this, "账号或者密码错误!","消息对话框",JOptionPane.WARNING_MESSAGE);
}
catch(SQLException exp){
System.out.println(exp);
}
}
}
6.总结:
模块化设计,简单地说就是程序的编写不是开始就逐条录入计算机语句和指令,而是首先用主程序、子程序、子过程等框架把软件的主要结构和流程描述出来,并定义和调试好各个框架之间的输入、输出链接关系。我将项目下面构建了五个package,每个package之间互相连接,共同构成系统。模块化设计把一个多功能的复杂的程序划分为若干个简单的、功能单一的程序模块更加方便我们进行管理,有利于程序的设计和调试,我想如果是大项目的话也会有利于团队成员分工和程序的优化,在一定程度上也提高了我们程序的阅读性和可靠性,使得程序层次一目了然。
7.PSP展示
PSP2.1 | 任务内容 | 计划完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 8 | 5 |
· Estimate | 估计这个任务需要多 少时间,并规划大致 工作步骤 |
8 | 5 |
Development | 开发 | 390 | 570 |
·· Analysis | 需求分析 (包括学习 新技术) |
30 | 50 |
· Design Spec | 生成设计文档 | 20 | 30 |
· Design Review | 设计复审 (和同学审 核设计文档) |
0 | 60 |
· Coding Standard | 代码规范 (为目前的 开发制定合适的规范) |
10 | 20 |
· Design | 具体设计 | 40 | 30 |
· Coding | 具体编码 | 240 | 300 |
· Code Review | 代码复审 | 30 | 30 |
· Test | 测试(自我测试, 修改代码,提交修改) |
20 | 40 |
Reporting | 报告 | 40 | 50 |
·· Test Report | 测试报告 | 10 | 20 |
· Size Measurement | 计算工作量 | 10 | 10 |
· Postmortem & Process Improvement Plan |
事后总结 ,并提出过 程改进计划 |
20 | 20 |
这应该算是真正意义上第一次独立完成的Java项目,虽然有很多不足之处,但是我相信在有了这“第一次”的积淀之后,以后会越做越好,我的主要感受主要包括以下几个方面: | |||
(1)首先,作为计算机专业的大学生,我们不应该“畏难主义”,要懂得挑战自己,当我们真正完成一些看起来本不能完成的项目的时候,才会感受到成就感,以此激励自己不断进步,不能一直生活在自己的舒适圈里,要勇于挑战。也许许多老师或者同学可能会觉得我说的有点夸张,觉得这个项目很简单,但是对我来说就是一个全新的挑战,新的起点; | |||
(2)也许是因为编程不足导致编程能力薄弱,我在做这个项目的时候出现了许多很基本的错误,今后还是应该多加锻炼,尽可能提升自己的编程能力。 |
任务三:完成任务2项目开发,将项目源码的完整工程文件提交到本人注册Github账号的项目仓库中
已将GitHub上传,数据点这,如何上传的小笔记点这里