结对编程第三次做业

结对编程做业
GitHub项目地址 https://github.com/15565048308/PairProgramming
搭档博客地址 https://www.cnblogs.com/XYFWXR/
做业地址 http://www.javashuo.com/article/p-noqnzypb-ga.html

1、PSP表格

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

关于PSP请参阅邹欣老师博客html

2、代码设计及其实现过程

1 程序设计及实现

这个项目是在已有的点名系统的基础上进一步完成的,实现点名自动将缺课学生写入指定文档,并根据缺课次数写入不一样的文档,一次做为平时考勤加减分和是否重修的依据,减轻老师点名记录负担。
(1)随机点名,判断该同窗是否缺课
(2)将第一次缺课学生写入FirstAbsent文档
(3) 随机点名,遍历第一次缺课学生文档,判断该同窗是否第二次缺课,如果写入第二次缺课文档并给与提示,第三次同理。
(4)课程结束,任课教师翻阅文档,查看缺勤信息。
结构以下:git

graph LR A1[随机点名]-->D1{是否第三次缺课} D1--YES-->A2[提示重修 写入ThirdAbsent名字加T标识] D1--NOT-->D2{是否第二次缺课} D2--YES-->A3[写入SecondAbsend文档名字加S标识] D2--NOT-->D3{是否第一次缺课} D3--YES-->A[写入FirstAbsent文档名字加F标识] D3--NOT-->A5[下一次随机点名] A5-->A1
2 如何体现原则的

1)Design By Contract(契约式设计):
契约式设计就是按照某种规定对一些数据等作出约定,若是超出约定,程序将再也不运行
如何体现:在输入数据状况下,能获得与预期同样的结果
(2)Information Hiding(信息隐藏):
信息隐藏指在设计和肯定模块时,使得一个模块内包含的特定信息(过程或数据),对于不须要这些信息的其余模块来讲,是不可访问的。
如何实现:信息隐藏就是对信息的封装,设置访问权限public、protect private等
(3)Interface Design(接口设计):
对接口的名字,功能,接口与接口间的继承关系进行设计;好的接口设计能够加强代码可读性,易用性,可更改性。
如何实现:将不一样的功能程序段写到不一样的方法中,而后包装在同一个类中,加强可读性,便于调用
(4)Loose Coupling 松耦合:
想让对象与对象间松耦合,经过增长抽象类(Abstract Class)或者接口来作到
如何实现:软件设计的一条基本原则就是“低耦合,高内聚”,下降对象与对象之间的耦合性,便于代码设计与维护,本程序只增长啦一个方法,全部没法提现松耦合github

3、代码复审过程

(1)代码规范参考
(2)编程

4、具体代码

(1)当中止点名事件触发,调用方法bash

private void btnStop_Click(object sender, EventArgs e)
        {
            timerCallName.Stop();
            //调用记录缺课次数的方法
            AbsentTems();
        }

(2)将随机被选中的字符串(姓名)带入新方法中,进行判断
使用MessageBox类进行提示单元测试

public  void AbsentTems()
        {
            string Str = stuList[i].Name;
           
            if (MessageBox.Show("该学生是否缺课?", "Absent OR Not?",
                MessageBoxButtons.YesNo) == DialogResult.Yes)
            {

(3)进行循环,并将缺课学生姓名写入文档,以便查看学习

if (Str.EndsWith ("S")==true  )
                {
                    stuList[i].Name += "T";
                    string Strpath3 = @"F:\软件工程文件\GisWinformPractice\WinformControlUse\TestFile\ThirdAbsent";
                    File.AppendAllText(Strpath3, Str + " ");
                    MessageBox.Show("取消考试资格来年重修!!!");
                }
else  if (Str.EndsWith ("F") == true )
                {
                    //第四次尝试修改
                    stuList[i].Name += "S";
                    string Strpath2 = @"F:\软件工程文件\GisWinformPractice\WinformControlUse\TestFile\SecondAbsent";
                    File.AppendAllText(Strpath2, Str + " ");
                    MessageBox.Show("第二次缺课,离重修更进一步!!");
                }
else 
                {
                    stuList[i].Name += "F";
                    string Strpath1 = @"F:\软件工程文件\GisWinformPractice\WinformControlUse\TestFile\FirstAbsent";
                    File.AppendAllText(Strpath1, Str + " ");
                    MessageBox.Show("第一次缺课,第一次重修半价哦!");
                }

效果展现
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述测试

5、附加功能

此代码是在已有代码的基础上进一步完成的,辅助任课教师记录缺课名单,不足就是不能语音自动播报。若实现自动语音点名,这样能够解决在老师嗓子不舒服的状况下(感冒生病等),也能考勤;编码

6、单元测试

(1)单元测试代码
在这里插入图片描述
(2)代码测试结果设计

在这里插入图片描述

七,结对过程展现

在这里插入图片描述

八,做业完成及感悟

1.0 对于代码设计很在很大问题,写程序以前首先肯定我要作什么,而后开始作,遇到不会的边学变写代码。
2.0 程序中把第一次缺课学生写入文档很容易,可是如何判断是第二次逃课?就须要遍历第一次逃课名单,每一个同窗都有可能两次逃课,这样每一个学生就要单独写一个判断if语句,也有可能第三次缺勤就要再次遍历第二个文档,这样几乎多写800多行啰嗦重复代码。我选择给缺勤学生名字后加一个字符,判断名字结尾字符就能知道第几回逃课,节约几百行代码,增长程序的可读性。
3.0 由于基础很差,因此完成这个简单的做业很难,几乎都是边学边写代码,可是这样确实进步的也快! 就是耗费时间比较多。
相关文章
相关标签/搜索