结队作业
GitHub项目地址 https://github.com/Lobooi/PairProgramming.git
伙伴博客地址 https://www.cnblogs.com/lanti/p/11615583.html
作业要求地址 https://www.cnblogs.com/cherish599/p/11577268.html

1.预期PSP表:

见小伙伴的博客啦——傅伟鑫的博客(24229结对作业)

2.项目设计与编码

2.1伙伴分工

何继武201731024235:UI的设计与代码的主要编写,GitHub的操作,辅助单元测试与审查。
傅伟鑫201731024229:代码的辅助编写,单元测试的编写,博客的整理编写。
并不严格如此分工,两人又相互帮助与交流的地方(以避免两人出现代码实现上的分歧问题)。

2.2思路与实现

项目思路: 在老师教学的基础上,实现项目结队个性化的特点和功能,首先是对UI界面的重新设计,以及对我们自己功能模块的设计,预计设计总共五个类(包括数据集、函数集等)。
代码实现: 主要对老师代码的分析与改进,然后加入自己的特色:
1.对UI的重新设计:对控件进行了合适的布局设置,同时确定了最小显示范围,以免随意缩放后不能找到程序窗口。
主窗体
记录显示窗体
2.代码的实现:首先保证我们的基础功能的实现,并且不会出现问题,其次,在实现我们自己对数据集的新信息的添加(优化学号以及添加了学生性别):
数据优化
然后,是对我们自己新加功能的实现,实现对被点名的学生进行记录并可以在新窗口中展示,目的是为了便于查看与统计点名情况(为奖惩提供一定依据),但是请注意,不要不小心点到删除数据。下面是具体实现,但不是调用,并且在之后我们进行了窗口代码的优化,避免操作人员多次重复的打开我们的记录窗口。

public class DianMingRecord
    {
        public string[] recordData = new string[100];
        int i = 0;

        public void DMrecord(string stuName) 
        {
            recordData[i] = stuName;
            i++;
        }

        public string ShowRecord()
        {
            string data = null;
            for(int j = 0 ;j <= i; j++)
            {
                data += recordData[j];
                data += "\r";
            }
            return data;
        }
    }

介绍一下,优化后的窗体,主要是控制了其在打开之后,不能再次重复打开,避免多个窗口冗余。

    public partial class ShowRecordData : Form
    {
        string data = null;
        public ShowRecordData(string data)
        {
            InitializeComponent();
            this.data = data;
        }

        private void ShowRecordData_Load(object sender, EventArgs e)
        {
           lblRCdata.Text = data;
        }

        private void btnClear_Click(object sender, EventArgs e)
        {
            data = null;
            lblRCdata.Text = data;
            DialogResult = DialogResult.OK;
            btnClear.Enabled = false;
        }
    }

这样就差不多完成了我们的点名项目具体实现。
设计原则主要体现了两种,一是:Information Hiding(信息隐藏): 信息隐藏指在设计和确定模块时,使得一个模块内包含的特定信息(过程或数据),对于不需要这些信息的其他模块来说,是不可访问的。 如何实现:信息隐藏就是对信息的封装,设置访问权限public、protect private等 ;二是:Design By Contract(契约式设计): 契约式设计就是按照某种规定对一些数据等做出约定,如果超出约定,程序将不再运行 如何体现:在输入数据情况下,能得到与预期一样的结果。此外还有合理利用封装与继承的思想对代码的结构进行了优化(尽管最后并没有具体使用继承类以及方法,因为使用会出现一定问题,考虑好后就没用使用)。

2.3代码的审查与单元测试

代码的审查: 主要是对程序错误的修改与处理,主要由24235(我,何继武)负责,但是还并不会有单元测试,它将会在我进行完代码的审查后进行。
单元测试: 这里主要由24229(傅伟鑫)负责,这里给出他的博客——傅伟鑫的博客(24229结对作业),让他来介绍。

3.结队总结

3.1结队过程

从设计交流到功能代码编写以及单元测试完成,我和我的伙伴之间进行了多次交流,好的是我们是室友所以交流起来比较方便,另外我们还花了很多时间来继续研究GitHub的使用,我们发现这个还是挺让人摸不着头脑的,下面给出两个靓仔的认真图,哈哈哈哈。
靓仔加油

3.2 结果PSP表

还是他在弄哈,这里再次附上他的博客:傅伟鑫的博客(24229结对作业)

3.3结对总结

实际上来说,最最最最重要的是又学了怎么使用GitHub,以及利用GitHub来管理代码,我们尝试过了分支以及合并,在不冲突的情况下,进行的很顺利,其次有才是让自己的编程能力得到了巩固,在不断的学习和复习中掌握住对C#语言的使用。
GitHub分支
我们不怕浪费时间,所以能促使我们不断进步,加油!!!!!

posted on 2019-10-01 16:25  Lobooi  阅读(163)  评论(0编辑  收藏  举报