第三次作业:结对编程
第三次作业:结对编程
GitHub项目地址 | https://github.com/Ht1567/PairProgramming |
---|---|
结对伙伴博客地址 | https://www.cnblogs.com/ht123-XNSY/ |
作业链接 | https://www.cnblogs.com/cherish599/p/11577268.html |
一.项目描述
实现一个WinForm随机点名的程序
要求:
- WinForm有基本的UI
- 体现类的设计,分层思想
- 学生的加载进度用进度条跟踪显示
- 添加自己的创新功能
- 进行单元测试
二.PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 25 |
· Estimate | · 估计这个任务需要多少时间 | 600 | 720 |
Development | 开发 | 480 | 540 |
· Analysis | · 需求分析 (包括学习新技术) | 90 | 90 |
· Design Spec | · 生成设计文档 | 10 | 10 |
· Design Review | · 设计复审 (和同事审核设计文档) | 10 | 10 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
· Design | · 具体设计 | 30 | 20 |
· Coding | · 具体编码 | 240 | 300 |
· Code Review | · 代码复审 | 30 | 30 |
· Test | · 测试(自我测试,修改代码,提交修改 | 60 | 70 |
Reporting | 报告 | 120 | 180 |
· Test Report | · 测试报告 | 60 | 120 |
· Size Measurement | · 计算工作量 | 30 | 30 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 30 |
合计 | 630 | 745 |
三.流程图及解题思路
graph LR
start[执行程序]-->log[登录]
log-->conditionA[是否登录成功]
conditionA--yes-->B[导入学生]
conditionA--no-->C[重新登录]
B-->D[随机点名]
D--缺勤-->E[计入名单]
D--出勤-->F[随机点名]
C-->conditionA
该项目的主要功能由以下几个类共同实现:
- DaoLayer(实现操作)
- DataBase(数据)
- Entity(操作)
- WinFormControlUse(登录界面设计)
实际操作图如下:
- 首先我们设计了一个飞溅屏,美化界面
- 然后是设计了一个登录界面,以及账户密码
- 登陆之后就可以进入到点名系统
四.代码复审
1、代码规范
参考:C#代码规范
2、代码互审
我和我的结对伙伴是一个寝室的,所以代码互审很方便,基本上做的过程中有问题就可以及时讨论,编程和添加创新设计是我们共同参与的,因此没有发现什么大的问题,合并时只修改了不同的参数,并按照代码规范做了一定的修改。
五.代码说明
1.登录代码:
private void button1_Click(object sender, EventArgs e)
{
string name = this.textBox1.Text;
string password = this.textBox2.Text;
if (name.Equals("swpu") && password.Equals("123456"))
{
FrmStudent frm = new FrmStudent();
frm.Show();
this.Hide();
}
else
{
MessageBox.Show("登录失败");
}
}
2.加载数据:
private void btnLoadStu_Click(object sender, EventArgs e)
{
//获取学生数据源
StudentDAO stuDao = new StudentDAO();
stuList=stuDao.getAllStudents();
//进度条设置
int stuCounts = stuList.Count;//及时学生人数
progressName.Maximum = stuCounts;
//构造数据源
DataTable dt = new DataTable();
dt.Columns.Add("stuID", Type.GetType("System.String"));
dt.Columns.Add("stuName", Type.GetType("System.String"));
//数据加载以进度条方式展现
foreach (Student stu in stuList)
{
dt.Rows.Add(stu.Id,stu.Name);
progressName.Value += 1;//一个学生,进度条加1;
Thread.Sleep(500);
}
dgvStuList.DataSource = dt;
setControlVisible();
}
六.增加功能
在原来老师给的代码的基础上,我们新增了缺勤名单记录的功能,可以直接记录没有到的学生的名单,代码如下:
private void button1_Click(object sender, EventArgs e)
{
int i = 0;
string tmp;
List<CheckBox> cb = new List<CheckBox>();
cb.Add(new CheckBox());
cb[i].Text = lblName.Text;
flowLayoutPanel1.Controls.Add(cb[i]);
i++;
}
实际操作图如下:
七.单元测试
测试本专业学生人数总数
八.结对过程及照片
我们结对后迅速确定了工作计划以及明确分工,所有环节都有条不紊的进行,遇到问题也及时讨论,总之,这次结对编程过程很顺利,工作也做得很舒心。
九.总结
通过这次结对编程,我又加强了一些对于C#的学习,也增强了编程能力,最重要的是,第一次尝试到了一起做一个项目的体验,希望接下来的团队项目,我们依然能有这么顺利的配合。