zoukankan      html  css  js  c++  java
  • 201771030111-刘维 实验二 个人项目—《西北师范大学学生疫情上报系统》项目报告

    项目 内容
    班级博客 https://edu.cnblogs.com/campus/xbsf/nwnu2020SE
    作业链接 https://www.cnblogs.com/nwnu-daizh/p/12416880.html
    学习目标 了解并掌握软件工程的相关知识及其应用
    作业目标 掌握软件项目个人开发流程
    Github链接 https://github.com/Summer-Sy/Studys-space

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

    1.需求分析

    • 有一个保存了2000名师生100天的数据文件
    • 命令行程序
    • 实现基本的查询功能
    • 统计数据可视化

    2.功能设计(基本功能)

    • 根据ID查询某人在某一天的疫情信息
    • 按照名字查询某人在某一天的疫情信息
    • 查询某种数据的周月统计情况,并有柱状图显示

    3.设计实现

    • 数据部分

    数据使用mysql数据库存储,建立如下两张表保存信息,信息内容通过编写程序随机生成自动导入
    basic表(保存了2000名师生的基本信息,设计工号、姓名、性别、职业和电话五个字段)

    data表(保存了2月1日-3月1日的所有疫情信息,设计日期、工号、是否确诊、是否疑似、是否接触病例五个字段)

    • 程序部分
      由于是命令行程序,所以我选择用c语言实现,主要设计了下面两个函数:
      • main():主界面和查询逻辑
      • draw():用统计数据画图(在命令行里纯靠计算画图)

    4.测试运行

    • 按照ID查找某人在某天的疫情信息
    • 按照姓名查找某人在某天的疫情信息
    • 查询某天的统计信息(柱状图)

    5.关键代码

    
    /*  绘图函数 
        在命令行内画柱状图实际上就是自上而下计算每一行应该出现的' '和'#"然后一行一行在指定的位置输出相应的字符
        很笨的办法,当然,也是我唯一想到能在命令行里显示柱状图的方法
    */
    int* draw(int* stati,int count)    //stati指向要构成柱状图的数组,count存放数据个数
    {
        int * pLimit = getLimit(stati,count);        //调用getLimit函数,计算数据最大值及最小值(实际上为-1)
        int min = pLimit[0]-1;
        int max = pLimit[1];
        printf("
    ");
        puts("^");
        printf("|
    ");
    
        for(int i=max+1;i>-100;i=i-100)            
        {
            if(i<=0)
            {
                printf("+");
                for(int j=0;j<15*count;j++)        //画横坐标
                    printf("-");
                puts(">");
            }
            else
            {
                if(i>0)
                {
                    printf("|");                    //画纵坐标
                    for(int j=0;j<count;j++)        //画坐标内数据,#符占位
                    {
                        if(stati[j]>=i)
                                printf("     ####     ");
                        else if(stati[j]+99 >= i-1)
                                printf("     %d      ",stati[j]);
                        else
                                printf("              ");
                    }
    
                    printf(" 
    ");
                }
            }
        }
        printf("
    ");
        printf("    确诊病例      疑似病例      接触病例");
    
    }
    

    6.总结

    在本次项目过程中,我将主界面的函数、画图的函数和部分计算的函数分块编写,让软件层次比较分明,不至于很凌乱。我也在软件项目开发过程中发现了诸多问题,究其原因都是自身基础不够扎实,我也会在后面的学习生活中加强练习。

    7.PSP展示

    PSP 内容 计划共完成需要的时间(min) 实际完成需要的时间(min)
    Planning 计划 20 10
    · Estimate · 估计这个任务需要多少时间,并规划大致工作步骤 20 10
    Development 开发 1268 1738
    · Analysis · 需求分析 (包括学习新技术) 10 8
    · Design Spec · 生成设计文档 8 10
    · Design Review · 设计复审 (和同事审核设计文档) 0 0
    · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 30 40
    · Design · 具体设计 100 120
    · Coding · 具体编码 1000 1200
    · Code Review · 代码复审 0 0
    · Test · 测试(自我测试,修改代码,提交修改) 120 360
    Reporting 报告 40 60
    · Test Report · 测试报告 10 30
    · Size Measurement · 计算工作量 10 20
    · Postmortem & Process Improvement Plan · 事后总结 ,并提出过程改进计划 20 10
    • 通过本次项目开发,我发现了很多问题。在项目计划上有个很严重的问题就是由于自身开发经验不够,我们会很难估计自己的开发时间,而且往往估计时间与时间开发时间相差很大,这在真正的项目开发过程中是很可怕的。所以我们一定要尽早树立起时间意识和严格执行项目计划的决心,最重要的是要多训练。
  • 相关阅读:
    访问双工服务
    为 Silverlight 客户端生成双工服务
    RMAN创建辅助实例(副本数据库)
    js获取对话框返回值
    在ascx中使用js找不到对象问题解决
    css滑动门技术[摘自网络]
    非禁用validateRequest=false使用Page_Error()错误处理[摘自网络]
    PreviousPage跨页面传值
    jQuery Ajax 方法调用 Asp.Net WebService 的详细例子[转]
    动态的创建客户端控件[收藏网络]
  • 原文地址:https://www.cnblogs.com/Summer-Sy/p/12520421.html
Copyright © 2011-2022 走看看