第三次作业:结对编程(24235+24229)

结对作业
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.计算模块部分单元测试展示

单元测试项目如下:
在这里插入图片描述

7.结对的过程及结对照片

在这里插入图片描述

posted on 2019-10-01 16:45  lanti  阅读(196)  评论(0编辑  收藏  举报