最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)租車管理系統(tǒng)

 更新時(shí)間:2020年12月17日 11:30:22   作者:Caczhtus  
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)租車管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

需求:

完成一個(gè)和用戶互動的租車管理系統(tǒng),當(dāng)中包括基礎(chǔ)的增刪改查,以及輸出實(shí)時(shí)地?zé)岫扰判邪?

功能設(shè)計(jì):

在工程的包c(diǎn)om.Test02中,搭建4個(gè)類,分別是程序啟動(carSysStart)、控制臺(carConsole)、數(shù)據(jù)存儲內(nèi)存庫(carData_base)、系統(tǒng)的功能類(carFunction)

具體代碼如下:

1.程序啟動

package com.Test02;
 
public class carSysStart {
 public static void main(String[] args) {
 carConsole p=new carConsole();
 p.setP(100);
 p.getP().initBaseinfo();
 p.getInfo();
 }
}

2.控制臺

package com.Test02;
import java.util.Scanner;
 
public class carConsole {
 private Scanner cin=new Scanner(System.in);
 private carFunction p;
 private boolean isBase=false;
 
 public static void Prompt(){ //聲明靜態(tài)方法,之后其他類調(diào)用也不用先new
 System.out.println("歡 迎 使 用自助車輛 管 理 系統(tǒng)");
 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");
 }
 
 public void setP(int maxSize) {
 if(maxSize>0){
 this.p=new carFunction(maxSize);
 this.isBase=true;
 }
 else{
 System.out.println("對不起,您要申請的內(nèi)存規(guī)模有誤!");
 }
 }
 
 public carFunction getP(){
 return p;
 }
 
 public void getInfo(){
 if(isBase){
 Prompt();
 boolean isStart=true;
 while(isStart){
 System.out.println("請選擇:");
 int choice=cin.nextInt();
 switch(choice){
 case 1:
 System.out.println("請輸入新增車輛的名稱:");
 p.car_Add(cin.next());
 break;
 case 2:
 p.car_book_Find();
 break;
 case 3:
 System.out.println("請輸入要?jiǎng)h除車輛的名字:");
 p.car_Delete(cin.next());
 break;
 case 4:
 System.out.println("請輸入要借出的車輛名稱:");
 String name=cin.next();
 System.out.println("請輸入借出的日期:");
 String date=cin.next();
 p.car_lend(name, date);
 break;
 case 5:
 System.out.println("請輸入要?dú)w還的車輛:");
 String name1=cin.next();
 System.out.println("請輸入歸還的日期:");
 String date1=cin.next();
 p.car_return(name1, date1);
 break;
 case 6:
 p.car_print_Rank();
 break;
 case 7:
 isStart=p.exit();
 System.out.println("借車系統(tǒng)退出成功!歡迎您下次繼續(xù)使用本系統(tǒng)!");
 break;
 default:
 System.out.println("輸入有誤,請重新輸入!");
 Prompt();
 break;
 }
 } 
 }
 else
 System.out.println("對不起,目前該系統(tǒng)的數(shù)據(jù)庫程序員小哥還在拼命打造中!詳情請聯(lián)系工作人員...");
 }
}

3.數(shù)據(jù)存儲內(nèi)存庫

package com.Test02;
 
public class carData_base {
 
 String[] name;
 String[] date;
 boolean[] isLoan;
 long[] loanSize;
 
 public carData_base(int maxSize) {
 this.name =new String[maxSize];
 this.date =new String[maxSize];
 this.isLoan =new boolean[maxSize];
 this.loanSize =new long[maxSize];
 }
 
}

4.系統(tǒng)各功能類

package com.Test02;
import java.util.*;
//import java.text.ParseException;
import java.text.SimpleDateFormat;
 
public class carFunction {
 carData_base car;
 
 public carFunction(int m){
 car=new carData_base(m);
 }
 
 public void initBaseinfo(){
 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] = "漢蘭達(dá)";
 car.isLoan[2] = false;
 car.loanSize[2] = 30;
 }
 
 public void returnMain(){
 Scanner cin =new Scanner(System.in);
 System.out.println("*********************");
 System.out.print("輸入0返回:");
 if (cin.nextInt() == 0){
 carConsole.Prompt();
 } else {
 System.out.println("輸入錯(cuò)誤, 異常終止!");
 System.exit(0);
 }
 }
 
 /*
 * 汽車系統(tǒng)的功能類
 * 1.增加車輛信息
 * 2.刪除車輛信息
 * 3.改動車輛信息(包括借出、歸還)
 * 4.查詢車輛信息
 * */
 public void car_Add(String name){
 for (int i = 0; i < car.name.length; i++) {
 if(car.name[i]==null){
 car.name[i]=name;
 car.date[i]=null;
 car.isLoan[i]=false;
 car.loanSize[i]=0;
 System.out.println("新增車輛"+"\""+name+"\""+"成功!");
 break;
 }
 }
 returnMain();
 }
 
 public void car_Delete(String name){
 
 //功能:刪除目前在庫中的所有名字與name相同的車輛信息
 //具體思路兩個(gè)游標(biāo):i表示當(dāng)前要操作(覆蓋,查詢)的下標(biāo),j表示之后可以往前移動的元素下標(biāo); 時(shí)間復(fù)雜度 ≈ O(n)
 
 boolean isYes=false,flag=false;
 for (int i = 0,j = 0; i < car.name.length; i++) {
 if(car.name[i]==null){
 break;
 }
 else if(isYes){
 if(car.isLoan[j] && name.equals(car.name[j])){
 System.out.println("\""+name+"\""+"處于借出狀態(tài),不能刪除!正在查找其他符合要求的車輛...");
 }
 car.name[i]=null;
 car.date[i]=null;
 car.isLoan[i]=false;
 car.loanSize[i]=0;
 }
 else if(name.equals(car.name[i]) && !car.isLoan[i]){
 j=j==0?i+1:j+1;
 flag=true;
 while(j<car.name.length && car.name[j]!=null && name.equals(car.name[j]) && !car.isLoan[j])
 j++;
 if(j<car.name.length && car.name[j]!=null){
 car.name[i]=car.name[j];
 car.date[i]=car.date[j];
 car.loanSize[i]=car.loanSize[j];
 car.isLoan[i]=car.isLoan[j];
 System.out.println("刪除"+"\""+name+"\""+"成功!");
 }
 else{
 isYes=true;
 i--;
 }
 }
 else if(car.isLoan[i] && name.equals(car.name[i])){
 System.out.println("\""+name+"\""+"處于借出狀態(tài),不能刪除!正在查找其他符合要求的車輛...");
 }
 }
 if(!flag){
 System.out.println("庫中沒有您要?jiǎng)h除的車輛信息!");
 }
 returnMain();
 }
 
 public void car_book_Find(){
 System.out.println("-----------> 查看---------->\n");
 System.out.println("序號\t狀 態(tài)\t名稱\t\t借出日期");
 for (int i = 0; i < car.name.length; i++) {
 if (car.name[i] == null) {
 break;
 } else if (car.isLoan[i] == true) {
 System.out.println((i + 1) + "\t已借出\t" + car.name[i] + "\t\t"
 + car.date[i]);
 } else if (car.isLoan[i] == false) {
 System.out.println((i + 1) + "\t可 借\t" + car.name[i]);
 }
 }
 returnMain();
 }
 
 public void car_print_Rank(){
 String[] Name=new String[car.name.length];
 long[] loanSize=new long[car.name.length];
 int i;
 
 for (i = 0; i < car.name.length; i++) { //copyArray
 if(car.name[i]==null){
 break;
 }
 else{
 Name[i]=car.name[i];
 loanSize[i]=car.loanSize[i];
 }
 }
 
 System.out.println("名次\t\t名稱\t\t熱度");
 for (int j = 0,flag; j < i; j++) { //選擇排序+打印排行榜
 flag=j;
 for (int j2 = j+1; j2 < i; j2++) {
 if(loanSize[flag]<loanSize[j2]){
 flag=j2;
 }
 }
 if(flag!=j){ //swap
 String temps = Name[flag];
 long tempi = loanSize[flag];
 Name[flag] = Name[j];
 loanSize[flag] = loanSize[j];
 Name[j] = temps;
 loanSize[j] = tempi;
 }
 System.out.println((j+1)+"\t\t"+Name[j]+"\t\t"+loanSize[j]);
 }
 returnMain();
 }
 
 /*
 * 借出和歸還一些情況探討
 * 1.庫中有多輛符合要求的車輛。
 * 解決:默認(rèn)借出第一輛符合要求的車
 * 2.庫中有多輛正在借出的同名車。(不知道還哪輛) 
 * 解決:
 * 1.用戶輸入的時(shí)候輸入借車的日期。
 * 2.默認(rèn)歸還第一輛找到的車。以下采用第二種
 * */
 public void car_lend(String name,String date){
 boolean isYes=false,flag=false;
 for (int i = 0; i < car.name.length; i++) {
 if(car.name[i]==null){
 break;
 }
 else if(name.equals(car.name[i])){
 flag=true;
 if(car.isLoan[i]){
 System.out.println("對不起,"+"\""+name+"\""+"已外借,正在為您查詢其他同類型車輛,請稍后...");
 }
 else{
 car.isLoan[i]=true;
 car.date[i]=date;
 isYes=true;
 System.out.println("恭喜您!"+"\""+name+"\""+"借出成功!");
 break;
 }
 }
 }
 if(!flag){
 System.out.println("對不起,庫中尚未有"+"\""+name+"\""+"的信息!");
 }
 else if(!isYes){
 System.out.println("對不起,目前庫中的所有"+"\""+name+"\""+"車輛都已外借!");
 }
 returnMain();
 }
 
 public void car_return(String name,String date){
 boolean isYes=false,flag=false;
 long Time=-1;
 for (int i = 0; i < car.name.length; i++) {
 if(car.name[i]==null){
 break;
 }
 else if(name.equals(car.name[i]) && car.isLoan[i]){
 isYes=true;
 flag=true;
 SimpleDateFormat sj=new SimpleDateFormat("yyyy-MM-dd");
 try{
 Date d1=sj.parse(car.date[i]);
 Date d2=sj.parse(date);
 Time=(d2.getTime()-d1.getTime())/(24*60*60*1000);
 }catch(Exception e){
 System.out.println("計(jì)算時(shí)間時(shí)發(fā)生異常");
 }finally{
 if(Time!=-1){
 System.out.println("您借出了"+Time+"天!");
 car.isLoan[i]=false;
 car.loanSize[i]+=Time;
 car.date[i]=null;
 }
 }
 break;
 }
 else if(name.equals(car.name[i]) && !car.isLoan[i]){
 isYes=true;
 }
 }
 if(isYes){
 if(!flag){
 System.out.println("本車庫的所有"+"\""+name+"\""+"車輛均已歸還,請您核對下輸入的信息是否有誤!");
 }
 }
 else{
 System.out.println("對不起,系統(tǒng)中尚未對"+"\""+name+"\""+"車輛的備案,請聯(lián)系后臺人員核實(shí)信息!");
 }
 returnMain();
 }
 
 public boolean exit(){
 return false;
 }
}

總結(jié):

對于面向?qū)ο蟮膶W(xué)習(xí)在這兩天有更近一步的學(xué)習(xí),學(xué)會了封裝類中的成員,其實(shí)就是將其權(quán)限設(shè)為私有,然后設(shè)置接口即聲明一個(gè)對其操作的方法以及得到它的方法。

在系統(tǒng)的編碼中遇到以下幾點(diǎn)問題需要改進(jìn)自己:

1.類似于C/C++中的結(jié)構(gòu)體排序的內(nèi)容,Java也有sort的自定義排序compare的方法,本來思路是想直接用集合的sort類排序,奈何不會用這個(gè)compare,就調(diào)轉(zhuǎn)船頭改用選擇排序了,日后還是要把這塊內(nèi)容掌握的;

2.時(shí)間的計(jì)算Java中也有對應(yīng)的DATE類,不過自己只是粗略學(xué)了計(jì)算兩個(gè)日期的差的運(yùn)算(用聲明的格式將string轉(zhuǎn)為Date,然后利用getTime計(jì)算1970年1月1號到所設(shè)日期的差值,注意的點(diǎn)是單位是毫秒,要得到天數(shù)還要進(jìn)行單位轉(zhuǎn)化,并且返回的類型是long);

3.Java中有try..catch..finally..捕捉異常,這點(diǎn)是之前沒學(xué)過的,在轉(zhuǎn)化時(shí)間的時(shí)候?yàn)榱朔乐巩惓=K止程序,將其放在try中執(zhí)行!

4.還有一個(gè)類中如果沒有main方法就不要運(yùn)行它。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 利用spring aop實(shí)現(xiàn)動態(tài)代理

    利用spring aop實(shí)現(xiàn)動態(tài)代理

    這篇文章主要為大家詳細(xì)介紹了利用spring aop實(shí)現(xiàn)動態(tài)代理的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Filter在springboot中的使用方法詳解

    Filter在springboot中的使用方法詳解

    這篇文章主要介紹了Filter在springboot中的使用方法詳解,filter(過濾器)作用于在intreceptor(攔截器)之前,不像intreceptor一樣依賴于springmvc框架,只需要依賴于serverlet,需要的朋友可以參考下
    2023-08-08
  • 在Eclipse IDE使用Gradle構(gòu)建應(yīng)用程序(圖文)

    在Eclipse IDE使用Gradle構(gòu)建應(yīng)用程序(圖文)

    這篇文章主要介紹了在Eclipse IDE使用Gradle構(gòu)建應(yīng)用程序(圖文),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • Java 數(shù)據(jù)結(jié)構(gòu)與算法系列精講之排序算法

    Java 數(shù)據(jù)結(jié)構(gòu)與算法系列精講之排序算法

    排序算法是《數(shù)據(jù)結(jié)構(gòu)與算法》中最基本的算法之一。排序算法可以分為內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存
    2022-02-02
  • 如何自定義hibernate validation注解示例代碼

    如何自定義hibernate validation注解示例代碼

    Hibernate Validator 是 Bean Validation 的參考實(shí)現(xiàn) . Hibernate Validator 提供了 JSR 303 規(guī)范中所有內(nèi)置 constraint 的實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于如何自定義hibernate validation注解的相關(guān)資料,需要的朋友可以參考下
    2018-04-04
  • idea手動導(dǎo)入了包但編譯運(yùn)行還是報(bào)找不到xxx.jar包的解決方案

    idea手動導(dǎo)入了包但編譯運(yùn)行還是報(bào)找不到xxx.jar包的解決方案

    這篇文章主要介紹了idea手動導(dǎo)入了包但編譯運(yùn)行還是報(bào)找不到xxx.jar包的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Java SpringBoot 集成 Redis詳解

    Java SpringBoot 集成 Redis詳解

    Redis 是一個(gè)由 Salvatore Sanfilippo 寫的 key-value 存儲系統(tǒng),是跨平臺的非關(guān)系型數(shù)據(jù)庫。Redis 是一個(gè)開源的使用 ANSI C 語言編寫、遵守 BSD 協(xié)議、支持網(wǎng)絡(luò)、可基于內(nèi)存、分布式、可選持久性的鍵值對(Key-Value)存儲數(shù)據(jù)庫,并提供多種語言的 API
    2021-10-10
  • spring cloud consul使用ip注冊服務(wù)的方法示例

    spring cloud consul使用ip注冊服務(wù)的方法示例

    這篇文章主要介紹了spring cloud consul使用ip注冊服務(wù)的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • mybatis之調(diào)用帶輸出參數(shù)的存儲過程(Oracle)

    mybatis之調(diào)用帶輸出參數(shù)的存儲過程(Oracle)

    這篇文章主要介紹了mybatis調(diào)用帶輸出參數(shù)的存儲過程(Oracle),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • javaweb實(shí)戰(zhàn)之商城項(xiàng)目開發(fā)(一)

    javaweb實(shí)戰(zhàn)之商城項(xiàng)目開發(fā)(一)

    這篇文章主要針對javaweb商城項(xiàng)目開發(fā)進(jìn)行實(shí)戰(zhàn)演習(xí),對javaweb商城項(xiàng)目開發(fā)進(jìn)行詳細(xì)分析,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-02-02

最新評論

阿克苏市| 广昌县| 闸北区| 张家港市| 山丹县| 佛山市| 富顺县| 晋中市| 涿州市| 高碑店市| 如东县| 新丰县| 马关县| 昌宁县| 原阳县| 清远市| 无锡市| 本溪市| 商洛市| 凤冈县| 保定市| 博白县| 滨州市| 泾川县| 樟树市| 漳州市| 永胜县| 岳阳县| 巴青县| 双鸭山市| 望谟县| 靖州| 姜堰市| 涡阳县| 崇州市| 宁夏| 佛坪县| 都昌县| 明星| 平江县| 赞皇县|