java基础<迷你DVD系统>

时间:2022-02-16 15:15:12

一.写在main方法中

java基础<迷你DVD系统>java基础<迷你DVD系统>
  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\n");
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\n");
68 System.out.println("序号\t状态\t名称\t借出日期\t借出次数");
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)+"\t"+dvdState+"\t"
74 +name[i]+"\t"+dateStr+"\t"+count[i]+"次");
75 }
76 }
77 System.out.println("*****************************************");
78 break;
79 case 3:
80 //删除DVD
81 System.out.println("-->删除DVD\n");
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\n");
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\n");
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("\n归还《"+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

java基础<迷你DVD系统>java基础<迷你DVD系统>
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

java基础<迷你DVD系统>java基础<迷你DVD系统>
  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("--------------------------------------\n");
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("\n谢谢 使 用!");
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\n");
89 System.out.println("序号\t状 态\t名称\t\t借出日期");
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)+"\t已借出\t"+"<<"+ dvd.name[i]+ ">>\t" + dvd.date[i]);
95 }else if(dvd.state[i] == 1){
96 System.out.println((i+1)+"\t可 借\t"+"<<"+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\n");
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\n");
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\n");
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\n");
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("\n归还《"+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("---> 排行榜\n");
264 System.out.println("**************************");
265 System.out.println("次数\t名称");
266 //显示排行榜信息
267 for(int i=newname.length-1;i>=0;i--){
268 if(newname[i]!=null){
269 System.out.println(newcount[i]+"\t<<"+ newname[i]+ ">>" );
270 }
271 }
272 System.out.println("**************************");
273 returnMain();
274 }
275 }
DVDMgr.java

3.功能测试类Start.java

java基础<迷你DVD系统>java基础<迷你DVD系统>
 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

三、运行效果图