CS4U:第三单元——面向对象编程任务3——汽车租赁系统(CRS)1.一般信息您将帮助CIMP编写租车系统(CRS)。该系统将由系统的员工使用,因此客户不会随意输入数据。它具有以下功能从包含所有汽车信息的文本文件中导入现有汽车。手动将单车添加到系统中。在系统中显示汽车。可以过滤显示:o仅显示o显示耦合o仅显示交叉显示o仅显示敞篷车o显示所有汽车租车回程车退出(退出程序)2.程序流程第1页,共12页ICS4U:第三单元——面向对象编程3.用户界面a)主屏幕b) 从文件导入汽车进口后,我们可以看到所有的汽车。第2页,共12页ICS4U:第三单元——面向对象编程c) 添加单车添加轿车添加轿跑车添加交叉第3页,共12页ICS4U:第三单元-面向对象编程添加可转换当显示所有汽车时,它会显示新车:d) 展示汽车我们可以显示所有的汽车我们还可以展示一种特定类型的汽车(在这种情况下是轿车)第4页,共12页ICS4U:第三单元——面向对象编程e) 租车假设我们想租一辆车ID为1008的车我们将输入信息。如果它满足所有标准,那么它就会通过显示屏中的租车我可以再租一辆车这是在显示屏上租的另一辆车第5页,共12页ICS4U:第三单元——面向对象编程f) 回程车辆让我们返回1008,它在允许的距离内行驶(允许为1250公里,如显示屏所示)在返回1008之后,该行被清除。然而,它显示汽车的里程增加了1000英里。现在让我们返回1457,但行驶超过了允许的距离然后,它将计算罚款并将其显示在屏幕上。第6页,共12页ICS4U:第三单元——面向对象编程4.UML图这是该程序的UML图。您的程序必须遵循相同的结构。第7页,共12页ICS4U:第三单元——面向对象编程5.文本文件和数据库该程序附带一个名为CarList.txt的文本文件,其中代 写CS4U:第三单元——面向对象编程任务3包含一些伪车信息。你可以把它导入车库,这样你就可以很容易地测试你的程序。列之间用冒号“:”分隔文本文件示例:0:本田:思域:汽油性能好1:丰田:Supra:错误2:Mazda:CX-5:53:BMW:Z4:15.40:丰田:卡罗拉:顶级安全0:奥迪:A4:豪华1:日产:GT-R:错误1:宝马:440i:真2:雷克萨斯:GX460:83:Mazda:MX-5:7.6第1列:第2列:第3列:第4列:笔记车辆类型。请参阅Car class以查看值及其对应的车型。汽车制造商。这是生产汽车的公司车型。这辆车的名字。特定车型的特殊信息:-Sedan-Coupe改变敞篷车关于汽车的特殊信息如果它包含后座座位数量打开软(或硬)顶部的时间(秒)汽车ID不在文本文件中,因为当添加新车时,程序应该自动生成它。额外-对于那些想了解Database.java内部代码的人(不需要):有关如何使用java处理.txt的更多信息,请访问以下网站: https://www.geeksforgeeks.org/different-ways-reading-text-file-java/ https://www.javatpoint.com/java-bufferedwriter-class6.更多信息a)数据库数据库将把所有Car对象存储在一个数组中。我们还没有了解对象数组是如何工作的,但假设它类似于在数组中存储任何正常的数据类型。b) 车辆ID每辆车都将有一个唯一的汽车ID。进入系统的每辆新车都将随机生成一个ID。范围在1000到1999之间,因此只有999辆汽车可以存储在系统中。第8页,共12页ICS4U:第三单元——面向对象编程c) 不同的车型该系统只有4种类型的包裹:轿车、Coupe、Crossover和敞篷车每种类型都有其特定类型的额外信息和计算允许距离和额外距离罚款的公式。请参阅下表:键入额外信息特殊信息–描述轿车的特殊功能。如果轿跑车有没有后座。Crossover的座位数量。打开/关闭活顶所需的时间(以秒为单位)。如果租房者没有超过允许的距离,则不收取任何费用。如果超过,下面是表格:它们由一个整数表示。可以参考Parcel类来查找值。轿车=
0 Coupe=
1 Crossover=2敞篷车=3但是,当以表格格式显示地块时,它显示为:Sedan=“SED”Coupe=“CPE”Crossover=“XOR”Convertible=“CVT”轿车轿跑车改变敞篷车允许距离额外距离费公式类型轿车= × 250 = 1.2
5 × 轿跑车= × 100注:@system表示向下取整到最接近的整数。有后座:= 74× +20= 74× +3
5 =2× +25,% ≤6=2× +45,% =7 8=
1 ×( ))+55,% >8 30无后座:改变= ! × ( × 150)敞篷车如果租车时间少于5天,那么= 500如果租车时间超过或等于5天,那么5.× 400,租房者将获得5天奖金(计算不包括额外5天的奖金)2.(0123456789.):+(75025.5×秒),其中?=打开/关闭顶部的时间(秒)第9页,共12页ICS4U:第三单元——面向对象编程7.使用Date类在这个课业中,您将使用Date类并计算到期日期。以下是您需要对自己进行一些研究的一些链接:Java中的日期解析和格式设置 http://tutorials.jenkov.com/java-date-time/parsing-formatting-dates.html将天数添加到当前日期 https://www.mkyong.com/java/java-how-to-add-days-to-current-date/将日期转换为字符串 https://www.javatpoint.com/java-date-to-string将字符串转换为日期 https://www.javatpoint.com/java-string-to-dateDate类中的构造函数和方法 https://www.tutorialspoint.com/java/java_date_time.htm https://docs.oracle.com/javase/7/docs/api/java/util/Date.html8.要求不要更改数据库类。若数据库被更改并且程序无法编译,那个么您将得到零。必须使用数据库类来帮助您存储和访问数据。阅读JAVA DOCS(注释),帮助您了解如何在Database类中使用每个方法。只要理解方法头就足够了。没有必要了解每个方法内部发生了什么。程序必须遵循程序流程图和UML图。不要创建额外的类不要创建额外的公共方法(CRS类中的辅助方法除外)必须完成所有模板方法和主要方法。每个类必须在其单独的文件中,以提高可读性和可维护性。不要使用第1-3单元中未教授的任何内容(例如:数组列表、链接列表、二维数组等)必须创建额外的辅助方法(标记方案的一部分)必须遵循前端和后端设计。(CRS中的DisplayCar()方法除外)必须正确使用多态性(程序可能在不使用多态性的情况下仍然有效)9.错误检查必须检查输入的选项是否有效。必须检查输入的ID是否有效(是否存在)。必须检查车辆类型是否有效必须检查有效天数(正数)必须检查距离是否有效(0或正)假设在创建新车时,“额外信息”始终是有效值。假设输入的选项始终是正确的数据类型(例如:如果扫描仪需要int,我会不输入字符串)如果用户输入的信息错误,它将返回主屏幕。程序不会重复要求正确的信息。第10页,共12页ICS4U:第三单元——面向对象编程10.提供的模板和文件提供的代码和模板要提交的文件不要提交以下内容 Car.java 可转换.java 优惠券.java Crossover.java CRS.java CRSMain.java 数据库.java 轿车.java CarList.txt Car.java 可转换.java 优惠券.java Crossover.java CRS.java CRSMain.java 轿车.java 数据库.java CarList.txt 任意.class或.java~11.注释 您可以编写尽可能多或尽可能少的代码。然而,试着以我的基准为目标。 我的示例代码(不包括Database.java)包含869行代码 这些模板总共包含235行代码。 你只需要写633行代码就可以完成这项任务。 强烈鼓励与朋友合作,并可以分享想法。但是没有代码共享。有可以检查程序相似性的程序,我可以看到谁在复制程序。第11页,共12页ICS4U:第三单元——面向对象编程12.评分方案:检查表知识项目 正确创建和使用方法 正确使用类和对象 HaveHeritage HaveEncapsulation 遗传多态性 正确显示信息 程序在菜单和屏幕之间正确循环 使用非课程材料应用项目 AddCar(对象) RentCar()正在工作 ReturnCar()正在工作 DisplayCar()正在工作 DisplayCar(int)正在工作 使用非课程材料思考你的标记共4个4 24知识总量:应用程序总计:你的标记你的标记项目 创建全局常量变量并使用它们