//第一部分 package com.po //屬性類 public class Dvd {//屬性類 private String name;//書名 private String time;//日期 private String state;//書本狀態“0”表示已借出“1”表示可借用 publ ...
//第一部分
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;
}
}
}
}
//找到了相同名字,無法添加信息