实验二 个人项目-《西北师范大学学生疫情上报系统》项目报告
项目 | 内容 |
---|---|
课程班级博客 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE |
作业要求 | https://www.cnblogs.com/nwnu-daizh/p/12416880.html |
课程学习目标 | 掌握软件项目个人开发流程PSP,学会在github上进行代码托管 |
本次在哪些方面帮助我实现学习目标 | 掌握了PSP流程,学会了github托管项目的流程 |
项目的Github仓库链接 | https://github.com/dihuidihui/text2.git |
任务一:陈述学生疫情每日上报子系统使用体验
刚开始使用这个系统的时候,由于同一时段使用人数太多,导致网络卡顿,系统进不去,但是之后系统被完善后就好多了,刚开始几天,每次都有重新填入信息,很麻烦,但是之后的系统保存了之前填入的信息,再上报信息时就方便多了。
实验内容
任务二:
1 开发要求
选择一类开发要求完成项目。
第一类开发要求
有一个数据文件,保存了100天 2000 个教职工/学生的所有防疫信息,请设计一个命令行程序, 支持查询某人在某一天的疫情情况, 查询某种数据的周/月的疫情统计情况,并用柱状图显示统计结果。
第二类开发要求
- 系统可采集学生疫情有效信息;
- 系统支持用户在线使用;
- 每日只可填报一次,提交后无法修改,每日十点疫情信息填报截止;
- 各学院指定负责人登录系统,可查看本学院学生填报的汇总数据,可点击查看学生联系方式、班主任联系方式,学院负责人核实本院所有学生数据后,将数据提交给学校防控办;
- 学校防控办指定负责人登录《西北师范大学疫情防控信息统计》子系统,可浏览所有学生填报汇总数据清单,通过【导出】可获取疫情数据的EXCEL文件。
我选择第一类开发要求
3 需求分析
2019年12月末,中国武汉发生新型冠状病毒(2019-nCoV) 感染的肺炎疫情,为遏制疫情蔓延,有效切断病毒传播途径,在中央政府指导下,各级政府部分采取了一系列防控措施: 2020年1 月23 日10时起对武汉“封城”,全国 31个省市也相继实施了严格的防控措施;全国各省市向武汉和湖北派遣医疗队参与救治工作;在全国范围内调配口罩、防护服、药品等急需的医疗资源支援武汉;指导和督促全国范围内拥有医疗物资生产资质的企业尽快恢复生产能力;定向拨付专项财政资金用于疾病防控;从其他省份调集物资保障武汉市民日常生活。
值得一提的是,中国互联网企业在此次疫情防控中发挥了社会治理方面的重要作用。以腾讯为例,围绕应对疫情管控需求开发了十一款产品。其中疫情在线问诊功能,对于减少发热病人之间的相互交叉感染具有重要的作用,患者在家通过互联网向在线医生问诊,减少了病毒传播或感染的风险;谣言粉碎对于公众采取理性态度看待疫情的发展具有重要意义。滴滴出行还在武汉专门组建车队,服务于医护人员的通勤,这在实施交通管制的武汉具有重要作用。此外,还有新型肺炎确诊患者同行程查询工具,用户只需要输入自己所乘坐交通工具的时间和班次,就可以确认是否与被确诊感染者同行,提前做好自我隔离和就诊工作。在疫情防控中,中国互联网企业不仅发展壮大,在承担社会责任方面也越来越成熟。
为有效配合防控机构有关疫情信息的采集、统计与排查,我校开发了教职工/学生疫情上报系统,该系统由教职工疫情每日上报、学生疫情每日上报、二级部门疫情每日汇总表、疫情防控填报统计四个子系统组成。实现对我校各类人员基本情况、所在区域及活动轨迹及健康状况的信息收集。师生通过我校企业微信服务大厅访问该系统进行远程信息填报。
4 功能设计
此系统包括从原始数据中读入数据,进行查询、增加、删除,还对疫情的相关问题进行打分,此系统设置了三个问题:所在地是否在湖北、是否发烧、是否去过湖北(除是居住地外),是为0分,否为30分,统计健康指数,健康指数有相应等级,对健康指数的最高分和最低分进行统计,最后将修改后的数据导入到文件中。由于电脑原因,CPU调用满了,函数调用有点问题,又闪退的情况,也没有实现柱状图的功能,系统不够完善,之后会再增加。
5 测试运行
这是系统初始界面
这是菜单栏
这是浏览疫情上报信息
查询信息
查看健康指数等级
查看健康指数的最高分和最低分
将修改的数据存在新的文件中:
存在文件中的健康指数等级
存在文件中的修改后的数据:
6 主要代码
此处的代码是查询函数的代码
void locatename(struct student *head) //查询信息
{
struct student *p , *q;
char name[20];
printf("
请输入要查询学生的姓名:");
scanf("%s",name);
p = head;
q = p->next;
if(strcmp(name,p->name)==0)
{
printf("
学号 姓名 所在地是否在湖北 是否发烧 是否去过湖北(除是居住地) 排名
");
printf( "%ld %s %.2f %.2f %.2f %.2f %3d
" ,p->num,p->name, p->s1, p->s2, p->s3 , p->sum ,p->rank );
}
else
{
while(q && (strcmp(q->name,name)!=0))
{
q = q->next;
}
if(q)
{
printf("查询的信息为:
");
printf("学号 姓名 所在地是否在湖北 是否发烧 是否去过湖北(除是居住地) 排名
");
printf( "%ld %s %.2f %.2f %.2f %.2f %3d
" ,q->num,q->name, q->s1, q->s2, q->s3 , q->sum ,q->rank );
}
else
{
printf("没有%s学生
",name);
}
}
}
void locatenum(struct student *head) //查询信息
{
struct student *p , *q;
long num;
printf("
请输入要查询学生的学号:");
scanf("%d",&num);
fflush(stdin);
p = head;
q = p->next;
if( p->num == num )
{
printf("
学号 姓名 所在地是否在湖北 是否发烧 是否去过湖北(除是居住地) 排名
");
printf( "%ld %s %.2f %.2f %.2f %.2f %3d
" ,p->num,p->name, p->s1, p->s2, p->s3 , p->sum ,p->rank );
}
else
{
while(q && q->num != num )
{
q = q->next;
}
if(q)
{
printf("查询的信息为:
");
printf("学号 姓名 所在地是否在湖北 是否发烧 是否去过湖北(除是居住地) 健康指数 排名
");
printf( "%ld %s %.2f %.2f %.2f %.2f %3d
" ,q->num,q->name, q->s1, q->s2, q->s3 , q->sum ,q->rank );
}
else
{
printf("没有该学生,请重新输入
");
}
}
}
7 总结
通过做此次实验,我意识到自己在编程和做项目方面有很大不足,这个系统也完成的不是很好,但收获还是有的。此次实验我也体会到了PSP的好处,在之后的学习中也会用到它。
8 PSP展示
PSP | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 15 | 25 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 10 | 15 |
Development | 开发 | 500 | 900 |
Analysis | 需求分析(包括学习新技术) | 30 | 100 |
Design Spec | 生成设计文档 | 20 | 30 |
Design Review | 设计复审(和同事审核设计文档) | 无 | 无 |
Coding Standard | 代码规范(为目前的开发制定合适的规范) | 15 | 30 |
Design | 具体设计 | 35 | 120 |
Coding | 具体编码 | 400 | 450 |
Coding Review | 代码复审 | 40 | 50 |
Test | 测试(自我测试、修改代码、提交修改) | 50 | 120 |
Reporting | 报告 | 80 | 100 |
Test Report | 测试报告 | 30 | 50 |
Size Measurement | 计算工作量 | 10 | 20 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 20 | 30 |