迷你DVD管理器

来源:http://www.cnblogs.com/xiaojianhun/archive/2017/07/31/7265592.html
-Advertisement-
Play Games

//第一部分 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;

}

}

}

 

}

 

//找到了相同名字,無法添加信息

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Map數據結構的使用 ...
  • 3295: [Cqoi2011]動態逆序對 Description 對於序列A,它的逆序對數定義為滿足i<j,且Ai>Aj的數對(i,j)的個數。 給1到n的一個排列,按照某種順序依次刪除m個元素。 你的任務是在每次刪除一個元素之前統計整個序列的逆序對數。 對於序列A,它的逆序對數定義為滿足i<j, ...
  • Python中的類 俗話說,物以類聚,人以群分,類是什麼,類就是一組相同屬性的集合。下麵來結合人,探討Python中類和人類的關係。 首先,我們定義一個人的類,如下: 上面代碼中,我們定義了一個人的類,人都有姓名,年齡,性別,血型等屬性,還有說話,學習,走路等方法;並且我們創建了兩個人,一男一女," ...
  • 本節主要是講解python3網路編程之socketserver,在上一節中我們講到了socket。由於socket無法支持多用戶和多併發,於是就有了socket server。 socket server最主要的作用就是實現併發處理。 socketserver中包含了兩種類: PS:一般情況下,所有 ...
  • 首先介紹一下Java三大框架的關係 以CRM項目即客戶關係管理項目示例 hibernate框架的學習路線: 1、學習框架入門,自己搭建框架,完成增刪改查的操作 2、學習一級緩存,事物管理和基本查詢 3、學習一對多和多對多的操作等 4、學習基本查詢和查詢的優化 本人正在學習hibernate框架,今天 ...
  • JSP JSP全名為Java Server Pages,中文名叫java伺服器頁面,其根本是一個簡化的Servlet設計,它[1] 是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態網頁技術標準。JSP技術有點類似ASP技術,它是在傳統的網頁HTML(標準通用標記語言的子集 ...
  • 轉自 http://blog.csdn.net/zcmssd/article/details/6086649 是由於輸出的CSV文件中沒有BOM. 什麼是BOM? 在UCS 編碼中有一個叫做”ZERO WIDTH NO-BREAK SPACE”的字元,它的編碼是FEFF。而FFFE在UCS中是不存在 ...
  • 終於知道了python中映射的設計哲學. Why Doesn't Python Have Switch/Case? https://www.pydanny.com/why-doesnt-python-have-switch-case.html 翻譯: http://python.jobbole.co ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...