一.写在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. 使用pager进行分页

    pager jar网址:http://java2s.com/Code/Jar/t/Downloadtaglibspagejar.htm package com.binary.entity; impor ...

  2. 云服务器下ASP.NET Core 1.0环境搭建(包含mono与coreclr)

    最近.net core如火如荼,国内这方面环境搭建方面的文档也非常多,但是不少已经是过时的,就算按照那个流程走下去也避免不了一些地方早就不一样了.所以下面我将从头到尾的教大家搭建一次环境,并且成功运行 ...

  3. Angularjs学习---ubuntu12.04中karma安装配置

    Angularjs学习---ubuntu12.04中karma安装配置中常见的问题总结   karma启动时出现了很多问题: 1.安装karma前提条件 安装karma首先要安装nodejs,npm然 ...

  4. [置顶] Ants(Northeastern Europe 2007)

                                                                                      Ants Time Limit: 5 ...

  5. WCF从零学习之设计和实现服务协定2

    WCF从零学习之设计和实现服务协定(二)   在创建服务协定之前,有很多WCF术语,比如: 消息.服务.终结点 创建协定 类或接口都可以定义服务协定,建议使用接口,因为接口可以直接对服务协定建模 服务 ...

  6. Python 用IMAP接收邮件

    一.简介IMAP(Internet Message Access Protocol),这个协议与POP一样,也是从邮件服务器上下载邮件到本机,不过IMAP比POP的功能要更加强大些,IMAP除支持PO ...

  7. 马赛克算法及iOS代码实现

    之前做了一下相关涂鸦的东西,发现图片处理挺好玩的,就先讲讲马赛克的实现吧. 放大马赛克图片可以看到,可以看到一个个单色的小正方形.所以马赛克其实也就是把某一点的色值填充了它一定范围内的一个正方形,这样 ...

  8. Git - error: RPC failed; result=22, HTTP code = 401 fatal: The remote end hung up unexpectedly

    在用Git管理代码版本时,用git push命令提交代码,提示: 有以下几个可能性: Git 版本过低.GitCafe 推荐使用的 Git 版本是 >= 1.7. $ git --version ...

  9. SlidingMenu源代码导入及错误分析和解决方法

    1.首先下载actionbarsherlock和SlidingMenu源代码 由于在SlidingMenu项目中,styles.xml文件使用到了actionbarsherlock里面的主题定义,所以 ...

  10. cooking eggs

    1: what is egg? what's the shape of it in details? 2: can egg run like this http://item.taobao.com/i ...