java基础<迷你DVD系统>

一.写在main方法中

  1 import java.util.*;
  2 
  3 public class MyDVDMgr {
  4     public static void main(String[] args){
  5         Scanner input=new Scanner(System.in);
  6         //是否退出系统,false代表退出系统
  7         boolean flag=true;
  8         //DVD相关信息,最多只能存储6个DVD信息
  9         String[] name=new String[6]; //DVD名称
 10         int[] state=new int[6]; //借阅状态,0:可借阅 ;1:已借出
 11         int[] date=new int[6];  //借出日期
 12         int[] count=new int[6]; //借出次数
 13         
 14         /*
 15          * 初始化三个DVD
 16          * */
 17         name[0]="罗马假日";
 18         state[0]=1;
 19         date[0]=1;
 20         count[0]=15;
 21         
 22         name[1]="风声鹤唳";
 23         state[1]=0;
 24         count[1]=12;
 25         
 26         name[2]="浪漫满屋";
 27         state[2]=0;
 28         count[2]=30;
 29         
 30         int num=-1;
 31         //循环操作
 32         do{
 33             //输出欢迎菜单
 34             System.out.println("欢迎使用迷你DVD管理器");
 35             System.out.println("-------------------------");
 36             System.out.println("1.新增DVD");
 37             System.out.println("2.查看DVD");
 38             System.out.println("3.删除DVD");
 39             System.out.println("4.借出DVD");
 40             System.out.println("5.归还DVD");
 41             System.out.println("6.退出DVD");
 42             System.out.println("-------------------------");
 43             System.out.println("请选择:");
 44             int choose=input.nextInt();
 45             switch(choose){
 46                 case 1:
 47                     //新增DVD
 48                     System.out.println("-->新增DVD
");
 49                     System.out.println("请输入DVD名称:");
 50                     String dvdName=input.next();
 51                     boolean flag2=false;
 52                     for(int i=0;i<name.length;i++){
 53                         if(name[i]==null){
 54                             name[i]=dvdName;
 55                             System.out.println("新增《"+dvdName+"》成功!");
 56                             flag2=true;
 57                             break;
 58                         }
 59                     }
 60                     if(!flag2){
 61                         System.out.println("抱歉,新增《"+dvdName+"》失败!货架已满!");
 62                     }
 63                     System.out.println("*****************************************");
 64                     break;
 65                 case 2:
 66                     //查看DVD
 67                     System.out.println("-->查看DVD
");
 68                     System.out.println("序号	状态	名称	借出日期	借出次数");
 69                     for(int i=0;i<name.length;i++){
 70                         if(name[i]!=null){
 71                             String dvdState=(state[i]==0)?"可借阅":"已借出";
 72                             String dateStr=(date[i]==0)?"":(date[i]+"日");
 73                             System.out.println((i+1)+"	"+dvdState+"	"
 74                               +name[i]+"	"+dateStr+"	"+count[i]+"次");
 75                         }
 76                     }
 77                     System.out.println("*****************************************");
 78                     break;
 79                 case 3:
 80                     //删除DVD
 81                     System.out.println("-->删除DVD
");
 82                     System.out.println("请输入要删除DVD的名称:");
 83                     String delete=input.next();
 84                     boolean flag3=false;
 85                     int index=-1;  //记录要删除DVD的位置
 86                     for(int i=0;i<name.length;i++){
 87                         if(name[i]!=null && delete.equals(name[i]) && state[i]==0){
 88                             flag3=true;
 89                             index=i;
 90                             System.out.println("DVD删除成功!");
 91                             break;
 92                         }else if(name[i]!=null && delete.equals(name[i]) && state[i]==1){
 93                             flag3=true;
 94                             System.out.println("该DVD已被借出,目前无法删除!");
 95                             break;
 96                         }
 97                     }
 98                     //根据记录下来的删除DVD的位置进行删除工作
 99                     if(index!=-1){
100                         for(int j=index;j<name.length;j++){
101                             if(j!=name.length-1){
102                                 name[j]=name[j+1];
103                                 state[j]=state[j+1];
104                                 date[j]=date[j+1];
105                             }
106                             name[name.length-1]=null;
107                             
108                         }
109                     }
110                     if(!flag3){
111                         System.out.println("没有找到匹配信息!");
112                     }
113                     System.out.println("*****************************************");
114                     break;
115                 case 4:
116                     //借出DVD
117                     System.out.println("-->借出DVD
");
118                     System.out.print("请输入DVD名称:");
119                     String want=input.next();  //要借出的DVD名称
120                     for(int i=0;i<name.length;i++){
121                         if(name[i]==null){  //无匹配
122                             System.out.println("没有找到匹配信息!");
123                             break;
124                         }else if(want.equals(name[i]) && state[i]==0){  //找到匹配可借
125                             state[i]=1; //将此DVD置于借出状态
126                             System.out.print("请输入借出日期:");
127                             date[i]=input.nextInt();
128                             while(date[i]<1 || date[i]>31){  //当输入借出的日期不满足1-31时
129                                 System.out.println("必须输入大于等于1且小于等于31的数字,请重新输入:");
130                                 date[i]=input.nextInt();
131                             }
132                             System.out.println("借出《"+want+"》成功!");
133                             count[i]++;
134                             break;
135                         }else if(want.equals(name[i]) && state[i]==1){  //找到匹配已被借出
136                             System.out.println("《"+want+"》已被借出!");
137                             break;
138                         }
139                     }
140                     System.out.println("*****************************************");
141                     break;
142                 case 5:
143                     //归还DVD
144                     System.out.println("-->归还DVD
");
145                     int charge=0;  //租金
146                     System.out.print("请输入归还DVD名称:");
147                     want=input.next();
148                     for(int i=0;i<name.length;i++){
149                         if(name[i]==null){ //无匹配
150                             System.out.println("没有找到匹配信息!");
151                             break;
152                         }else if(want.equals(name[i]) && state[i]==1){//找到匹配
153                             state[i]=0;  //将借阅状态修改为可借阅
154                             System.out.print("请输入归还日期:");
155                             int redate=input.nextInt();
156                             while(redate<date[i] || redate>31){  //归还日期不能小于借出日期,也不能大于31
157                                 if(redate<date[i]){
158                                     System.out.println("归还日期不能小于借出日期,请重新输入:");
159                                 }else{
160                                     System.out.println("一个月只有31天,请重新输入:");
161                                 }
162                                 redate=input.nextInt();
163                             }
164                             charge=redate-date[i];
165 
166                             System.out.println("
归还《"+want+"》成功!");
167                             System.out.println("借出日期为:"+date[i]+"日");
168                             System.out.println("归还日期为:"+redate+"日");
169                             System.out.println("应付租金(元):"+charge);
170                                                         date[i]=0;
171                             break;
172                         }else if(want.equals(name[i]) && state[i]==0){//找到匹配但没有借出
173                             System.out.println("该DVD没有被借出!无法进行归还操作。");
174                             break;
175                         }
176                     }
177                     System.out.println("*****************************************");
178                     break;
179                 case 6:
180                     //退出DVD
181                     flag=false;
182                     break;
183                 default:
184                     flag=false;
185                     break;
186             }
187             if(flag){
188                 System.out.println("输入0返回:");
189                 num=input.nextInt();
190             }else{
191                 break;
192             }
193         }while(num==0);
194         System.out.println("谢谢使用!");
195     }
196 }
MyDVDMgr.java

二.抽分方法写在不同类

1.初始化使用数组类DVDSet.java

1 package com.jb.minidvd;
2 
3 public class DVDSet {
4     String[] name = new String[50];   //数组1存储DVD名称数组
5     int[] state = new int[50];        //数组2存储DVD借出状态:0已借出/1可借
6     String[] date=new String[50];     //数组3存储DVD借出日期
7     int[] count=new int[50];         //借出次数
8    
9 }
DVDSet.java

2.DVD业务类DVDMgr.java

  1 package com.jb.minidvd;
  2 
  3 import java.text.ParseException;
  4 import java.text.SimpleDateFormat;
  5 import java.util.*;
  6 public class DVDMgr {
  7     /**
  8      * 创建DVD对象
  9      */
 10     DVDSet dvd = new DVDSet();
 11     /**
 12      * 初始三个DVD     
 13      */
 14     public void initial() {
 15         
 16         dvd.name[0] = "罗马假日";
 17         dvd.state[0] = 0; 
 18         dvd.date[0]="2013-7-1";
 19         dvd.count[0]=15;
 20         
 21         dvd.name[1] = "风声鹤唳";
 22         dvd.state[1] = 1;  
 23         dvd.count[1]=12;
 24         
 25         dvd.name[2] = "浪漫满屋";
 26         dvd.state[2] = 1;
 27         dvd.count[2]=30;
 28     }    
 29     /**
 30      * 开始菜单
 31      */
 32     public void startMenu(){
 33          System.out.println("欢 迎 使 用 迷 你 DVD 管 理 器");
 34             System.out.println("-------------------------------------");
 35             System.out.println("0. 借出排行榜");
 36             System.out.println("1. 新 增 DVD");
 37             System.out.println("2. 查 看 DVD");
 38             System.out.println("3. 删 除 DVD");
 39             System.out.println("4. 借 出 DVD");
 40          System.out.println("5. 归 还 DVD");         
 41             System.out.println("6. 退         出 ");
 42             
 43             System.out.print("--------------------------------------
");
 44     
 45             System.out.print("请选择: ");
 46             Scanner input = new Scanner(System.in);
 47             int choice = input.nextInt();
 48             switch(choice){
 49                 case 0:
 50                    list();
 51                    break;
 52                 case 1:
 53                    add();
 54                    break;
 55                case 2: 
 56                    search();
 57                    break;
 58                case 3:
 59                    delete();
 60                    break;
 61                case 4:
 62                    lend();
 63                    break;
 64                case 5:
 65                    returnDvd();
 66                    break;
 67                case 6:
 68                    System.out.println("
谢谢 使 用!");
 69                    break;
 70             }
 71     }
 72     /**
 73      * 返回主菜单
 74      */
 75     public void returnMain(){
 76         Scanner input = new Scanner(System.in); 
 77         System.out.print("输入0返回:");
 78         if(input.nextInt() == 0){
 79             startMenu();
 80         }else{
 81             System.out.println("输入错误, 异常终止!");
 82         }
 83     }
 84     /**
 85      * 查看DVD
 86      */
 87     public void search(){
 88         System.out.println("---> 查看DVD
");
 89         System.out.println("序号	状 态	名称		借出日期");
 90         for(int i = 0 ; i < dvd.name.length; i++){
 91                if(dvd.name[i]==null){
 92                    break;
 93                }else if(dvd.state[i] == 0){
 94                    System.out.println((i+1)+"	已借出	"+"<<"+ dvd.name[i]+ ">>	" + dvd.date[i]);
 95                }else if(dvd.state[i] == 1){
 96                    System.out.println((i+1)+"	可 借	"+"<<"+dvd.name[i]+">>");
 97                }
 98            }
 99         System.out.println("**************************");
100         returnMain();      
101     }
102     /**
103      * 新增DVD
104      */
105     public void add(){
106      Scanner input = new Scanner(System.in);
107         System.out.println("---> 新增DVD
");        
108         System.out.print("请输入DVD名称: ");
109         String name = input.next();  
110         for(int i = 0; i < dvd.name.length; i++){            
111             if(dvd.name[i] == null){    //查询最后一个空位置插入
112                dvd.name[i]=name;
113                dvd.state[i]=1;//置新增的DVD可借状态
114                 System.out.println("新增《"+name+"》成功!");
115                 break;
116             }
117         }
118         System.out.println("**************************");
119         returnMain();   
120     }    
121     /**
122      * 删除DVD
123      */
124     public void delete(){
125         Scanner input = new Scanner(System.in);
126         boolean flag=false;//标识删除成功与否
127         System.out.println("---> 删除DVD
");
128         System.out.print("请输入DVD名称: ");
129           String name = input.next();  
130           //遍历数组,查找匹配信息
131           for(int i = 0 ; i < dvd.name.length; i++){
132               //查找到,每个元素前移一位
133               if(dvd.name[i]!=null &&dvd.name[i].equalsIgnoreCase(name)&&dvd.state[i]==1){
134                   int j=i;
135                   while(dvd.name[j+1]!=null){
136                       dvd.name[j]=dvd.name[j+1];
137                       dvd.state[j]=dvd.state[j+1];
138                       dvd.date[j]=dvd.date[j+1];
139                       j++;
140                   }
141                   //最后一个不为空的元素置空
142                    dvd.name[j]=null;                   
143                    dvd.date[j]=null; 
144                 System.out.println("删除《"+name+"》成功!");
145                 flag=true;//置位,表示删除成功
146                 break;
147               }else if(dvd.name[i]!=null &&dvd.name[i].equalsIgnoreCase(name)&&dvd.state[i]==0){
148                   System.out.println("《"+name+"》为借出状态,不能删除!"); 
149                   flag=true;//置位
150                   break;
151               }
152           }
153           if(!flag){
154               System.out.println("没有找到匹配信息!");
155           }
156           System.out.println("**************************");
157           returnMain();      
158     }
159     /**
160      * 借出DVD
161      */
162     public void lend(){
163         System.out.println("---> 借出DVD
");
164         
165         Scanner input = new Scanner(System.in);
166         System.out.print("请输入DVD名称: ");
167         String want = input.next();  //要借出的DVD名称 
168         for(int i = 0; i < dvd.name.length; i++){            
169             if(dvd.name[i] == null){    //无匹配
170                 System.out.println("没有找到匹配信息!");
171                 break;
172             }else if(dvd.name[i].equals(want)&& dvd.state[i]==1){  //找到匹配可借     
173                 dvd.state[i] = 0;
174                 System.out.print("请输入借出日期(年-月-日):");
175                 dvd.date[i]=input.next();
176                 System.out.println("借出《"+want+"》成功!");               
177                 dvd.count[i]++;
178                 break;
179             }else if(dvd.name[i].equals(want)&& dvd.state[i]==0){  //找到匹配已被借出             
180                 System.out.println("《"+want+"》已被借出!");
181                 break;
182             }            
183         }
184         System.out.println("**************************");
185         returnMain();
186     }
187     /**
188      * 归还DVD并计算租金
189      */
190     public void returnDvd(){
191         System.out.println("---> 归还DVD
");
192         
193         Scanner input = new Scanner(System.in);
194         long loan=0;//租金
195         System.out.print("请输入DVD名称: ");
196         String want = input.next();
197         for(int i = 0; i < dvd.name.length; i++){            
198             if(dvd.name[i] == null){    //无匹配
199                 System.out.println("没有找到匹配信息!");
200                 break;
201             }else if(dvd.name[i].equals(want) && dvd.state[i]==0){  //找到匹配     
202                 dvd.state[i] = 1;
203                 System.out.print("请输入归还日期(年-月-日):");
204                 String redate=input.next();
205                 //计算租金
206                 loan=charge(dvd.date[i],redate);
207                 System.out.println("
归还《"+want+"》成功!");
208                 System.out.println("借出日期为:"+dvd.date[i]);
209                 System.out.println("归还日期为:"+redate);
210                 System.out.println("应付租金(元):"+loan);
211                 break;
212             }  else if(dvd.name[i].equals(want) && dvd.state[i]==1){ //找到匹配但没有借出
213                System.out.println("该DVD没有被借出!无法进行归还操作。");
214                break;
215             }
216         }
217         System.out.println("**************************");
218         returnMain();
219     }
220     /**
221      * 计算日期差
222      * @param dstr1 第一个日期
223      * @param dstr2 第二个日期
224      * 
225      */
226     public long charge(String dstr1,String dstr2){
227         long charge=0;
228         SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");
229         try {
230             Date d1=sd.parse(dstr1);
231             Date d2=sd.parse(dstr2);
232             charge=(d2.getTime()-d1.getTime())/(24*60*60*1000);
233         } catch (ParseException e) {            
234             e.printStackTrace();            
235         }        
236         return charge;
237     }
238     /**
239      * 借出排行榜
240      */
241     public void list(){
242         //定义新数组,用来存放排序后DVD信息
243         String[] newname = new String[50];   //       
244         int[] newcount=new int[50];  
245         for(int k=0;k<dvd.name .length;k++){
246              newname[k]=dvd.name[k];
247              newcount[k]=dvd.count[k];
248         }
249               
250         //利用冒泡排序算法进行排序
251         for(int i=0;i<newname.length;i++){
252             for(int j=i+1;j<newname.length;j++){
253                 if(newcount[i]>newcount[j]){
254                     int tempc=newcount[i];
255                     newcount[i]=newcount[j];
256                     newcount[j]=tempc;
257                     String tempn=newname[i];
258                     newname[i]=newname[j];
259                     newname[j]=tempn;
260                 }                
261             }            
262         }
263         System.out.println("---> 排行榜
");
264         System.out.println("**************************");
265         System.out.println("次数	名称");
266         //显示排行榜信息
267         for(int i=newname.length-1;i>=0;i--){
268             if(newname[i]!=null){
269                 System.out.println(newcount[i]+"	<<"+ newname[i]+ ">>" );
270             }
271         }      
272            System.out.println("**************************");
273            returnMain();
274        }
275 }
DVDMgr.java

3.功能测试类Start.java

 1 package com.jb.minidvd;
 2 
 3 public class Start {
 4 
 5     /**
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9         DVDMgr dm=new DVDMgr();    
10         dm.initial();
11         dm.startMenu();
12 
13     }
14 
15 }
Start.java

三、运行效果图

原文地址:https://www.cnblogs.com/holly8/p/6009862.html