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. 用POP动画编写带富文本的自定义动画效果

    用POP动画编写带富文本的自定义动画效果 [源码] https://github.com/YouXianMing/UI-Component-Collection [效果] [特点] * 支持富文本 * ...

  2. 测试你的 In-app Billing 程序

    测试你的 In-app Billing 程序 为了保证 In-app Billing 可以在你程序中正常使用,你应该在把应用程序发布到Google Play之前进行测试.早期的测试有助于确保用户对于你 ...

  3. Mysql常用函数汇总-经典实用

    以下是对mysql中的常用函数进行了汇总介绍.需要的朋友可以过来参考下. 一.数学函数ABS(x) 返回x的绝对值BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制)CEILING(x ...

  4. Exchange Server 2016 管理邮箱收发限制

    备注:本文是Exchange Server 2016管理系列的配套课件,更加详细的讲解请参考视频课程,文章结尾有视频课程主页的链接. 进行收发邮件大小的限制是很有必要的,因为邮件服务器不能当作文件服务 ...

  5. 沉淀,再出发:AngularJS初探

    沉淀,再出发:AngularJS初探 一.前言 知识的学习需要形成一个闭环,在这个闭环之内可以自圆其说,从而触类旁通,加以理想创造,从而产生灵感.关于前端的知识,我已经写得差不多了,但是还有一个知识点 ...

  6. December 13th 2016 Week 51st Tuesday

    Life is a sail trip full of chances and challenges. 人生的旅途中充满了机遇和挑战. A boat sails on the sea, the vas ...

  7. (转)如何解决VC中的警告warning C4251 needs to have dll-interface

    这通常是由于以数据成员方式在DLL导出类中使用了模板类造成的.比如: #include <iostream> #include <vector> using namespace ...

  8. 获取应用程序 或Web页面目录的路径

    一.Winform获取本程序的路径 1.获取当前目录 返回最后不带“\”的目录:如D:\Winform\bin\Debug System.Windows.Forms.Application.Start ...

  9. less使用总结

    15年自学了 less ,可是一直没用,就忘记了.后来抱着提高 css 开发速度的目的,又去学习了 less ,学完马上用,效果立竿见影,记得也牢了.刚开始学习前,我们总会问自己一个问题,学习它有什么 ...

  10. python中的BaseManager通信(二)文件二分

    提供服务部分(运行时在接收端未打开前不能关闭) #mainsec.py from multiprocessing import Process, Queue from multiprocessing. ...