zoukankan      html  css  js  c++  java
  • 201771010121-唐月晨 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

    项目 内容
    班级博客链接 https://edu.cnblogs.com/campus/xbsf/nwnu2020SE
    软件工程课程要求 https://www.cnblogs.com/nwnu-daizh/p/12521474.html
    课程学习目标 与同伴结对编程,完善项目功能;掌握Github一些基本操作方法。
    如何实现学习目标 与结对方多沟通,互相学习;通过项目进行总结;从网上查阅资料。
    结对方姓名 201771010118-马昕璐
    结对方博客 https://www.cnblogs.com/maxinlu/
    本项目Github的仓库链接地址 https://github.com/Tycmoon/doub-le

    任务二

    1、对项目博文作业进行阅读并进行评论,评论要点包括:博文结构、博文内容、博文结构与PSP中“任务内容”列的关系、PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究,将以上评论内容发布到博客评论区。

    2、克隆结对方项目源码到本地机器,阅读并测试运行代码,参照《现代软件工程—构建之法》4.4.3节核查表复审同伴项目代码并记录。

    概要部分
    (1)代码符合需求和规格说明么?
    答:基本符合。
    (2)代码设计是否有周全考虑?
    答:不太周全。
    (3)代码可读性如何?
    答:简单易懂。
    (4)代码容易维护么?
    答:较容易。
    (5)代码的每一行都执行并检查过了吗?
    答:是的。

    设计规范部分
    (1)设计是否遵从已知的设计模式或项目中常用的模式?
    答:否
    (2)有没有硬编码或字符串/数字等存在?
    答:有。
    (3)代码有没有依赖于某一平台,是否会影响将来的移植(如Win32到Win64)
    答:没有依赖,应该不会影响。
    (4)开发者新写的代码能否用已有的Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以调用而不用全部重新实现?
    答:可以实现,不存在。
    (5)有没有无用的代码可以清除?
    答:有,已清除。

    代码规范部分
    修改的部分符合代码标准和风格么?
    答:基本符合。

    具体代码部分
    (1)有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常?
    答:未进行错误处理;有检查返回值和处理异常。
    (2)参数传递有无错误,字符串的长度是字节的长度还是字符(可能是单/双字节)的长度,是以0开始计数还是以1开始计数?
    答:开始有错误,修改后无误。字符串的长度是字节的长度,是以0开始计数。
    (3)边界条件是如何处理的?循环有没有可能出现死循环?
    答:在命名初始变量时就进行了边界条件的检查,如for(int i = 0;i < 20; i++)。不会出现死循环。
    (4)有没有使用断言(Assert)来保证我们认为不变的条件真的满足?
    答:没有使用。
    (5)对资源的利用,是在哪里申请,在哪里释放的?
    答:网上查找资源并进行整合。
    (6)数据结构中是否有无用的元素?
    答:一开始的时候定义了一些无用的,在后来的检查中删掉了。

    效能
    (1)代码的效能(Performance)如何?最坏的情况是怎样的?
    答:代码无误。
    (2)代码中,特别是循环中是否有明显可优化的部分(C++中反复创建类,C#中 string 的操作是否能用StringBuilder 来优化)?
    答:有可优化部分,还未进行修改。
    (3)对于系统和网络调用是否会超时?如何处理?
    答:未超时。

    可读性
    代码可读性如何?有没有足够的注释?
    答:可读性较高,有足够的注释。

    可测试性
    代码是否需要更新或创建新的单元测试?还可以有针对特定领域开发(如数据库、网页、多线程等)的核查表。
    答:需要。

    3.结对方项目仓库中的Fork、Clone、Push、Pull request、Merge pull request日志数据:
    (我认为此次实验三的内容比实验二更值得提出issue,进行pull requests等操作,所以我只在同伴的实验二中进行了fork以及clone的操作,其余操作在实验三中实现)
    实验二:

    实验三:


    任务三

    采用两人结对编程方式,结合我校师生疫情每日上报系统使用体验,设计开发一款符合我校疫情防控工作需求的信息系统,使之具有以下功能:

    • 需求分析

    • 需求概述

      • 在疫情期间方便学校了解教职工和学生的健康情况
      • 借助有效的互联网平台对数据进行统计分析
      • 分不同角色不同权限对系统进行填报、管理
    • 软件设计

      • 学生/教职工:
        • 填报信息;
        • 每日只能填报一次信息。
      • 管理人员:
        • 能对填报的信息进行增删改查;
        • 导出excel表格;
        • 生成统计图便于分析。
    • 软件实现及核心功能代码展示

    • 主要类说明:

    login:登录界面,可分为管理人员或者学生登录
    ManagerLogin类以及StudentLogin类:分别是管理人员和学生界面里需要填写的内容
    show_stuall和showones类:显示全部填写信息和查询某一个学生的信息
    Function:通过Arraylist存储学生信息,实现对信息的增删改功能

    • 关键代码片段
      	   public void actionPerformed(ActionEvent e) {		     		     
      		 String sID = 学工号.getText();    //获取文本框中内容
      		 if(fun.find(sID)!=-1)
      		 {
      			 JOptionPane.showMessageDialog(null, "该学/工号对应的学生已经存在!!!
    
    请重新输入或者修改已经录入的信息");   			 
      			  //清空文本框
      			 学工号.setText("");
      			 姓名.setText("");
      			 学院.setText("");
      			 个人联系方式.setText("");
      			 现居住地.setText("");
      			 登记日期.setText("");
      			 return;
      		 }      		 
      		 String sname = 姓名.getText();  		 
      		 //先判断学号和姓名是否为空,如果为空,直接退出
      		 if(sID.equals("")||sname.equals(""))
      		 {
      			 JOptionPane.showMessageDialog(null, "录入的学生学号或姓名为空!!!
    
    请重新输入");
      			 return;
      		 }  	   		 	 
        		 String scollege = 学院.getText();     		 
        		 if(scollege.equals(""))//年龄为空,没有输入
     			    scollege="--";  		 
        		 String scall = 个人联系方式.getText();
        		 if(scall.equals(""))
       			  scall="--";
        		 String shome = 现居住地.getText();
        		if(shome.equals(""))
        		    shome="--";
        		 String stime = 登记日期.getText();
        		if(stime.equals(""))
        		   stime="--";
        		
        		String sinfo1=null;
                if(是.isSelected()){//选择是否与患者有接触
                   sinfo1=是.getText();
                }
                else{
                    sinfo1=否.getText();
                } 
    
             String sinfo2=null;
             if(有.isSelected()){//选择是否与患者有接触
                sinfo2=有.getText();
             }
             else{
                 sinfo2=无.getText();
             } 
    
        		 stu.setStuID(sID);
        		 stu.setName(sname);
        		 stu.setAge(scollege);
        		 stu.setCallnummber(scall);
        		 stu.setHome_place(shome);
        		 stu.setIdentityID(stime);
        		 stu.setInfo1(sinfo1);
        		 //stu.setInfo2(sinfo2);
        		 stu.setInfo2(sinfo2);
        		 //stu.setInfo4(sinfo4);
        		
        		 System.out.println("信息管理员");
        		 System.out.println(stu.fileString());
    
    • 功能实现

      • 分角色登录

      • 管理人员界面

      • 学生界面

      • 管理人员显示全部信息

      • 管理人员按条件查询(可单条件查询,也可多属性组合查询)

      • 生成统计图

      • 生成excel文件

    • 描述结对的过程,提供两人在讨论、细化和编程时的微信或QQ截图(截图要完整,能够显示结对双方姓名)


    • PSP展示
    PSP2.1 内容 计划完成需要的时间(h) 实际完成需要的时间(h)
    Planning 计划 30 20
    Estimate 估计这个任务需要多少时间,并规划大致工作步骤 30 45
    Development 开发 25 40
    Analysis 需求分析 (包括学习新技术) 3 5
    Design Spec 生成设计文档 2 2
    Design Review 设计复审 (和同学审核设计文档) 1 1
    Coding Standard 代码规范 (为目前的开发制定合适的规范) 1 0.5
    Design 具体设计 5 5
    Coding 具体编码 20 35
    Code Review 代码复审 1 5
    Test 测试(自我测试,修改代码,提交修改) 1 3
    Reporting 报告 1 2
    Test Report 测试报告 1 1
    Size Measurement 计算工作量 2 1
    Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 1 1
    • 小结感受:两人合作真的能够带来1+1>2的效果吗?通过这次结对合作,请谈谈你的感受和体会。

    通过此次实验,我觉得两人合作确实能够带来1+1>2的效果。比如做之前我们两个人会共同商量构思,共同决定用什么技术、什么方法,当一个人在遇到困难时,另一个人也可以帮助解决。并且通过1+1的合作,两个人除了能学会一些技术知识,也能学会一些沟通技巧、收获合作的快乐。

  • 相关阅读:
    如何实现对ELK各组件的监控?试试Metricbeat
    Dubbo日志链路追踪TraceId选型
    Spring Security如何优雅的增加OAuth2协议授权模式
    聊一聊:MyBatis和Spring Data JPA的选择问题
    Java微服务 vs Go微服务,究竟谁更强!?
    你一定需要知道的高阶JAVA枚举特性!
    当音乐学博士搞起编程,用一本书改变了Java世界!
    Spring Boot 2.x基础教程:使用Flyway管理数据库版本
    文件上传的单元测试怎么写?
    Spring Boot 2.x基础教程:多个文件的上传
  • 原文地址:https://www.cnblogs.com/tangyuechen/p/12586094.html
Copyright © 2011-2022 走看看