一.写在main方法中

 import java.util.*;

 public class MyDVDMgr {
public static void main(String[] args){
Scanner input=new Scanner(System.in);
//是否退出系统,false代表退出系统
boolean flag=true;
//DVD相关信息,最多只能存储6个DVD信息
String[] name=new String[6]; //DVD名称
int[] state=new int[6]; //借阅状态,0:可借阅 ;1:已借出
int[] date=new int[6]; //借出日期
int[] count=new int[6]; //借出次数 /*
* 初始化三个DVD
* */
name[0]="罗马假日";
state[0]=1;
date[0]=1;
count[0]=15; name[1]="风声鹤唳";
state[1]=0;
count[1]=12; name[2]="浪漫满屋";
state[2]=0;
count[2]=30; int num=-1;
//循环操作
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.println("请选择:");
int choose=input.nextInt();
switch(choose){
case 1:
//新增DVD
System.out.println("-->新增DVD\n");
System.out.println("请输入DVD名称:");
String dvdName=input.next();
boolean flag2=false;
for(int i=0;i<name.length;i++){
if(name[i]==null){
name[i]=dvdName;
System.out.println("新增《"+dvdName+"》成功!");
flag2=true;
break;
}
}
if(!flag2){
System.out.println("抱歉,新增《"+dvdName+"》失败!货架已满!");
}
System.out.println("*****************************************");
break;
case 2:
//查看DVD
System.out.println("-->查看DVD\n");
System.out.println("序号\t状态\t名称\t借出日期\t借出次数");
for(int i=0;i<name.length;i++){
if(name[i]!=null){
String dvdState=(state[i]==0)?"可借阅":"已借出";
String dateStr=(date[i]==0)?"":(date[i]+"日");
System.out.println((i+1)+"\t"+dvdState+"\t"
+name[i]+"\t"+dateStr+"\t"+count[i]+"次");
}
}
System.out.println("*****************************************");
break;
case 3:
//删除DVD
System.out.println("-->删除DVD\n");
System.out.println("请输入要删除DVD的名称:");
String delete=input.next();
boolean flag3=false;
int index=-1; //记录要删除DVD的位置
for(int i=0;i<name.length;i++){
if(name[i]!=null && delete.equals(name[i]) && state[i]==0){
flag3=true;
index=i;
System.out.println("DVD删除成功!");
break;
}else if(name[i]!=null && delete.equals(name[i]) && state[i]==1){
flag3=true;
System.out.println("该DVD已被借出,目前无法删除!");
break;
}
}
//根据记录下来的删除DVD的位置进行删除工作
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];
date[j]=date[j+1];
}
name[name.length-1]=null; }
}
if(!flag3){
System.out.println("没有找到匹配信息!");
}
System.out.println("*****************************************");
break;
case 4:
//借出DVD
System.out.println("-->借出DVD\n");
System.out.print("请输入DVD名称:");
String want=input.next(); //要借出的DVD名称
for(int i=0;i<name.length;i++){
if(name[i]==null){ //无匹配
System.out.println("没有找到匹配信息!");
break;
}else if(want.equals(name[i]) && state[i]==0){ //找到匹配可借
state[i]=1; //将此DVD置于借出状态
System.out.print("请输入借出日期:");
date[i]=input.nextInt();
while(date[i]<1 || date[i]>31){ //当输入借出的日期不满足1-31时
System.out.println("必须输入大于等于1且小于等于31的数字,请重新输入:");
date[i]=input.nextInt();
}
System.out.println("借出《"+want+"》成功!");
count[i]++;
break;
}else if(want.equals(name[i]) && state[i]==1){ //找到匹配已被借出
System.out.println("《"+want+"》已被借出!");
break;
}
}
System.out.println("*****************************************");
break;
case 5:
//归还DVD
System.out.println("-->归还DVD\n");
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("没有找到匹配信息!");
break;
}else if(want.equals(name[i]) && state[i]==1){//找到匹配
state[i]=0; //将借阅状态修改为可借阅
System.out.print("请输入归还日期:");
int redate=input.nextInt();
while(redate<date[i] || redate>31){ //归还日期不能小于借出日期,也不能大于31
if(redate<date[i]){
System.out.println("归还日期不能小于借出日期,请重新输入:");
}else{
System.out.println("一个月只有31天,请重新输入:");
}
redate=input.nextInt();
}
charge=redate-date[i]; System.out.println("\n归还《"+want+"》成功!");
System.out.println("借出日期为:"+date[i]+"日");
System.out.println("归还日期为:"+redate+"日");
System.out.println("应付租金(元):"+charge);
date[i]=0;
break;
}else if(want.equals(name[i]) && state[i]==0){//找到匹配但没有借出
System.out.println("该DVD没有被借出!无法进行归还操作。");
break;
}
}
System.out.println("*****************************************");
break;
case 6:
//退出DVD
flag=false;
break;
default:
flag=false;
break;
}
if(flag){
System.out.println("输入0返回:");
num=input.nextInt();
}else{
break;
}
}while(num==0);
System.out.println("谢谢使用!");
}
}

MyDVDMgr.java

二.抽分方法写在不同类

1.初始化使用数组类DVDSet.java

 package com.jb.minidvd;

 public class DVDSet {
String[] name = new String[50]; //数组1存储DVD名称数组
int[] state = new int[50]; //数组2存储DVD借出状态:0已借出/1可借
String[] date=new String[50]; //数组3存储DVD借出日期
int[] count=new int[50]; //借出次数 }

DVDSet.java

2.DVD业务类DVDMgr.java

 package com.jb.minidvd;

 import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class DVDMgr {
/**
* 创建DVD对象
*/
DVDSet dvd = new DVDSet();
/**
* 初始三个DVD
*/
public void initial() { dvd.name[0] = "罗马假日";
dvd.state[0] = 0;
dvd.date[0]="2013-7-1";
dvd.count[0]=15; dvd.name[1] = "风声鹤唳";
dvd.state[1] = 1;
dvd.count[1]=12; dvd.name[2] = "浪漫满屋";
dvd.state[2] = 1;
dvd.count[2]=30;
}
/**
* 开始菜单
*/
public void startMenu(){
System.out.println("欢 迎 使 用 迷 你 DVD 管 理 器");
System.out.println("-------------------------------------");
System.out.println("0. 借出排行榜");
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.print("--------------------------------------\n"); System.out.print("请选择: ");
Scanner input = new Scanner(System.in);
int choice = input.nextInt();
switch(choice){
case 0:
list();
break;
case 1:
add();
break;
case 2:
search();
break;
case 3:
delete();
break;
case 4:
lend();
break;
case 5:
returnDvd();
break;
case 6:
System.out.println("\n谢谢 使 用!");
break;
}
}
/**
* 返回主菜单
*/
public void returnMain(){
Scanner input = new Scanner(System.in);
System.out.print("输入0返回:");
if(input.nextInt() == 0){
startMenu();
}else{
System.out.println("输入错误, 异常终止!");
}
}
/**
* 查看DVD
*/
public void search(){
System.out.println("---> 查看DVD\n");
System.out.println("序号\t状 态\t名称\t\t借出日期");
for(int i = 0 ; i < dvd.name.length; i++){
if(dvd.name[i]==null){
break;
}else if(dvd.state[i] == 0){
System.out.println((i+1)+"\t已借出\t"+"<<"+ dvd.name[i]+ ">>\t" + dvd.date[i]);
}else if(dvd.state[i] == 1){
System.out.println((i+1)+"\t可 借\t"+"<<"+dvd.name[i]+">>");
}
}
System.out.println("**************************");
returnMain();
}
/**
* 新增DVD
*/
public void add(){
Scanner input = new Scanner(System.in);
System.out.println("---> 新增DVD\n");
System.out.print("请输入DVD名称: ");
String name = input.next();
for(int i = 0; i < dvd.name.length; i++){
if(dvd.name[i] == null){ //查询最后一个空位置插入
dvd.name[i]=name;
dvd.state[i]=1;//置新增的DVD可借状态
System.out.println("新增《"+name+"》成功!");
break;
}
}
System.out.println("**************************");
returnMain();
}
/**
* 删除DVD
*/
public void delete(){
Scanner input = new Scanner(System.in);
boolean flag=false;//标识删除成功与否
System.out.println("---> 删除DVD\n");
System.out.print("请输入DVD名称: ");
String name = input.next();
//遍历数组,查找匹配信息
for(int i = 0 ; i < dvd.name.length; i++){
//查找到,每个元素前移一位
if(dvd.name[i]!=null &&dvd.name[i].equalsIgnoreCase(name)&&dvd.state[i]==1){
int j=i;
while(dvd.name[j+1]!=null){
dvd.name[j]=dvd.name[j+1];
dvd.state[j]=dvd.state[j+1];
dvd.date[j]=dvd.date[j+1];
j++;
}
//最后一个不为空的元素置空
dvd.name[j]=null;
dvd.date[j]=null;
System.out.println("删除《"+name+"》成功!");
flag=true;//置位,表示删除成功
break;
}else if(dvd.name[i]!=null &&dvd.name[i].equalsIgnoreCase(name)&&dvd.state[i]==0){
System.out.println("《"+name+"》为借出状态,不能删除!");
flag=true;//置位
break;
}
}
if(!flag){
System.out.println("没有找到匹配信息!");
}
System.out.println("**************************");
returnMain();
}
/**
* 借出DVD
*/
public void lend(){
System.out.println("---> 借出DVD\n"); Scanner input = new Scanner(System.in);
System.out.print("请输入DVD名称: ");
String want = input.next(); //要借出的DVD名称
for(int i = 0; i < dvd.name.length; i++){
if(dvd.name[i] == null){ //无匹配
System.out.println("没有找到匹配信息!");
break;
}else if(dvd.name[i].equals(want)&& dvd.state[i]==1){ //找到匹配可借
dvd.state[i] = 0;
System.out.print("请输入借出日期(年-月-日):");
dvd.date[i]=input.next();
System.out.println("借出《"+want+"》成功!");
dvd.count[i]++;
break;
}else if(dvd.name[i].equals(want)&& dvd.state[i]==0){ //找到匹配已被借出
System.out.println("《"+want+"》已被借出!");
break;
}
}
System.out.println("**************************");
returnMain();
}
/**
* 归还DVD并计算租金
*/
public void returnDvd(){
System.out.println("---> 归还DVD\n"); Scanner input = new Scanner(System.in);
long loan=0;//租金
System.out.print("请输入DVD名称: ");
String want = input.next();
for(int i = 0; i < dvd.name.length; i++){
if(dvd.name[i] == null){ //无匹配
System.out.println("没有找到匹配信息!");
break;
}else if(dvd.name[i].equals(want) && dvd.state[i]==0){ //找到匹配
dvd.state[i] = 1;
System.out.print("请输入归还日期(年-月-日):");
String redate=input.next();
//计算租金
loan=charge(dvd.date[i],redate);
System.out.println("\n归还《"+want+"》成功!");
System.out.println("借出日期为:"+dvd.date[i]);
System.out.println("归还日期为:"+redate);
System.out.println("应付租金(元):"+loan);
break;
} else if(dvd.name[i].equals(want) && dvd.state[i]==1){ //找到匹配但没有借出
System.out.println("该DVD没有被借出!无法进行归还操作。");
break;
}
}
System.out.println("**************************");
returnMain();
}
/**
* 计算日期差
* @param dstr1 第一个日期
* @param dstr2 第二个日期
*
*/
public long charge(String dstr1,String dstr2){
long charge=0;
SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");
try {
Date d1=sd.parse(dstr1);
Date d2=sd.parse(dstr2);
charge=(d2.getTime()-d1.getTime())/(24*60*60*1000);
} catch (ParseException e) {
e.printStackTrace();
}
return charge;
}
/**
* 借出排行榜
*/
public void list(){
//定义新数组,用来存放排序后DVD信息
String[] newname = new String[50]; //
int[] newcount=new int[50];
for(int k=0;k<dvd.name .length;k++){
newname[k]=dvd.name[k];
newcount[k]=dvd.count[k];
} //利用冒泡排序算法进行排序
for(int i=0;i<newname.length;i++){
for(int j=i+1;j<newname.length;j++){
if(newcount[i]>newcount[j]){
int tempc=newcount[i];
newcount[i]=newcount[j];
newcount[j]=tempc;
String tempn=newname[i];
newname[i]=newname[j];
newname[j]=tempn;
}
}
}
System.out.println("---> 排行榜\n");
System.out.println("**************************");
System.out.println("次数\t名称");
//显示排行榜信息
for(int i=newname.length-1;i>=0;i--){
if(newname[i]!=null){
System.out.println(newcount[i]+"\t<<"+ newname[i]+ ">>" );
}
}
System.out.println("**************************");
returnMain();
}
}

DVDMgr.java

3.功能测试类Start.java

 package com.jb.minidvd;

 public class Start {

     /**
* @param args
*/
public static void main(String[] args) {
DVDMgr dm=new DVDMgr();
dm.initial();
dm.startMenu(); } }

Start.java

三、运行效果图

java基础<迷你DVD系统>的更多相关文章

  1. Java基础知识——windows系统下安装JDK

    (作者声明:文章引用了其他作者的文章,但因为笔记内容时间过久,已经忘记从哪里摘录下来的了.若无意间侵犯到原作者您的权利,对不起!您可以联系我,我这边会马上进行修改,谢谢!) 1.首先我们需要下载jav ...

  2. 迷你DVD管理器(Java版)

    import java.text.SimpleDateFormat;import java.util.Date;import java.util.Scanner;class Test {    pub ...

  3. JAVA基础代码分享--DVD管理

    问题描述 为某音像店开发一个迷你DVD管理器,最多可存6张DVD,实现碟片的管理. 管理器具备的功能主要有: 1.查看DVD信息. 菜单选择查看功能,展示DVD的信息. 2.新增DVD信息 选择新增功 ...

  4. java 迷你DVD管理器

    1.DvdSet类 package dvd_01; /** * 定义dvd的一些属性 * @author Administrator * */ public class DvdSet { String ...

  5. 微冷的雨Java基础学习手记(一)

    使用Java理解程序逻辑 之凌波微步 船舶停靠在港湾是很安全的,但这不是造船的目的 北大青鸟五道口原玉明老师出品 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识点时,要 ...

  6. 5、判断、循环、数组综合练习案例(迷你DVD)

    迷你dvd代码如下: package com.manager; import java.util.Scanner; public class DVDManage { public static voi ...

  7. Java基础知识总结(超级经典)

    Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...

  8. 毕向东—Java基础知识总结(超级经典)

    Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...

  9. 黑马毕向东Java基础知识总结

    Java基础知识总结(超级经典) 转自:百度文库 黑马毕向东JAVA基础总结笔记    侵删! 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部 ...

随机推荐

  1. Windows 下让 Python 多个版本共存(支持 pip)

    转载自 http://blog.kgzx.net/index.php/archives/40/ 因为类库兼容性的关系,写实际项目时都是用 Python 2,但自己试验性的写点小东西还是喜欢用 Pyth ...

  2. NET系列文章

    NET系列文章 由于博主今后一段时间可能会很忙(准备出书:<.NET框架设计—模式.配置.工具>,外加换了新工作),所以博客会很少更新: 在最近一年左右时间里,博主各种.NET技术类型的文 ...

  3. C#通过模板导出Word(文字,表格,图片)

    C#通过模板导出Word(文字,表格,图片)   C#导出Word,Excel的方法有很多,这次因为公司的业务需求,需要导出内容丰富(文字,表格,图片)的报告,以前的方法不好使,所以寻找新的导出方法, ...

  4. Quartz.net 定时计划使用

    新建解决方案和工程Quartz.net 使用Power Shell 命令 Install-Package Quartz 导入Quartz.net程序集 新建一个计划TestJob using Syst ...

  5. 运动检测(前景检测)之(二)混合高斯模型GMM

    运动检测(前景检测)之(二)混合高斯模型GMM zouxy09@qq.com http://blog.csdn.net/zouxy09 因为监控发展的需求,目前前景检测的研究还是很多的,也出现了很多新 ...

  6. iOS使用自定义字体的方法(内置和任意下载ttf\otf\ttc字体文件)

    最近做了个有关阅读的应用,使用了自定义字体,学习了一下这方面的知识. 1.首先是最简单也普遍的做法,打包内置字符库文件: 把字体库文件添加到工程,如font1.ttf添加到工程,然后在工程plist添 ...

  7. 迟到的 WPF 学习 —— 控件

    这一章书中内容比较多而杂,但每个对象的内容又相对简短,所以只挑选里边有代表性的内容做记录. 1. Label 控件:一个基础的简单的 ContentControl,Labe 支持快捷键文本的设置,可以 ...

  8. asp.net内部原理3

    asp.net内部原理(三) 第三个版本 (最详细的版本) 前言: 今天继续吧这个系列补齐,这几天公司的项目比较忙,回到家已经非常的累了,所以也没顾得上天天来这里分享一些东西和大家一起探讨,但是今天晚 ...

  9. Oracle修改字段类型和长度

    Oracle修改字段名 alter table 表名 rename column 旧字段名 to 新字段名 Oracle修改字段类型和长度 alter table 表名 modify 字段名 数据类型 ...

  10. WordPress 4.3.1正式发布 修复了3个安全问题

    WordPress 4.3.1正式发布  修复了3个安全问题! 出于安全性考虑,建议大家进行升级! WordPress 4.3.1 安全维护版本已经发布,该版本是针对之前所有版本的安全更新,强烈建议大 ...