迷你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 Git安装

    git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目 一.Git下载 官网地址:https://git-scm.com/download/win,选择相应的版本即可 二.安 ...

  2. 将mysql的data目录移走方法

    如移动到"/home/mysql/data",我的mysql是装在/usr/local/mysql下的 1. 将/usr/local/mysql/data移动到/home/mysq ...

  3. ASP.NET MVC Url中带点号出现404错误的解决方案

    由于项目需求,项目的路由设计如下 config.Routes.MapHttpRoute( name: "Get/Put Sku", routeTemplate: "api ...

  4. weak引用变量是否线程安全

    1.在ARC出现之前,Objetive-C的内存管理需要手工执行release&retain操作,这些极大增加了代码的编写难度,同时带来很多的crash.  同时大量的delegate是unr ...

  5. Unity灯光详解

    Lights will bring personality and flavor to your game. You use lights to illuminate the scenes and o ...

  6. ajax加php实现简单的投票效果

    废话少说,作为一个前端猿,首先上前端的代码. 1.上html代码: <!DOCTYPE html> <html> <head lang="en"> ...

  7. node.js---package.json文件

    描述包的文件是package.json文件. 一个这样的文件,里面的信息还是挺大的.我们可以放弃手动建立.为了练手我们有命令行来建一个这样的包; 完成name,varsion....license项的 ...

  8. supervisor启动流程

    Supervisor结构: 单点结构如图: 1. 初始化时,启动进程Supervisor,根据 Nimbus分配的任务情况触发启动/停用Worker Jvm进程! 2. 每个Worker进程启动一个 ...

  9. Python调用(运行)外部程序

    在Python中可以方便地使用os模块运行其他的脚本或者程序,这样就可以在脚本中直接使用其他脚本,或者程序提供的功能,而不必再次编写实现该功能的代码.为了更好地控制运行的进程,可以使用win32pro ...

  10. Table表格横竖线实现Css

    .tablel { border-collapse:collapse; /* 关键属性:合并表格内外边框(其实表格边框有2px,外面1px,里面还有1px哦) */ border:solid #999 ...