简易迷你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 }

打印结果展示

 

 

posted @ 2016-12-01 14:30  LXQLCCC  Views(245)  Comments(0Edit  收藏  举报