项目 | 内容 |
---|---|
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE |
这个作业的要求在哪里 | https://www.cnblogs.com/nwnu-daizh/p/12416880.html |
作业学习目标 | (1)掌握软件项目个人开发流程。(2)掌握Github发布软件项目的操作方法。 |
这个作业在哪些方面帮助我实现学习目标 | 这个作业让我了解了软件项目的开发流程 |
项目Github的仓库链接地址 | https://github.com/dalacao/text1.git |
任务一:陈述学生疫情每日上报子系统使用体验;
- 我对每日疫情上报系统的使用体验:
- 刚开始使用的时候觉得这个系统的设计的有些简洁;
- 这个系统没有提醒用户签到的功能,因为经常会忘记要签到;
- 后面经过改进以后不用每天都重新填写,它会保留之前的数据。
任务二:总结详细阅读《构建之法》第1-2章、结合第2章2.3节所述PSP流程,开发一款你自己心目中的西北师范大学学生疫情每日填报系统。
我选择了第一类进行开发:
第一类开发要求:
有一个数据文件,保存了100天 2000 个教职工/学生的所有防疫信息,请设计一个命令行程序,支持查询某人在某一天的疫情情况,查询某种数据的周/月的疫情统计情况,并用柱状图显示统计结果。
一、项目开发背景:
2019年12月末,中国武汉发生新型冠状病毒(2019-nCoV) 感染的肺炎疫情,为遏制疫情蔓延,有效切断病毒传播途径,在中央政府指导下,各级政府部分采取了一系列防控措施: 2020年1 月23 日10时起对武汉“封城”,全国 31个省市也相继实施了严格的防控措施;全国各省市向武汉和湖北派遣医疗队参与救治工作;在全国范围内调配口罩、防护服、药品等急需的医疗资源支援武汉;指导和督促全国范围内拥有医疗物资生产资质的企业尽快恢复生产能力;定向拨付专项财政资金用于疾病防控;从其他省份调集物资保障武汉市民日常生活。
值得一提的是,中国互联网企业在此次疫情防控中发挥了社会治理方面的重要作用。以腾讯为例,围绕应对疫情管控需求开发了十一款产品。其中疫情在线问诊功能,对于减少发热病人之间的相互交叉感染具有重要的作用,患者在家通过互联网向在线医生问诊,减少了病毒传播或感染的风险;谣言粉碎对于公众采取理性态度看待疫情的发展具有重要意义。滴滴出行还在武汉专门组建车队,服务于医护人员的通勤,这在实施交通管制的武汉具有重要作用。此外,还有新型肺炎确诊患者同行程查询工具,用户只需要输入自己所乘坐交通工具的时间和班次,就可以确认是否与被确诊感染者同行,提前做好自我隔离和就诊工作。在疫情防控中,中国互联网企业不仅发展壮大,在承担社会责任方面也越来越成熟。
为有效配合防控机构有关疫情信息的采集、统计与排查,我校开发了教职工/学生疫情上报系统,该系统由教职工疫情每日上报、学生疫情每日上报、二级部门疫情每日汇总表、疫情防控填报统计四个子系统组成。实现对我校各类人员基本情况、所在区域及活动轨迹及健康状况的信息收集。师生通过我校企业微信服务大厅访问该系统进行远程信息填报。
二、需求分析:
开发这个系统是为了有效配合防控机构有关疫情信息的采集、统计与排查。这个系统要支持查询某人在某一天的疫情情况,查询某种数据的周/月的疫情统计情况,并用柱状图显示统计结果。
三、功能设计:
-
基本功能:
(1)查询某人在某一天的疫情情况;
(2)查询某种数据的周/月的疫情统计情况;
(3)用柱状图显示统计结果。 -
扩展功能:
(1)对教职工、学生疫情信息的添加;
(2)对教职工、学生疫情信息的删除。
四、设计实现:
我用的是python语言实现的,刚开始我用的SQLserver数据库,但好像是我的配置的问题我数据库的连接一直有问题,我还没有改过来,所以这次就没用数据库。
五、测试运行:
- 添加信息:
- 查看信息:
- 修改信息:
- 删除信息:
- 查询信息:
- 退出系统:
五、代码展示:
、、、
while True:
showInfo()
# 提示用户选择功能
key = int(input("请选择功能(序号):"))
# 根据用户选择,完成相应功能
if key == 1:
print("您选择了添加学生信息功能")
name = input("请输入学生姓名:")
stuId = input("请输入学生学号(学号不可重复):")
college = input("请输入学生学院:")
address = input("请输入学生地址:")
time = input("请输入填报时间:")
healthy = input("请输入健康状况:")
# 验证学号是否唯一
i = 0
leap = 0
for temp in students:
if temp['id'] == stuId:
leap = 1
break
else:
i = i + 1
if leap == 1:
print("输入学生学号重复,添加失败!")
break
else:
# 定义一个字典,存放单个学生信息
stuInfo = {}
stuInfo['name'] = name
stuInfo['id'] = stuId
stuInfo['college'] = college
stuInfo['address'] = address
stuInfo['time'] = time
stuInfo['healthy'] = healthy
# 单个学生信息放入列表
students.append(stuInfo)
print("添加成功!")
elif key == 2:
print("您选择了删除学生功能")
delId = input("请输入要删除的学生学号:")
# i记录要删除的下标,leap为标志位,如果找到leap=1,否则为0
i = 0
leap = 0
for temp in students:
if temp['id'] == delId:
leap = 1
break
else:
i = i + 1
if leap == 0:
print("没有此学生学号,删除失败!")
else:
del students[i]
print("删除成功!")
elif key == 3:
print("您选择了修改学生信息功能")
alterId = input("请输入你要修改学生的学号:")
# 检测是否有此学号,然后进行修改信息
i = 0
leap = 0
for temp in students:
if temp['id'] == alterId:
leap = 1
break
else:
i = i + 1
if leap == 1:
while True:
alterNum = int(input(" 1.修改学号
2.修改姓名
3.修改学院
4.修改地址
5.修改填报时间
6.修改健康状况
7.退出修改
"))
if alterNum == 1:
newId = input("输入更改后的学号:")
# 修改后的学号要验证是否唯一
i = 0
leap1 = 0
for temp1 in students:
if temp1['id'] == newId:
leap1 = 1
break
else:
i = i + 1
if leap1 == 1:
print("输入学号不可重复,修改失败!")
else:
temp['id'] = newId
print("学号修改成功")
elif alterNum == 2:
newName = input("输入更改后的姓名:")
temp['name'] = newName
print("姓名修改成功")
elif alterNum == 3:
newcollege = input("输入更改后的学院:")
temp['college'] = newcollege
print("学院修改成功")
elif alterNum == 4:
newaddress = input("输入更改后的地址:")
temp['address'] = newaddress
print("地址修改成功")
elif alterNum == 5:
newtime = input("输入更改后的填报时间:")
temp['time'] = newtime
print("填报时间修改成功")
elif alterNum == 6:
newhealthy = input("输入更改后的学院:")
temp['healthy'] = newhealthy
print("健康状况修改成功")
elif alterNum == 7:
break
else:
print("输入错误请重新输入")
else:
print("没有此学号,修改失败!")
、、、
六、总结:
这次的实验其实难度不是特别大,但是由于自己的基础不是特别好,而且平常没有做项目,所以在这次的项目完成过程中还是遇到了很多问题。比如,由于自己能力的不足和基础配置的不熟悉,我遇到了数据库连接不上的问题。通过这次的项目,我知道了PSP可以帮助我很好的进行对项目开发流程的控制和时间的管理。
七、PSP:
PSP2.1 | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 30 | 20 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 40 | 30 |
Development | 开发 | 1200 | 1600 |
Analysis | 需求分析 (包括学习新技术) | 300 | 1000 |
Design Spec | 生成设计文档 | 30 | 40 |
Design Review | 设计复审 (和同事审核设计文档) | / | / |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 20 | 30 |
Design | 具体设计 | 100 | 150 |
Coding | 具体编码 | 800 | 100 |
Code Review | 代码复审 | 60 | 60 |
Test | 测试(自我测试,修改代码,提交修改) | 60 | 160 |
Reporting | 报告 | 50 | 60 |
Test Report | 测试报告 | 40 | 20 |
Size Measurement | 计算工作量 | 60 | 40 |
Postmortem & Process Improvement Plan | 事后总结 ,并提出过程改进计划 | 10 | 30 |