201771010109-焦旭超 实验二 个人项目—《西北师范大学学生疫情上报系统》项目报告

《西北师范大学学生疫情上报系统》项目报告

项目 内容
课程班级博客链接 https://www.cnblogs.com/nwnu-daizh/
这个作业要求链接 https://www.cnblogs.com/nwnu-daizh/p/12416880.html
我的课程学习目标

掌握软件项目个人开发流程及Github发布软件项目的操作方法

这个作业在哪些方面帮助我实现学习目标

熟悉开发流程,学会如何使用Github

项目Github的仓库链接地址 https://github.com/Jcczits/text.git

实验内容和步骤:

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

(1)首次使用人数较多系统崩溃
(2)界面简单,信息详细
(3)一开始时对于不变的数据没有记录功能,后来可以记录上次的上报信息

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

你可在以下两类开发要求选择一种完成项目开发任务:

 第一类开发要求:

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

第二类开发要求:

        1. 系统可采集学生疫情有效信息;

        2. 系统支持用户在线使用;

        3. 每日只可填报一次,提交后无法修改,每日十点疫情信息填报截止;

        4. 各学院指定负责人登录系统,可查看本学院学生填报的汇总数据,可点击查看学生联系方式、班主任联系方式,学院负责人核实本院所有学生数据后,将数据提交给学校防控办;

       5. 学校防控办指定负责人登录《西北师范大学疫情防控信息统计》子系统,可浏览所有学生填报汇总数据清单,通过【导出】可获取疫情数据的EXCEL文件。

我选择第一类开发要求。

1.项目背景:

  2019年12月末,中国武汉发生新型冠状病毒(2019-nCoV) 感染的肺炎疫情,为遏制疫情蔓延,有效切断病毒传播途径,在中央政府指导下,各级政府部分采取了一系列防控措施: 2020年1 月23 日10时起对武汉“封城”,全国 31个省市也相继实施了严格的防控措施;全国各省市向武汉和湖北派遣医疗队参与救治工作;在全国范围内调配口罩、防护服、药品等急需的医疗资源支援武汉;指导和督促全国范围内拥有医疗物资生产资质的企业尽快恢复生产能力;定向拨付专项财政资金用于疾病防控;从其他省份调集物资保障武汉市民日常生活。
  值得一提的是,中国互联网企业在此次疫情防控中发挥了社会治理方面的重要作用。以腾讯为例,围绕应对疫情管控需求开发了十一款产品。其中疫情在线问诊功能,对于减少发热病人之间的相互交叉感染具有重要的作用,患者在家通过互联网向在线医生问诊,减少了病毒传播或感染的风险;谣言粉碎对于公众采取理性态度看待疫情的发展具有重要意义。滴滴出行还在武汉专门组建车队,服务于医护人员的通勤,这在实施交通管制的武汉具有重要作用。此外,还有新型肺炎确诊患者同行程查询工具,用户只需要输入自己所乘坐交通工具的时间和班次,就可以确认是否与被确诊感染者同行,提前做好自我隔离和就诊工作。在疫情防控中,中国互联网企业不仅发展壮大,在承担社会责任方面也越来越成熟。
  为有效配合防控机构有关疫情信息的采集、统计与排查,我校开发了教职工/学生疫情上报系统,该系统由教职工疫情每日上报、学生疫情每日上报、二级部门疫情每日汇总表、疫情防控填报统计四个子系统组成。实现对我校各类人员基本情况、所在区域及活动轨迹及健康状况的信息收集。师生通过我校企业微信服务大厅访问该系统进行远程信息填报。

2.需求分析:

  (1)存储疫情信息
  (2)查询疫情信息

    可以姓名查询  是否感染查询  学生所在地查询
  (3)修改疫情信息

  (4)删除疫情信息

  (5)将疫情信息导出

3.设计实现

  本次系统使用C语言实现,因为数据库连不上,没有使用数据库

  构建了几个函数来实现功能:

  create()   /*录入学生信息*/

  display()  /*显示所有学生信息*/

  displayOnnum()  /*按学号查询*/

  displayOnName()  /*按名字查询*/

  displayOnAge()    /*按年龄查询*/

  updatestu()    /*更新学生信息*/

  h=deletestu()  /*删除信息*/

  saveNode()   /*导出为文本文档*/

4.测试运行

主页面:

录入:

 

 显示全部学生信息:

 

按学号查询:

 按姓名查询:

 按年龄查询:

 导出:

 

5.关键代码

  

/*录入学生的信息*/
struct student *create()
{
        struct student *p, *q, *head=NULL;
        int k, currentNumOfstu=1,i;
        short sum;
        char tmp[20],str[3];
        printf("输入学生的个数:");
        gets(tmp);
        k=atoi(tmp);
        while(k)
        {
                p=(struct student*)malloc(sizeof(struct student));
                printf("
=======请输入第%d个学生的信息=======
", currentNumOfstu);
                printf("学号:");
                gets(p->num);
                printf("姓名:");
                gets(p->name);
                printf("填报时间:");
                gets(p->time);
                printf("地点:");
                gets(p->adress);
                printf("是否感染(Y/N):");
                gets(p->ganr);
                printf("性别,男(1),女(0):");
                p->sex=getchar();
                getchar();
                printf("年龄:");
                gets(str);
                p->age=atoi(str);
                printf("系号(1或2或3):");
                gets(str);
                p->deptid=atoi(str);
                if(currentNumOfstu==1)
                        head=p;
                else
                        q->next=p;
                q=p;
                p->next=NULL;
                k--;
                currentNumOfstu++;
        }
        printf("
录入完毕,");
        return head;
}
/*菜单*/
int selectMenu()
{
        int c=0;
        char s[3];
        system("cls");
        printf("              学生疫情防控信息管理系统
");
        printf("===========================================
");
        printf(" 1. 录入学生疫情信息
");
        printf(" 2. 显示所有学生信息
");
        printf(" 3. 按学号查询学生信息
");
        printf(" 4. 按姓名查询学生信息(支持模糊查询)
");
        printf(" 5. 按年龄查询学生信息
");
        printf(" 6. 修改学生信息
");
        printf(" 7. 删除学生信息
");
        printf(" 8. 追加学生信息
");
        printf("9. 保存学生信息到文件
");
        printf("10. 从文件载入学生信息
");
        printf(" 0. 退出系统
");
        do
        {
                printf("
请选择功能(0-10): ");    /*在菜单窗口外显示提示信息*/
                gets(s);           /*输入选择项*/
                c=atoi(s); /*将输入的字符串转化为整形数*/
        }while(c<0||c>10);    /*选择项不在0~10之间重输*/
        return c;
}

6.项目总结

  这次的小项目由于我自己没有做过项目,平时敲代码练习太少而导致做起来太困难,而且柱状图功能还没有实现。另外通过本次项目,我认识到了PSP的作用,能够十分有效的管理我们的项目。此后我会多加练习,下次做的更好。

7.PSP展示

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

任务3:完成任务2项目开发,将项目源码的完整工程文件提交到本人注册Github账号的项目仓库中。

 总结:

  能力有限,做出的项目很简陋。做项目敲代码太少,需要多加练习,PSP的强大用处还没有完全挖掘出来,使用也需要更规范合理。

原文地址:https://www.cnblogs.com/lcjcc/p/12521403.html