Java学习笔记三十:Java小项目之租车系统
Java小项目之租车系统
一:项目背景介绍;
根据所学知识,编写一个控制台版的“呱呱租车系统”
功能:
1、展示所有可租车辆;
2、选择车型、租车量;
3、展示租车清单,包含:总金额、总载货量以及其车型号、总载人量及其车型;
二:项目分析;
- 数据模型分析;
- 业务模型分析;
- 显示和流程分析;
三:数据模型分析;
1.通过对现实世界的事与物主要特征的分析、抽象,为信息系统的实施提供数据存取的数据结构以及相应的约束;
2.数据结构组成:操作(方法)、属性;
如现实世界中的汽车,最终会转化为一段代码:

那么这个过程就是我们数据分析的过程。

四:业务模型分析;
1.在设计应用程序之前,应该明确该应用程序必须执行哪些任务。
分析业务需求是应用程序开发中最重要的步骤之一。
确认业务需求的目的在于创建一个能同时满足零售商和消费者需要的解决方案。
2.呱呱租车系统中,只需要考虑消费者业务需求即可。

五:显示和流程分析;
1.显示:用户可以看到的信息提升界面;
2.流程:显示信息的执行过程、步骤;
3.呱呱租车系统中,要以命令行的方式显示提示信息和输出结果信息,要考虑其样式,用户输入的数据不同,信息该如何处理、如何处理并显示出结果,这部分知识囊括了显示与流程的内容;
例如:请选择车辆->请输入序号->输出总金额...;
六:代码示例;
RentCar主类:
package com.test; import java.util.Arrays;
import java.util.Scanner; public class RentCar {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("欢迎使用呱呱租车系统!:\n你是否要进行租车:1是 0否");
Scanner s = new Scanner(System.in);
int i=s.nextInt(); if(i==1){
System.out.println("您可租车的类型及其目表:");
System.out.println("序号"+"\t"+"汽车名称"+"\t"+"租金"+"\t\t"+"载人量"+"\t"+"载重量"); Car car1=new PassengerCar(1,"奥迪A4",500,4);
Car car2=new PassengerCar(2,"马自达6",400,4);
Car car3=new Pika(3,"皮卡雪6",450,4,2);
Car car4=new PassengerCar(4,"金龙",800,20);
Car car5=new Truck(5,"松花江",400,4);
Car car6=new Truck(6, "依维柯", 900, 20); System.out.println(car1+"\n"+car2+"\n"+car3+"\n"+car4+"\n"+car5+"\n"+car6);
Car[] rentcar={car1,car2,car3,car4,car5,car6}; System.out.println("请输入您要租汽车的数量:"); int n = s.nextInt(); float money1=0;
int num=0;
int allcargo=0; String [] hrentcar = new String[n];
for(int k=0;k<n;k++){
System.out.println("请输入第"+(k+1)+"辆车的序号"); int t =s.nextInt(); if(t>0&&t<=6){
hrentcar[k]=rentcar[t-1].name; float money2=rentcar[t-1].price;
int person=rentcar[t-1].capacity;
int wg=rentcar[t-1].cargo; allcargo+=wg;
num+=person;
money1+=money2;
}else{
System.out.println("您输入的信息无效!");
k--;
if(k==0)k=0;
}
} Arrays.sort(hrentcar);
System.out.println("请输入租车天数:");
int in = s.nextInt();
float sum =in*money1;
System.out.println("您的租车完成,已租车"+n+"辆");
System.out.println("您的账单:");
System.out.println("您租的车有:"+Arrays.toString(hrentcar));
System.out.println("共可载"+num+"人");
System.out.println("共可载货"+allcargo+"吨");
System.out.println("一共需要支付"+sum+"元"); }else if(i==0){
System.out.println("已退出系统,欢迎下次光临");
}else{
System.out.println("您输入的信息无效!请重启");
}
}
}
Car父类:
package com.test;
public abstract class Car {
public int carNumber;
public String name;
public float price;
public int capacity;
public int cargo;
public int getCarNumber() {
return carNumber;
}
public void setCarNumber(int carNumber) {
this.carNumber = carNumber;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
public int getCapacity() {
return capacity;
}
public void setCapacity(int capacity) {
this.capacity = capacity;
}
public int getCargo() {
return cargo;
}
public void setCargo(int cargo) {
this.cargo = cargo;
}
}
PassengerCar类:
package com.test;
public class PassengerCar extends Car {
public PassengerCar(int carNumber,String name,float price,int capacity) {
// TODO Auto-generated constructor stub
this.setCarNumber(carNumber);
this.setName(name);
this.setPrice(price);
this.setCapacity(capacity); }
@Override
public String toString() {
return getCarNumber()+"."+"\t"+getName()+ "\t" +getPrice()+"/天"+"\t\t"+"载人:"+getCapacity()+"人"+"\t"+"载货:-" ; }}
Pika类:
package com.test;
public class Pika extends Car {
public Pika(int carNumber,String name,float price,int capacity,int cargo) {
// TODO Auto-generated constructor stub
this.setCarNumber(carNumber);
this.setName(name);
this.setPrice(price);
this.setCapacity(capacity);
this.setCargo(cargo); }
@Override
public String toString() {
return getCarNumber()+"."+"\t"+getName()+ "\t" +getPrice()+"/天"+"\t\t"+"载人:"+getCapacity()+"人"+"\t"+"载货:"+getCargo()+"吨" ; } }
Truck类:
package com.test;
public class Truck extends Car {
public Truck(int carNumber,String name,float price,int cargo) {
// TODO Auto-generated constructor stub
this.setCarNumber(carNumber);
this.setName(name);
this.setPrice(price);
this.setCargo(cargo); }
@Override
public String toString() {
return getCarNumber()+"."+"\t"+getName()+ "\t" +getPrice()+"/天"+"\t\t"+"载人:-"+"\t"+"载货:"+getCargo()+"吨" ; }}
代码仅供参考
Java学习笔记三十:Java小项目之租车系统的更多相关文章
- Java学习笔记三十一:Java 包(package)
Java 包(package) 一:包的作用: 如果我们在使用eclipse等工具创建Java工程的时候,经常会创建包,那么,这个包是什么呢. 为了更好地组织类,Java 提供了包机制,用于区别类名的 ...
- Java学习笔记二十:Java中的内部类
Java中的内部类 一:什么是内部类: (1).什么是内部类呢? 内部类( Inner Class )就是定义在另外一个类里面的类.与之对应,包含内部类的类被称为外部类. (2).那为什么要将一个类定 ...
- 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记
回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...
- angular学习笔记(三十)-指令(10)-require和controller
本篇介绍指令的最后两个属性,require和controller 当一个指令需要和父元素指令进行通信的时候,它们就会用到这两个属性,什么意思还是要看栗子: html: <outer‐direct ...
- angular学习笔记(三十)-指令(7)-compile和link(2)
继续上一篇:angular学习笔记(三十)-指令(7)-compile和link(1) 上一篇讲了compile函数的基本概念,接下来详细讲解compile和link的执行顺序. 看一段三个指令嵌套的 ...
- angular学习笔记(三十)-指令(7)-compile和link(1)
这篇主要讲解指令中的compile,以及它和link的微妙的关系. link函数在之前已经讲过了,而compile函数,它和link函数是不能共存的,如果定义了compile属性又定义link属性,那 ...
- angular学习笔记(三十)-指令(6)-transclude()方法(又称linker()方法)-模拟ng-repeat指令
在angular学习笔记(三十)-指令(4)-transclude文章的末尾提到了,如果在指令中需要反复使用被嵌套的那一坨,需要使用transclude()方法. 在angular学习笔记(三十)-指 ...
- angular学习笔记(三十)-指令(5)-link
这篇主要介绍angular指令中的link属性: link:function(scope,iEle,iAttrs,ctrl,linker){ .... } link属性值为一个函数,这个函数有五个参数 ...
- angular学习笔记(三十)-指令(2)-restrice,replace,template
本篇主要讲解指令中的 restrict属性, replace属性, template属性 这三个属性 一. restrict: 字符串.定义指令在视图中的使用方式,一共有四种使用方式: 1. 元素: ...
随机推荐
- Exchange2016 & Skype for business集成之二 OWA集成IM
Microsoft Outlook Web App 和IM集成部署或升级Exchange server 2016与Skype for business 2015后使用原来2013版本方法集成OWA网页 ...
- openresty及lua的随机函数
我们都知道,所谓的随机都是伪随机,随机的结果是由随机算法和随机种子决定的. 所以,当我们没有初始化的时候,如果直接使用math.random(),那么出来的值肯定是每次都一样,因为种子等于0. 因此, ...
- SCRUM与XP的区别和联系
相同点:SCRUM和XP都是敏捷开发的方法论,都体现了快速反馈,强调交流,强调人的主观能动性等基本原则,而且多数“最佳实践活动”都互相适用. 不同点:Scrum非常突出Self-Orgnization ...
- 一、并行编程 - 数据并行 System.Threading.Tasks.Parallel 类
一.并行概念 1.并行编程 在.NET 4中的并行编程是依赖Task Parallel Library(后面简称为TPL) 实现的.在TPL中,最基本的执行单元是task(中文可以理解为"任 ...
- Programming Assignment 2: Seam Carving
编程作业二 作业链接:Seam Carving & Checklist 我的代码:SeamCarver.java 问题简介 接缝裁剪(Seam carving),是一个可以针对照片内容做正确缩 ...
- PetaPoco轻量级ORM框架 - 对Database类的进行扩展,可以返回Table格式数据
一.有时我们需要将常用的功能添加到PetaPoco中的Database类中 实现方式有2种,以下以查询字段为例 1.通过扩展方式实现,此方式不改变被调用(Database)类名(只能增加方法) pub ...
- mysql-存储过程(转载)
本来想自己写存储过程的,但是看到别人写的很全面,就直接转载过来了. 转自(http://www.cnblogs.com/exmyth/p/3303470.html) 14.1.1 创建存储过程 MyS ...
- [19/04/20-星期六] Java的动态性_字节码操作(Javassist类库(jar包),assist:帮助、援助)
一.概念 [基本] /** * */ package cn.sxt.jvm; import javassist.ClassPool; import javassist.CtClass; import ...
- linux下安装php扩展amqp
1 安装扩展必要依赖 rabbitmq-c 安装包地址:https://github.com/alanxz/rabbitmq-c/releases wget -c https://github.com ...
- SharePoint2010代码启动工作流
1. private void StartWorkFlow() { //获得该列表上的发布的所有工作流 SPWorkflowAssociationCollection wfAssociationCol ...