问题描述

为某音像店开发一个迷你DVD管理器,最多可存6张DVD,实现碟片的管理。

管理器具备的功能主要有:

  1、查看DVD信息。

  菜单选择查看功能,展示DVD的信息。

  2、新增DVD信息

  选择新增功能,根据提示输入新增的DVD名称,添加到库存,如果DVD货架已满,即达到6张,则提示增加失败。

  3、删除DVD信息

  执行删除命令,输入要删除的DVD的名称,如果DVD为借出状态,不允许删除。如果没有该DVD信息,则提示“没有找到匹配信息”;

  4、借出DVD

  如果该DVD已经被借出,则系统提示“XX已经被借出”。如果没有找到该DVD信息,则系统提示“没有找到匹配信息!”。而且一个月默认为31天,如果输入的借出日期为大于31的数字,则系统给出提示“必须输入大于等于 1且小于等于31的数字,请重新输入”。

  5、归还DVD

  计算租金,1天1元。如果归还的DVD未被借出,则系统提示“该DVD没有被借出,无法进行归还操作。如果归还的DVD与列表中的DVD不匹配,则系统提示“没有找到匹配信息”。,如果归还时间小于借出时间,或者是大于31的数字,则系统分别提示“归还日期不能小于借出日期,请重新输入,和一个月只有31天,请重新输入。”

  6、当用户执行退出命令时,结束本程序。

代码分享

public class ManagerDVD {
private static String [][] dvdstr = new String[6][5];
private static int n = 0;//用户输入的操作命令
private static Scanner in;//数字输入
private static Scanner input;//汉字输入
private static String name = null;//DVD名字 public static void main(String[] args) {
System.out.println("--------------------欢迎使用DVD管理系统--------------------");
System.out.println("系统的操作命令:\n1、添加DVD\n2、删除DVD\n3、查看DVD\n4、借出DVD\n5、归还DVD\n0、注销退出");
in = new Scanner(System.in);
for(int i=0; i<6; i++){
dvdstr[i][0] = ""+(i+1);
dvdstr[i][4] = "0";
}
do {
System.out.print("请输入操作命令:");
n = in.nextInt();
if(n!=0){
setManager(n);
}
} while (n!=0);
} private static void setManager(int n) {
switch (n) {
case 1:
System.out.println("添加DVD");
if(dvdstr[5][2]!=null){
System.out.println("DVD库存已满,无法添加");
break;
}
System.out.print("请输入DVD名字:");
input = new Scanner(System.in);
name = input.nextLine();
boolean boo = true;
for(int i=0; i<6; i++){
if(dvdstr[i][2]!=null&&name.equals(dvdstr[i][2])){
boo = false;
break;
}
}
if(boo){
for(int i=0; i<6; i++){
if(dvdstr[i][2]==null){
dvdstr[i][1] = "未借出";
dvdstr[i][2] = name;
System.out.println("添加操作完成");
break;
}
}
}else{
System.out.println("该DVD已存在");
}
break;
case 2:
System.out.println("删除DVD");
if(dvdstr[0][2]==null){
System.out.println("库存还没有DVD,无法进行删除操作");
break;
}
System.out.print("请输入DVD名字:");
input = new Scanner(System.in);
name = input.nextLine();
boolean bo = false;
for(int i=0; i<6; i++){
if(dvdstr[i][2]!=null&&name.equals(dvdstr[i][2])){
for(int j=i; j<5; j++){
dvdstr[j][1] = dvdstr[j+1][1];
dvdstr[j][2] = dvdstr[j+1][2];
dvdstr[j][3] = dvdstr[j+1][3];
dvdstr[j][4] = dvdstr[j+1][4];
}
dvdstr[5][1] = null;
dvdstr[5][2] = null;
dvdstr[5][3] = null;
dvdstr[5][4] = null;
bo = true;
break;
}
}
if(bo){
System.out.println("删除操作成功");
}else{
System.out.println("未找到该商品");
}
break;
case 3:
System.out.println("查看DVD");
System.out.println("序号\t状态\t名称\t\t借出日期\t借出次数");
for(int i=0; i<6; i++){
if(dvdstr[i][2]==null){
break;
}
System.out.println(dvdstr[i][0]+"\t"+dvdstr[i][1]+"\t"+dvdstr[i][2]+"\t\t"+dvdstr[i][3]+"\t"+dvdstr[i][4]);
}
break;
case 4:
System.out.println("借出DVD");
if(dvdstr[0][2]==null){
System.out.println("库存还没有DVD,无法进行借出操作");
break;
}
System.out.print("请输入DVD的名字:");
name = input.nextLine();
boolean b = false;
for(int i=0; i<6; i++){
if(dvdstr[i][2]!=null&&name.equals(dvdstr[i][2])){
if("未借出".equals(dvdstr[i][1])) {
System.out.print("请输入借出日期:");
int date = 0;
do {
date = in.nextInt();
} while (date>31&&date<=0);
dvdstr[i][1] = "已借出";
dvdstr[i][3] = ""+date;
dvdstr[i][4] = ""+(Integer.parseInt(dvdstr[i][4])+1);
System.out.println("借出操作完成");
}else{
System.out.println("该DVD已被借出");
}
b = true;
break;
}
}
if(!b){
System.out.println("该DVD不存在");
}
break;
case 5:
System.out.println("归还DVD");
if(dvdstr[0][2]==null){
System.out.println("库存还没有DVD,无法进行归还操作");
break;
}
System.out.print("请输入DVD的名字:");
name = input.nextLine();
boolean flag = false;
for(int i=0; i<6; i++){
if(dvdstr[i][2]!=null&&name.equals(dvdstr[i][2])){
if("已借出".equals(dvdstr[i][1])) {
System.out.print("请输入归还日期:");
int date = 0;
int lend = Integer.parseInt(dvdstr[i][3]);
do {
date = in.nextInt();
} while (date>31&&date<=0&&date>=lend);
dvdstr[i][1] = "未借出";
dvdstr[i][3] = null;
System.out.println("归还操作完成");
System.out.println("借出日期:"+lend);
System.out.println("归还日期:"+date);
System.out.println("您一共需要支付租金:"+((date-lend)*5)+"元");
}else{
System.out.println("该DVD已被借出");
}
flag = true;
break;
}
}
if(!flag){
System.out.println("该DVD不存在");
}
break; default:
System.out.println("您输入的命令不合法!");
break;
}
} }

JAVA基础代码分享--DVD管理的更多相关文章

  1. JAVA基础代码分享--学生成绩管理

    问题描述: 从键盘读入学生成绩,找出最高分,并输出学生成绩等级. 成绩>=最高分-10  等级为’A’   成绩>=最高分-20  等级为’B’ 成绩>=最高分-30  等级为’C’ ...

  2. JAVA基础代码分享--求圆面积

    问题描述 用户输入圆的半径,计算并显示圆的面积 代码分享 /** * @author hpu-gs * 2015/11/25 */ public class Circle { public stati ...

  3. JAVA基础代码分享--模拟人机猜拳系统

    问题描述: 一.主要功能: .电脑与人互动,实现“剪刀.石头.布”的游戏: 1.1 角色登陆: ******************** ***欢迎进入猜拳游戏*** **************** ...

  4. 如何学习java?Java基础知识点分享

    面对未知的行业,人们的第一反应应该是:拒绝踏入.因为学习真的是一个痛苦的过程.想要真正了解一个行业,熟知一个行业,并熟练掌握某一技术,是真的需要时间和精力的.在学习Java基础知识期间,千锋小编疯狂为 ...

  5. Java基础练习4(内存管理)

    请根据如下程序代码,画出对应的内存管理图(不需要画方法区),并写出输出结果. 1. public class Cell{ int row; int col; public Cell(int row,i ...

  6. Java基础学习分享

    一.Java介绍 Java是由原Sun公司(现已被甲骨文公司收购)于1991年开发的编程语言,初衷是为智能家电的程序设计提供一个分布式代码系统.为了使整个系统与平台无关,采用了虚拟机器码方式,虚拟机内 ...

  7. nuxt项目打包上线,以及nuxt项目基础代码分享

    nuxt的项目部署到线上环境,有多种方法,这里分享我使用的方法,一步步照着配置,就可以配置成功~ (1)项目先执行npm run build 打包好   (2)服务器安装node 和pm2依赖 服务器 ...

  8. [Java基础]代码块及java反编译

    块的作用域:   块(即复合语句)是指一对花括号括起来的若干条简单的java语句.块确定了变量的作用域.一个块可以嵌套在另一个块中.但是,在嵌套的两个块中声明同名的变量时应注意,块中变量申明在块外变量 ...

  9. Java基础-String 存储机制管理

    JVM运行的时候,将内存分为两个部分,一部分是堆,一部分是栈.堆中存放的是创建对象,而栈中存放的则是方法调用过程中的局部变量或引用.在设计JAVA字符串对象内存实现的时候,在堆中又开辟了一块很小的内存 ...

随机推荐

  1. Android之获取数据库路径

    如果数据库名为:“ifoData.db”,则它的路径求法为 String pathDatabase=Mcontext.getDatabasePath("ifoData.db").g ...

  2. RN 项目导入WebStorm 组件没有依赖

    你需要在项目根目录   $ npm instal 恭喜你完成 但是依然报错 npm config set registry="registry.npmjs.org"  重新配置了一 ...

  3. Linux 环境变量 设置 etc profile

    一.Linux的变量种类 按变量的生存周期来划分,Linux变量可分为两类: 1.永久的:需要修改配置文件,变量永久生效. 2.临时的:使用export命令声明即可,变量在关闭shell时失效. 二. ...

  4. 基于node.js的压缩合并安装

    1.构建工具(grunt,gulp) 下载地址:http://gruntjs.cn/http://gruntjs.com/ (1)安装nodejs(http://www.nodejs.org/) 验证 ...

  5. pip安装MySQL-python报错

    pip install MySQL-pythonerror: command 'gcc' failed with exit status 1 yum install -y python-develpi ...

  6. 在页面使用js回车键

    网上有大量的文章关于 js回车事件的,但是只有适合自己的才是最好的. 第一种: // submit closest form $(".keydown_submit").keydow ...

  7. canvas :曲线的面积图 加渐变效果

    document.body.innerHTML = '<canvas></canvas>' var cvs = document.querySelector("can ...

  8. 编译链接 C++

    预处理之后的源文件被称为一个编译单位,也即编译器的工作对象.为了使编译能够进行,程序员必须提供各种程序其他部分的声明来孤立分析一个编译单位.所有名字空间,类,函数都应该在他们所在的编译单位中有声明,所 ...

  9. 数据库之SQL编程

    定义局部变量 declare @num int 途径一: 途径二: set 和select赋值方式的区别 唯一区别,如果从数据库表中获取数据,只能用 select ) select @name =st ...

  10. perl 切换 dnspod 域名记录

    提供域名,dnspod 账户密码(毕竟dns密码比较重要 不能谁 cat一下都可以看到 需要base64加密),原IP,切换目标IP, #!/bin/perl use warnings; use MI ...