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

Github项目地址 项目地址
结对伙伴的作业地址 作业地址

一、PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 20 20
Estimate 估计这个任务需要多少时间 800 970
Development 开发 660 750
Analysis 需求分析 60 120
Design Spec 生成设计文档 10 10
Design Review 设计复审 10 10
Coding Standard 代码规范 10 10
Design 具体设计 30 30
Coding 具体编码 360 420
Code Review 代码复审 60 30
Test 测试 120 120
Reporting 报告 120 120
Size Measurement 计算工作量 20 20
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 40 60
合计 800 970

二、计算模块接口的设计与实现过程

  1. 设计思路

这次代码本来我们我们设想的是链接数据库来进行点名设计,但考虑到只能用VS完成,所以就简化了很多东西,没有链接数据库,但这样就不是很方便进行信息的及时更新,核心代码还是以老师的为主。我们设计的界面有

  • 登录界面
  • 点名界面
  • 学生信息展示界面
    流程图
graph LR A[登录界面] --登录成功 --> B((学生信息展示界面)) A -- 登陆失败 --> C(取消) B --> D{点名界面}

2.体现原则

Design By Contract(契约式设计):

契约式设计就是按照某种规定对一些数据等做出约定,如果超出约定,程序将不再运行,例如要求输入的参数必须满足某种条件。

如何体现: 在老师登录界面,如果密码正确即可进入学生信息界面,如果不正确,就不能进入点名界面,并且会显示登录失败。

Information Hiding(信息隐藏):

信息隐藏指在设计和确定模块时,使得一个模块内包含的特定信息(过程或数据),对于不需要这些信息的其他模块来说,是不可访问的。

如何体现: 登录界面不需要学生信息,所以就没有添加对学生信息的引用,学生信息在登录界面也就不可访问,同样,在学生信息界面也不需要登录界面的信息。

三、代码复审过程

1.代码规范参考

2.代码互审

由于我们是室友在同一个寝室,所以我们完成这个项目都是一起讨论编程的,因此没有发现什么大的问题。

四、代码说明及截图

  • StuDataBase 这个类库用来存储学生的基本信息,由于代码较长,只截取部分代码如下:
   public class StudentDataset
    {
        private static List<Student> studengList;


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

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

  • StuData这个类库将StuDatabase类库中的学生信息进行实例化,用以进行数据的读写输入。代码如下:
 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;
        }
    }
  • DaoLayer这个类库是用来计算学生总人数,或者随机点一个学生。代码如下:
 public class StudentDAO
    {
        public int getStudentRecordsNums()
        {
            List<Student> studentList = StudentDataset.getAll();
            return studentList.Count;
        }

        public List<Student> getAllStudents()
        {
            List<Student> studentList = StudentDataset.getAll();
            return studentList;
        }
    }

截图如下:

在这里插入图片描述

在加载学生信息时代码出了差错,就是加载出来以后会另外添加3列放置学生信息,我们也没有修改成功。
在这里插入图片描述
在这里插入图片描述

  • 新增功能

新设置了登录界面,因为没有数据库,故我们就只设计了一个用户名和密码,“text”,“1111”
在这里插入图片描述

五、单元测试

public void TestMethod1()
        {
            StudentDAO sd = new StudentDAO();
            StudentDataset st = new StudentDataset();
        }

在这里插入图片描述

六、结对过程

  • 具体分工

    何玉姣(我)负责窗体信息设计及单元测试

    王春兰(我的队友)负责代码编写

  • 合作照片
    在这里插入图片描述

七、总结

在这次结对作业中,我学到了很多东西,通过查阅各种资料,极大的丰富了自己的知识,同时,两个人合作的方式也让我感受到了团队的力量,每个人在团队中都是不可缺少的,编程过程中,由于不使用数据库,单用C#就显得比较难做,给我们增加了困难,最后我们还是成功了。

posted @ 2019-10-01 15:07  vxc  阅读(152)  评论(0编辑  收藏  举报