201771010101-白玛次仁 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告
实验三 结对项目-《西北师范大学疫情防控信息系统》
结对项目总结链接 | 项目 | 内容 |
---|---|---|
课程班级博客链接: | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE | |
这个作业要求链接: | https://www.cnblogs.com/nwnu-daizh/p/12521474.html | |
结对方作业链接 | https://www.cnblogs.com/qiongji/p/12575001.html | |
本次Github的仓库链接地址: | https://github.com/bauahd1/-3 | |
我的课程学习目标: | (1)体验软件项目开发中的两人合作,练习结对编程。(2)掌握Github协作开发程序的操作方法。 |
实验内容及步骤:
*任务1:
阅读《现代软件工程—构建之法》第3-4章内容,理解并掌握代码风格规范、代码设计规范、代码复审、结对编程概念;
概念:
代码风格规范:
:代码风格规范保持简明,让代码更容易读,更好地理解和维护程序,很大一部分是代码的格式问题,由于代码的格式问题对结对项目中程序调试等中出现很多问题。程序的空格,大小写,重点说明注释中得到的易读,简单等。
代码设计规范:
:代码设计规范不关是程序的格式问题,还有程序设计,模块与模块之间的关系,设计模式与程序设计
具体用的语言与相关的运算符的内容。
代码复审:
:代码的规范框架内有没有正确的解决问题,以自我复审,同伴复审,团队复审等中看出编码和算法的错误,找出不符合团队代码规范的地方等。
结对编程:
:结对编程过程中互相帮助,肩并肩,平等地,进行的开发过程,一起分析,一起设计等
*任务2
两两自由结对,对结对方《实验二 软件工程个人项目》的项目成果进行评价,具体要求如下:
(1)对项目博文作业进行阅读并进行评论,评论要点包括:博文结构、博文内容、博文结构与PSP中“任务内容”列的关系、PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究,将以上评论内容发布到博客评论区。
(2)克隆结对方项目源码到本地机器,阅读并测试运行代码,参照《现代软件工程—构建之法》4.4.3节核查表复审同伴项目代码并记录。
(3)依据复审结果尝试利用github的Fork、Clone、Push、Pull request、Merge pull request等操作对同伴个人项目仓库的源码进行合作修改。
*评论截图:
*实验二聊天一部分截图:
*任务3
采用两人结对编程方式,结合我校师生疫情每日上报系统使用体验,设计开发一款符合我校疫情防控工作需求的信息系统,使之具有以下功能:
(1)可采集全校各类师生员工疫情信息;
(2)各二级部门疫情防控工作负责人可查看本部门人员疫情汇总,并提供高级查询功能进行多属性组合查询和可视化统计功能;
(3)学校防控办指定负责人登录《西北师范大学疫情防控信息统计》子系统,可浏览所有人员填报汇总数据清单,利用【高级查询】可进行数据组合筛选,系统以图形化方式展示各学院已填报和未填报学生统计情况和关键疫情数据统计情况,可【导出】查询列表的EXCEL文件;
(4)人机交互界面要求GUI界面(WEB页面、APP页面都可);
(5)附加分功能:定时填报提醒
1.需求分析:
。采用两人结对编程方式,结合我校师生疫情每日上报系统使用体验,设计开发一款符合我校疫情防控工作需求的信息系统,使之具有以下功能:
(1)可采集全校各类师生员工疫情信息;
(2)各二级部门疫情防控工作负责人可查看本部门人员疫情汇总,并提供高级查询功能进行多属性组合查询和可视化统计功能;
(3)学校防控办指定负责人登录《西北师范大学疫情防控信息统计》子系统,可浏览所有人员填报汇总数据清单,利用【高级查询】可进行数据组合筛选,系统以图形化方式展示各学院已填报和未填报学生统计情况和关键疫情数据统计情况,可【导出】查询列表的EXCEL文件;
(4)人机交互界面要求GUI界面WEB页面、APP页面都可);
(5)附加分功能:定时填报提醒
2.软件设计说明:
*数据库尝试一部分部分:
*尝试Excel表的导出软件添加部分:
3.软件实现及核心功能代码展示:
代码:
public void writeFile()
{
try
{
w_file = new FileWriter("F:\\学生信息.txt");
buf_writer = new BufferedWriter(w_file);
String t=" ";
String number = textField .getText();//读入学号
buf_writer.write(number,0,number.length());
buf_writer.write(t,0,t.length());
String name = textField_1.getText();//读入姓名
buf_writer.write(name,0,name.length());
buf_writer.write(t,0,t.length());
buf_writer.write(sex,0,sex.length());//读入性别
buf_writer.write(t,0,t.length());
String cell1= textField_6 .getText();//读入班级
buf_writer.write(cell1,0,cell1.length());
buf_writer.write(t,0,t.length());
String cell11= textField_7 .getText();//读入班级
buf_writer.write(cell11,0,cell11.length());
buf_writer.write(t,0,t.length());
String nom = textField_2 .getText();
buf_writer.write(nom,0,nom.length());
buf_writer.write(t,0,t.length());
String clas= textField_3 .getText();
buf_writer.write(clas,0,clas.length());
buf_writer.write(t,0,t.length());
String clasS= textField_4 .getText();
buf_writer.write(clasS,0,clasS.length());
buf_writer.write(t,0,t.length());
String cell= textField_5 .getText();
buf_writer.write(cell,0,cell.length());
buf_writer.write(t,0,t.length());
buf_writer.flush();
JOptionPane.showMessageDialog(null, "保存成功");
}
catch(IOException ew)
{
System.out.print(ew);
}
}
});
btnNewButton.setBounds(531, 371, 123, 29);
frame.getContentPane().add(btnNewButton);
JLabel lblNewLabel_1 = new JLabel("姓名:");
lblNewLabel_1.setFont(new Font("宋体", Font.PLAIN, 24));
lblNewLabel_1.setBounds(29, 153, 81, 21);
frame.getContentPane().add(lblNewLabel_1);
textField_1 = new JTextField();
textField_1.setBounds(102, 152, 167, 27);
frame.getContentPane().add(textField_1);
textField_1.setColumns(10);
JLabel label_1 = new JLabel("性别:");
label_1.setFont(new Font("宋体", Font.PLAIN, 24));
label_1.setBounds(29, 199, 81, 21);
frame.getContentPane().add(label_1);
JComboBox comboBox = new JComboBox();
comboBox.setModel(new DefaultComboBoxModel(new String[] {"男", "女"}));
comboBox.setBounds(102, 198, 167, 27);
comboBox.addItemListener(this);
frame.getContentPane().add(comboBox);
JLabel label_2 = new JLabel("所在省:");
label_2.setFont(new Font("宋体", Font.PLAIN, 24));
label_2.setBounds(393, 107, 113, 21);
frame.getContentPane().add(label_2);
JLabel label_3 = new JLabel("所在市");
label_3.setFont(new Font("宋体", Font.PLAIN, 24));
label_3.setBounds(393, 155, 81, 21);
frame.getContentPane().add(label_3);
JLabel label_4 = new JLabel("所在区");
label_4.setFont(new Font("宋体", Font.PLAIN, 24));
label_4.setBounds(393, 200, 81, 21);
frame.getContentPane().add(label_4);
JLabel label_5 = new JLabel("备注:");
label_5.setFont(new Font("宋体", Font.PLAIN, 24));
label_5.setBounds(393, 268 , 81, 21);
frame.getContentPane().add(label_5);
JLabel lblNewLabel_6 = new JLabel("班级:");
lblNewLabel_6.setFont(new Font("宋体", Font.PLAIN, 24));
lblNewLabel_6.setBounds(29,243, 81, 21);
frame.getContentPane().add(lblNewLabel_6);
JLabel lblNewLabel_7 = new JLabel("学院:");
lblNewLabel_7.setFont(new Font("宋体", Font.PLAIN, 24));
lblNewLabel_7.setBounds(29,293, 81, 21);
frame.getContentPane().add(lblNewLabel_7);
textField_2 = new JTextField();
textField_2.setBounds(521, 107, 147, 27);
frame.getContentPane().add(textField_2);
textField_2.setColumns(10);
textField_3 = new JTextField();
textField_3.setBounds(521, 152, 147, 27);
frame.getContentPane().add(textField_3);
textField_3.setColumns(10);
textField_4 = new JTextField();
textField_4.setBounds(521, 200, 147, 27);
frame.getContentPane().add(textField_4);
textField_4.setColumns(10);
textField_5 = new JTextField();
textField_5.setBounds(521, 258, 147, 100);
frame.getContentPane().add(textField_5);
textField_5.setColumns(10);
textField_6 = new JTextField();
textField_6.setBounds(102, 242, 167, 27);
frame.getContentPane().add(textField_6);
textField_6.setColumns(10);
textField_7 = new JTextField();
textField_7.setBounds(102, 292, 167, 27);
frame.getContentPane().add(textField_7);
textField_7.setColumns(10);
JButton button = new JButton("\u53D6\u6D88");
button.setBounds(86, 371, 123, 29);
frame.getContentPane().add(button);
}
4.程序运行:
*4.1登录界面截图:
*4.2登录界面密码或用户名错误显示:
*4.3登录成功界面显示:
*4.4老师和学生管理员不同登录方式:
*4.5简单的疫情填报表保存成功后写在文本文档中:
*4.6文本文档路径:
*4.7文本文档内容:
*4.8学生姓名与学号有关的小系统:
*4.9学生添加:
*4.10用姓名查学号:
*4.11用姓名查学号,没有找到学生:
*4.12用学号排序:
*4.13签到时间以及学号:
*4.14内容导入到Excel表中:
*4.15Excel表路径:
*4.16Excel表内容:
*4.17内容添加:
5.GitHub仓库:
*bauahd和bauahd1:
*bauahd中的显示图1:
*bauahd中的显示图2(bauahd中显示的beuahd1-3是本次实验三的仓库):
*bauahd1中的仓库显示(-3是实验三仓库)1:
6.结对作业的PSP:
psp2.1 | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
Planning | 计划 | 10 | 30 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 430 | 580 |
Development | 开发 | 420 | 540 |
Analysis | 需求分析(包括新技术) | 10 | 20 |
Desig Spec | 生成设计文档 | 20 | 40 |
Desgin Review | 设计复审 | 30 | 40 |
Coding Standard | 代码规范 | 30 | 50 |
Desgin | 具体设计 | 10 | 25 |
Coding | 具体编码 | 240 | 360 |
Code Review | 代码复审 | 60 | 180 |
Test | 测试 | 15 | 20 |
Reporting | 报告 | 60 | 80 |
Test Report | 测试报告 | 6 | 30 |
Size Measurement | 计算工作量 | 6 | 15 |
Postmortem&Process lmprovement Plan | 事后总结并提出改进计划 | 10 |
7.实验总结:
项目中很难得到1+1>2的效果,在这次结对项目中很难再一起讨论代码部分的内容,但在GitHub等结对仓库建立过程中一起查找资料,一起沟通等来解决。这次项目由于代码方面比较薄弱,进行的不太好有点遗憾。