个人第3次作业:结对编程

结对作业
github项目地址 链接
结对伙伴博客地址 链接
作业链接 链接

一、PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 15 15
· Estimate · 估计这个任务需要多少时间 20 20
Development 开发 30 40
· Analysis · 需求分析 (包括学习新技术) 50 80
· Design Spec · 生成设计文档 20 20
· Design Review · 设计复审 (和同事审核设计文档) 15 20
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 15 20
· Design · 具体设计 40 80
· Coding · 具体编码 150 250
· Code Review · 代码复审 60 70
· Test · 测试(自我测试,修改代码,提交修改) 100 120
Reporting 报告 70 120
· Test Report · 测试报告 60 120
· Size Measurement · 计算工作量 25 25
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 30 30
合计 合计 700 1030

二、解题思路

这次作业发布以后,我们都感觉跟以前做过的几个项目有很大的不同。这次项目要求是做一个课堂点名系统。这个项目的两个基本功能点是,加载学生名单、随机抽取学生,该项目依靠WinForm实现。
此次项目,老师在课堂上给予了我们很大的帮助。该项目的主要功能由以下几个类共同实现:
1、DaoLayer(实现操作)
2、DataBase(数据)
3、Entity(操作)
接口的名字,功能,接口与接口间的继承关系进行设计;好的接口设计可以增强代码可读性和易用性,便于操作。

三、代码复审

1、代码规范
参考链接:链接
2、代码互审
我们是室友在一间寝室,所以我们完成这个项目都是一起讨论编程的,因此没有发现什么大的问题,只是在合并时遇到了很大的问题,并按照代码规范做了一定的修改。

四、代码说明

(1) 登录代码,与设置的窗体属性连接,我们在代码中添加了admin账户名与密码,并没有使用数据库,并且添加新的线程实现窗体跳转的功能

    public partial class FrmLogin : Form
    {
        public FrmLogin()
        {
            InitializeComponent();
        }
        /// <summary>
        /// 退出程序
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnExit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
        /// <summary>
        /// 登录事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnLogin_Click(object sender, EventArgs e)
        {
            //1. 获取数据
            //从TextBox中获取用户输入信息
            string userName = this.txtUserNo.Text;
            string userPassword = this.txtpassword.Text;

            //2. 验证数据
            // 验证用户输入是否为空,若为空,提示用户信息
            if (userName.Equals("") || userPassword.Equals(""))
            {
                MessageBox.Show("用户名或密码不能为空!");
            }
            // 若不为空,验证用户名和密码是否与数据库匹配
            // 这里只做字符串对比验证
            else
            {
                //用户名和密码验证正确,提示成功,并执行跳转界面。
                if (userName.Equals("admin") && userPassword.Equals("admin"))
                {
                    MessageBox.Show("登录成功!");
                    this.DialogResult = DialogResult.OK;
                    this.Dispose();
                    this.Close();
                    Thread thread = new Thread(()=> {
                        Application.Run(new WinformControlUse.FrmStudent());
                    });
                    thread.Start();

                }
                //用户名和密码验证错误,提示错误。
                else
                {
                    MessageBox.Show("用户名或密码错误!");
                }
            }
        }

(2) 加载总人数,我引用了老师所写的一个方法,成功显示人数

this.stunum.Text = "学生人数:" + stuDao.getStudentRecordsNums();

(3) 其余主窗体的代码说明,请参考我的结对队友的博客。链接

效果图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、单元测试功能

1、单元测试思路
我在老师的代码基础上找寻方法时只找到了我们之前所使用的的StudentRecordsNums方法能够引用并且适合单元测试,于是我们设置了一个返回值,判断结果是否正确。
2、单元测试代码

    public class UnitTest1
    {
        [Fact]
        public void Test1()
        {
           int num =  new DaoLayer.StudentDAO().getStudentRecordsNums();
            Assert.Equal(84, num);
        }
    }

3、单元测试结果
在这里插入图片描述

六、创新部分

我们在老师的代码基础上,增加了登录功能,并且实现了窗体之间的跳转,对点名程序增加了安全性,另外附加了一个显示学生人数的小功能,最后我们将加载数据的数据进度调快了。

七、结对过程及照片

此次和我结对的是师志杰同学,我们一起讨论了我们的设计思路的可行性,在老师的代码基础上进行创新,再一起填写PSP表格并且进行了分工,中途我们遇到了很多问题,但我们都通过查阅资料完成。
在这里插入图片描述

八、总结和感想

1、这次作业因为有老师的帮助,所以在代码编辑方面我们做的不是特别多,做起来也比较顺利。
2、我觉得结对编程这种项目比较考验两个人的合作性,是能提高效率的一种方法。
3、PSP表格合理安排了时间,从而提高了一定的效率。
4、在GIT的操作还是比较困难,在提交代码的过程中我们还是遇到了很多问题,比如在代码合并的过程中,我不小心上传了错误的文件夹导致合并代码有两个程序,最后我们重新上传并且成功,git我们还需要多加练习,熟悉操作才行。

posted @ 2019-09-30 11:35  郑博  阅读(215)  评论(1编辑  收藏  举报