一.写在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. Mysql彻底卸载

    -----本文摘自:http://www.heiqu.com/show-64764-1.html 1.控制面板里的增加删除程序内进行删除 2.删除MySQL文件夹下的my.ini文件,如果备份好,可以 ...

  2. Android服务开发经验——优雅地活着

    大多数的Android应用开发都会将注意力集中在界面功能上,只有少数应用会需要一个Service,尤其是一个长期运行的Service,去进行后台联网.环境检测.媒体播放等功能.Android环境下的S ...

  3. 大规模web服务开发技术

    大规模web服务开发技术 总评        这本书是日本一个叫hatena的大型网站的CTO写的,通过hatena网站从小到大的演进来反应一个web系统从小到大过程中的各种系统和技术架构变迁,比较接 ...

  4. EasyUI搭建前端框架

    EasyUI搭建前端框架 前言: 最近在忙公司的项目,也没太多时间来更新博客,谢谢大家的关注. 好啦,有了前面的系统整体简介和用户登录界面,我们开始使用EasyUI搭建前端页面框架! EasyUI官方 ...

  5. javascript设计模式系列

    javascript设计模式系列   创建型: 1.抽象工厂模式(Abstract Factory) 2.构建者模式(Builder) 3.工厂方法模式(Factory Method) 4.原型模式( ...

  6. iOS基础 - UIButton - UIImageView

    封装思想:将相同的重复东西保存到方法里,不同的东西用参数代替.不相同的东西交给方法调用者,相同东西自己搞定. 一.UIButton和UIImageView的区别 1.显示图片 1> UIImag ...

  7. asp.net mvc部署

    GAC 目录: 在运行窗口中输入:C:\WINDOWS\assembly\GAC NET 2.0,3.0 GAC: c:\windows\assembly (32bit and 64bit?) .NE ...

  8. iOS由ImageIO.framework实现gif的系统解码

    首先先简单介绍一下gif的几个算是术语吧: frame(帧):一个gif可以简单认为是多张image组成的动画,一帧就是其中一张图片image. frameCount(帧数): 就是一个gif有多少帧 ...

  9. 用django搭建一个简易blog系统(翻译)(一)

    Django 入门 原始网址: http://www.creativebloq.com/netmag/get-started-django-7132932 代码:https://github.com/ ...

  10. 【C#】Smtp发送邮件

    class SmtpEmail { SmtpClient smtpclient; MailMessage msg; Attachment attachment; public void sendMai ...