要死了!!!!!
由于上周进行了计算机系统的期末考试,上上周进行了马克思原理的洗礼,所以导致从这周三才开始进行lab3的编写,太死亡了。废话不多说,发完牢骚,我们开始lab3的一些关键点的梳理。
首先还是老方法,我们先看一下整个实验的步骤
1.实现IntervalSet的实现以及方法的编写
2.实现MultiIntervalSet的实现以及方法的编写
3.设计检查空白,检查是否有时间重叠,检查是否可以有多个时间轴
4.设计Employee,Process和Course的类实现
5.进行三个APP的具体实现
6.进行文本输入
7.API复用的实现
先来看1的实现
在这里给出我的各类方法的实现
一..建立一个空对象 2.插入一个时间信息 3返回一个对象的起始时间. 4.返回一个对象的结束时间 5.查看时间轴内的所有对象 6.得到创建好的图.
然后看2的实现
同样是上述的六个方法的实现,但是这里有一些区别:
1.插入时间信息时,对于1中的实现,我们需要检查是否为图中的对象,不是的话加入,是的话不可插入,2的实现同样需要检查是否为图中对象,如果不是需要把对象和时间段一起加入图内,如果是则直接插入它的时间段链表
2.返回起始时间,1的返回起始时间只需要返回它的时间段的第一个元素即可,但是2的实现需要遍历一遍该对象的时间段数组,然后找出一个最小的start
二.检查空白,检查时间重叠
1.检查空白,首先我们需要找到开始时间和起始时间,即遍历一遍图,然后记录下开始时间和结束时间,然后再对图进行一次遍历即可;
2.检查重叠 思路和1一样,用一个双重循环即可解决
三.设计类实现
1.Employee
三个标签有员工的名字,职务,电话,全部设置为private String
然后设置一些方法:1.getname 2.getzhiwei 3.getphonenumber 4.hascode 5.toString 6.equals
2.Process
四个标签有ID,名字 设置为private String 最短执行时间和最长执行时间 设置为 private long
然后设置方法和1类似
3.Course
四个标签有ID,名字,老师名字,教室 定义为private String
四.APP具体实现
这里是整个实验最精华的部分,也是自由度最大的地方,因此不进行具体说明,因为需要大家各自自由发挥
但是这里有一个比较烦的地方在于 时间的转换,即怎么把年月日的时间转化为时间轴中的一个long类型数据
我才用的是将起始时期设置为0,然后输入的日期以起始时期为基准,以天为单位,开始设置具体的long,而且在这里需要注意start和end的设置是有区别的,start无需加1额,而end在计算之后还需要加1转化为时间轴中的具体的值。
五.文本输入
这里最让人烧脑的就是不知道怎样将各类中的各对象输入到程序中,这里可以给一个提示
“Employee(.*)”表示进入到Employee的花括号中读数据。
六.API的复用实现
这里的实现都不是很难,主要的思想都是遍历图以及进行重复循环即可。
这就是本次实验的难点,但是更大的难点其实在于APP内的各种方法的实现,但是由于不同的人设计不同,无法进行讲解。
最后总结一下对这次实验的感想:
这次试验实在是非常的“充实”,尤其在期末的时间点上设计了这个实验,写得让人太焦虑,强烈建议老师将这个实验往前安排或者拆开进行安排。