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. vue怎么不通过dom操作获取dom节点

    今天写一个公众号的项目,写了一个vue的搜索组件,点击搜索框时,背景出现一个遮罩,代码结构如下: template:`<div class="searchBar-div"&g ...

  2. Discuz!在线中文分词服务

    Discuz!在线中文分词服务是基于API返回分词结果的.在项目中,我们只需要一个函数即可方便地进行分词.关键词提取.以下是根据Discuz!在线分词服务API写的函数,测试可正常运行: 代码代码如下 ...

  3. Django中模型(五)

    Django中模型(五) 六.模型查询 1.概述 查询集,表示从数据库获取的对象集合. 过滤器就是一个函数,基于所给的参数限制查询集结果.查询集可以有多个过滤器. 从sql角度来说,查询集合等价于se ...

  4. mysql 数据增删改查基本语句

    增: insert insert into 表名(字段1,字段2,字段3......字段N) values(值1,值2,值3): 如果不申明插入那些字段,则默认所有字段. 如果一次可以插入多条数据 可 ...

  5. x-frame-options、iframe与iframe的一些操作

    iframe的子操作父窗口,父操作子窗口: test.php: <!DOCTYPE html> <html> <head> <title>test< ...

  6. 24、springboot与缓存(2)

    具体看上文!!! @Service public class EmpService { @Autowired EmployeeMapper employeeMapper; @Cacheable(cac ...

  7. 6.7 块管理器BlockManager

    /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreem ...

  8. jquery 中 attr 和 prop 的区别

    问题:在jQuery引入prop方法后,什么时候使用attr,什么时候使用prop,两者区别. 判断: 对于HTML元素本身所有的固有属性,在处理的时候,使用prop方法 对于HTML元素后来我们自己 ...

  9. ThinkPHP里面用原生SQL

    public function rewardlog(){ $adminNav = C('ADMIN_NAV'); $adminNav[1]['class'] = 'cur'; $this->as ...

  10. PAT——1075. 链表元素分类(25)

    给定一个单链表,请编写程序将链表元素进行分类排列,使得所有负值元素都排在非负值元素的前面,而[0, K]区间内的元素都排在大于K的元素前面.但每一类内部元素的顺序是不能改变的.例如:给定链表为 18→ ...