第三次作业——结对编程

个人第三次作业——结对编程

Github项目地址 https://github.com/hechenrui98/PairProgramming
队友博客地址 https://www.cnblogs.com/71355cb/p/11615050.html

1.结对PSP表格

psp Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 50 55
Estimate 估计这个任务需要多少时间 180 200
Development 开发 70 90
Analysis 需求分析 (包括学习新技术) 60 60
Design Spec 生成设计文档 20 20
Design Review 设计复审 (和同事审核设计文档) 20 20
Coding Standard 代码规范 (为目前的开发制定合适的规范) 20 20
Design 具体设计 40 60
Coding 具体编码 50 90
Code Review 代码复审 30 20
Test 测试(自我测试,修改代码,提交修改) 15 20
Reporting 报告 30 40
Test Report 测试报告 20 20
Size Measurement 计算工作量 80 80
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 30 40
合计 715 835
  • 结对编程照片
    第三次作业——结对编程_第1张图片

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

  • 代码的组织
    本次的结对项目我们选择了学生点名系统,我们定义了四个类库,分别分为:窗体层,实体层,存储学生数据的数据集层,和一个学生签到情况层。在每个类库分别建立了一个类,窗体层包含一个主函数,实体集层定义一个定义学生信息的函数,数据集层定义了包含所有学生实体信息的函数,学生签到情况层定义了取得学生信息的函数,和一个返回学生序号的函数。
  • 算法关键:实现学生信息的调用,学生的随机点名
  • Design by Contract:通过精确的接口设计与调用实现契约式设计,使程序运行更安全有效
  • Information Hiding:我们设计一个模块内包含的特定信息时,对于不需要这些信息的其他模块来说,我们使用了private和public两个字段来达到保护信息的同时使程序正常运行
  • Interface Design:

  • Loose Coupling:编写代码时,我们将每个类的函数结构设计的很紧凑,将每个类之间的函数关系定义的很简单,达到高内聚,低耦合

    3.代码复审

    在写完代码后我们发现函数定义准确,调用也是准确的,每一层的关系也设计的很好,但是调试始终有问题,后来发现在定义学生函数的时候,定义性别的字符串写成了小写string,到时无法运行,该为大写之后就可以正常执行了。
    第三次作业——结对编程_第2张图片

    4.部分代码展示

  • 窗体层:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace WinformControlUse
{
    static class Program
    {
        /// 
        /// 应用程序的主入口点。
        /// 
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new FrmStudent());
        }
    }
}
  • 学生实体层
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Entity
{
    public class Student
    {
        private String id;

        public String Id
        {
            get { return id; }
            set { id = value; }
        }

        private String name;

        public String Name
        {
            get { return name; }
            set { name = value; }
        }

        private String sex;

        public  String Sex
        {
            get { return sex; }
            set { sex = value; }
        }

        public Student()
        { 
        
        }
        public Student(String id, String name, String sex)
        {
            this.id = id;
            this.name = name;
            this.sex = sex;
        }
    }
}
  • 学生数据集层
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.ObjectModel;
using System.Collections;
using Entity;

namespace DataBase
{
    public class StudentDataset
    {
        //模拟数据库中的学生集合

        private static List studengList;


        public static List getAll()
        {
            studengList=new List();

            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);
            Student stu6 = new Student("006", "马芸慧", "女");
            studengList.Add(stu6);

            Student stu7 = new Student("007", "汪小萍", "女");
            studengList.Add(stu7);
            Student stu8 = new Student("008", "母丹", "女");
            studengList.Add(stu8);


            Student stu9 = new Student("001", "许博", "男");
            studengList.Add(stu9);
            Student stu10 = new Student("002", "芦文钰", "男");
            studengList.Add(stu10);

            Student stu11 = new Student("011", "马昊妍", "女");
            studengList.Add(stu11);
            Student stu12 = new Student("012", "李宣晓", "女");
            studengList.Add(stu12);

            Student stu13 = new Student("013", "李清兰", "女");
            studengList.Add(stu13);
            Student stu14 = new Student("014", "成湘", "女");
            studengList.Add(stu14);
                       return studengList;
        }
    }
}         

注:由于学生人数太多,只展示部分

  • 学生签到情况层
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using DataBase;
using Entity;

namespace DaoLayer
{
    public class StudentDAO
    {
        public int getStudentRecordsNums()
        {
             List studengList=StudentDataset.getAll();
             return studengList.Count;
        }

        public List getAllStudents()
        {
            List studengList = StudentDataset.getAll();
            return studengList;
        }

    }
}

5.功能展示

  • 1.加载学生信息
    第三次作业——结对编程_第3张图片
  • 2.进行随机点名
    第三次作业——结对编程_第4张图片
  • 3.询问是否到了,并判断是否记缺勤
    第三次作业——结对编程_第5张图片
  • 如果到了则会出现以下提示:
    第三次作业——结对编程_第6张图片
  • 如果缺勤则会有如下提示:
    第三次作业——结对编程_第7张图片

    5.附加功能

    1.本次代码设计增加了学生性别的查询显示
    2.本次代码设计增加了学生就位情况的确认,并提示教师是否记缺勤

你可能感兴趣的:(第三次作业——结对编程)