一.写在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. 关于如何惟一地标识一台Android设备的综合性讨论

    想必大家在开发Android项目的时候,多多少少会遇到“如何惟一地标识一台Android设备”等类似的问题.不只是以前,即使是现在乃至可以预见的将来,这个问题都将一直存在. 如果大家使用搜索工具搜索的 ...

  2. 一种解决Code Map与ReSharper冲突导致Visual Studio 2013 Peek Definition失效的办法

    更正 3月6号: 经再次测试,单独使用Code Map或ReSharper,对Visual Studio的Peek Definition无影响,但是两者一起使用时,Peek Definition失效, ...

  3. Linq无聊练习系列5--OrderBy ,Groupby练习

    /**************OrderBy ,Groupby练习*******************/                       //按学生的总分数按降序排列排序         ...

  4. C#里CheckListBox的全选

    for (int i = 0; i < chkLSelect.Items.Count; i++)            {                if (chkCheck.Checked ...

  5. malloc内存分配与free内存释放的原理

    malloc内存分配与free内存释放的原理 前段时间一直想看malloc的原理,在搜了好几篇malloc源码后遂放弃,晦涩难懂. 后来室友买了本深入理解计算机系统的书,原来上面有讲malloc的原理 ...

  6. Day2:T3DP(基于排列组合思想)

    T3:DP(基于排列组合思想的状态转移) 其实之前写排列组合的题目有一种很茫然的感觉.... 应该是因为之前没有刷过所以没有什么体会 上次刷的vj1060有用到,但是写状态转移还是第一次学习吧 ccy ...

  7. TOGAF架构能力框架之架构合同、成熟度模型和架构技能框架

    TOGAF架构能力框架之架构合同.成熟度模型和架构技能框架 5. 架构合同 架构合同是在开发团体和赞助者之间关于架构的交付物.质量以及适用目标的联合协议,并且通过有效的架构治理将会促使这些协议的成功施 ...

  8. 理解的javascript自定义事件

    理解的javascript自定义事件 被我拖延了将近一个月的javascript事件模型系列终于迎来了第四篇,也是我计划中的最后一篇,说来太惭愧了,本来计划一到两个星期写完的,谁知中间遇到了很多事情, ...

  9. Atomic变量和Thread局部变量

    Atomic变量和Thread局部变量 前面我们已经讲过如何让对象具有Thread安全性,让它们能够在同一时间在两个或以上的Thread中使用.Thread的安全性在多线程设计中非常重要,因为race ...

  10. jQuery图片切换插件jquery.cycle.js

    Cycle是一个很棒的jQuery图片切换插件,提供了非常好的功能来帮助大家更简单的使用插件的幻灯功能 下载cycle插件并引入,此时,注意把引入它的代码放在引入jQuery主文件之后. <he ...