201771010120  苏浪浪  软件工程结对项目

项目 内容
课程班级博客链接 https://www.cnblogs.com/nwnu-daizh/
这个作业要求链接 https://www.cnblogs.com/nwnu-daizh/p/12521474.html
我的课程学习目标 (1)体验软件项目开发中的两人合作,练习结对编程;
(2)掌握Github协作开发程序的操作方法。
结对方学号—姓名 201771010117   马兴德
项目Github的仓库链接地址 https://github.com/1532207421/fangyi

 

 

 

 

 

 

任务1:阅读《现代软件工程—构建之法》第3-4章内容,理解并掌握代码风格规范、代码设计规范、代码复审、结对编程概念;

代码风格规范:就是规范化的程序内部文档、数据结构的详细说明、清晰的语句结构、遵守某一编程规范;

代码复审:指是否在代码规范的框架内正确的解决问题,让同伴以及自己在复审的过程当中能够查找出问题的所在,尽量避免在程序编码过程中出现的错误。

代码设计规范:就是要规范的书写程序,而且这里面还包括一些程序的设计、各个模块之间的联系,设计模式等方面的问题。

结对编程;就是指两个人合作开发一个项目,在开发项目的过程中两个人可以共同解决遇到的困难问题而且可以分工合作完成项目的开发。

任务2:两两自由结对,对结对方《实验二 软件工程个人项目》的项目成果进行评价,具体要求如下:

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

 

 

 

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

概要:

1)代码基本符合需求和规范说明

2)代码设计考虑还不是很周全

3)代码可读性简单易懂,清晰。但是注释不是很多

4)代码维护还行

5)代码的每一行都执行并检查过了

设计规范:

1)有一点硬编码或字符串/数字等存在
2)代码没有依赖于某一平台,
3)有一些无用的代码可以清除

代码规范:

  :符合代码标准

具体代码:

1)有一点错误已经进行了处理,我觉得有一些一场查阅资料和讨论之后并不是,所以不用处理
2)参数传递没有错误,字符串的长度是字节的长度是从0开始计数的。
3)结对同伴的边界条件是比较简单的,循环是不会出现死循环的
4)在资源的使用上只是在项目当中测试使用,因为开发的项目还没有投入线上大家使用,所以不会造成资源的泄露。

效能:

1)代码是基本完善的,而且运行也是正常,但是相对来说查询数据库相对较慢
2)对于系统和网络调用不会出现超时情况,

可读性

代码简单易懂,而且在一些方面有了注释,所以不会影响阅读

可测试性:

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

(3)依据复审结果尝试利用github的Fork、Clone、Push、Pull request、Merge pull request等操作对同伴个人项目仓库的源码进行合作修改。

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

3.1.需求分析称述

(1)可采集全校各类师生员工疫情信息;
(2)各二级部门疫情防控工作负责人可查看本部门人员疫情汇总,并提供高级查询功能进行多属性组合查询和可视化统计功能;
(3)学校防控办指定负责人登录《西北师范大学疫情防控信息统计》子系统,可浏览所有人员填报汇总数据清单,利用【高级查询】可进行数据组合筛选,系统以图形化方式展示各学院已填报和未填报学生统计情况和关键疫情数据统计情况,可【导出】查询列表的EXCEL文件;
(4)人机交互界面要求GUI界面(WEB页面、APP页面都可);
(5)附加分功能:定时填报提醒

第一个功能:因为要设计全校师生员工的信息,我们可以在统一设计的情况下让所有人在同一个系统下进行填报,但是对于学生,我们还设计了一个学生专用的界面去填报与自己有关的一些信息,所以只有登录自己相对应的用户名就可以进行一些相关的操作(删除、修改、添加等操作)。

第二个功能:第二个要实现二级部门人员查看本部门人员汇总,所以我们也设计了有专门二级人员的用户户名与密码,只要输入二级人员相应的账号就可以登录进去,然后进行一些查阅所有师生的信息并将其进行统计整理。

第三个功能:考虑到第三个功能要进行所有人员的数据清单,同样的只要登录自己的账号就可以查看,同时在这个功能当中要进行高级查询,所以在方面我们也设计了可以根据自己学院、学号等查询近期所有数据情况,还有就是可以查询某一个学院或者部门的整体信息也可以利用高级查询进行查询,并且查询完这些之后我们可以将这些信息导出EXCEL文件更加方便统计。

第四个功能:在设计人机交互界面上这一部分相对来说是比较简单的,而且是为了方便用户使用,相对来说比较简单。

第五个功能:附加功能的定时填报提醒这是非常重要的,因为大家经常在某一个规定的时间段忘记打卡,所以这一个功能很重要,但是提醒的功能形式多样化,我们可以选择很多种方式对其进行提醒。

3.2软件设计说明

3.2.1软件设计背景

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

3.2.2软件架构总体设计

(1)可以采集全校师生的总体信息,也可以显示签到的时间;
(2)同时支持学生和老师的在线签到,而且学生和老师签到的系统进入的界面是不一样的,每一个界面都有不同的功能;
(3)学校的二级管理员可以查看学生的具体信息,三级管理员可以实现高级查询的功能以及导出EXCEL,这样更加有利于三级管理员统计全校师生的具体信息;
(4)人机交互界面GUI设计为了让全校师生有了更好的体验;
(5)可以实现定时填写的功能;
(6)数据库可以设计学生老师的登录账号以及密码,所有填报的信息都会在数据库记录保存;

3.3软件设计说明

admin_listener

  主要就是学生的一些基本信息的添加以及学校管理员的信息统计的设计,这里都会有添加、修改、删除等操作。

admin

  这个界面主要是用来设计一个登录成功以及进入的GUI设计界面,主要包括登录窗口,登录成功后的学生的个人信息、地址信息、健康信息以及签到信息等界面的相关操作。

connect

  这个就是最重要的也是最基本的一个,就是涉及GUI界面与后台数据库连接的一部分,只有连接成功才可以进行一些相关的操作

login

  这是登录窗口与数据库相连接的一部分,如果连接成功会显示连接成功,否则显示用户名或密码输入错误

user_listener

  这是登录成功进入管理员界面和师生界面会添加一些信息的操作

user

  在这个里面学生可以更加详细的查询到自己信息

BiffException

  设计管理员可以导出学生的Excel,方便统计信息。

核心代码:

//创建Excel表的"学生"区域的数据
            WritableSheet sheet = wwb.createSheet("学生",0);//或者rwb.getSheet(0)获取第一个区域
            try {
                //2. 连接数据库的几行代码
                Connection con = null; 
                PreparedStatement ps = null;
                ResultSet rs = null;
                String url = "jdbc:sqlserver://localhost:1433;DatabaseName=人事管理系统";
                String sql = "select * from  salary";
                con = DriverManager.getConnection(url, "sa", "bulikai.0");
                ps = con.prepareStatement(sql);// SQL预处理 
                rs = ps.executeQuery();
                //ResultSet是数据库中的数据,将其转换为List类型
                List<Student> list = new ArrayList<Student>();
                while(rs.next()){
                    Student stu = new Student();
                    stu.setID(rs.getString("Employee_id"));
                    list.add(stu);
                    Student stu1 = new Student();
                    stu1.setrank(rs.getString("Position_rank"));
                    list.add(stu1);
              
                }
                ps.close(); 
                con.close();         
                for(int i = 0; i<list.size(); i++){
                   
                    //Label对应数据库String类型数据
                   
                    sheet.addCell(new Label(1,i,list.get(i).getID()));
                    sheet.addCell(new Label(1,i,list.get(i).getBase_salary()));
                }
                wwb.write();

                 
            } catch (SQLException e) {
                e.printStackTrace();
            }finally{
                wwb.close();
            }
             

  运行结果

登录界面:

 

信息填报界面:

 

管理员查询信息界面:

 

 

 健康状况:

 

 

 

 管理员统计学生签到:

 

 

3.4 结对过程讨论

 

 

 

 

 

 

 

3.5结对作业的PSP

 3.6总结:

”两个人编写程序比起一个人来说效果要好得多,有错误能及时发现只要分工明确,两个人在一起讨论,一起研究们一起学习,那么编写一个好一点的小程序还是很轻松的,就拿这次程序编写来说,我的小伙伴在这次编程中给了我很大的启发,让我对于一些没学懂的知识有了进一步的了解,粗心大意的我总是在他的提醒下完成了这次的结对编程,希望下次编程还能和他一组,他对待学习认真的态度、对待一件事认真的态度给我很深刻的感触。

 

 

 

 

 

 

 

 

 

 

posted on 2020-03-28 23:33  小浪o小浪  阅读(170)  评论(1编辑  收藏  举报

分享到: