最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實(shí)現(xiàn)圖書(shū)館管理系統(tǒng)

 更新時(shí)間:2019年10月25日 14:54:29   作者:lijiangjiajun  
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)圖書(shū)館管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了java實(shí)現(xiàn)圖書(shū)館管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

思路:所有包都在book_manage包里

利用面向?qū)ο蟮亩鄳B(tài)特性去除了很多if-else的判斷,不同的子類(lèi)在父類(lèi)所對(duì)應(yīng)的方法不同。

1.首先建立一個(gè)book包

包里面有2個(gè)類(lèi),一個(gè)是Book,這個(gè)類(lèi)里面包含一本書(shū)的全部信息
另外一個(gè)類(lèi)是BookList,這個(gè)類(lèi)是用來(lái)管理每一個(gè)書(shū),通過(guò)這個(gè)類(lèi)來(lái)尋找每一本書(shū)。
private Book[] books = new Book[100];
Book數(shù)組里面存放所有的書(shū)。

2.再建立一個(gè)包Operation 這個(gè)類(lèi)里面有一個(gè)OI接口,通過(guò)對(duì)接口里面的Work方法重寫(xiě),來(lái)實(shí)現(xiàn)管理員身份和普通用戶(hù)身份的不同操作。

3.最后建立一個(gè)User包,里面有三個(gè)類(lèi),User,Admin,NormalUser

Admin和NormalUser都繼承自User.
User里秒你有一個(gè)數(shù)組
protected IO[] operation;
這個(gè)數(shù)組里面包含了用戶(hù)或者管理員所具備的操作。
通過(guò)對(duì)數(shù)組的索引來(lái)確定具體需要調(diào)用的操作方法。

下面來(lái)看看代碼吧:

book包

Book類(lèi)

package book_manager.book;

public class Book {
 private String name;
 private String id;
 private String author;
 private int price;
 private String type;
 private boolean isBorrow;

 public Book(String name, String id, String author, int price,
 String type, boolean isBorrow) {
 this.name = name;
 this.id = id;
 this.author = author;
 this.price = price;
 this.type = type;
 this.isBorrow = isBorrow;
 }

 @Override //Object中內(nèi)置的類(lèi),用來(lái)格式化打印book的信息
 public String toString() {
 return "Book{" +
 "name='" + name + '\'' +
 ", id='" + id + '\'' +
 ", author='" + author + '\'' +
 ", price=" + price +
 ", type='" + type + '\'' +
 ", isBorrow=" + isBorrow +
 '}';
 }

 public String getName(){
 return name;
 }

 public boolean isBorrow(){
 return isBorrow;
 }

 public void setBorrow(boolean bool){
 this.isBorrow=bool;
 }

 public String getId(){
 return id;
 }
}

BookList類(lèi)

package book_manager.book;

import java.util.Arrays;

public class BookList {
 private Book[] books = new Book[100];
 private int size;
 public BookList(){
 books[0] = new Book("金瓶梅",
  "001", "蘭陵笑笑生", 100,
  "古典名著", false);
 books[1] = new Book("水滸傳",
  "002", "施耐庵", 100,
  "古典名著", false);
 books[2] = new Book("西游記",
  "003", "吳承恩", 100,
  "古典名著", false);
 size = 3;
 }

 public int getSize(){
  return size;
 }

 public void setBooks(int index,Book book){
  books[index]=book;
 }

 public void setSize(int size){
  this.size=size;
 }

 public Book getBook(int index){
  return books[index];
 }
}

Operation包:

ADD類(lèi)

package book_manager.Operation;

import book_manager.book.*;

import java.util.Scanner;

public class ADD implements IO{

 @Override
 public void work(BookList bookList) {
 Scanner scanner = new Scanner(System.in);
 System.out.println("請(qǐng)輸入書(shū)名");
 String name =scanner.next();
 System.out.println("請(qǐng)輸入序號(hào)");
 String id = scanner.next();
 System.out.println("請(qǐng)輸入作者");
 String author =scanner.next();
 System.out.println("請(qǐng)輸入價(jià)格");
 int price = scanner.nextInt();
 System.out.println("請(qǐng)輸入類(lèi)型");
 String type = scanner.next();
 Book book = new Book(name, id,
  author, price, type, false);
 bookList.setBooks(bookList.getSize(),book);
 bookList.setSize(bookList.getSize()+1);
 System.out.println("添加成功");
 }
}

Borrow類(lèi)

package book_manager.Operation;

import book_manager.book.Book;
import book_manager.book.BookList;

import java.util.Scanner;

public class Borrow implements IO{
 @Override
 public void work(BookList bookList) {
 int i=0;
 int flag=0;
 Scanner scan = new Scanner(System.in);

 System.out.println("請(qǐng)輸入需要借閱的書(shū)名");
 String name = scan.next();
 for(;i<bookList.getSize();i++){
  if(name.equals(bookList.getBook(i).getName())){
  if(bookList.getBook(i).isBorrow()==false){
   System.out.println("借閱成功");
   flag=1;
   bookList.getBook(i).setBorrow(true);
  }

  }
  }
 if(flag==0){
  System.out.println("不好意思,借閱失敗");
 }

 }
}

Delete類(lèi)

package book_manager.Operation;

import book_manager.book.BookList;

import java.util.Scanner;

public class Delete implements IO{

 public void work(BookList bookList){
 Scanner scanner = new Scanner(System.in);
 System.out.println("請(qǐng)輸入想要?jiǎng)h除的編號(hào)");
 String id = scanner.next();
 for(int i=0;i<bookList.getSize();i++){
  if(bookList.getBook(i).getId().equals(id)){
  bookList.setBooks(i,bookList.getBook(bookList.getSize()));
  bookList.setSize(bookList.getSize()-1);
  System.out.println("刪除成功");
  }
  else{
  System.out.println("刪除失敗");
  }
 }
 }
}

Exit類(lèi)

package book_manager.Operation;

import book_manager.book.BookList;

public class Exit implements IO{
 @Override
 public void work(BookList bookList) {
 System.out.println("退出成功");
 System.exit(0);
 }
}

Find類(lèi)

package book_manager.Operation;

import book_manager.book.BookList;

import java.util.Scanner;

public class Find implements IO{
 @Override
 public void work(BookList bookList) {
 int i=0;
 int count=0;
 Scanner scan = new Scanner(System.in);

 System.out.println("請(qǐng)輸入需要查找的書(shū)名");
 String name = scan.next();
 for(;i<bookList.getSize();i++){
  if(name.equals(bookList.getBook(i).getName())){
  count++;
  }
 }
 if(count==0){
  System.out.println("不好意思,沒(méi)有找到");
 }
 else{
  System.out.println("找到了,共計(jì)"+count+"本");
 }
 }
}

IO接口

package book_manager.Operation;

import book_manager.book.BookList;

public interface IO {
 abstract public void work(BookList bookList);
}

PrintAll類(lèi)

package book_manager.Operation;

import book_manager.book.BookList;

public class PrintAll implements IO{
 @Override
 public void work(BookList bookList) {
 for(int i=0;i<bookList.getSize();i++){
  System.out.println(bookList.getBook(i));
 }
 }

}

Return類(lèi)

package book_manager.Operation;

import book_manager.book.BookList;

import java.util.Scanner;

public class Return implements IO{
 @Override
 public void work(BookList bookList) {
 int i=0;
 int flag=0;
 Scanner scan = new Scanner(System.in);

 System.out.println("請(qǐng)輸入需要?dú)w還的ID");
 String id = scan.next();
 for(;i<bookList.getSize();i++){
  if(id.equals(bookList.getBook(i).getId())){
  if(bookList.getBook(i).isBorrow()==true){
   System.out.println("歸還成功");
   bookList.getBook(i).setBorrow(false);
   flag=1;
  }
  else{
   System.out.println("歸還失敗");
  }
  }

 }
 if(flag==0){
  System.out.println("不好意思,沒(méi)有此書(shū)");
 }

 }
}

user包:

User類(lèi)

package book_manager.user;

import book_manager.Operation.*;
import book_manager.Operation.IO;
import book_manager.book.BookList;

abstract public class User {
 String name;
 protected IO[] operation;

 public User(String name){
 this.name=name;
 }

 abstract public int menu();//該方法被重寫(xiě)
 public void doOperation(int choice, BookList bookList) {
 operation[choice].work(bookList);
 }
}

Admin類(lèi)

package book_manager.user;

import book_manager.Operation.*;

import java.util.Scanner;

public class Admin extends User{
 public Admin(String name){
 super(name);
 operation=new IO[]{
  new Exit(),
  new Find(),
  new ADD(),
  new Delete(),
  new PrintAll(),
 };

 }


 public int menu() {
 System.out.println("============");
 System.out.println("hello " + name);
 System.out.println("1. 查找書(shū)籍");
 System.out.println("2. 增加書(shū)籍");
 System.out.println("3. 刪除書(shū)籍");
 System.out.println("4. 打印所有信息");
 System.out.println("0. 退出");
 System.out.println("============");
 System.out.println("請(qǐng)輸入您的選擇: ");
 Scanner scanner = new Scanner(System.in);
 int choice = scanner.nextInt();
 return choice;
 }
 
}

NormalUser

package book_manager.user;

import book_manager.Operation.*;

import java.util.Scanner;

public class NormalUser extends User{
 public NormalUser(String name){
 super(name);
 operation=new IO[]{
  new Exit(),
  new Find(),
  new Borrow(),
  new Return(),
  new PrintAll()
 };
 }
 public int menu() {
 System.out.println("============");
 System.out.println("hello " + name);
 System.out.println("1. 查找圖書(shū)");
 System.out.println("2. 借閱圖書(shū)");
 System.out.println("3. 歸還圖書(shū)");
 System.out.println("4. 查看全部書(shū)籍");
 System.out.println("0. 退出");
 System.out.println("============");
 System.out.println("請(qǐng)輸入您的選擇: ");
 Scanner scanner = new Scanner(System.in);
 int choice = scanner.nextInt();
 // close 本質(zhì)上是在關(guān)閉 System.in
 // 由于后面還需要用到 System.in, 此處不能盲目關(guān)閉.
 // scanner.close();
 return choice;
 }

}

最后還有一個(gè)Test類(lèi),里面放了main函數(shù)

package book_manager;

import book_manager.book.BookList;
import book_manager.user.Admin;
import book_manager.user.NormalUser;
import book_manager.user.User;

import java.util.Scanner;

public class Test {
 public static void main(String[] args) {
 BookList list = new BookList();
 User user = login();
 //通過(guò)不同的choice和身份調(diào)用不同的Operation方法
  while(true){
  int choice = user.menu();
  user.doOperation(choice, list);
 }
 }

 public static User login(){
 Scanner scanner = new Scanner(System.in);
 System.out.println("請(qǐng)輸入你的姓名");
 String name = scanner.next();
 System.out.println("請(qǐng)輸入你的身份");
 System.out.println("1.普通用戶(hù) 2.管理員");
 int role= scanner.nextInt();
 if(role==1){
  return new NormalUser(name);
 }
 else{
  return new Admin(name);
 }

 }
}

更多學(xué)習(xí)資料請(qǐng)關(guān)注專(zhuān)題《管理系統(tǒng)開(kāi)發(fā)》。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Apache Dubbo的SPI機(jī)制是如何實(shí)現(xiàn)的

    Apache Dubbo的SPI機(jī)制是如何實(shí)現(xiàn)的

    SPI全稱(chēng)為Service Provider Interface,對(duì)應(yīng)中文為服務(wù)發(fā)現(xiàn)機(jī)制。SPI類(lèi)似一種可插拔機(jī)制,首先需要定義一個(gè)接口或一個(gè)約定,然后不同的場(chǎng)景可以對(duì)其進(jìn)行實(shí)現(xiàn),調(diào)用方在使用的時(shí)候無(wú)需過(guò)多關(guān)注具體的實(shí)現(xiàn)細(xì)節(jié)。在Java中,SPI體現(xiàn)了面向接口編程的思想,滿(mǎn)足開(kāi)閉設(shè)計(jì)原則。
    2021-06-06
  • PowerJob的QueryConvertUtils工作流程源碼解讀

    PowerJob的QueryConvertUtils工作流程源碼解讀

    這篇文章主要為大家介紹了PowerJob的QueryConvertUtils工作流程源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • microlog4android將Android Log日志寫(xiě)到SD卡文件中實(shí)現(xiàn)方法

    microlog4android將Android Log日志寫(xiě)到SD卡文件中實(shí)現(xiàn)方法

    這篇文章主要介紹了microlog4android將Android Log日志寫(xiě)到SD卡文件中實(shí)現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • 記一次集成swagger2(Knife4j)在線(xiàn)文檔提示:Knude4j文檔請(qǐng)求異常的解決辦法

    記一次集成swagger2(Knife4j)在線(xiàn)文檔提示:Knude4j文檔請(qǐng)求異常的解決辦法

    Knife4j是一個(gè)集Swagger2 和 OpenAPI3為一體的增強(qiáng)解決方案,下面這篇文章主要給大家介紹了關(guān)于一次集成swagger2(Knife4j)在線(xiàn)文檔提示:Knude4j文檔請(qǐng)求異常的解決辦法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02
  • 如何將SpringBoot項(xiàng)目打成?war?包并部署到Tomcat

    如何將SpringBoot項(xiàng)目打成?war?包并部署到Tomcat

    這篇文章主要介紹了如何將SpringBoot項(xiàng)目?打成?war?包?并?部署到?Tomcat,當(dāng)前環(huán)境是windows,tomcat版本是8.5采用的springboot版本是2.2.3,本文結(jié)合實(shí)例代碼給大家詳細(xì)講解需要的朋友可以參考下
    2022-11-11
  • java使用泛型實(shí)現(xiàn)棧結(jié)構(gòu)示例分享

    java使用泛型實(shí)現(xiàn)棧結(jié)構(gòu)示例分享

    泛型是Java SE5.0的重要特性,使用泛型編程可以使代碼獲得最大的重用。由于在使用泛型時(shí)要指明泛型的具體類(lèi)型,這樣就避免了類(lèi)型轉(zhuǎn)換。本實(shí)例將使用泛型來(lái)實(shí)現(xiàn)一個(gè)棧結(jié)構(gòu),并對(duì)其進(jìn)行測(cè)試
    2014-03-03
  • Java使用Jasypt進(jìn)行加密和解密的技術(shù)指南

    Java使用Jasypt進(jìn)行加密和解密的技術(shù)指南

    Jasypt (Java Simplified Encryption) 是一個(gè)簡(jiǎn)化 Java 應(yīng)用中加密工作的庫(kù),它支持加密和解密操作,易于與 Spring Boot 集成,通過(guò) Jasypt,可以安全地管理敏感信息,比如數(shù)據(jù)庫(kù)密碼、API 密鑰等,本文介紹了Java使用Jasypt進(jìn)行加密和解密的技術(shù)指南,需要的朋友可以參考下
    2025-03-03
  • Java三個(gè)類(lèi)加載器及它們的相互關(guān)系

    Java三個(gè)類(lèi)加載器及它們的相互關(guān)系

    Java在需要使用類(lèi)別的時(shí)候,才會(huì)將類(lèi)別加載,Java的類(lèi)別載入是由類(lèi)別載入器(Class loader)來(lái)達(dá)到的,預(yù)設(shè)上,在程序啟動(dòng)之后,主要會(huì)有三個(gè)類(lèi)別加載器,文中詳細(xì)介紹了這三個(gè)類(lèi)加載器,需要的朋友可以參考下
    2021-06-06
  • Java常用字符串方法小結(jié)

    Java常用字符串方法小結(jié)

    字符串變量是Java與C語(yǔ)言的一大不同之處。Java之中的 String 類(lèi)和 Stringbuffer 類(lèi)提供了大量的對(duì)字符串操作的方法。String 類(lèi)適合處理較小的字符串,而Stringbuffer類(lèi)適合處理大量字符串
    2017-04-04
  • 關(guān)于Spring中的@Configuration中的proxyBeanMethods屬性

    關(guān)于Spring中的@Configuration中的proxyBeanMethods屬性

    這篇文章主要介紹了關(guān)于Spring中的@Configuration中的proxyBeanMethods屬性,需要的朋友可以參考下
    2023-07-07

最新評(píng)論

孟连| 三亚市| 西盟| 荥阳市| 呼图壁县| 南丰县| 宁乡县| 瑞丽市| 广平县| 吴江市| 汉源县| 盐亭县| 临沂市| 高唐县| 阳信县| 枣阳市| 突泉县| 五台县| 香格里拉县| 恩平市| 德化县| 汪清县| 武冈市| 原平市| 娄底市| 双桥区| 青神县| 南京市| 瑞昌市| 牟定县| 武义县| 桐柏县| 同心县| 临汾市| 肃南| 郎溪县| 油尖旺区| 桦甸市| 湖南省| 隆回县| 襄汾县|