迷你dvd代码如下:

 package com.manager;

 import java.util.Scanner;

 public class DVDManage {
public static void main(String[] args) {
Scanner input=new Scanner(System.in); //1.定义dvd相关数组
String[] name=new String[6]; //DVD名称
int[] state=new int[6]; //状态 ,0借出, 1未借
int[] days=new int[6]; //借出日期(1-31) 31不能借阅,(当月借当月还)
int[] count=new int[6]; //借出次数 //2.初始化操作给数组赋值(3个)...
//2.1 第一个dvd初始化
name[0]="罗马假日";
state[0]=0;
days[0]=1;
count[0]=15; //2.2 第2个dvd初始化
name[1]="西游记";
state[1]=1;
count[1]=15; //2.3 第3个dvd初始化
name[2]="浪漫满屋";
state[2]=1;
count[2]=30; //3.控制菜单循环变量初始化
boolean isMenu=false;
do{
System.out.println("欢迎使用迷你DVD管理器");
System.out.println("----------------------");
System.out.println("1.新增DVD");
System.out.println("2.查看DVD");
System.out.println("3.删除DVD");
System.out.println("4.借出DVD");
System.out.println("5.归还DVD");
System.out.println("6.退出DVD");
System.out.println("----------------------");
System.out.print("请选择:");
int menuNum=input.nextInt();
switch(menuNum){
case 1:
//1.1 新增,给数组赋值
System.out.println("-->新增DVD");
System.out.print("请输入DVD名称:");
String dvdName=input.next(); //1.2.定义判断dvd是否已经加满货架的标识符变量(false没有)
boolean flag1=false; //1.3.循环数组找到第一个空位置进行添加
for (int i = 0; i < name.length; i++) {
//1.3.1找到要添加的空位置
if(name[i]==null){
name[i]=dvdName;
System.out.println("新增《"+dvdName+"》成功!");
flag1=true; //该空间已经添加dvd
break;
}
} //1.4.判断货架是否已满
if(!flag1){
System.out.println("抱歉,新增《"+dvdName+"》失败!货架已满!");
}
System.out.println("******************************************");
break;
case 2:
//2.1 查看(循环)
System.out.println("-->查看DVD");
System.out.println("序号\t状态\t名称\t借出日期\t借出次数"); //2.2 循环打印dvd信息
for (int i = 0; i < name.length; i++) {
//2.2.1 只打印有内容的dvd盒子信息,不打印空dvd盒子内容
if(name[i]!=null){
//2.2.1.1 定义是否可借出的标识符变量
String dvdState=(state[i]==1?"可借阅":"已借出"); //2.2.1.2 定义可以借阅多少天的标识符变量
String dvdDays=(days[i]==0?"":(days[i]+"号")); //2.2.1.3 打印DVD信息
System.out.println((i+1)+"\t"+dvdState+"\t"
+name[i]+"\t"+dvdDays+"\t"+count[i]+"次数");
}
}
break;
case 3:
//3.1删除(移位)
System.out.println("-->删除DVD");
System.out.print("请输入要删除的DVD名字:");
String delete=input.next(); //3.2定义是否根据控制台输入的名字找到匹配项的标识符变量,默认没找到
boolean flag=false; //3.3定义要删除DVD的位置
int index=-1; //3.4循环找到删除的位置
for (int i = 0; i < name.length; i++) {
if(name[i]!=null && delete.equals(name[i]) && state[i]==1){
flag=true; //根据名字找到匹配DVD
index=i; //找到删除的位置
System.out.println("DVD删除成功!");
break;
}else if(name[i]!=null && delete.equals(name[i]) && state[i]==0){
flag=true;//根据名字找到匹配DVD
System.out.println("该DVD已被借出,目前无法删除!");
break;
}
} //3.5根据找到的位置删除
if(index!=-1){
//循环将删除位置之后的所有元素前移一位
for (int j = index; j < name.length; j++) {
//如果删除的是最后一个索引位置则元素不进行移动
if(j!=name.length-1){
name[j]=name[j+1];
state[j]=state[j+1];
days[j]=days[j+1];
}
//如果删除的是最后一位,则将最有一位置空null
name[name.length-1]=null;
}
}
//3.6 没有找到匹配的DVD名字项
if(!flag){
System.out.println("没有根据名字找到匹配的DVD信息!!");
}
System.out.println("******************************************");
break;
case 4:
//借出(改变dvd的状态0)
System.out.println("-->借出DVD");
System.out.print("请输入DVD名称:");
String want=input.next(); //循环判断要借阅的DVD是否存在
for (int i = 0; i < name.length; i++) {
if(name[i]==null){
System.out.println("没有找到匹配的DVD信息!!");
}else if(want.equals(name[i]) && state[i]==1){
//找到匹配可借
//改变DVD借阅状态为已借阅
state[i]=0;
System.out.print("请输入要借阅的日期:");
days[i]=input.nextInt(); //循环判断用户输入的借阅天数,只能借阅1-31天,r
//如果不满足条件则让用户循环输入天数直到正确为止
while(days[i]<1 || days[i]>31){
System.out.print("必须输入大于等于1且小于等于31的数字,请重新输入:");
days[i]=input.nextInt();
} System.out.println("借出《"+want+"》成功!"); //借出次数累加
count[i]++;
break;
}else if(want.equals(name[i]) && state[i]==0){
//找到匹配已被借出
System.out.println("《"+want+"》已被借出!");
break;
}
}
System.out.println("******************************************");
break;
case 5:
//归还(改变dvd的状态1)
System.out.println("-->归还DVD");
//定义借阅租金
int charge=0;
System.out.print("请输入DVD的名称:");
want=input.next();
for (int i = 0; i < name.length; i++) {
if(name[i]==null){
System.out.println("没有找到DVD匹配数据!");
}else if(want.equals(name[i]) && state[i]==0){
state[i]=1;
System.out.print("请输入归还时日期:");
int redate =input.nextInt();
//循环判断归还日期不能小于借出日期,也不能大于31,否则重新输入
while(redate<days[i] || redate>31){ if(redate<days[i]){
System.out.print("归还日期不能小于借出日期,请重新输入:");
}else{
System.out.print("一个月只能有31天,请重新输入:");
}
//循环输入正确归还日期(1-31)
redate=input.nextInt();
}
//计算出借阅的租金
charge=redate-days[i];
System.out.print("归还《"+want+"》成功!");
System.out.print("借出的日期为:"+days[i]+"号");
System.out.println("归还日期为:"+redate+"号");
System.out.println("应付租金(元):"+charge);
//归还后借阅的日期清零
days[i]=0;
break;
}else if(want.equals(name[i]) && state[i]==1){
//找到匹配项但是没借出
System.out.println("该《"+want+"》DVD没有被借出!无法进行归还操作!");
break;
}
}
System.out.println("******************************************");
break;
case 6:
//退出(系统退出)
System.exit(1);
break;
default:
System.out.println("菜单数字选择错误!!");
} //改变do-while循环条件
System.out.print("输入0返回:");
int num=input.nextInt();
if(num==0){
isMenu=true;
}else{
System.out.println("菜单编号输入错误!!");
}
}while(isMenu); } }

5、判断、循环、数组综合练习案例(迷你DVD)的更多相关文章

  1. 深入理解循环队列----循环数组实现ArrayDeque

    我们知道队列这种数据结构的物理实现方式主要还是两种,一种是链队列(自定义节点类),另一种则是使用数组实现,两者各有优势.此处我们将要介绍的循环队列其实是队列的一种具体实现,由于一般的数组实现的队列结构 ...

  2. JS基础-分支结构-循环-数组

    1.分支结构  1.if结构    语法:    if(条件){       语句块:    }    注意:      1.条件尽量是boolean的,如果不是boolean的,以下条件值,会当做f ...

  3. C#实现如何判断一个数组中是否有重复的元素

    如何判断一个数组中是否有重复的元素 实现判断数组中是否包含有重复的元素方法 这里用C#代码给出实例 方法一:可以新建一个hashtable利用hashtable的Contains方法进行查找 /// ...

  4. 判断js数组/对象是否为空

    /** * 判断js数组/对象是否为空 * isPrototypeOf() 验证一个对象是否存在于另一个对象的原型链上.即判断 Object 是否存在于 $obj 的原型链上.js中一切皆对象,也就是 ...

  5. [转]php判断一个数组是另一个数组的子集

    FROM : http://blog.csdn.net/lcion/article/details/8985220 今天完成一个算法的过程中,有几个需求模块,其中就有判断$a数组是否是$b数组的子集, ...

  6. php判断一个数组是另一个数组的子集

    需求最少的时间复杂度判断$a数组是否是$b数组的子集 // 快速的判断$a数组是否是$b数组的子集$a = array(135,138);$b = array(135,138,137); 实现方法 这 ...

  7. Python 类的三大特性的综合运用 案例

    # --------------------- 类的三大特性的综合运用 案例 ------------------------- # 定义三个类:小狗,小猫,人 # 小狗:姓名,年龄(默认1岁) 吃饭 ...

  8. Python 循环的综合应用

    # 循环综合应用1. # str = "hello,world" 把字符串给反转显示 str = "hello,world" temp = "&quo ...

  9. C#实现如何判断一个数组中是否有重复的元素 返回一个数组升序排列后的位置信息--C#程序举例 求生欲很强的数据库 别跟我谈EF抵抗并发,敢问你到底会不会用EntityFramework

    C#实现如何判断一个数组中是否有重复的元素   如何判断一个数组中是否有重复的元素 实现判断数组中是否包含有重复的元素方法 这里用C#代码给出实例 方法一:可以新建一个hashtable利用hasht ...

随机推荐

  1. shell 文件中列的整合成一个文件

    原文件 第一种方法 [root@wxb- jt]# paste -d "," b c d ,q, , ,e, ,r, ,t, [root@wxb- jt]# paste b c d ...

  2. php dday1... web服务器的搭建 数据库的安装....

  3. html5精品教程

    链接:http://pan.baidu.com/s/1ntr7yJ3 密码:7qvz链接:http://pan.baidu.com/s/1c0haxZM 密码:paok

  4. Android使用Eclipse遇到"java.lang.ClassNotFoundException"

    最近遇到个Android Jar的问题,找了几天才找到root cause. 在此记录下. 我们的Android项目需要使用一个供应商的Jar. 我们使用的开发环境为:Eclipse + ADT插件( ...

  5. Web流量劫持

    BadTunnel实战之远程劫持任意内网主机流量 http://www.freebuf.com/articles/web/109345.html http://blog.csdn.net/ts__cf ...

  6. drag

    1.draggable ="true"  元素可以拖拽了 2.拖拽元素事件: dragstart  拖拽前触发 drag 拖拽前.拖拽结束之间,连续触发 dragend 拖拽结束触 ...

  7. Unity2D开发小细节

    当某个触碰物体挂在父组件时,如果当前子组件不加rigidbody,会默认使用父组件的rigidbody

  8. 【POJ2186】受牛仰慕的牛

    受牛仰慕的牛(popular cows)  每头牛都有一个梦想:成为一个群体中最受欢迎的名牛!在一个有N(1<=N<=10,000)头牛的牛群中,给你M(1<=M<=50,00 ...

  9. [SOJ] Ordering Tasks

    1940. Ordering Tasks Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description John has n task ...

  10. css 冷门样式大全

    1. 文字多了 省略后面  后面加省略号 p{width:300px; border:solid 1px #000; padding:10px; font:22px/22px "微软雅黑&q ...