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. 有关a++,++a的基础问题

    今天跟朋友讨论java的赋值与自增问题 @Test public void test2() { int a = 5; int b = a++; System.out.println("a = ...

  2. Java第六次作业:RuPengGame setGameSize setGameTitle alert loadBgView playSound pause closeSound confirm input createText setTextPosition setTextColor setTextFontSize hideText showText CreateImage(number)

    package com.swift; import java.awt.Color; import com.rupeng.game.GameCore;//导入游戏引擎包 //实现Runnable接口 p ...

  3. 使用 RuPengGame游戏引擎包 建立游戏窗体 如鹏游戏引擎包下载地址 Thread Runnable 卖票实例

    package com.swift; import com.rupeng.game.GameCore;//导入游戏引擎包 //实现Runnable接口 public class Game_RuPeng ...

  4. iOS 反射函数: performSelector, NSInvocation, objc_msgSend

    当我们有方法名和参数列表,想要动态地给对象发送消息,可用通过反射函数机制来实现,有两种常用的做法: 一.performSelector - (id)performSelector:(SEL)aSele ...

  5. Oracle数据库学习(四)

    11.创建表 crate table tab1(f_id number not null,f_a varchar2(7) not null,f_b number(6,2) not null): 主键: ...

  6. P4747 D’s problem(d)

    时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试题 描述 题目描述 小D是一名魔法师,它最喜欢干的事就是对批判记者了. 这次记者招待会上,记者对 ...

  7. Spring Framework(框架)整体架构 变迁

    Spring Framework(框架)整体架构 2018年04月24日 11:16:41 阅读数:1444 标签: Spring框架架构 更多 个人分类: Spring框架   版权声明:本文为博主 ...

  8. position的 relative+absolute实现固定标签在窗口的某个位置

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. eclipse projectExplorer视图(以包的方式显示)与navigator视图切换(以文件夹的方式显示)及树状视图与平面视图的切换

    projectExplorer与navigator的切换 projectExplorer视图效果 想要此视图效果步骤如下: 分割------------------------------------ ...

  10. 作业hashlib题目

    '''1.编写用户认证功能,要求如下 1.1.对用户密码加盐处理 1.2.用户名与密文密码存成字典,是以json格式存到文件中的 1.3.要求密用户输入明文密码,但程序中验证的是密文'''import ...