迷你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. windows下配置Java环境变量

    一.首先, JDK的安装路径,在这里我们选择默认安装在C:\Program Files\Java\jdk1.7.0_45\目录下. 二.下面, 设置环境变量: [1]“我的电脑”右键菜单---> ...

  2. mac git 的安装 及实现自动补全

    1.检查是否装了brew $ brew list如果没有,拷贝以下命令到终端 回车.可以安装好brewruby -e "$(curl -fsSL https://raw.githubuser ...

  3. mysql 保存emoji时报,数据库报错:Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...' for column 'review' at row 1

    错误原因:我们可以看到错误提示中的字符0xF0 0x9F 0x98 0x84 ,这对应UTF-8编码格式中的4字节编码(UTF-8编码规范).正常的汉字一般不会超过3个字节,为什么为出现4个字节呢?实 ...

  4. IOS开发调整UILabel的行间距

    CGFloat heih = 20;   NSString * cLabelString = @"这是测试UILabel行间距的text.这是测试UILabel行间距的text.n 这是测试 ...

  5. Hibernate——脏检查和缓存清理机制

    Session到底是如何进行脏检查的呢? 当一个Customer对象被加入到Session缓存中时,Session会为Customer对象的值类型的属性复制一份快照.当Session清理缓存时,会先进 ...

  6. linux服务器没网情况下手动安装软件几个方法

    1,找到一个有网的服务器,使用yumdownloader gcc,获取需要的rmp包: 2,在http://pkgs.org 下下载所需要的rpm包

  7. 在ubuntu下设置eclipse开发STM32等嵌入式设备

    之前为了能够让ROS与底层能够顺利通讯,我采用可开源开发板arduino ,因为arduino有ROS的库,能够按照ROS wiki上所给的教程就可以顺利的开发,但由于arduino的局限性,我觉得是 ...

  8. js作用域详解

    // 作用域:(1)域:空间.范围.区域……     (2) 作用:读.写 script 全局变量.全局函数 自上而下 函数 由里到外 浏览器: “JS解析器” 1)“找一些东西” :var func ...

  9. php学习笔记——基础知识(1)

    1.PHP 脚本在服务器上执行,然后向浏览器发送回纯 HTML 结果. 2.基础 PHP 语法 1)PHP 脚本可放置于文档中的任何位置. 2)PHP 脚本以 <?php 开头,以 ?> ...

  10. redis cluster中添加删除重分配节点例子

    redis cluster配置好,并运行一段时间后,我们想添加节点,或者删除节点,该怎么办呢. 一,redis cluster命令行     //集群(cluster)  CLUSTER INFO 打 ...