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, "该学/工号对应的学生已经存在!!!\n\n请重新输入或者修改已经录入的信息");   			 
  			  //清空文本框
  			 学工号.setText("");
  			 姓名.setText("");
  			 学院.setText("");
  			 个人联系方式.setText("");
  			 现居住地.setText("");
  			 登记日期.setText("");
  			 return;
  		 }      		 
  		 String sname = 姓名.getText();  		 
  		 //先判断学号和姓名是否为空,如果为空,直接退出
  		 if(sID.equals("")||sname.equals(""))
  		 {
  			 JOptionPane.showMessageDialog(null, "录入的学生学号或姓名为空!!!\n\n请重新输入");
  			 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的合作,两个人除了能学会一些技术知识,也能学会一些沟通技巧、收获合作的快乐。

猜你喜欢

转载自www.cnblogs.com/tangyuechen/p/12586094.html