实验二 软件工程个人项目《西北师范大学学生疫情上报系统》项目报告
项目 | 内容 |
---|---|
班级博客链接 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE/ |
作业要求链接 | https://www.cnblogs.com/nwnu-daizh/p/12416880.html |
我的课程学习目标 | 熟悉软件项目个人开发流程及Github发布软件项目的操作方法 |
项目所帮助方面 | 帮助我更加深入的了解了软件开发的流程 |
github源码地址 | https://github.com/Fairber/-/blob/master/diseasecontrol.py |
1、实验目的与要求
(1)掌握软件项目个人开发流程。
(2)掌握Github发布软件项目的操作方法。
2、实验内容和步骤
项目开发背景简介:
2019年12月末,中国武汉发生新型冠状病毒(2019-nCoV) 感染的肺炎疫情,为遏制疫情蔓延,有效切断病毒传播途径,在中央政府指导下,各级政府部分采取了一系列防控措施: 2020年1 月23 日10时起对武汉“封城”,全国 31个省市也相继实施了严格的防控措施;全国各省市向武汉和湖北派遣医疗队参与救治工作;在全国范围内调配口罩、防护服、药品等急需的医疗资源支援武汉;指导和督促全国范围内拥有医疗物资生产资质的企业尽快恢复生产能力;定向拨付专项财政资金用于疾病防控;从其他省份调集物资保障武汉市民日常生活。
值得一提的是,中国互联网企业在此次疫情防控中发挥了社会治理方面的重要作用。以腾讯为例,围绕应对疫情管控需求开发了十一款产品。其中疫情在线问诊功能,对于减少发热病人之间的相互交叉感染具有重要的作用,患者在家通过互联网向在线医生问诊,减少了病毒传播或感染的风险;谣言粉碎对于公众采取理性态度看待疫情的发展具有重要意义。滴滴出行还在武汉专门组建车队,服务于医护人员的通勤,这在实施交通管制的武汉具有重要作用。此外,还有新型肺炎确诊患者同行程查询工具,用户只需要输入自己所乘坐交通工具的时间和班次,就可以确认是否与被确诊感染者同行,提前做好自我隔离和就诊工作。在疫情防控中,中国互联网企业不仅发展壮大,在承担社会责任方面也越来越成熟。
为有效配合防控机构有关疫情信息的采集、统计与排查,我校开发了教职工/学生疫情上报系统,该系统由教职工疫情每日上报、学生疫情每日上报、二级部门疫情每日汇总表、疫情防控填报统计四个子系统组成。实现对我校各类人员基本情况、所在区域及活动轨迹及健康状况的信息收集。师生通过我校企业微信服务大厅访问该系统进行远程信息填报。
参考文献:
- 中国抗击新型冠状病毒:进展和影响[EB/OL]. (2020-02-01)/[2020-03-04]. http://cn.chinadaily.com.cn/a/202002/01/WS5e358d1fa3107bb6b579c92b.html
任务1:
首先是好的地方,系统会记住我们的个人信息,保存在上面,然后第二天填写的时候就不用在浪费时间,这一点还是用起来很舒服的。
但是系统的的界面设计很粗糙,用起来也不是那么的舒服,而且按下完成填写之后又再次弹出一个空白的界面,这个的设计也很让人用的有点难受。而且每天起来会有一定可能性忘掉这件事,还好班长比较负责,每天在班群里提醒大家,最好再多一个通知提醒的功能。
任务2:
我尝试开发了一个基于python的学生信息上报系统,但是由于时间有限,只是完成了一些比较基础的功能,平时课很多,花太大的时间在这一个项目上觉得不太可能。
1. 需求分析:首先,需要对学生的信息进行收集,然后将其保存到文件中,能够对于收集到的信息进行一定程度的处处理。
2. 功能设计
基本功能:
*学生填写个人信息
*对于学生填写的信息的保存
拓展功能:
*将学生所填写的信息输出为Excel表格。
3. 设计实现
使用python语言实现:
4. 测试运行,你的项目必须是可运行的,请展示项目代码的运行截图,包括题目要求实现功能对应的运行截图。这些截图说明你确实完成了项目需求,如果实现了扩展需求,也请大方秀出来。
菜单以及学生信息的录入:
修改学生的个人信息:
完成信息修改:
学生信息被输出为excel表格
5. 代码片段
不知道是不是系统的问题,使用markdown插入代码的时候格式就会出现问题。
# 6)从文件中读取数据(students.txt)
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(int(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
# 将数据写入excel新文件
def data_write(file_path, datas):
f = xlwt.Workbook()
sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True) #创建sheet
#将数据写入第 i 行,第 j 列
i = 0
for data in datas:
for j in range(len(data)):
sheet1.write(i,j,data[j])
i = i + 1
f.save(file_path) #保存文件
6. 总结:本次的开发工作虽然说并没有投入太多的精力,但是得益于掌握了软件开发的流程和方法,所以各项工作进行的很顺利,最后也实现了前期所预想的大部分功能。如果时间能在多一点,利用python强大的数据处理功能,应该能够写出一个很有意思的系统出来。
任务3:完成任务2项目开发,将项目源码的完整工程文件提交到本人注册Github账号的项目仓库中
PSP
PSP2.1 | 内容 | 计划完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 20 | 40 |
*Estimate | 估计这个任务需要多少时间,规划大致工作步骤 | 60 | 50 |
Development | 开发 | 860 | 935 |
*Analysis | 需求分析 (包括学习新技术) | 120 | 80 |
*Design Spec | 生成设计文档 | 30 | 40 |
*Design Review | 设计复审 (和同学审核设计文档) | / | / |
*Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 30 | 20 |
*Design | 具体设计 | 240 | 300 |
*Coding | 具体编码 | 200 | 120 |
*Code Review | 代码复审 | 60 | 50 |
*Test | 测试(自我测试,修改代码,提交修改) | 60 | 80 |
*Reporting | 报告 | 60 | 120 |
*Test Report | 测试报告 | 40 | 35 |
*Size Measurement | 计算工作量 | 40 | 30 |
*Postmortem & Process Improvement Plan | 事后总结 ,并提出过程改进计划 | 40 | 60 |
psp总结:在列表中可以看出,前期的预估时间大部分都和实际的工作时间相当,在后期的报告部分花了很长的时间,因为markdown里有几个语法没有搞清楚,导致后期又修改了几次。
在写代码部分,多出来的时间主要是用来研究xlwt的使用了,所以从这一点可以看出,在开发之前就要考虑到相关的技术因素,才能使得预估的时间更加准确。
任务三:将项目上传至github
实验二总结:
头一次用psp,在阅读了相关的博客之后,完成这样的一个表格,可以使得开发的过程更加的有调理,各个工作的开展也可以有条不紊的展开。
这一次实验的收获还是很多,电脑上安装了很多python的库,但是基本上没用过几个,通过这一次的实验,开发出了一个简易的信息管理程序,因为时间原因,很多功能并没有做到尽善尽美。主要是掌握了python中xlwt的导入以及使用,以及如何将数据导出到文件当中。定义的几个函数功能整合到一起运行起来也没有出现问题,也算是基本满意。如果时间充裕,感觉在此基础上还是可以做出一个相当完善的信息管理系统的,毕竟python对于数据的处理而言是一个很好用的工具。