201771030104-道彤阳 实验二 个人项目—《西北师范大学学生疫情上报系统》项目报告

|内容 | 项目 | | :------: | :------: | | 课程班级博客链接 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE | | 这个作业要求链接 | https://www.cnblogs.com/nwnu-daizh/p/12416880.html | | 我的课程学习目标 | 掌握软件项目个人开发流程、掌握Github发布软件项目的操作方法| | 这个作业在哪些方面帮助我实现学习目标 |通过学习个人项目开发流程,使我更深刻了解其意义| |项目Github的仓库链接地址| https://github.com/daotongyang/EpidemicManagement | ##1、实验目的与要求

(1)掌握软件项目个人开发流程。

(2)掌握Github发布软件项目的操作方法。 ##2、实验内容和步骤 ###项目开发背景简介

2019年12月末,中国武汉发生新型冠状病毒(2019-nCoV) 感染的肺炎疫情,为遏制疫情蔓延,有效切断病毒传播途径,在中央政府指导下,各级政府部分采取了一系列防控措施: 2020年1 月23 日10时起对武汉“封城”,全国 31个省市也相继实施了严格的防控措施;全国各省市向武汉和湖北派遣医疗队参与救治工作;在全国范围内调配口罩、防护服、药品等急需的医疗资源支援武汉;指导和督促全国范围内拥有医疗物资生产资质的企业尽快恢复生产能力;定向拨付专项财政资金用于疾病防控;从其他省份调集物资保障武汉市民日常生活。

值得一提的是,中国互联网企业在此次疫情防控中发挥了社会治理方面的重要作用。以腾讯为例,围绕应对疫情管控需求开发了十一款产品。其中疫情在线问诊功能,对于减少发热病人之间的相互交叉感染具有重要的作用,患者在家通过互联网向在线医生问诊,减少了病毒传播或感染的风险;谣言粉碎对于公众采取理性态度看待疫情的发展具有重要意义。滴滴出行还在武汉专门组建车队,服务于医护人员的通勤,这在实施交通管制的武汉具有重要作用。此外,还有新型肺炎确诊患者同行程查询工具,用户只需要输入自己所乘坐交通工具的时间和班次,就可以确认是否与被确诊感染者同行,提前做好自我隔离和就诊工作。在疫情防控中,中国互联网企业不仅发展壮大,在承担社会责任方面也越来越成熟。

为有效配合防控机构有关疫情信息的采集、统计与排查,我校开发了教职工/学生疫情上报系统,该系统由教职工疫情每日上报、学生疫情每日上报、二级部门疫情每日汇总表、疫情防控填报统计四个子系统组成。实现对我校各类人员基本情况、所在区域及活动轨迹及健康状况的信息收集。师生通过我校企业微信服务大厅访问该系统进行远程信息填报。

###项目开发要求

  • 第一类开发要求:

    有一个数据文件,保存了100天 2000 个教职工/学生的所有防疫信息,请设计一个命令行程序, 支持查询某人在某一天的疫情情况, 查询某种数据的周/月的疫情统计情况,并用柱状图显示统计结果。

  • 第二类开发要求:

      1. 系统可采集学生疫情有效信息;
    
      2. 系统支持用户在线使用;
    
      3. 每日只可填报一次,提交后无法修改,每日十点疫情信息填报截止;
    
      4. 各学院指定负责人登录系统,可查看本学院学生填报的汇总数据,可点击查看学生联系方式、班主任联系方式,学院负责人核实本院所有学生数据后,将数据提交给学校防控办;
    
      5. 学校防控办指定负责人登录《西北师范大学疫情防控信息统计》子系统,可浏览所有学生填报汇总数据清单,通过【导出】可获取疫情数据的EXCEL文件。
    

###需求分析

(1)有一个数据文件,存储2000个学生/教职工100天的疫情上报信息,200000条数据的存储方式有很多种,我的个人项目中采用的是mysql进行存储,使用Python语言进行实现,与mysql连接时采用的是pymysql。

(2)此项目支持命令行查询, 支持查询某人在某一天的疫情情况, 查询某种数据的周/月的疫情统计情况,并用柱状图显示统计结果,用matplotlib进行柱状图的显示

(3)我也是第一次用Python语言进行编写程序,但Python语言有很多自带的库函数和第三方库,使用起来特别方便,在项目中pymysql,matplotlib很好的解决数据库的连接和柱状图的绘制。

###功能设计 ####基本功能: - 存储100天 2000 个教职工/学生的所有防疫信息; - 支持查询某人在某一天的疫情情况; - 查询某种数据的周/月的疫情统计情况; - 用柱状图显示统计结果;

####扩展功能:

  • 利用【高级查询】可进行数据组合筛选;
  • 以可视化方式展示各学院已填报、未填报统计情况、关键疫情数据统计情况;

###设计实现

定义了九个函数,分别为exeQuery(查询个人信息),Queryill_month(查询有患病特征的月统计情况),Queryleft_month(查询是否与他人接触的月统计情况), QueryWH_month()(查询处在武汉或经过武汉的月统计情况),Queryill_week()(查询有患病特征的周统计情况), Queryleft_week()(查询有人员流动的月统计情况),QueryWH_week()(查询处在武汉或经过武汉的周统计情况),manage_month()(月统计柱形图显示),manage_week()(周统计柱形图显示),将七个函数写在两层的while循环中,根据用户需求进行随机切换,数据库实现上万条数据的存储,采用了mysql导入Excel的方式。

###测试运行 存储2000个学生/教职工100天的疫情上报信息

选择查询信息

查询月统计结果

查询周统计结果

###代码展示

#连接数据库 
flag=True
print("请选择以下四个操作:\n\n 1、查询个人信息,2、查询患病月记录,\
      3、查询迁移月记录,4、查询武汉居民月记录,5、查询患病周记录,\n\n\
      6、查询迁移周记录,7、查询武汉居民周记录,8、月统计柱形图,9、周统计柱形图,10、结束请按‘00’\n");
while(flag): 
    num=int(input("请输入选择:"))
    conn=pymysql.connect(host="localhost",port=3306,user="root",password="root",database="data",charset="utf8")
#获取光标
    cursor=conn.cursor()
    while(flag):
#结束查询        
        if(num==00):
            print("结束操作")
            break
#个人信息查询
        elif(num==1):
            id=input("请输入编号:").strip()
            name=input("请输入姓名:").strip()
            exeQuery(id,name)
            break
#患病月查询
        elif(num==2):
            if(flag==True):
                Queryill_month()
                break
#流动月查询
        elif(num==3):
            if(flag==True):
                Queryleft_month()
                break
#武汉月查询
        elif(num==4):
            if(flag==True):
                QueryWH_month()
                break
#患病周查询
        elif(num==5):
            if(flag==True):
                 Queryill_week()
                 break
#流动周查询
        elif(num==6):
            if(flag==True):
                 Queryleft_week()
                 break
#武汉周查询
        elif(num==7):
            if(flag==True):
                 QueryWH_week()
                 break
#月查询
        elif(num==8):
            if(flag==True):
                 manage_month()
                 break
#周查询
        elif(num==9):
            if(flag==True):
                 manage_week()
                 break        
    if(num==00):
        break
#关闭数据库    
cursor.close()
conn.close()

###项目总结

通过这次项目,我体会到了设计PSP的重要性,学会了如何快速生成上万条数据,用python语言实现爬虫,用Python连接数据库,用matplotlib实现柱形图的显示。但是由于一些因素的影响,没有很好的设计界面,也没有实现附加功能。以后需努力提高自己的动手能力,扩宽自己的知识面。

###展示PSP |PSP2.1|任务内容|计划共完成需要的时间(min)|实际完成需要的时间(min)| | :------: | :------: |:------: |:------: | |Planning|计划|30|20| |Estimate|估计这个任务需要多少时间|955|831| |Development| 开发|80|88| |Analysis|需求分析(包括学习新技术)|20|20| |Design Spec|生成设计文档|50|40| |Design Review|设计复审(和同事审核设计文档)|10|10| |Coding Standard|代码规范(为目前的开发指定合适的规范)|20|20| |Design|具体设计|150|148| |Coding|具体编程|500|450| |Code Review|代码复审|50|30| |Test|测试(自我测试,修改代码,提交修改)|20|18| |Reporting|报告|30|32| |Test Report|测试报告|10|9| |Size Measurmen|计算工作量|8|6| |Postmortem & Process Imporvement Plan|事后总结,并提出过程改进计划|7|10| ####经验分享 通过这次学习,让我比较影响深刻的就是不要只是想想,动手做做,遇到问题逐个攻破,不要害怕问题,解决一个问题,就学到一点知识。、慢慢的知识储量就有了。

猜你喜欢

转载自www.cnblogs.com/D-TY/p/12497101.html
今日推荐