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. 如何对iPhone进行屏幕录像

    如何对iPhone进行屏幕录像 录制时候的效果: 1. 打开QuickTime Player 2. 在文件中新建影片录制 3. 然后酱紫录制

  2. Linux入门-6 Linux网络基本配置

    1. 网络基础知识 网络编址 IP编址 子网掩码 同一网络主机之间通信--MAC地址 不同网络之间的通信 路由 域名 DNS 基本网络参数 2. Linux网络基础配置 以太网连接 配置网络信息 网络 ...

  3. 设计模式(17) 访问者模式(VISITOR) C++实现

    意图: 表示一个作用于某对象结构的各元素的操作.它使你可以再不改变各元素的类的前提下定义作用于这些元素的新操作. 动机: 之前在学校的最后一个小项目就是做一个编译器,当时使用的就是访问者模式. 在静态 ...

  4. Redis 集群缓存测试要点--关于 线上 token 失效 BUG 的总结

    在测试账户系统过程中遇到了线上大面积用户登录态失效的严重问题,事后对于其原因及测试盲点做了一些总结记录以便以后查阅,总结分为以下7点,其中原理性的解释有些摘自网络. 1.账户系统token失效问题复盘 ...

  5. ab 压测工具使用

    转自:http://www.cnblogs.com/lemtree/articles/1676641.html 就是APACHE自带的测试工具AB(apache benchmark).在APACHE的 ...

  6. 41、Thead线程 System.Thread与互斥体Mutex

    Thead线程 System.Thread 使用Thread类可以创建和控制线程.下面的代码是创建和启动一个新线程的简单例子.Thread 类的构造函数重载为接受ThreadStart和Paramet ...

  7. scala当中的继承

    1.Scala中继承(extends)的概念 Scala 中,让子类继承父类,与 Java 一样,也是使用 extends 关键字: 继承就代表,子类可继承父类的 field 和 method ,然后 ...

  8. 008单例、继承、final

    内容:单例,类继承,final #################################################################################### ...

  9. Discuz3.3注册程序修改添加记录推荐人账号

    Discuz3.3注册入口地址为:member.php?mod=register 一.member.php: 打开之后,代码非常简单. 其中有一句: $mod = !in_array($discuz- ...

  10. python strip()

    函数原型 声明:s为字符串,rm为要删除的字符序列 s.strip(rm)        删除s字符串中开头.结尾处,位于 rm删除序列的字符 s.lstrip(rm)       删除s字符串中开头 ...