结对编程作业 | |
---|---|
GitHub项目地址 | https://github.com/15565048308/PairProgramming |
搭档博客地址 | https://www.cnblogs.com/XYFWXR/ |
作业地址 | https://www.cnblogs.com/cherish599/p/11577268.html |
一、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请参阅邹欣老师博客
二、代码设计及其实现过程
1 程序设计及实现
这个项目是在已有的点名系统的基础上进一步完成的,实现点名自动将缺课学生写入指定文档,并根据缺课次数写入不同的文档,一次作为平时考勤加减分和是否重修的依据,减轻老师点名记录负担。 (1)随机点名,判断该同学是否缺课 (2)将第一次缺课学生写入FirstAbsent文档 (3) 随机点名,遍历第一次缺课学生文档,判断该同学是否第二次缺课,若是写入第二次缺课文档并给与提示,第三次同理。 (4)课程结束,任课教师翻阅文档,查看缺勤信息。 结构如下:
2 如何体现原则的
1)Design By Contract(契约式设计): 契约式设计就是按照某种规定对一些数据等做出约定,如果超出约定,程序将不再运行 如何体现:在输入数据情况下,能得到与预期一样的结果 (2)Information Hiding(信息隐藏): 信息隐藏指在设计和确定模块时,使得一个模块内包含的特定信息(过程或数据),对于不需要这些信息的其他模块来说,是不可访问的。 如何实现:信息隐藏就是对信息的封装,设置访问权限public、protect private等 (3)Interface Design(接口设计): 对接口的名字,功能,接口与接口间的继承关系进行设计;好的接口设计可以增强代码可读性,易用性,可更改性。 如何实现:将不同的功能程序段写到不同的方法中,然后包装在同一个类中,增强可读性,便于调用 (4)Loose Coupling 松耦合: 想让对象与对象间松耦合,通过增加抽象类(Abstract Class)或者接口来做到 如何实现:软件设计的一条基本原则就是“低耦合,高内聚”,降低对象与对象之间的耦合性,便于代码设计与维护,本程序只增加啦一个方法,所有无法提现松耦合
三、代码复审过程
(1)代码规范参考 (2)
四、具体代码
(1)当停止点名事件触发,调用方法
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("第一次缺课,第一次重修半价哦!");
}
五、附加功能
此代码是在已有代码的基础上进一步完成的,辅助任课教师记录缺课名单,不足就是不能语音自动播报。若实现自动语音点名,这样可以解决在老师嗓子不舒服的情况下(感冒生病等),也能考勤;