最近在做一个我们阶段性小项目——Mini DVD管理器(一个简单的DVD管理系统,实现增加,删除,借出,归还以及计算租金等功能)。也就是北大青鸟软件开发专业《使用Java理解程序逻辑》课中最后一章的项目测试!现在我把它在我的个人博客里面贴出来,和大家共同的学习、交流和探讨!同时也希望各位朋友不吝赐教,指出我不对的地方。谢谢!
需求概述:
1、新增DVD
2、查看DVD
3、删除DVD
4、借出DVD
5、归还DVD
项目的运行结果如下图所示。

开发环境:
1、开发语言:Java
2、开发工具:Myeclipse 8.6
项目需求:
1、数据初始化
2、实现菜单切换
3、实现查看DVD信息
4、实现新增DVD信息
5、实现删除DVD信息
6、实现借出DVD的业务处理
7、实现归还DVD的业务处理
8、实现借出排行榜

下面是自己做的实例代码,贴出来跟大家交流下!欢迎指正!
1、创建项目MiniDvd,创建类DVDSet,添加三个属性:DVD名称、借出状态、借出时间。

package com.bkybk.MiniDVD;
/**
 * 使用数组对象保持DVD的信息
 * @author Kerry Pak
 * @创建时间 2012-07-20
 * @version V1.0
 * 
 */
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];			//数组4:记录借出次数
}
 

2、创建类DVDMgr,创建DVDSet对象dvd,实现初始化数据方法initial()初始三张DVD碟片信息;实现菜单切换(创建方法startMenu(),利用switch实现菜单的切换;在DVDMgr中创建returnMain(),实现返回主菜单);实现查看DVD信息(编写方法search(),遍历dvd对象数组,获取数组元素信息,并进行显示);实现新增DVD信息(编写方法add(),向dvd数组增加一条DVD信息,实现新增DVD信息);实现删除DVD信息(编写方法delete(),根据要删除的DVD名称对dvd数组进行查找并删除,删除该元素后,后面的元素向前依次前移一位;如果DVD为借出状态,则提示不允许删除!);实现借出DVD的业务处理(编写方法lend(),实现借出DVD);实现归还DVD的业务处理(编写方法returnDVD(),实现归还DVD,并计算租金,租金按每天一元计算);实现借出排行榜(扩展功能:增加菜单项“借出排行榜”,实现借阅次数从大到小的排序显示排行榜)。

package com.bkybk.MiniDVD;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Scanner;
/**
 * 在这里创建了DVDSet对象dvd,实现初始化数据的方法initial()
 * @author Kerry Pak
 * @创建时间 2012-07-20
 * @version V1.0
 *
 */
public class DVDMgr {	
	//创建DVDSet对象DVD
	DVDSet dvd = new DVDSet();
	
	Scanner yz = new Scanner(System.in);
	boolean flag = false;

	//开始初始化DVD信息
	public void initial(){
		dvd.name[0] = "罗马假日";		//DVD碟片的名称
		dvd.state[0] = 0;				//DVD碟片的租借状态:1:可借;0:已借出
		dvd.date[0] = "2012-05-13";		//DVD碟片借出时间
		dvd.count[0] = 1;				//DVD碟片的 租借次数
		dvd.name[1] = "风声鹤唳";		//DVD碟片的名称
		dvd.state[1] = 1;				//DVD碟片的租借状态:1:可借;0:已借出
		dvd.name[2] = "浪漫满屋";		//DVD碟片的名称
		dvd.state[2] = 1;				//DVD碟片的租借状态:1:可借;0:已借出
	}

	/**
	 * 实现菜单切换
	 */
	public void startMenu() {
		// TODO Auto-generated method stub
		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、借出排行榜");
		System.out.println("7、退        出");
		System.out.println("---------------------------------");
		System.out.print("请选择:");
		int cardMenu = yz.nextInt();
		switch (cardMenu) {
		case 1:
			//提示:此处实现新增DVD
			add();
			System.out.println("******************************");
			returnMain();
			break;
		case 2:
			//提示:此处实现查看DVD信息
			search();
			System.out.println("******************************");
			returnMain();
			break;
		case 3:
			//提示:此处实现删除DVD信息
			delete();
			System.out.println("******************************");
			returnMain();
			break;
		case 4:
			//提示:此处实现借出DVD的业务处理
			lend();
			System.out.println("******************************");
			returnMain();
			break;
		case 5:
			//提示:此处实现借出DVD的业务处理
			returnDVD();
			System.out.println("******************************");
			returnMain();
			break;
		case 6:
			//提示:此处实现借出排行榜
			list();
			returnMain();
			break;

		case 7:
			//提示:此处实现退出DVD管理器
			System.out.println("谢谢使用!");
			break;
		}
	}

	/**
	 * 返回主菜单
	 */
	private void returnMain() {
		// TODO Auto-generated method stub
		System.out.print("输入 0 返回主菜单:");
		if(yz.nextInt() == 0){
			startMenu();
		}else{
			System.out.print("输入错误!系统异常       终止运行");
		}
		
	}
	
	/**
	 * 查看所有的DVD碟片
	 */
	private void search(){
		System.out.println("DVD号"+"\t出借状态\t\t"+"DVD名称\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"+"\t<<"+dvd.name[i]+">>\t"+dvd.date[i]);
			}else if(dvd.state[i] == 1){
				System.out.println((i+1)+"\t可借\t"+"\t<<"+dvd.name[i]+">>\t");
			}
		}	
	}
	
	/**
	 * 增加录入新的DVD碟片信息
	 */
	public void add(){
		System.out.print("请输入DVD名称:");
		String AddDVDName = yz.next();
		for(int i = 0;i < dvd.name.length;i++){
			if(dvd.name[i] == null){
				dvd.name[i]  = AddDVDName;
				dvd.state[i] = 1;
				System.out.print("新的DVD添加成功!");
				returnMain();
			}else{
				continue;
			}
		}
	}

	/**
	 * 删除DVD碟片信息
	 */
	private void delete() {
		System.out.print("请输入你要删除的DVD名称:");
		String DelDVDName = yz.next();
		//遍历数组,查找匹配信息
		for(int i = 0 ; i >"+"成功");
				break;
			}else if(dvd.name[i] != null && dvd.name[i].equalsIgnoreCase(DelDVDName) && dvd.state[i] == 0){
				System.out.println("<<"+DelDVDName+">>为借出状态,用户没有归还之前不能删除!");
				break;
			}			
		}
	}
	
	/**
	 * 实现借出DVD的业务的处理
	 */
	public void lend(){
		System.out.print("请输入你要租借的DVD名称:");
		String LendDVDName = yz.next();
		System.out.print("请输入租借的DVD日期:");
		String LendDVDdate = yz.next();
		for(int i = 0 ; i >"+"成功!");
				break;
			}else if(dvd.name[i].equals(LendDVDName) && dvd.state[i] == 0){
				System.out.print("抱歉!"+"<<"+LendDVDName+">>"+"已被出借!");
				break;
			}
		}
	}
	/**
	 * 实现归还DVD的业务处理
	 */
	public void returnDVD(){
		System.out.print("请输入你要归还的DVD名称:");
		String returnDVDName = yz.next();
		for(int i = 0 ; i < dvd.name.length ; i++){			
			if(returnDVDName.equals(dvd.name[i]) && dvd.state[i] == 0){
				System.out.print("请输入归还DVD日期:");
				String returnDVDTime = yz.next();
				System.out.print(returnDVDName+"归还成功!");
				System.out.print("归还<<"+ dvd.name[i]+">>成功!");
				System.out.print("出借日期:" + dvd.date[i]);
				System.out.print("归还日期:" + returnDVDTime);
				String d1 = dvd.date[i];
				String d2 = returnDVDTime;
				long day = charge(d1,d2);
				System.out.println("应付金额:"+day+"");
				dvd.date[i] = returnDVDTime;
				dvd.state[i] = 1;
				break;
			}else if(i == 49){
				System.out.println("对不起!你要归还的DVD未找到!");	
				break;
				
			}				
		}
	}
	
	/**
	 * @param dstr1  第一个日期
	 * @param dstr2  第二个日期
	 * @return charge   日期差
	 */
	public long charge(String d1, String d2){
		long charge = 0;
		SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
		try{
			charge = ((sd.parse(d2)).getTime() - (sd.parse(d1)).getTime())/(24*60*60*1000);
		}catch(ParseException e){
			e.printStackTrace();
		}
		return charge;
	}	
	/**
	 * 扩展功能:增加菜单项“借出排行榜”,实现借阅次数从大到小的排序显示排行榜
	 */
	public void list(){
		String[] NewName = new String[50];
		int[] Newcount = new int [50];
		for(int i = 0; i < dvd.name.length; i++){
			NewName[i] = dvd.name[i];
			Newcount[i] = dvd.count[i];
		}
		for(int i = 0; i < dvd.name.length; i++){
			for(int j = i+1; j < NewName.length; j++){
				if(Newcount[i] > Newcount[j]){
					int a = Newcount[i];
					Newcount[i] = Newcount[j];
					Newcount[j] = a;
					String b = NewName[i];
					NewName[i] = NewName[j];
					NewName[j] = b;
				}
			}
		}
		System.out.println("次数\t名称");
		for(int i = dvd.name.length-1;i >= 0; i--){
			if(NewName[i] != null){
				System.out.println(Newcount[i]+"次"+"\t"+NewName[i]);
			}
		}
	}
}

3、编写类Start,实现程序入口。

package com.bkybk.MiniDVD;
/**
 * 在这里实现程序的入口
 * @author Kerry Pak
 * @创建时间 2012-07-20
 * @version V1.0
 * 
 */
public class Start {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		DVDMgr dm = new DVDMgr();
		dm.initial();
		dm.startMenu();
	}
}

特别声明:以上代码是我个人编写,只做参考!

标签: none

添加新评论