public  class DvdSet {
String name [] =new String[15]; // DVD电影名称
String date [] =new String[15]; //DVD电影借出时间
int num [] =new int[15]; //DVD的借出次数
int state[] =new int[15]; //DVD的借出状态 0.没有借出 1.借出去了
}
import java.text.*;
import java.util.*;
import java.util.Scanner; public class DvdMgr { DvdSet dvdSet = new DvdSet(); //把初始影片的信息传给数组保存
public void initial() {
//第一个影片
dvdSet.name[0] = "羞羞的铁拳";
dvdSet.state[0] = 1;
dvdSet.num[0] = 82;
dvdSet.date[0] = "2017-10-1";
//第二个影片
dvdSet.name[1] = "大鱼海棠";
dvdSet.state[1] = 1;
dvdSet.num[1] = 189;
dvdSet.date[1] = "2017-10-7"; //第三个影片
dvdSet.name[2] = "缝纫机乐队";
dvdSet.state[2] = 0;
dvdSet.date[2] = "暂无";
} public void show() {
System.out.println("***********************************");
System.out.println("****** 欢迎使用益达DVD管理器 ******");
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.退出 ******");
System.out.println("**********************************"); System.out.println("请输入你需要选择的编号:(1~6)");
Scanner input = new Scanner(System.in);
switch (input.nextInt()) {
case 1:
AddMovies();
backshwo();
break;
case 2:
looklist();
backshwo();
break;
case 3:
remove();
backshwo();
break;
case 4:
lend();
backshwo();
break;
case 5:
backDVD();
backshwo();
break;
case 6:
System.out.println("感谢使用,我们下次再见!");
break;
default:
System.out.println("输入有误,本系统都吓奔溃了~");
}
} //返回主菜单 public void backshwo() {
System.out.println("请输入0返回主菜单");
Scanner input = new Scanner(System.in);
if (input.nextInt() == 0) {
show();
} else {
System.out.println("非常抱歉大爷,你输入有误,请重新输入!");
backshwo();
} } //新增加DVD影片----case 1:
public void AddMovies() {
System.out.println("**** 欢迎进入增加影片系统!****");
System.out.println("请输入你的要增加的影片名称:(拒绝添加黄堵毒等不良内容!)");
Scanner input = new Scanner(System.in);
String name = input.next(); //输入要增加的电影名称
for (int i = 0; i < dvdSet.name.length; i++) {
if (dvdSet.name[i] == null) { //if 如果数字的i位置为空,
dvdSet.name[i] = name; //那么把输入的name赋值给数组i位置
dvdSet.state[i] = 0; //所以i位置的借出状态为 未借出 也就是0;
dvdSet.date[i]="暂无"; //所以i位置的借出日期为暂无
break; //这里加上break结束循环 否贼会把所有数组中空位置都赋值上
}
}
System.out.println("添加" + name + "影片成功!恭喜你没有搞事情!");
} //查看影片功能-----case 2:
public void looklist() {
System.out.println("********************************* 影片列表 ********************************");
System.out.println("*\t序号\t\t状态\t\t\t名称\t\t\t借出日期\t\t借出次数 *");
for (int i = 0; i < dvdSet.name.length; i++) {
if (dvdSet.name[i] == null) { //如果数组i位置没有影片,那么我们不输出他
break;
} else if (dvdSet.state[i] == 0) { //如果该位置有影片,但是借出状态为0,输出可借出
System.out.println("*\t" + (i + 1) + "\t\t\t可借出\t" + "\t\t" + dvdSet.name[i] + "\t\t" + dvdSet.date[i] + "\t\t\t" + dvdSet.num[i] + "次\t\t *");
} else if (dvdSet.state[i] == 1) { //如果该位置有影片,但是借出状态为1,输出已经借出
System.out.println("*\t" + (i + 1) + "\t\t\t已经借出" + "\t\t" + dvdSet.name[i] + "\t\t" + dvdSet.date[i] + "\t\t" + dvdSet.num[i] + "次\t *");
}
}
System.out.println("***************************************************************************");
} //删除影片功能----case 3:
public void remove() {
System.out.println("******欢迎进入删除页面*****");
looklist();
System.out.println("请输入您要删除的DVD名称:");
Scanner input = new Scanner(System.in);
String name = input.next(); //没有借出就可以删除
//1.判断需要删除的电影位置后面是否为空,如果为空就把删除的电影每个属性赋值为空
//因为显示列表设定如果电影名称为null空的话就不会显示他,所以我们简单点把name赋值为空即可
//如果后面的位置不为null,那么我们需要把后面的全部数据向前覆盖,即可完成删除操作。 for (int i = 0; i < dvdSet.name.length; i++) {
//查找是否存在
if (dvdSet.name[i] != null) { if (dvdSet.name[i].equalsIgnoreCase(name)) { //已经找到 //是否已经被借出
if (dvdSet.state[i] == 1) { // 借出
System.out.println("《" + name + "》已经被借出");
break;
} else if (dvdSet.state[i] == 0) { //没有借出需要删除
//思路 : 1.用后面一个替换前面的。
//2.把最后面多余的地方赋值为null. for (int j = i; j < dvdSet.name.length; j++) { //做交换
if (dvdSet.name[j + 1] != null) {
dvdSet.name[j] = dvdSet.name[j + 1];
dvdSet.state[j] = dvdSet.state[j + 1]; } else {
//清空最后一个值
dvdSet.name[j] = null;
dvdSet.date[j] = null;
break;
} } System.out.println("删除《" + name + "》成功");
break;
}
} } else { System.out.println("没有您要删除的dvd");
System.out.println("***********************************************");
break;
}
} } //借出DVD----case 4: public void lend() {
System.out.println("欢迎来到借影片系统!"); //显示影片列表
looklist(); //输入要借的影片名
System.out.println("请输入要借的影片名:");
Scanner input = new Scanner(System.in);
String name = input.next();
for (int i = 0; i < dvdSet.name.length; i++) {
//只对比数值不为空的数组里的数据
if (dvdSet.name[i] != null) {
//检查影片是否存在并且检查有没有被借出,没有就可以借。
if (dvdSet.name[i].equals(name) && dvdSet.state[i] == 0) {
//找到匹配电影名并且状态为未借出,所以开始输入借书时间,并传给数组
System.out.println("请输入借DVD的时间(年-月-日):");
//把借影片时间传给数组对应位置
Scanner Datainput = new Scanner(System.in);
dvdSet.date[i] = Datainput.next();
//把对应的借影片状态改为已经借出
dvdSet.state[i] = 1;
//借出次数加1
dvdSet.num[i]++;
break;
//检查影片是否存在并且检查有没有被借出,已经借出,则输出已经借出。
} else if (dvdSet.name[i].equals(name) && dvdSet.state[i] == 1) {
//找到匹配电影名并且状态为已经借出,所以输出已经借出
System.out.println("非常抱歉,影片已经被借出!");
break;
}
} else {
//如果上面两个条件都不满足,则说明没有找到匹配的影片,输出没有此影片
System.out.println("抱歉没有找到你要借的影片");
break;
}
}
} //归还DVD-----case 5: public void backDVD() {
//显示影片列表,可以知道影片的借出状态
looklist(); System.out.println("请输入你要归还的影片名称:");
Scanner input = new Scanner(System.in);
String name = input.next();
for (int i = 0; i < dvdSet.name.length; i++) {
//对比名称数组里不为空的值
if (dvdSet.name[i] != null) {
//如果我们输入的name电影名称和数组里面有相匹配的并且状态为没有借出,那么输出这部电影还在我们影院
if (dvdSet.name[i].equals(name) && dvdSet.state[i] == 0) {
System.out.println("这部影片还在我们影院啊!您拿来的是盗版吗?");
break;
//如果我们输入的name电影名称和数组里面有相匹配的并且状态为已经借出,那么输出我们归还影片成功
} else if (dvdSet.name[i].equals(name) && dvdSet.state[i] == 1) { //添加获取时间差时间差--(若要删除此功能,注释或删除以下三行代码,并注释或删除整个获取时间差的方法)
System.out.println("请输入归还书籍的时间(年-月-日):");
Scanner inputDate = new Scanner(System.in);
//获取时间差,把括号里的参数传给获取时间差的方法里,得到charge时间差,时间差的方法写在了结尾
long charge = charge(dvdSet.date[i], inputDate.next()); //修改这部影片的状态为---可借出
dvdSet.state[i] = 0;
//修改这部影片的借出日期为----暂无
dvdSet.date[i] = "暂无";
//这部影片的借出次数加1
dvdSet.num[i]++;
System.out.println("归还《" + name + "》影片成功!一共借该影片" + charge + "天!");
System.out.println("您借该影片价格为每天2元钱,所以您需要付费"+(charge*2)+"元!");
break;
}
} else {
//以上条件都不符合,说明列表无输出的影片,则输出-输入有误
System.out.println("输入有误,我们影院没有这种三观不正的影片!");
break;
}
}
} //获取时间差的方法----附加
public long charge(String date1, String date2) { //做时间差
//将String转为Date做计算
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
//初始化时间差为0
long charge = 0;
try {
//借出影片的时间
Date lendData = simpleDateFormat.parse(date1);
//归还影片的时间
Date backData = simpleDateFormat.parse(date2);
//时间以毫秒为单位,所以乘以1000
charge = (backData.getTime() - lendData.getTime()) / (1000 * 24 * 60 * 60);
} catch (ParseException e) {
System.out.println(e);
} return charge;
}
public class TestDVD {
public static void main(String[] args) {
DvdMgr dvdMgr = new DvdMgr();
//把原本有的三个电影运行传递给数组
dvdMgr.initial(); //开始运行菜单
dvdMgr.show();
}
}

java简易DVD影片管理系统—面向对象的更多相关文章

  1. java 7K交通灯管理系统面试题

    交通灯管理系统 模拟实现十字路口的交通灯管理系统逻辑.详细需求例如以下: 1. 异常随机生成依照各个路线行驶的车辆.    比如:    由南向而来去往北向的车辆----直行车辆    由西向而来去往 ...

  2. java一个简单的管理系统

    用java实现的简单管理系统 运行出来的状态 实现了新增.删除.借出.归还.排行榜简单的功能! 下面是简单的代码 首先定义一个书籍类,自己打开哦! public class Book implemen ...

  3. java简易编辑器

    package peng_jun; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swi ...

  4. java web 项目 图书管理系统的设计与实现

     java web 项目 图书管理系统的设计与实现

  5. C++ 文件操作(简易的学籍管理系统)

    这是一个简易的学籍管理系统,大一时居然三个人写了一千多行......年少无知啊!欢迎摘果实! 1 #include <iostream> #include <fstream> ...

  6. 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验二 面向对象程序设计 实验报告

    20175316 盛茂淞 2018-2019-2 <Java程序设计>实验二 面向对象程序设计 实验报告 (一)单元测试 在 IDEA中我们把产品代码放在src目录中,把测试代码放在tes ...

  7. 第83节:Java中的学生管理系统分页功能

    第83节:Java中的学生管理系统分页功能 分页功能一般可以做成两种,一种是物理分页,另一种是逻辑分页.这两种功能是有各自的特点的,物理分页是查询的时候,对数据库进行访问,只是查一页数据就进行返回,其 ...

  8. 第82节:Java中的学生管理系统

    第82节:Java中的学生管理系统 学生管理系统的删除功能 删除,点击超链接,点击弹出对话框式是否进行删除,如果确定,就删除,超链接执行的是js方法,在js里访问,跳转servlet,,servlet ...

  9. 第四节:详细讲解Java中的类和面向对象思想

    前言 大家好,给大家带来详细讲解Java中的类和面向对象思想的概述,希望你们喜欢 类和面向对象 在Java中怎样理解对象,创建对象和引用:什么是引用,对于基础学习的同学,要深入了解引用.示例:Stri ...

随机推荐

  1. 题解 P2626 【斐波那契数列(升级版)】

    这道题,大家一定要注意: 要对2^31取模 ! ( 本蒟蒻开始没注意到这一点,WA了 ) (不过大家在试样例的时候,试试47,出不了结果,就说明你没模2^31) 总体来说,这道题考查的知识点就两个: ...

  2. Activiti学习记录(五)

    1.排他网关 说明: 1) 一个排他网关对应一个以上的顺序流 2) 由排他网关流出的顺序流都有个conditionExpression元素,在内部维护返回boolean类型的决策结果. 3) 决策网关 ...

  3. jQuery Pagination分页插件--刷新

    源码地址:https://github.com/SeaLee02/FunctionModule/blob/master/UploadFiles/WebDemo/FenYE/FenYeDemo.aspx ...

  4. css与html结合四种方式

    方式一:每个标签加一个属性法 <div style="background-color:red;color:green;"></div> 方式二:head中 ...

  5. react属性校验

    https://reactjs.org/docs/typechecking-with-proptypes.html 1.安装:cnpm i prop-types -S import PropTypes ...

  6. 井字游戏 人机对战 java实现

    package com.ecnu.Main; /** * 主函数触发游戏 */public class MainApplication { public static void main(String ...

  7. Arguments Optional-freecodecamp算法题目

    Arguments Optional 1.要求 创建一个计算两个参数之和的 function.如果只有一个参数,则返回一个 function,该 function 请求一个参数然后返回求和的结果. 如 ...

  8. PHP 优化

    来源:歪麦博客 https://www.awaimai.com/1050.html 1 字符串 1.1 少用正则表达式 能用PHP内部字符串操作函数的情况下,尽量用他们,不要用正则表达式, 因为其效率 ...

  9. Thinkphp 支付宝插件的引入 和调用

    本文版权归本宝宝所有 未得允许不得转载 下载地址传送门 https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.twLYka&am ...

  10. 04构建之法读书笔记——IT行业的创新

    IT行业的创新: 1.创新的迷思: 灵光一闪现,伟大的创新就紧随其后:大家都喜欢创新:好的想法会赢:创新者都是一马当先:要成为领域的专家,才能创新:技术的创新是关键:成功的团队更能创新 2.创新的时机 ...