Mini DVD系统
最近在做一个我们阶段性小项目——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();
}
}
特别声明:以上代码是我个人编写,只做参考!