第三次作业:结对编程

第三次作业:结对编程

GitHub项目地址 https://github.com/Ht1567/PairProgramming
结对伙伴博客地址 https://www.cnblogs.com/ht123-XNSY/
作业链接 https://www.cnblogs.com/cherish599/p/11577268.html

一.项目描述

实现一个WinForm随机点名的程序
要求:

  1. WinForm有基本的UI
  2. 体现类的设计,分层思想
  3. 学生的加载进度用进度条跟踪显示
  4. 添加自己的创新功能
  5. 进行单元测试

二.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

该项目的主要功能由以下几个类共同实现:

  1. DaoLayer(实现操作)
  2. DataBase(数据)
  3. Entity(操作)
  4. 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#的学习,也增强了编程能力,最重要的是,第一次尝试到了一起做一个项目的体验,希望接下来的团队项目,我们依然能有这么顺利的配合。

posted @ 2019-10-01 14:02  邹扬锋  阅读(188)  评论(0编辑  收藏  举报