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方法就不要运行它。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。