//第一部分
package com.po
//属性类
public class Dvd {//属性类
private String name;//书名
private String time;//日期
private String state;//书本状态“0”表示已借出“1”表示可借用
public String getName() {
return name; } public void setName(String name) { this.name = name; } public String getTime() { return time; } public void setTime(String time) { this.time = time; } public String getState() { return state; } public void setState(String state) { this.state = state; } @Override public String toString() { return name+"\t"+state+"\t"+time+"\t"; }}
//第二部分
package com.dao;
import java.util.List;
import com.po.Dvd;
public interface DvdDao{//接口类 接口只包含常量跟抽象方法
void dvdInit();//初始化书本方法
List<Dvd>dvdfindAll();//全查
//新增dvd信息
public boolean dvdAdd(Dvd dvd);//添加对象
//删除dvd信息
public boolean dvdDelete(String name);//根据dvd名称删除
//借出dvd
public boolean lend(Dvd dvd);
//归还dvd
public boolean back(Dvd dvd);
//根据id查找书名
Dvd dvdFindbyid(String name);
}
//第三部分
package com.daoimpl;
import java.util.ArrayList;
import java.util.List;
import com.dao.DvdDao;
import com.po.Dvd;
/* implements 是一个类,实现一个借口用用的关键字,它是用来实现接口中定义的抽象方法。实现一个接口,必须实现接口中的所有方法。
*/
public class dvdDaoImpl implements DvdDao{
List<Dvd> dvds=new ArrayList<Dvd>();
@override
public List<Dvd> dvdfindAll(){
return dvds;
}
@Override
public void dvdInit(){//初始化方法
Dvd dvd1=new Dvd();//第一个对象
dvd1.setName("罗马假日");
dvd1.setState("0");
dvd1.setTime("2013-7-1");
dvds.add(dvd1);
Dvd dvd2=new Dvd();//第二个对象
dvd2.setName("风声鹤唳");
dvd2.setState("1");
dvd2.setTime("");
dvds.add(dvd2);
Dvd dvd3=new Dvd();//第三个对象
dvd3.setName("浪漫满屋");
dvd3.setState("1");
dvd3.setTime("");
dvds.add(dvd3);
}
@Override
//添加dvd方法
public boolean dvdAdd(Dvd dvd) {boolean boo = false;//DVD集合中是否有相同的名字,true:有;false:无,默认没找到
for (int i = 0; i < dvds.size(); i++) {
if (dvd.getName().equals(dvds.get(i).getName())) {
boo = true;
break;
}
//判断是否找到相同名字if (boo) {
return false;
} else {
//没有找到相同名字,添加信息
dvds.add(dvd);
return true;
}
} return boo; }@Override
public boolean dvdDelete(String name) {//删除dvd信息
for (Dvd dvd : dvds) {//遍历循环集合dvds中的对象
if(name.equals(dvd.getName())){//假如输入的dvd名字与要删除的dvd名字相同
if("1".equals(dvd.getState())){//假如该dvd状态为可借状态
dvds.remove(dvd);//执行删除操作
return true;
}
}
}
return false;
}
@Override
public boolean lend(Dvd dvd) {//借出
boolean bo=false;
for (Dvd d : dvds) {
if(d.getName().equals(dvd.getName())&&"1".equals(d.getState())){//假如借出的dvd名字存在,并且是可借状态
d.setState("0");//借出之后修改书本状态
d.setTime(dvd.getTime());//记录书本借出时间
bo=true;
break;
}
}
if(bo){
return true;
}
else{
return false;
}
}
@Override
public boolean back(Dvd dvd) {//归还
boolean bo=false;
for (Dvd d : dvds) {
if(d.getName().equals(dvd.getName())&&"0".equals(d.getState())){
d.setState("1");//书本状态
d.setTime("");//书本归还时间
bo=true;
break;
}
}
if(bo){
return true;
}
else{
return false;
}
}
@Override
public Dvd dvdFindbyid(String name) {//单查
// TODO Auto-generated method stub
for (Dvd dvd : dvds) {//foeach 遍历循环
if(name.equals(dvd.getName())){
return dvd;
}
}
return null;
}
}
//第四部分
package com.service;
import java.util.List;
import com.po.Dvd;
public interface DvdService {//接口类
void dvdInit();
List<Dvd> dvdfindAll();
//新增DVD信息
public boolean dvdAdd(String name);
//删除DVD信息
public boolean dvdDelete(String name);
//借出
public boolean lend(String name);
//归还
public boolean back(String name);
Dvd dvdFindbyId(String name);
}
//第五部分
package com.serviceimpl;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import com.dao.DvdDao;
import com.daoimpl.dvdDaoImpl;
import com.po.Dvd;
import com.service.DvdService;
public class DvdServiceImpl implements DvdService {
DvdDao dvdDao = new dvdDaoImpl();//实例化dvdDao对象
@Override
public List<Dvd> dvdfindAll() {
List<Dvd> list = dvdDao.dvdfindAll();// 获取值
return list;
}
@Override
public void dvdInit() {
dvdDao.dvdInit();
}
@Override
public boolean dvdAdd(String name) {//添加对象
Dvd dvd = new Dvd();//实例化对象
dvd.setState("1");//添加dvd状态
dvd.setName(name);
dvd.setTime("");
if (dvdDao.dvdAdd(dvd)) {
return true;
} else {
return false;
}
}
@Override
public boolean dvdDelete(String name) {//删除方法
if (dvdDao.dvdDelete(name)) {
return true;
} else {
return false;
}
}
@Override
public boolean lend(String name) {// 借出
Dvd dvd = new Dvd();
Date date = new Date();
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");//格式化时间格式
String time = format.format(date);//获取当前系统时间为借出dvd时间
dvd.setName(name);//获取借出的dvd名字
dvd.setTime(time);//获取dvd的借出时间
if (dvdDao.lend(dvd)) {
return true;
} else {
return false;
}
}
@Override
public boolean back(String name) {// 归还
Dvd dvd = new Dvd();
dvd.setName(name);
if (dvdDao.back(dvd)) {
return true;
} else {
return false;
}
}
@Override
public Dvd dvdFindbyId(String name) {
// TODO Auto-generated method stub
return dvdDao.dvdFindbyid(name);
}
}
//测试类
package com.test;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Scanner;
import org.junit.Test;
import com.po.Dvd;
import com.service.DvdService;
import com.serviceimpl.DvdServiceImpl;
public class Test1 {
Scanner scanner=new Scanner(System.in);
DvdService dvdService=new DvdServiceImpl();
@Test
public void dvdMenu(){
dvdService.dvdInit();//初始化数据
while(true){
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("-------------------------");
System.out.print("请选择:");
String input=scanner.next();
switch (input) {
case "1":
System.out.println("此处实现新增DVD");
dvdAdd();//dvd增加
break;
case "2":
System.out.println("此处实现查看DVD");
findAll();//查看
break;
case "3":
System.out.println("此处实现删除DVD");
dvdDelete();//删除DVD
break;
case "4":
System.out.println("此处实现借出DVD");
dvdLoan();//借出DVD
break;
case "5":
System.out.println("此处实现归还DVD");
dvdGiveBack();//归还DVD
break;
case "6":
System.out.println("退出成功!");
System.exit(0);
break;
default:
System.out.println("选择错误!");
break;
}
}
}
private void dvdGiveBack() {
System.out.print("请输入归还DVD名称:");
String name=scanner.next();
String dvdLoanTime=null;
if(dvdService.dvdFindbyId(name)!=null){
dvdLoanTime=dvdService.dvdFindbyId(name).getTime();
}
if(dvdService.back(name)){
System.out.println("借出时间"+dvdLoanTime);
Date date=new Date();
DateFormat format=new SimpleDateFormat("yyyy-MM-dd");
String time=format.format(date);
System.out.println("归还时间"+time);
Date t1 = null,t2 = null;
try {
t1=format.parse(dvdLoanTime);
t2=format.parse(time);
} catch (Exception e) {
}
long charge=(t2.getTime()-t1.getTime())/(24*60*60*1000);
System.out.println("消费金额:"+charge);
System.out.println("归还"+name+"成功!");
}
else {
System.out.println("归还失败");
}
getBack();
}
private void dvdLoan() {
System.out.print("请输入借出DVD名称:");
String name=scanner.next();
if(dvdService.lend(name)){
System.out.println("借出"+name+"成功!");
}
else {
System.out.println("借出失败");
}
getBack();
}
private void dvdDelete() {
System.out.print("请输入删除DVD名称:");
String name=scanner.next();
if(dvdService.dvdDelete(name)){
System.out.println("删除"+name+"成功!");
}
else {
System.out.println("删除失败!");
}
getBack();
}
private void findAll() {
System.out.println("序号\t名称\t状态\t借出日期");
List<Dvd>list=dvdService.dvdfindAll();
//循环遍历集合
int i=1;
for (Dvd dvd : list) {
String state=dvd.getState();//获取对象中的状态
if("0".equals(state)){
System.out.println(i+++"\t"+dvd.getName()+"\t已借出\t"+dvd.getTime()+"\t");
}
else{
System.out.println(i+++"\t"+dvd.getName()+"\t可借\t"+dvd.getTime()+"\t");
}
}
getBack();
}
private void dvdAdd() {
System.out.print("请输入添加DVD名称:");
String name=scanner.next();
if(dvdService.dvdAdd(name)){
System.out.println("添加"+name+"成功!");
}
else {
System.out.println("添加失败!,该DVD已存在");
}
getBack();
}
private void getBack() {
while(true){
System.out.print("输入0返回:");
String s=scanner.next();
if(s.equals("0")){
break;
}
}
}
}
//找到了相同名字,无法添加信息