Java实现租车管理系统
需求:
完成一个和用户互动的租车管理系统,当中包括基础的增删改查,以及输出实时地热度排行榜!
功能设计:
在工程的包com.Test02中,搭建4个类,分别是程序启动(carSysStart)、控制台(carConsole)、数据存储内存库(carData_base)、系统的功能类(carFunction)
具体代码如下:
1.程序启动
packagecom.Test02;
publicclasscarSysStart{
publicstaticvoidmain(String[]args){
carConsolep=newcarConsole();
p.setP(100);
p.getP().initBaseinfo();
p.getInfo();
}
}
2.控制台
packagecom.Test02;
importjava.util.Scanner;
publicclasscarConsole{
privateScannercin=newScanner(System.in);
privatecarFunctionp;
privatebooleanisBase=false;
publicstaticvoidPrompt(){//声明静态方法,之后其他类调用也不用先new
System.out.println("欢迎使用自助车辆管理系统");
System.out.println("-------------------------------------");
System.out.println("1.新增车辆");
System.out.println("2.查询车辆");
System.out.println("3.删除车辆");
System.out.println("4.借出车辆");
System.out.println("5.归还车辆");
System.out.println("6.排行");
System.out.println("7.退出");
System.out.print("--------------------------------------\n");
}
publicvoidsetP(intmaxSize){
if(maxSize>0){
this.p=newcarFunction(maxSize);
this.isBase=true;
}
else{
System.out.println("对不起,您要申请的内存规模有误!");
}
}
publiccarFunctiongetP(){
returnp;
}
publicvoidgetInfo(){
if(isBase){
Prompt();
booleanisStart=true;
while(isStart){
System.out.println("请选择:");
intchoice=cin.nextInt();
switch(choice){
case1:
System.out.println("请输入新增车辆的名称:");
p.car_Add(cin.next());
break;
case2:
p.car_book_Find();
break;
case3:
System.out.println("请输入要删除车辆的名字:");
p.car_Delete(cin.next());
break;
case4:
System.out.println("请输入要借出的车辆名称:");
Stringname=cin.next();
System.out.println("请输入借出的日期:");
Stringdate=cin.next();
p.car_lend(name,date);
break;
case5:
System.out.println("请输入要归还的车辆:");
Stringname1=cin.next();
System.out.println("请输入归还的日期:");
Stringdate1=cin.next();
p.car_return(name1,date1);
break;
case6:
p.car_print_Rank();
break;
case7:
isStart=p.exit();
System.out.println("借车系统退出成功!欢迎您下次继续使用本系统!");
break;
default:
System.out.println("输入有误,请重新输入!");
Prompt();
break;
}
}
}
else
System.out.println("对不起,目前该系统的数据库程序员小哥还在拼命打造中!详情请联系工作人员...");
}
}
3.数据存储内存库
packagecom.Test02;
publicclasscarData_base{
String[]name;
String[]date;
boolean[]isLoan;
long[]loanSize;
publiccarData_base(intmaxSize){
this.name=newString[maxSize];
this.date=newString[maxSize];
this.isLoan=newboolean[maxSize];
this.loanSize=newlong[maxSize];
}
}
4.系统各功能类
packagecom.Test02;
importjava.util.*;
//importjava.text.ParseException;
importjava.text.SimpleDateFormat;
publicclasscarFunction{
carData_basecar;
publiccarFunction(intm){
car=newcarData_base(m);
}
publicvoidinitBaseinfo(){
car.name[0]="陆巡";
car.isLoan[0]=true;
car.date[0]="2017-7-1";
car.loanSize[0]=30;
car.name[1]="霸道";
car.isLoan[1]=false;
car.loanSize[1]=30;
car.name[2]="汉兰达";
car.isLoan[2]=false;
car.loanSize[2]=30;
}
publicvoidreturnMain(){
Scannercin=newScanner(System.in);
System.out.println("*********************");
System.out.print("输入0返回:");
if(cin.nextInt()==0){
carConsole.Prompt();
}else{
System.out.println("输入错误,异常终止!");
System.exit(0);
}
}
/*
*汽车系统的功能类
*1.增加车辆信息
*2.删除车辆信息
*3.改动车辆信息(包括借出、归还)
*4.查询车辆信息
**/
publicvoidcar_Add(Stringname){
for(inti=0;i查看---------->\n");
System.out.println("序号\t状态\t名称\t\t借出日期");
for(inti=0;i
总结:
对于面向对象的学习在这两天有更近一步的学习,学会了封装类中的成员,其实就是将其权限设为私有,然后设置接口即声明一个对其操作的方法以及得到它的方法。
在系统的编码中遇到以下几点问题需要改进自己:
1.类似于C/C++中的结构体排序的内容,Java也有sort的自定义排序compare的方法,本来思路是想直接用集合的sort类排序,奈何不会用这个compare,就调转船头改用选择排序了,日后还是要把这块内容掌握的;
2.时间的计算Java中也有对应的DATE类,不过自己只是粗略学了计算两个日期的差的运算(用声明的格式将string转为Date,然后利用getTime计算1970年1月1号到所设日期的差值,注意的点是单位是毫秒,要得到天数还要进行单位转化,并且返回的类型是long);
3.Java中有try..catch..finally..捕捉异常,这点是之前没学过的,在转化时间的时候为了防止异常终止程序,将其放在try中执行!
4.还有一个类中如果没有main方法就不要运行它。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。