结对作业 | |
---|---|
GitHub项目地址 | 项目地址 |
队友博客地址 | 队友地址 |
作业链接 | 第三次作业链接 |
1.PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 25 | 25 |
Estimate | 估计任务时间 | 10 | 10 |
Development | 开发 | 490 | 540 |
Analysis | 需求分析 | 30 | 40 |
Design Spec | 生成设计文档 | 140 | 150 |
Design Review | 设计复审 | 60 | 60 |
Coding Standard | 代码规范 | 20 | 20 |
Design | 具体设计 | 50 | 60 |
Coding | 具体编码 | 90 | 100 |
Code Review | 代码复审 | 40 | 50 |
Test | 测试(自我测试,修改代码,提交修改) | 90 | 90 |
Reporting | 报告 | 60 | 60 |
Test Report | 测试报告 | 50 | 50 |
Size Measurement | 计算工作量 | 20 | 20 |
Postmortem & Process Improvement Plan | 事后总结并提出改进计划 | 40 | 40 |
合计 | 1215 | 1315 |
2.计算模块接口的设计与实现过程
(1)设计
在这个项目中,我们运用了c#语言与数据库实现了点名与记录功能。
程序大致由以下几个部分组成:
1.FormStudet //点名窗口的设计
2.ShowRecordData//记录窗口的设计
3.DataBase//学生数据的储存
4.Entity//学生属性的设计
流程图如下:
(2)实现效果展示
1.加载学生
2.学生加载完成
3.随机点名功能实现
4.点名记录功能实现
3.代码复审
1.代码规范
可参考cn鱼的博客:博客地址
2.代码互审情况、发现的问题
由于我们是站在巨人的肩膀上(老师给了代码)做出的项目,所以本次项目中没有遇到什么特别大的难题。由于我们在一个寝室,交流起来十分方便,但是在新功能的创建过程中我们遇到了阻碍。
4.代码说明
(1)这是学生数据的一部分
public static List<Student> getAll()
{
studengList = new List<Student>();
Student stu1 = new Student("001", "王川", "男");
studengList.Add(stu1);
Student stu2 = new Student("002", "于丁", "男");
studengList.Add(stu2);
Student stu3 = new Student("003", "张莹", "女");
studengList.Add(stu3);
Student stu4 = new Student("004", "李楠", "女");
studengList.Add(stu4);
Student stu5 = new Student("005", "陈欣", "女");
studengList.Add(stu5);
}
(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 FormStudet : Form
{
List<Student> stuList;
public FormStudet()
{
InitializeComponent();
}
void iniControl()
{
btnStart.Visible = false;
btnStop.Visible = false;
btnRecord.Visible = false;
btnLoadStu.Enabled = true;
}
void setControlVisible()
{
btnStart.Visible = true;
btnStop.Visible = true;
btnRecord.Visible = true;
btnLoadStu.Visible = false;
}
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"));
dt.Columns.Add("stuSex", Type.GetType("System.String"));
//数据加载以进度条方式展现
foreach (Student stu in stuList)
{
dt.Rows.Add(stu.Id, stu.Name, stu.Sex);
progressName.Value += 1;//一个学生,进度条加1;
Thread.Sleep(50);
}
dataGVList.DataSource = dt;
setControlVisible();
}
DianMingRecord DianMiandata = new DianMingRecord();//一个记录对象
private void FrmStudent_Load(object sender, EventArgs e)
{
iniControl();
}
private void timerCountStu_Tick(object sender, EventArgs e)
{
Random ra = new Random();
int i = ra.Next(stuList.Count);
lblName.Text = stuList[i].Name;
}
private void btnStart_Click(object sender, EventArgs e)
{
timerCountStu.Start();
btnRecord.Enabled = true;
}
private void btnStop_Click(object sender, EventArgs e)
{
timerCountStu.Stop();
DianMiandata.DMrecord(lblName.Text);
}
private void btnRecord_Click(object sender, EventArgs e)
{
string data = DianMiandata.ShowRecord();
ShowRecordData SData = new ShowRecordData(data);
btnRecord.Enabled = false;
DialogResult dr = SData.ShowDialog();
if (dr == DialogResult.OK)
{ ClearData(); SData.Show(); }
}
public void ClearData()
{
for (int L = 0; L < DianMiandata.recordData.Length; L++)
DianMiandata.recordData[L] = null;
}
}
5.附加功能
附加的功能是记录点名数据的功能,实现效果如下:
6.计算模块部分单元测试展示
单元测试项目如下: