激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|JavaScript|易語(yǔ)言|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Java實(shí)現(xiàn)租車管理系統(tǒng)

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

2021-07-13 12:17Caczhtus Java教程

這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)租車管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

需求:

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

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

在工程的包c(diǎn)om.test02中,搭建4個(gè)類,分別是程序啟動(dòng)(carsysstart)、控制臺(tái)(carconsole)、數(shù)據(jù)存儲(chǔ)內(nèi)存庫(kù)(cardata_base)、系統(tǒng)的功能類(carfunction)

具體代碼如下:

1.程序啟動(dòng)

?
1
2
3
4
5
6
7
8
9
10
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.控制臺(tái)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
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("對(duì)不起,您要申請(qǐng)的內(nèi)存規(guī)模有誤!");
 }
 }
 
 public carfunction getp(){
 return p;
 }
 
 public void getinfo(){
 if(isbase){
 prompt();
 boolean isstart=true;
 while(isstart){
 system.out.println("請(qǐng)選擇:");
 int choice=cin.nextint();
 switch(choice){
 case 1:
  system.out.println("請(qǐng)輸入新增車輛的名稱:");
  p.car_add(cin.next());
  break;
 case 2:
  p.car_book_find();
  break;
 case 3:
  system.out.println("請(qǐng)輸入要?jiǎng)h除車輛的名字:");
  p.car_delete(cin.next());
  break;
 case 4:
  system.out.println("請(qǐng)輸入要借出的車輛名稱:");
  string name=cin.next();
  system.out.println("請(qǐng)輸入借出的日期:");
  string date=cin.next();
  p.car_lend(name, date);
  break;
 case 5:
  system.out.println("請(qǐng)輸入要?dú)w還的車輛:");
  string name1=cin.next();
  system.out.println("請(qǐng)輸入歸還的日期:");
  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("輸入有誤,請(qǐng)重新輸入!");
  prompt();
  break;
 }
 }
 }
 else
 system.out.println("對(duì)不起,目前該系統(tǒng)的數(shù)據(jù)庫(kù)程序員小哥還在拼命打造中!詳情請(qǐng)聯(lián)系工作人員...");
 }
}

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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)各功能類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
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.改動(dòng)車輛信息(包括借出、歸還)
 * 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){
 
 //功能:刪除目前在庫(kù)中的所有名字與name相同的車輛信息
 //具體思路兩個(gè)游標(biāo):i表示當(dāng)前要操作(覆蓋,查詢)的下標(biāo),j表示之后可以往前移動(dòng)的元素下標(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("庫(kù)中沒(méi)有您要?jiǎng)h除的車輛信息!");
 }
 returnmain();
 }
 
 public void car_book_find(){
 system.out.println("-----------> 查看---------->\n");
 system.out.println("序號(hào)\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.庫(kù)中有多輛符合要求的車輛。
 * 解決:默認(rèn)借出第一輛符合要求的車
 * 2.庫(kù)中有多輛正在借出的同名車。(不知道還哪輛)
 * 解決:
 * 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("對(duì)不起,"+"\""+name+"\""+"已外借,正在為您查詢其他同類型車輛,請(qǐng)稍后...");
 }
 else{
  car.isloan[i]=true;
  car.date[i]=date;
  isyes=true;
  system.out.println("恭喜您!"+"\""+name+"\""+"借出成功!");
  break;
 }
 }
 }
 if(!flag){
 system.out.println("對(duì)不起,庫(kù)中尚未有"+"\""+name+"\""+"的信息!");
 }
 else if(!isyes){
 system.out.println("對(duì)不起,目前庫(kù)中的所有"+"\""+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("本車庫(kù)的所有"+"\""+name+"\""+"車輛均已歸還,請(qǐng)您核對(duì)下輸入的信息是否有誤!");
 }
 }
 else{
 system.out.println("對(duì)不起,系統(tǒng)中尚未對(duì)"+"\""+name+"\""+"車輛的備案,請(qǐng)聯(lián)系后臺(tái)人員核實(shí)信息!");
 }
 returnmain();
 }
 
 public boolean exit(){
 return false;
 }
}

總結(jié):

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

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

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

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

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

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://blog.csdn.net/calculate23/article/details/80113890

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚州综合 | 蜜桃av网 | 黄色片网站免费在线观看 | 少妇一级淫片免费放4p | 欧美日韩电影在线 | 欧美成人三级大全 | 黄色片在线观看网站 | 欧美乱淫 | 国产精品美女久久久久久网站 | 日韩精品久久久久久 | 综合国产在线 | 欧美激情性色生活片在线观看 | 久久91亚洲人成电影网站 | 香蕉在线播放 | 色中色在线视频 | 精品黑人一区二区三区国语馆 | 成人mm视频在线观看 | 国产乱xxxx | 亚州综合图片 | 久久亚洲网 | 天天操天天插天天干 | 202z中文字幕第一页 | www.91操 | 国产一区二区三区黄 | 经典三级av在线 | 成人三级视频网站 | 曰韩在线视频 | 高潮娇喘嗯啊~文字 | 色播久久 | 日韩精品一二三区 | 黄污污网站 | av手机在线免费播放 | 福利一区二区三区视频在线观看 | 妇女毛片 | 久精品久久 | 久久综合网址 | 视频一区二区三区在线观看 | 欧美视频在线观看一区 | 久久久久女人精品毛片九一 | 国产在线久 | 久久人人爽人人爽人人片av高请 |