迷你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. Oracle常用查询

    -- 创建Oracle sequence create sequence SEQ_XXHF minvalue 1 maxvalue 9999999999999999999999999999 start ...

  2. 曾经让我很吐血的Bug(初学者)

    1.MSSql 就是 sql Server. 2.用session的时候一定要先实现接口IRequiresSessionState: 3.form表单中type=file传送文件的时候一定要在form ...

  3. Tiny6410之MMU开启

    存储管理单元存储管理单元MMU概述 在ARM系统中,存储管理单元MMU主要完成以下工作:1.虚拟存储空间到物理存储空间的映射.在ARM中采用页式虚拟存储管理.他把虚拟地址空间分成一个个固定大小的块,每 ...

  4. 设计模式 -- 中介者设计模式 (Mediator Pattern)

    中介者模式的定义:将多对多关系分散为一对多的关系,将网状结构变成星状结构,降低复杂度,提高扩展性. 角色: Mediator :抽象中介者角色,以抽象类的方式实现,生命具体对象,以及抽象方法: Con ...

  5. Rosenbrock function

    w测试最优化算法性能可通过其. https://en.wikipedia.org/wiki/Rosenbrock_function https://zh.wikipedia.org/wiki/Rose ...

  6. Python学习笔记——基础篇【第五周】——算法(4*4的2维数组和冒泡排序)、时间复杂度

    目录 1.算法基础 2.冒泡排序 3.时间复杂度 (1)时间频度 (2)时间复杂度 4.指数时间 5.常数时间 6.对数时间 7.线性时间 1.算法基础  要求:生成一个4*4的2维数组并将其顺时针旋 ...

  7. PowerCmd(命令行增强工具) 2.2 免费版

    软件名称: PowerCmd(命令行增强工具) 2.2 免费版 软件语言: 英文 授权方式: 免费软件 运行环境: Win7 / Vista / Win2003 / WinXP 软件大小: 1.8MB ...

  8. .net后台代码临时表创建

    写法一: var dt = new DataTable(); dt.Columns.Add(new DataColumn("Id", System.Type.GetType(&qu ...

  9. 查看Windows支持的内存大小

    cmd命令: wmic memphysical get maxcapacity

  10. maven 3.3.9-bin 和 maven 3.3.9-src 的区别 以及 maven安装包的 .tar.gz后缀与.zip 后缀的区别

    (maven 3.3.9-bin)一个是class的文件包,由java文件编译成的,(maven 3.3.9-src )一个是java文件包即是源码(.tar.gz后缀)是linux的压缩包,(.zi ...