《西北师范大学学生疫情上报系统》项目报告
项目 | 内容 |
---|---|
这个作业属于哪个课程 | https://www.cnblogs.com/nwnu-daizh/ |
这个作业的要求在哪里 | https://www.cnblogs.com/nwnu-daizh/p/12416880.html |
作业学习目标 | (1)掌握软件项目个人开发流程。 (2)掌握Github发布软件项目的操作方法。 |
本作业在哪些方面帮助我实现学习目标 | 学会开发流程,熟悉编程 |
项目Github的仓库链接地址 | https://github.com/Vereda-Tropical/test1 |
实验内容
任务一:陈述学生疫情每日上报子系统使用体验
(1)首次使用人数较多系统崩溃
(2)界面简洁,信息详细
(3)一开始时对于不变的数据没有记录功能,后改进
任务二:总结详细阅读《构建之法》第1-2章、结合第2章2.3节所述PSP流程,开发一款你自己心目中的西北师范大学学生疫情每日填报系统。
我选择第一类开发要求:
有一个数据文件,保存了100天 2000 个教职工/学生的所有防疫信息,请设计一个命令行程序, 支持查询某人在某一天的疫情情况, 查询某种数据的周/月的疫情统计情况,并用柱状图显示统计结果。
1.项目背景:
2019年12月末,中国武汉发生新型冠状病毒(2019-nCoV) 感染的肺炎疫情,为遏制疫情蔓延,有效切断病毒传播途径,在中央政府指导下,各级政府部分采取了一系列防控措施: 2020年1 月23 日10时起对武汉“封城”,全国 31个省市也相继实施了严格的防控措施;全国各省市向武汉和湖北派遣医疗队参与救治工作;在全国范围内调配口罩、防护服、药品等急需的医疗资源支援武汉;指导和督促全国范围内拥有医疗物资生产资质的企业尽快恢复生产能力;定向拨付专项财政资金用于疾病防控;从其他省份调集物资保障武汉市民日常生活。
值得一提的是,中国互联网企业在此次疫情防控中发挥了社会治理方面的重要作用。以腾讯为例,围绕应对疫情管控需求开发了十一款产品。其中疫情在线问诊功能,对于减少发热病人之间的相互交叉感染具有重要的作用,患者在家通过互联网向在线医生问诊,减少了病毒传播或感染的风险;谣言粉碎对于公众采取理性态度看待疫情的发展具有重要意义。滴滴出行还在武汉专门组建车队,服务于医护人员的通勤,这在实施交通管制的武汉具有重要作用。此外,还有新型肺炎确诊患者同行程查询工具,用户只需要输入自己所乘坐交通工具的时间和班次,就可以确认是否与被确诊感染者同行,提前做好自我隔离和就诊工作。在疫情防控中,中国互联网企业不仅发展壮大,在承担社会责任方面也越来越成熟。
为有效配合防控机构有关疫情信息的采集、统计与排查,我校开发了教职工/学生疫情上报系统,该系统由教职工疫情每日上报、学生疫情每日上报、二级部门疫情每日汇总表、疫情防控填报统计四个子系统组成。实现对我校各类人员基本情况、所在区域及活动轨迹及健康状况的信息收集。师生通过我校企业微信服务大厅访问该系统进行远程信息填报。
2.需求分析:
(1)存储疫情信息
(2)处理疫情信息
(3)数据转换图片
- 基本功能
- 查询某人在某一天的疫情情况
- 查询某种数据的周/月的疫情统计情况
- 柱状图显示统计结果
- 扩展功能
- 对学生疫情信息添加
- 任意时间段感染者查询
3.设计实现
- 我的存储是没用数据库,直接用的文件,存储到txt格式的文件
- 根据输入条件从txt文件中查找所对应的人数存储到excel表格中,再转换成柱状图
4.测试运行
- 1主界面
- 2录入信息
- 3显示信息
- 4删除信息
- 5按时间查找
- 6按学号查找
- 7柱状图
5.关键代码
def read_info():
old_info = []
try:
students_txt = open("students.txt")
except:
print("暂未保存数据信息") # 打开失败,文件不存在说明没有数据保存
return
while True:
info = students_txt.readline()
if not info:
break
# print(info)
info = info.rstrip() # 去掉换行符
# print(info)
info = info[1:-1] # 去掉{}
# print(info)
student_dict = {} # 单个学生字典信息
for x in info.split(","): # 以,为间隔拆分
# print(x)
key_value = [] # 开辟空间,key_value[0]存key,key_value[0]存value
for k in x.split(":"): # 以:为间隔拆分
k = k.strip() # 去掉首尾空字符
# print(k)
if k[0] == k[-1] and len(k) > 2: # 判断是字符串还是整数
key_value.append(k[1:-1]) # 去掉 首尾的'
else:
key_value.append(str(k))
# print(key_value)
student_dict[key_value[0]] = key_value[1] # 学生信息添加
# print(student_dict)
old_info.append(student_dict) # 所有学生信息汇总
students_txt.close()
return old_info
def main():
student_info = []
while True:
# print(student_info)
meun()
number = input("请输入选项:")
if number == '1':
student_info = add_student_info()
elif number == '2':
show_student_info(student_info)
elif number == '3':
try:
student_info.remove(del_student_info(student_info))
except Exception as e:
# 学生学号不匹配
print(e)
elif number == '4':
try:
student = mod_student_info(student_info)
except Exception as e:
# 学生学号不匹配
print(e)
else:
# 首先按照根据输入信息的学号,从列表中删除该生疫情信息,然后重新添加该学生最新疫情信息
student_info.remove(del_student_info(student_info,del_id = student.get("id")))
student_info.append(student)
6.项目总结
这次的小项目是我认识到了PSP十分重要且有用,我认为越大的项目PSP的作用越明显。关于本次的小项目时用的python完成的,熟练了简单的python语法,也认真的学习了从文件读取数据且把数据生成柱状图,但还是缺乏练习,且不细心,希望在之后的学习中改进。由于一开始的时候设计上的缺陷,所以读取数据的时候有点慢。最后是学习使用了GitHub,希望在之后能更加熟练。
7.PSP展示
PSP2.1 | 任务内容 | 计划共完成需要的时间 | 实际完成需要的时间 |
---|---|---|---|
Planning | 计划 | 10 | 10 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 10 | 10 |
Development | 开发 | 600 | 800 |
Analysis | 需求分析 (包括学习新技术) | 50 | 50 |
Design Spec | 生成设计文档 | 20 | 20 |
Design Review | 设计复审 (和同事审核设计文档) | 0 | 0 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
Design | 具体设计 | 50 | 60 |
Coding | 具体编码 | 360 | 550 |
Code Review | 代码复审 | 60 | 60 |
Test | 测试(自我测试,修改代码,提交修改) | 60 | 60 |
Reporting | 报告 | 60 | 80 |
Test Report | 测试报告 | 30 | 60 |
Size Measurement | 计算工作量 | 20 | 10 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 15 | 20 |
任务三:完成任务2项目开发,将项目源码的完整工程文件提交到本人注册Github账号的项目仓库中,完成个人项目报告博文作业。
总结
通过此次的练习,知道了一个项目的完整实现多么麻烦,也知道了psp对于项目的重要性,同时也锻炼了python的语法能力,之前很少进行python的练习,这次是一个很好的机会。也明白了开发者上线一个项目需要考虑的问题,最后衷心的感谢他们。