在设计winform界面时,经过和队友讨论后,在老师原有的基础上增加了进度条读取界面,增加了缺勤记录的新功能,可以记录学生缺勤的次数。
设计界面图:
我和队友分别创建了3个类库,Stu_Database,Stu_Entity,Stu_Layer,这三个类库的主要作用分别是Stu_Database创建了学生信息Database类,在类里录入了学生信息。Stu_Entity创建了Entity类,主要用于创建学生实例。Stu_Layer创建了Layer类主要用于得到学生信息,在主函数中调用。
Stu_Database这个类库用来存储学生的基本信息,在这个基础上增加了缺勤次数的信息。部分代码截图: public class Databse { //模拟数据库中的学生集合
private static List<Entity> studengList; public static List<Entity> getAll()// 学生信息库 { studengList = new List<Entity>(); Entity stu1 = new Entity("001", "王川",0); studengList.Add(stu1); ... Entity stu84 = new Entity("084", "杨也", 0); studengList.Add(stu84); return studengList; } }Stu_Entity这个内库是将Stu_Database内库中的学生信息进行实例化,用以进行数据的读写输入。部分代码截图: public class Entity { 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 int abse; public int Abse//缺勤次数 { get { return abse; } set { abse = value; } } public Entity() { } public Entity(String id, String name,int Abs) { this.id = id; this.name = name; this.abse = abse; } }}Stu_Layer是用来计算学生总人数,或者随机点一个学生,还可以在这个内库中增加其他新的功能,方便修改。部分代码截图:
public class Layer { public int getStudentRecordsNums() { List<Entity> studengList = Databse.getAll(); return studengList.Count; } public List<Entity> getAllStudents() { List<Entity> studengList = Databse.getAll(); return studengList; } }我们在原有的基础上增加了进度条读取界面,和增加了缺勤次数的记录。部分代码截图: public partial class Form2 : Form { public int i; List stuList; Layer Stulayer = new Layer();
public Form2() { InitializeComponent(); Layer Stulayer = new Layer(); stuList = Stulayer.getAllStudents();//获取学生数据 DataTable dt = new DataTable(); dt.Columns.Add("stuNo", Type.GetType("System.String")); dt.Columns.Add("stuName", Type.GetType("System.String")); dt.Columns.Add("abs", Type.GetType("System.String"));//构造数据源 foreach (Entity stu in stuList) { dt.Rows.Add(stu.Id, stu.Name,stu.Abse); } dataGridView1.DataSource = dt; } private void BtnStart_Click(object sender, EventArgs e) { timerCallName.Start(); } private void TimerCallName_Tick(object sender, EventArgs e) { Random ra = new Random(); i = ra.Next(stuList.Count); label2.Text = stuList[i].Name; } private void BtnAbs_Click(object sender, EventArgs e) { stuList[i].Abse= stuList[i].Abse+1; MessageBox.Show("添加成功!"); } }代码思路:测试的函数有 Assert.IsNotNull,Assert.ReferenceEquals。通过测试函数Assert.IsNotNull来判断程序是否调用了getAllStudents方法,结果是调用了这个方法。通过测试函数Assert.ReferenceEquals来判断getAllStudents方法的实例是否是Layer实例。部分代码截图:
namespace Stu_Layer.Tests { [TestClass()] public class LayerTests { [TestMethod()] public void getStudentRecordsNumsTest() { Layer test = new Layer(); Assert.IsNotNull(test.getAllStudents());//测试是否为空 Assert.ReferenceEquals(test,test.getAllStudents());//测试实例是否是相同实例 } }}
测试的函数有 Assert.IsNotNull,Assert.ReferenceEquals。通过测试函数Assert.IsNotNull来判断程序是否调用了getAllStudents方法,结果是调用了这个方法。通过测试函数Assert.ReferenceEquals来判断getAllStudents方法的实例是否是Layer实例。部分代码如下:
namespace Stu_Layer.Tests { [TestClass()] public class LayerTests { [TestMethod()] public void getStudentRecordsNumsTest() { Layer test = new Layer(); Assert.IsNotNull(test.getAllStudents());//测试是否为空 Assert.ReferenceEquals(test,test.getAllStudents());//测试实例是否是相同实例 } }总体来说我和队员的这次结对编程还是很成功的。因为是第一次编程,所以我们之间的默契还不够,还在相互磨合阶段,我相信之后合作多了就会变得更有默契。这次结对编程还大大增加了我们编程的效率,因为我们在编程时会互相提示哪里编写错了,哪里的思路不正确。我们在代码互审发现了许多问题,通过线下沟通我们还是慢慢解决了这些问题。结对照片:
这次编程的主要附加功能是可以通过 学生点名界面 的 缺勤 按钮来对缺勤的同学进行有效的记录。这个功能主要是通过添加一个新的学生int型来对同学的考勤次数进行初始化,然后再通过缺勤按钮来对学生int型的记录进行增加,从而实现对缺勤的同学进行记录。
转载于:https://www.cnblogs.com/luojunjie/p/11614790.html
相关资源:JAVA上百实例源码以及开源项目