201771030108-鲁斌 实验二 个人项目—《西北师范大学学生疫情上报系统》项目报告

项目 内容
课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/nwnu2020SE
这个作业要求链接 https://www.cnblogs.com/nwnu-daizh/p/12416880.html
我的课程学习目标 熟悉项目的开发流程
这个作业在哪些方面帮助我实现学习目标 用psp的方式让我学会了科学的规划流程
项目Github的仓库链接地址 https://github.com/Bufanbin/test

任务一 陈述学生疫情每日上报子系统使用体验

(1). 疫情上报系统刚开始使用时有很多问题,首先是人多卡着进不去,然后是刚开始很繁琐,每次都要自己手动填写,体验感不佳。后来学校方面做了改进,只用填写一次,以后要是没什么问题直接点确定就可以,使用起来一下子方便了很多。

任务二 总结详细阅读《构建之法》第1-2章、结合第2章2.3节所述PSP流程,开发一款你自己心目中的西北师范大学学生疫情每日填报系统。

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

1.项目开发背景简介

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

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

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

2.需求分析

1.实现查询;
2.将周和月查询的数据以统计图的形式展示。

4.功能设计

1.实现按姓名查询;
2.按学号查询;
3.按学号和时间查询;
4.按周查询;
5.按月查询.

3.设计实现

为实现查询,我设置了如下几个函数:
1.def menu(): 用于显示菜单
2.def init(): 用于初始化
3.def search_by_name(st_name): 按姓名查询
4.def search_by_id(st_id): 按学号查询
5.def search_by_idAndtime(st_id, st_time): 按学号和时间查询
6.def search_by_weekend(st_weekend): 按周查询
7.def search_by_month(st_month): 按月查询
最后,由main()函数控制这些函数,实现查询和统计。后台借助mysql数据库和python3以及一些python的模块实现。

4.测试运行

1.实现按姓名查询;

2.按学号查询;

3.按学号和时间查询;

4.按周查询;

5.按月查询.

6.系统功能

7.数据库结构

8.代码托管

5.代码展示

    elif kind == 4:
        st_weekend = input("请输入'年-周':")
        results = search_by_weekend(st_weekend)
        r=[ ]
        ry=[ ]
        rn=[ ]
        t = len(results)
        n = [ ]
        n = results[0]
        q = n[0]
        print("该周点到人数:", q)
        for i in range(1, t):
            r = results[i]
            rn.append(r[0])
            ry.append(q-r[0])

        # 设置中文字体和负号正常显示
        matplotlib.rcParams['font.sans-serif'] = ['SimHei']
        matplotlib.rcParams['axes.unicode_minus'] = False

        label_list = ['heat', 'at_school', 'at_huobei', 'at_wuhan','meet_dap']    # 横坐标刻度显示值
        num_list1 = ry      # 纵坐标值1
        num_list2 = rn      # 纵坐标值2

        m = range(len(num_list1))
        
                    rects1 = plt.bar(x=m, height=num_list1, width=0.4, alpha=0.8, color='red', label="Yes")
        rects2 = plt.bar(x=[i + 0.4 for i in m], height=num_list2, width=0.4, color='green', label="No")
        plt.ylim(0, 20)     # y轴取值范围
        plt.ylabel("数量")
        """
        设置x轴刻度显示值
        参数一:中点坐标
        参数二:显示值
        """
        plt.xticks([index + 0.2 for index in m], label_list)
        plt.xlabel("类型")
        plt.title("周统计图")
        plt.legend()     # 设置题注
        # 编辑文本
        for rect in rects1:
            height = rect.get_height()
            plt.text(rect.get_x() + rect.get_width() / 2, height+1, str(height), ha="center", va="bottom")
        for rect in rects2:
            height = rect.get_height()
            plt.text(rect.get_x() + rect.get_width() / 2, height+1, str(height), ha="center", va="bottom")
        plt.show()
        kind = int(input("按111退出: "))
        if kind == 111:
            exit()
        kind = init()

6.总结

1.我学会了用psp规划自己的项目流程,用github托管代码,也复习了数据库的相关知识。
1.这次让我学到了很多,开始的太迟,导致一部分拓展功能未能实现,下次要早开始。
2.要提前学习,争取为下次打基础。
3.项目完成这不是结束,及时反思,这次不足的还要继续修改。

7.PSP展示

PSP2.1 任务内容 计划共完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 60 40
· Estimate · 估计这个任务需要多少时间,并规划大致工作步骤 900
Development 开发 600 500
·· Analysis 需求分析 (包括学习新技术) 40 40
· Design Spec · 生成设计文档 60 50
· Design Review · 设计复审 (和同事审核设计文档) 30 30
· Coding Standard 代码规范 (为目前的开发制定合适的规范) 10 20
· Design 具体设计 60 40
· Coding 具体编码 600 500
· Code Review · 代码复审 40 40
· Test · 测试(自我测试,修改代码,提交修改) 50 50
Reporting 报告 100 90
·· Test Report · 测试报告 30 30
· Size Measurement 计算工作量 1080 920
· Postmortem & Process Improvement Plan · 事后总结 ,并提出过程改进计划 20 10

8.经验总结

1.python有很多模块,像numpy,pandas和matplotlib,这些模块在作图时很好用。
2.尽量使用Java实现这一类的系统设计。
3.psp可以检测你,可以通过psp发现自己的问题.
4.Github要熟练运用。

猜你喜欢

转载自www.cnblogs.com/XuWang-000/p/12420944.html
今日推荐