简易迷你DVD管理器(高仿图书馆借书系统)
简易迷你DVD管理器,此题设计的知识面广泛,需耐心分析
1 package com.lv.practice;
2
3 import java.util.*;
4 import java.text.*;
5 class DvdSet {
6
7 //定义三个属性
8 String[] name = new String[50]; // 为保证数组足够大
9 String[] date = new String[50];// 借书的时间
10 int[] state = new int[50]; // 借书的状态 , 0表示借出 ,1.表示可以借。
11 int[] count = new int[50]; // 借书的次数
12 }
13 class DvdMgr {
14
15 //创建一个DvdSet对象
16 DvdSet dvd = new DvdSet();
17
18 //1.第一个方法初始化三个DVD数据
19 public void initial(){
20 //初始化三个Dvd
21 dvd.name[0]= "罗马假日";
22 dvd.state[0]=0;
23 dvd.count[0] = 30;
24 dvd.date[0]= "2016-11-18";
25 dvd.name[1]="风声鹤唳";
26 dvd.state[1]=1;
27 dvd.name[2]= "浪漫满屋";
28 dvd.state[2]=1;
29 dvd.count[2] = 10;
30 }
31
32 //2.实现一个菜单切换
33 public void startMenu() {
34
35 System.out.println("********************************");
36 System.out.println("***********欢迎使用迷你DVD管理器******");
37 System.out.println("****** 1.新增DVD ******");
38 System.out.println("****** 2.查看DVD ******");
39 System.out.println("****** 3.删除DVD ******");
40 System.out.println("****** 4.借出DVD ******");
41 System.out.println("****** 5.归还DVD ******");
42 System.out.println("****** 6.DVD排行榜 ********");
43 System.out.println("****** 7.退出 ***********");
44 System.out.println("********************************");
45
46 Scanner input = new Scanner(System.in);
47 System.out.println("请输入您的操纵:");
48 int option = input.nextInt();
49
50 switch(option){
51
52 case 1 :
53 addDvd();
54 returnMenu();
55 break;
56
57 case 2 :
58 searchDvd();
59 returnMenu();
60 break;
61 case 3 :
62 deleteDvd();
63 returnMenu();
64 break;
65 case 4 :
66 lendDvd();
67 returnMenu();
68 break;
69 case 5 :
70 returnDvd();
71 returnMenu();
72 break;
73 case 6:
74 list();
75 returnMenu();
76
77 break;
78 case 7:
79 System.out.println("谢谢使用,欢迎下次在来");
80 break;
81 default:
82 System.out.println("输入异常,程序已经吓崩溃,正在重启中...");
83 break;
84
85 }
86
87 }
88
89 //3.返回菜单
90 public void returnMenu() {
91 System.out.println("输入0返回:");
92 Scanner input = new Scanner(System.in);
93
94 if(input.nextInt() == 0){
95
96 //在此进入菜单切换
97 startMenu();
98 }else {
99
100 System.out.println("输入异常,请从输入:");
101 returnMenu(); // 递归调用。
102 }
103
104 }
105
106 //4.查看的功能
107 public void searchDvd(){
108 System.out.println("******欢迎进入查看页面*****");
109 //\t Tap
110 System.out.println("序号\t名称\t\t状态\t借出时间\t");
111 for(int i=0;i<dvd.name.length ; i++){
112 if(dvd.name[i] == null){
113
114 break;
115 }else if (dvd.state[i] == 0){
116 //代表已经借出
117 System.out.println(i+1+"\t"+"<<"+dvd.name[i]+">>\t已借出\t"+dvd.date[i]);
118 }else if(dvd.state[i] == 1){
119
120 //代没有借出
121 System.out.println(i+1+"\t"+"<<"+dvd.name[i]+">>\t可借\t");
122 }
123 }
124
125 System.out.println("**************************************");
126
127 }
128
129 //5.新增Dvd
130 public void addDvd(){
131 System.out.println("******欢迎进入添加页面*****");
132 System.out.println("请输入您要添加的Dvd:");
133 Scanner input = new Scanner(System.in);
134 String name = input.next();
135 //将新增的内容放到最后
136 for(int i = 0;i<dvd.name.length;i++){
137
138 if(dvd.name[i] == null){ //到最后去了。
139
140 dvd.name[i] = name;
141 dvd.state[i] = 1;
142 System.out.println("<<"+name+">>dvd添加成功");
143 break;
144 }
145 }
146
147 }
148
149 //6.删除dvd
150
151 public void deleteDvd(){
152 System.out.println("******欢迎进入删除页面*****");
153 System.out.println("请输入您要删除的Dvd名称:");
154 Scanner input = new Scanner(System.in);
155 String name = input.next();
156 //分析
157 //1.没有找到:提示没有找到 请重新输入
158 //2.找到 :
159 //1.已经借出去 : 不能够删除
160 //2.没有借出去 : 删除
161
162 for(int i = 0;i<dvd.name.length;i++){
163 //查找是否存在
164 if(dvd.name[i] != null){
165
166 if(dvd.name[i].equalsIgnoreCase(name)){ //已经找到
167
168 //是否已经被借出
169 if(dvd.state[i] == 0){ // 借出
170 System.out.println("《"+name+"》已经被借出");
171 break;
172 }else if(dvd.state[i] == 1) {
173
174 //没有借出需要删除
175 //思路 : 1.用后面一个替换前面的。
176 //2.把最后面多余的地方赋值为null.
177
178
179 for(int j = i ;j<dvd.name.length;j++){
180
181 //做交换
182 if(dvd.name[j +1] != null){
183 dvd.name[j] = dvd.name[j+1];
184 dvd.state[j] = dvd.state[j+1];
185
186 }else{
187 //清空最后一个值
188 dvd.name[j] = null;
189 dvd.date[j] = null;
190 break;
191 }
192
193 }
194
195 System.out.println("删除《"+name+"》成功");
196 break;
197 }
198 }
199
200 }else {
201
202 System.out.println("没有您要删除的dvd");
203 System.out.println("***********************************************");
204 break;
205 }
206 }
207
208 }
209
210
211 //7.借dvd的功能
212 public void lendDvd(){
213 System.out.println("********欢迎进入借书页面********");
214 System.out.println("请输入您要借的dvd名称:");
215 Scanner input = new Scanner(System.in);
216 String name = input.next();
217
218 //1.判断有没有dvd
219 //1.又没有被借出去。
220 for(int i = 0;i<dvd.name.length;i++){
221
222 if(dvd.name[i] != null){ // 有dvd
223
224 if(dvd.name[i].equalsIgnoreCase(name) && dvd.state[i] == 1){ //有书并且没有被借出去
225
226 //借书
227 //1.修改状态
228 dvd.state[i] = 0;
229 System.out.println("请输入借书的时间(年-月-日):");
230 Scanner inputDate = new Scanner(System.in);
231 dvd.date[i] = inputDate.next();
232 System.out.println("借书成功");
233 dvd.count[i]++;
234 break;
235
236 }else if(dvd.name[i].equalsIgnoreCase(name) && dvd.state[i] == 0){
237 System.out.println("不好意思此借书已经被借出");
238 break;
239 }
240
241 }else { // dvd
242
243 System.out.println("没有您要找的DVD");
244 break;
245 }
246 }
247
248 }
249
250 //8.还Dvd 计算价格
251 public void returnDvd(){
252
253 System.out.println("********欢迎进入还DVD页面******************");
254 System.out.println("请输入还dvd的名称:");
255 Scanner input = new Scanner(System.in);
256 double price = 0.0;
257 String name = input.next();
258 for(int i = 0;i<dvd.name.length;i++){
259
260 if(dvd.name[i]!=null){ //有
261
262 if(dvd.name[i].equalsIgnoreCase(name) && dvd.state[i] == 0){ //以借出就可以归还
263 dvd.state[i] = 1;
264 System.out.println("请输入归还书籍的时间(年-月-日):");
265 Scanner inputDate = new Scanner(System.in);
266 //获取时间差
267 long charge = charge(dvd.date[i],inputDate.next());
268 price = charge * 1;
269 System.out.println("《"+dvd.name[i]+"》归还成功");
270 System.out.println("您应付"+price+"元");
271 //清空时间
272 dvd.date[i] = null;
273 break;
274
275 }
276
277 }else{
278 System.out.println("没有找到匹配的信息");
279 break;
280 }
281 }
282 System.out.println("************************************************");
283
284 }
285
286 public long charge(String date1,String date2){
287
288 //做时间差
289 //将String转为Date做计算
290 SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
291 long charge = 0;
292 try{
293 Date d1 = sd.parse(date1);
294 Date d2 = sd.parse(date2);
295 //时间也是以毫秒为单位。
296 charge = (d2.getTime() - d1.getTime()) / (1000*24*60*60);
297 }catch(ParseException e){
298 System.out.println(e);
299 }
300
301 return charge;
302 }
303
304
305 //排行榜
306 public void list(){
307
308 System.out.println("欢迎进入Dvd排行榜");
309 //排序
310 for(int i = 0 ; i <dvd.name.length-1;i++){
311
312 if(dvd.name[i] != null){
313
314 for(int j = 0; j<dvd.name.length-1-i;j++){
315
316 if(dvd.name[j] != null){
317
318 if(dvd.count[j] < dvd.count[j+1]){
319
320 int temp = dvd.count[j];
321 dvd.count[j] = dvd.count[j+1];
322 dvd.count[j+1]= temp;
323
324 String name1 = dvd.name[j];
325 dvd.name[j] = dvd.name[j+1];
326 dvd.name[j+1] = name1;
327
328 String date1= dvd.date[j];
329 dvd.date[j] = dvd.date[j+1];
330 dvd.date[j+1] = date1;
331
332 int state1= dvd.state[j];
333 dvd.state[j] = dvd.state[j+1];
334 dvd.state[j+1] = state1;
335
336 }
337 }else {
338 break;
339 }
340
341
342 }
343
344 }else{
345 break;
346 }
347 }
348 System.out.println("序号\t名称\t\t状态\t借出时间\t");
349 for(int i=0;i<dvd.name.length ; i++){
350 if(dvd.name[i] == null){
351
352 break;
353 }else if (dvd.state[i] == 0){
354 //代表已经借出
355 System.out.println(i+1+"\t"+"<<"+dvd.name[i]+">>\t已借出\t"+dvd.date[i]);
356 }else if(dvd.state[i] == 1){
357
358 //代没有借出
359 System.out.println(i+1+"\t"+"<<"+dvd.name[i]+">>\t可借\t");
360 }
361 }
362
363 System.out.println("**************************************");
364
365 }
366 }
367 //DVDMain主函数
368 class DEMO7{
369
370 public static void main (String[] args){
371
372 DvdMgr dvd = new DvdMgr();
373 //初始化dvd
374 dvd.initial();
375
376 //开始进入切换菜单
377 dvd.startMenu();
378 }
379 }
打印结果展示