2C部分:( O9 z1 p' \2 V/ y
打开工程后,在src目录下的A2_2C包,该部分与A2_2A2B部分没有必然关联,可以单独提出使用,以下对类说明(另注:所有注释均为英文,本txt单独供给你使用):: G8 A) Y% `: b, F
DateTime.java:实验pdf给的时间类,在2C中我将其序列化,以便储存。6 r5 B( J" d3 m7 |7 f
" o9 h/ n L5 C6 f
StatusException.java:自定义状态异常,继承自Exception异常类,使用父类方法,当车辆操作不当时,抛出异常。例:车被租赁,则不能被服务;车为可用,则不能还车。) x5 t- M; c+ K4 T9 ?( E7 l6 s
1 a) d5 @; _' q3 I7 x& e: ^OdometerException.java:自定义里程数异常,继承自Exception异常类,使用父类方法,当输入里程数小于原始里程数时,抛出异常。例,车被租赁时,里程数为100000,则还车时,输入里程数必须大于100000,否则报异常。(注:这里应该就是你2A数据不变的原因,因为输入的里程数不够大,所以只会报警告,数据不变)。1 K0 q$ Y% F' F2 |" ^
' Q! d6 d# d) b9 x1 D1 a
Customer.java: 抽象客户类,有抽象方法:获得折扣。 / B0 b$ T7 F9 S% ?4 A" m2 q. o/ D+ z0 y" c6 n/ C0 J
ICustomer.java:继承Customer类,个体客户,折扣计算方式为个人累积行车里程超过多少公里便可获得多少折扣,默认为超过100000折扣0.1,超过200000折扣0.2,注意,不包含100000或200000 。 8 N8 ?5 U2 ]$ |# D. N- u, \6 q! T T( a4 e$ V
CCustomer.java : 继承Customer类,公司客户,折扣计算方式为与租赁公司的关系,直接设置,运行期间在初始化该类时的倒数第二参数即是,设值在0~1之间,我默认有写入两个该实体Cust05,Cust06,分别设值0.1与0.2。 6 w/ J4 |6 p3 j! b' F- C: z" ~4 G* z6 l2 h8 F
vehicle.java:不做详述,普通车辆,相对2B,修改了部分方法内容,加入异常抛出。3 i+ n$ f1 n/ F& E& E, s/ l
) L9 E h. f" P7 `! A8 v$ z4 Y
PremiumVehicle.java:不做详述,继承自vehicle类,高级车,相对2B,修改了部分方法内容,加入异常抛出。& w" c6 h9 T1 w' d, Z) y
+ D# J, |+ M* S% v- o# U
ManageHiring.java:管理租赁类,唯一可运行类,出现管理菜单,包含所有相关处理方法,具体见类内注释,基本所有我能想到的错误均做了处理,提示应该能看懂,% X# l9 W4 i" y! ~- u
6 j2 M# O+ ^ I4 p
需注意我的main方法中分了两大块(均有明显注释),第一块为正常菜单(未被注释掉),第二块为测试数据(被注释掉),测试数据中向文件中写入了4个普通车辆,2个高级车;4个个体客户,2个公司客户(额不晓得你看过RWBY动漫木有,客户名字应该比较熟悉),以及进行写入4次有效的租赁相关操作(见transactions.txt),当然如果三个txt都是空或者都被删掉后执行会是如此,不然就全是无效操作。0 k7 \& O k) l; k$ s9 B