Java小项目之租车系统

一:项目背景介绍;

  根据所学知识,编写一个控制台版的“呱呱租车系统”

功能:

1、展示所有可租车辆;

2、选择车型、租车量;

3、展示租车清单,包含:总金额、总载货量以及其车型号、总载人量及其车型;

二:项目分析;

  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小项目之租车系统的更多相关文章

  1. Java学习笔记三十一:Java 包(package)

    Java 包(package) 一:包的作用: 如果我们在使用eclipse等工具创建Java工程的时候,经常会创建包,那么,这个包是什么呢. 为了更好地组织类,Java 提供了包机制,用于区别类名的 ...

  2. Java学习笔记二十:Java中的内部类

    Java中的内部类 一:什么是内部类: (1).什么是内部类呢? 内部类( Inner Class )就是定义在另外一个类里面的类.与之对应,包含内部类的类被称为外部类. (2).那为什么要将一个类定 ...

  3. 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记

    回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...

  4. angular学习笔记(三十)-指令(10)-require和controller

    本篇介绍指令的最后两个属性,require和controller 当一个指令需要和父元素指令进行通信的时候,它们就会用到这两个属性,什么意思还是要看栗子: html: <outer‐direct ...

  5. angular学习笔记(三十)-指令(7)-compile和link(2)

    继续上一篇:angular学习笔记(三十)-指令(7)-compile和link(1) 上一篇讲了compile函数的基本概念,接下来详细讲解compile和link的执行顺序. 看一段三个指令嵌套的 ...

  6. angular学习笔记(三十)-指令(7)-compile和link(1)

    这篇主要讲解指令中的compile,以及它和link的微妙的关系. link函数在之前已经讲过了,而compile函数,它和link函数是不能共存的,如果定义了compile属性又定义link属性,那 ...

  7. angular学习笔记(三十)-指令(6)-transclude()方法(又称linker()方法)-模拟ng-repeat指令

    在angular学习笔记(三十)-指令(4)-transclude文章的末尾提到了,如果在指令中需要反复使用被嵌套的那一坨,需要使用transclude()方法. 在angular学习笔记(三十)-指 ...

  8. angular学习笔记(三十)-指令(5)-link

    这篇主要介绍angular指令中的link属性: link:function(scope,iEle,iAttrs,ctrl,linker){ .... } link属性值为一个函数,这个函数有五个参数 ...

  9. angular学习笔记(三十)-指令(2)-restrice,replace,template

    本篇主要讲解指令中的 restrict属性, replace属性, template属性 这三个属性 一. restrict: 字符串.定义指令在视图中的使用方式,一共有四种使用方式: 1. 元素: ...

随机推荐

  1. where T : class泛型类型约束

    类型参数约束,.NET支持的类型参数约束有以下五种: where T : struct | T必须是一个结构类型where T : class T必须是一个类(class)类型where T : ne ...

  2. 问题记录-Get data from file(fonts/arial.ttf) failed, error code is 32

    time:2015/04/19 1. 描述:运行cocos的cpp-test例子,结果修改了代码之后提示错误:Get data from file(fonts/arial.ttf) failed, e ...

  3. Python学习---django重点之视图函数

    django重点之视图函数 http请求中产生两个核心对象: http请求:HttpRequest对象,由Django自己创建 http响应:HttpResponse对象,由开发自己创建,必须返回一个 ...

  4. December 28th 2016 Week 53rd Wednesday

    Knowledge is a treasure, but practice is the key to it. 知识是珍宝,而实践是获取她的钥匙. I know a lot, but what I r ...

  5. npm ERR! path: '/usr/local/lib/node_modules/npm/node_modules/cacache/node_modules/ssri' }

    在安装appium 或者升级npm的过程中会遇到这个问题.出错时的代码提示如下: npm ERR! path /usr/local/lib/node_modules/npm/node_modules/ ...

  6. Angular组件之间通讯

    组件之间会有下列3种关系: 1. 父子关系 2. 兄弟关系 3. 没有直接关系 通常采用下列方式处理(某些方式是框架特有)组件间的通讯,如下: 1父子组件之间的交互(@Input/@Output/模板 ...

  7. c++ 一般虚函数

    类图: 代码: #include <iostream> using namespace std; class CFather //父类 { public: virtual void dis ...

  8. unbuntu 14安装 golang

    golang目前有两种编译,一种是golang官方提供的,另外一个是gnu提供的gccgo.这里安装的是Golang,从仓库安装(apt-get)        sudo apt-get instal ...

  9. 【[HEOI2016/TJOI2016]字符串】

    码农题啊 上来先无脑一个\(SA\)的板子,求出\(SA\)和\(het\)数组 我们只需要从\(sa[i]\in[a,b]\)的所有\(i\)中找到一个\(i\)使得\(sa[i]\)和\(rk[c ...

  10. No.4 - 3D 空间的卡片翻转动效

    参考 ①张鑫旭http://www.zhangxinxu.com/wordpress/2012/09/css3-3d-transform-perspective-animate-transition/ ...