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

java實(shí)現(xiàn)簡(jiǎn)單的圖書(shū)管理系統(tǒng)

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

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

一、項(xiàng)目分布

Book類(lèi): 定義了書(shū)的一些屬性(書(shū)名,作者,價(jià)格,分類(lèi),狀態(tài))并且寫(xiě)了屬性的get、set方法
Library類(lèi): 寫(xiě)了登錄函數(shù)(1、普通用戶(hù),2、管理員,3、退出系統(tǒng)),
Person類(lèi):定義的人的屬性(姓名,性別,年齡)并且寫(xiě)了屬性的get、set方法,定義了一些書(shū)。
operate接口:操作的接口,操作方法:查詢(xún)/查閱,刪除/借閱,增加/還書(shū),顯示書(shū)籍列表
Root類(lèi):繼承了Person類(lèi),實(shí)現(xiàn)operate(查閱,刪除,增加,顯示書(shū)籍列表)接口
User類(lèi):繼承了Person類(lèi),實(shí)現(xiàn)operate(查詢(xún),借閱,還書(shū),顯示書(shū)籍列表)接口
Main類(lèi):Main中的主函數(shù)開(kāi)啟整個(gè)項(xiàng)目。

模型圖:

聲明: 本項(xiàng)目只是一個(gè)簡(jiǎn)單的面向?qū)ο笕腴T(mén)小項(xiàng)目,有一些基礎(chǔ)理論需要掌握,比如對(duì)象,類(lèi),抽象類(lèi),接口,繼承,實(shí)現(xiàn),數(shù)組及數(shù)組的操作,for循環(huán),while循環(huán),switch語(yǔ)句,if語(yǔ)句。

二、代碼展示

1.Book類(lèi)

public class Book {
 private String name; //書(shū)名
 private String author; //作者
 public double price; //價(jià)格
 private String category; //分類(lèi)
 private boolean state; //狀態(tài)  true-未借出  false-已借出

 //通過(guò)構(gòu)造函數(shù)給定書(shū)的屬性
 public Book(String name,String author,double price,String category,boolean state){
  this.author = author;
  this.name = name;
  this.price = price;
  this.category = category;
  this.state = state;
 }

 public Book() {  //默認(rèn)10本書(shū)
  this(10);
 }
 public Book(int i) {
  Person.books = new Book[i];
 }

 //屬性的獲取和設(shè)置
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getAuthor() {
  return author;
 }
 public void setAuthor(String author) {
  this.author = author;
 }
 public double getPrice() {
  return price;
 }
 public void setPrice(double price) {
  this.price = price;
 }
 public String getCategory() {
  return category;
 }
 public void setCategory(String category) {
  this.category = category;
 }
 public boolean getState() {
  return state;
 }
 public void setState(boolean state) {
  this.state = state;
 }
}

2.Library類(lèi)

import java.util.Scanner;

public class Library {
 Scanner sc = new Scanner(System.in);
 //登錄函數(shù):顯示登錄界面進(jìn)行選擇登錄
 public void login() {
  int count = 0;
  Person p = null;
  while (count < 2) {
   System.out.println("===============jewel圖書(shū)管理系統(tǒng)===============");
   System.out.println("歡迎討論指正! qq505791225"+"\n");
   System.out.println("請(qǐng)登錄:1.普通用戶(hù)  2.管理員登錄  3.退出系統(tǒng)");

   int n = sc.nextInt();
   //通過(guò)輸入的值進(jìn)行登錄判斷
   if (n == 3) {
    return;
   }
   switch (n) {
    case 1:
     System.out.println("請(qǐng)輸入姓名:");
     String Uname = sc.next();
     System.out.println("請(qǐng)輸入性別:");
     String Usex = sc.next();
     System.out.println("請(qǐng)輸入年齡:");
     int Uage = sc.nextInt();

     p = new User(Uname,Usex,Uage); //構(gòu)造普通用戶(hù)對(duì)象

     System.out.println("登錄成功!");
     System.out.println("當(dāng)前普通用戶(hù):"+"姓名:" + p.getName() + " "+"性別:" + p.getSex() + " "+"年齡"+ p.getAge());
     //普通用戶(hù)循環(huán)操作
     while (true) {
      System.out.println("請(qǐng)輸入你的操作: 1.查詢(xún)書(shū)籍 2.借閱書(shū)籍 3.歸還書(shū)籍 4.顯示書(shū)籍列表 5.退出");
      int i = sc.nextInt();
      if (i == 5) {
       System.out.println("您已成功退出!");
       break;
      }else {
       p.operate();  //調(diào)用普通用戶(hù)的操作方法
      }
     }
     break;
    case 2:
     System.out.println("請(qǐng)輸入管理員姓名:");
     String Rname = sc.next();
     System.out.println("請(qǐng)輸入性別:");
     String Rsex = sc.next();
     System.out.println("請(qǐng)輸入年齡:");
     int Rage = sc.nextInt();

     p = new Root(Rname,Rsex,Rage);//構(gòu)造管理員對(duì)象

     System.out.println("登錄成功!");
     System.out.println("當(dāng)前管理員:"+"姓名:" + p.getName() + " "+"性別:" + p.getSex() + " "+"年齡" + p.getAge());
     while (true) {
      System.out.println("請(qǐng)輸入你的操作: 1.整理書(shū)籍 2.查閱書(shū)籍 3.增加書(shū)籍 4.刪除書(shū)籍 5.顯示書(shū)籍列表 6.退出");
      int j = sc.nextInt();
      if (j == 6) {
       System.out.println("您已成功退出!");
       break;
      }else{
       p.operate();//調(diào)用管理員的操作方法
      }
     } break;
   }
  }
 }
}

3.Person類(lèi)(抽象類(lèi))

abstract class Person {
 public String name;
 public String sex;
 public int age;
 /**
  *  默認(rèn)定義10本書(shū)籍。(預(yù)留3本新書(shū)的buffer,用來(lái)添加書(shū)籍)
  */
 public static Book[] books = new Book[]{
   new Book("西游記", "吳承恩", 10, "名著", true),
   new Book("紅樓夢(mèng)", "曹雪芹", 20, "名著", true),
   new Book("三國(guó)演義", "羅貫中", 15, "名著", true),
   new Book("小茗同學(xué)", "小明", 5, "雜志", true),
   new Book("C與指針", "馬老師", 35, "計(jì)算機(jī)", true),
   new Book("Java編程思想", "王老師", 55, "計(jì)算機(jī)", true),
   new Book("新世界", "陳宇", 15, "雜志", true),
   new Book("阿衰與大頭妹", "阿衰", 5, "漫畫(huà)", true),
   new Book("一個(gè)人就一個(gè)人", "劉同", 35, "小說(shuō)", true),
   new Book("活著", "陳彤", 36, "小說(shuō)", true),
   new Book(),
   new Book(),
   new Book(),
 };

 public Person(String name, String sex, int age) {
  this.age = age;
  this.name = name;
  this.sex = sex;
 }

 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getSex() {
  return sex;
 }
 public void setSex(String sex) {
  this.sex = sex;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 /**
  *  抽象類(lèi)中的抽象方法
  */
 public abstract void operate();
}

4.operate接口

public interface operate{  //操作的接口
    void select(Book[] books); //查詢(xún),查閱
    void delete(Book[] books);//刪除,借閱
    void add(Book[] books); //增加,還書(shū)
    void list(Book[] books); //顯示書(shū)列表
}

5.Root類(lèi)

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class Root extends Person implements Operate {
 //繼承了人的類(lèi),需要重寫(xiě)它的抽象方法operate,實(shí)現(xiàn)了operate接口,需要重寫(xiě)接口內(nèi)的方法
 
 public Root(String name, String sex, int age) {
  //調(diào)用人基類(lèi)的構(gòu)造函數(shù)
  super(name, sex, age);
 }

 Scanner sc = new Scanner(System.in);

 /**
  * 管理員的操作
  */
 @Override
 public void operate() {
  System.out.print("請(qǐng)輸入確認(rèn)操作:");
  int i = sc.nextInt();
  switch (i) {
   case 1:
    //整理
    sort(books);
    break;
   case 2:
    //查
    select(books);
    break;
   case 3:
    //加
    add(books);
    break;
   case 4:
    //刪
    delete(books);
    break;
   case 5:
    //列表
    list(books);
    break;
   default:
    System.out.println("輸入有誤!");
    break;

  }
 }

 /**
  *  compareable整理,重寫(xiě)compare to,如果數(shù)組中有空的,則會(huì)出現(xiàn)空指針異常,把不空的拷到另一個(gè)新的數(shù)組,然后實(shí)現(xiàn)
  * @param books
  */
 public void sort(Book[] books) {
  System.out.println("圖書(shū)館中的書(shū)按價(jià)格整理如下:" + "\n" + "【書(shū)名】—— 【作者】——【價(jià)格】——【分類(lèi)】——狀態(tài)");
  Arrays.sort(books, new Comparator<Book>() {
   @Override
   public int compare(Book o1, Book o2) {
    return (int) (o1.getPrice() - o2.getPrice());
   }
  });
  //遍歷數(shù)組打印書(shū)的列表
  for (int i = 0; i < books.length; i++) {
   if (books[i].price != 0) {
    System.out.println(
      "【" + books[i].getName() + "】—— 【" + books[i].getAuthor() + "】——【" + books[i].getPrice()
        + "】——【" + books[i].getCategory() + "】——" + books[i].getState());
   }
  }
 }

 @Override
 public void select(Book[] books) {
  System.out.println("請(qǐng)輸入書(shū)名進(jìn)行查詢(xún):");
  String name = sc.next();
  if (name != null) {
   boolean flag = false;
   int bookNum = 0;
   for (int i = 0; i < books.length; i++) {
    if (books[i].getName() != null && name.equals(books[i].getName())) {
     flag = true;
     bookNum = i;
     break;
    }
   }
   if (!flag) {
    System.out.println("未查詢(xún)到此書(shū)籍!");
   } else {
    System.out.println("書(shū)籍信息為:" + "\n" + "【書(shū)名】—— 【作者】——【價(jià)格】——【分類(lèi)】——狀態(tài)");
    System.out.println(
      "【" + books[bookNum].getName() + "】—— 【" + books[bookNum].getAuthor() + "】——【" + books[bookNum]
        .getPrice() + "】——【" + books[bookNum].getCategory() + "】——" + books[bookNum]
        .getState());
   }
  }
 }

 @Override
 public void delete(Book[] books) {
  System.out.println("請(qǐng)輸入要?jiǎng)h除的書(shū)名:");
  String str = sc.next();
  if (str != null) {
   for (int i = 0; i < books.length; i++) {
    if (books[i].getName().equals(str)) {
     books[i] = null;
     System.out.println("刪除成功!");
     break;
    }
   }
  }

 }

 @Override
 public void add(Book[] books) {
  System.out.println("請(qǐng)輸入書(shū)名:");
  String name = sc.next();
  System.out.println("請(qǐng)輸入作者:");
  String author = sc.next();
  System.out.println("請(qǐng)輸入價(jià)格:");
  double price = sc.nextDouble();
  System.out.println("請(qǐng)輸入分類(lèi):");
  String category = sc.next();

  boolean flag = false;
  for (int i = 0; i < books.length; i++) {
   if (books[i].getName() == null) {
    flag = true;
    books[i].setName(name);
    books[i].setAuthor(author);
    books[i].setPrice(price);
    books[i].setCategory(category);
    books[i].setState(true);
    System.out.println("添加成功");
    break;
   }
  }
  if (!flag) {
   System.out.println("【警告】數(shù)組預(yù)留buffer最多只能添加3本新書(shū),沒(méi)有位置放置新書(shū)了,如需添加多余3本,需要在‘Person'類(lèi)中添加buffer!" + "\n");
  }

 }

 @Override
 public void list(Book[] books) {
  System.out.println("圖書(shū)列表如下:" + "\n" + "【書(shū)名】—— 【作者】——【價(jià)格】——【分類(lèi)】——狀態(tài)");  //打印Book數(shù)組
  for (int i = 0; i < books.length; i++) {
   if (books[i] != null) {
    if (books[i].price != 0) {
     System.out.println(
       "【" + books[i].getName() + "】—— 【" + books[i].getAuthor() + "】——【" + books[i].getPrice()
         + "】——【" + books[i].getCategory() + "】——" + books[i].getState());

    }
   }
  }
 }
}

6.User類(lèi)

import java.util.Scanner;

public class User extends Person implements Operate {   //user類(lèi)繼承了人的類(lèi),  實(shí)現(xiàn)operate接口

 public User(String name, String sex, int age) {
  //調(diào)用人基類(lèi)的構(gòu)造函數(shù)(派生類(lèi)不繼承基類(lèi)的構(gòu)造函數(shù))
  super(name, sex, age);
 }

 Scanner sc = new Scanner(System.in);

 @Override
 public void operate() {  //普通用戶(hù)的操作

  System.out.print("請(qǐng)輸入確認(rèn)操作:");
  int i = sc.nextInt();
  switch (i) {
   case 1:
    //查
    select(books);
    break;
   case 2:
    //借
    delete(books);
    break;
   case 3:
    //還
    add(books);
    break;
   case 4:
    //書(shū)列表
    list(books);
    break;
   default:
    System.out.println("輸入有誤!");
    break;
  }
 }

 @Override
 public void select(Book[] books) {
  System.out.println("請(qǐng)輸入書(shū)名進(jìn)行查詢(xún):");
  String name = sc.next();
  if (name != null) {
   boolean flag = false;
   int bookNum = 0;
   for (int i = 0; i < books.length; i++) {
    if (books[i].getName() != null && name.equals(books[i].getName())) {
     flag = true;
     bookNum = i;
     break;
    }
   }
   if (!flag) {
    System.out.println("未查詢(xún)到此書(shū)籍!");
   } else {
    System.out.println("書(shū)籍信息為:" + "\n" + "【書(shū)名】—— 【作者】——【價(jià)格】——【分類(lèi)】——狀態(tài)");
    System.out.println(
      "【" + books[bookNum].getName() + "】—— 【" + books[bookNum].getAuthor() + "】——【" + books[bookNum]
        .getPrice() + "】——【" + books[bookNum].getCategory() + "】——" + books[bookNum]
        .getState());
   }
  }
 }

 @Override
 public void delete(Book[] books) {
  System.out.println("請(qǐng)輸入要借閱的書(shū)名:");
  String name = sc.next();
  if (name != null) {
   for (int i = 0; i < books.length - 1; i++) {
    if (books[i].getName().equals(name)) {
     //借走書(shū)時(shí)設(shè)置狀態(tài)為false
     if (!books[i].getState()) {
      System.out.println("【" + name + "】" + "已經(jīng)被借出!");
     } else {
      books[i].setState(false);
      System.out.println("借閱成功!");
     }
     break;
    }
   }
  }
 }

 @Override
 public void add(Book[] books) {

  System.out.println("請(qǐng)輸入要還的書(shū)名:");
  String name = sc.next();

  if (name != null) {
   boolean flag = true;
   int i = 0;
   while (flag) {
    if (books[i].getName().equals(name)) {
     if (!books[i].getState()) {
      books[i].setState(true);
      System.out.println("還書(shū)成功!");
      flag = false;
     } else {
      System.out.println("該書(shū)籍已經(jīng)被還回!");
      break;
     }
    }
    i++;
   }
  }
 }


 @Override
 public void list(Book[] books) {
  System.out.println("圖書(shū)列表如下:" + "\n" + "【書(shū)名】—— 【作者】——【價(jià)格】——【分類(lèi)】——狀態(tài)");  //打印Book數(shù)組
  for (int i = 0; i < books.length; i++) {
   if (books[i] != null) {
    if (books[i].price != 0) {
     System.out.println(
       "【" + books[i].getName() + "】—— 【" + books[i].getAuthor() + "】——【" + books[i].getPrice()
         + "】——【" + books[i].getCategory() + "】——" + books[i].getState());

    }
   }
  }
 }
}

7.Main類(lèi)

public class Main {
    public static void main(String[] args) {
        Library library = new Library(); //構(gòu)造Library對(duì)象
        library.login(); //調(diào)用對(duì)象的登錄方法。
    }
}

三、實(shí)現(xiàn)結(jié)果

1.登錄界面

普通用戶(hù)登錄

2.普通用戶(hù):查詢(xún)、借閱、歸還 、顯示列表



3.管理員登錄,按圖書(shū)價(jià)格整理書(shū)籍

4.管理員添加書(shū)籍

5.管理員刪除書(shū)籍

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

相關(guān)文章

  • java中l(wèi)ong和Long有什么區(qū)別詳解

    java中l(wèi)ong和Long有什么區(qū)別詳解

    這篇文章主要介紹了Java中l(wèi)ong和Long是基本數(shù)據(jù)類(lèi)型和包裝數(shù)據(jù)類(lèi)型的區(qū)別,包括默認(rèn)值、內(nèi)存占用、使用場(chǎng)景、方法支持以及裝箱和拆箱,包裝數(shù)據(jù)類(lèi)型如Integer提供了許多有用的方法,需要的朋友可以參考下
    2025-02-02
  • Java實(shí)現(xiàn)的簡(jiǎn)單圖片上傳功能示例

    Java實(shí)現(xiàn)的簡(jiǎn)單圖片上傳功能示例

    這篇文章主要介紹了Java實(shí)現(xiàn)的簡(jiǎn)單圖片上傳功能,結(jié)合實(shí)例形式分析了java圖片傳輸相關(guān)的檢驗(yàn)、傳輸、接收等相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • Java面向?qū)ο蠡A(chǔ)教學(xué)(二)

    Java面向?qū)ο蠡A(chǔ)教學(xué)(二)

    這篇文章主要介紹了Java的面相對(duì)象編程思想,包括類(lèi)對(duì)象方法和封裝繼承多態(tài)等各個(gè)方面的OOP基本要素,非常推薦,需要的朋友可以參考下,希望可以對(duì)你有所幫助
    2021-07-07
  • 實(shí)現(xiàn)Java線程的取值并返回的方法

    實(shí)現(xiàn)Java線程的取值并返回的方法

    在本篇文章中我們給大家分享了關(guān)于Java線程的取值并返回的實(shí)現(xiàn)方法,對(duì)此有需要的朋友們可以跟著學(xué)習(xí)參考下。
    2018-10-10
  • Java中的ArrayList、LinkedList、HashSet等容器詳解

    Java中的ArrayList、LinkedList、HashSet等容器詳解

    這篇文章主要介紹了Java中的ArrayList、LinkedList、HashSet等容器詳解,集合表示一組對(duì)象,稱(chēng)為其元素,有些集合允許重復(fù)元素,而另一些則不允許,有些是有序的,有些是無(wú)序的,需要的朋友可以參考下
    2023-08-08
  • 利用Java實(shí)現(xiàn)紅黑樹(shù)

    利用Java實(shí)現(xiàn)紅黑樹(shù)

    紅黑樹(shù)是眾多“平衡的”搜索樹(shù)模式中的一種,在最壞情況下,它相關(guān)操作的時(shí)間復(fù)雜度為O(log n),接下倆小編將子啊下文詳細(xì)介紹Java是如何實(shí)現(xiàn)紅黑樹(shù)的
    2021-09-09
  • 使用SpringBoot獲取resources文件路徑

    使用SpringBoot獲取resources文件路徑

    這篇文章主要介紹了使用SpringBoot獲取resources文件路徑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • java 通過(guò)聚合查詢(xún)實(shí)現(xiàn)elasticsearch的group by后的數(shù)量

    java 通過(guò)聚合查詢(xún)實(shí)現(xiàn)elasticsearch的group by后的數(shù)量

    這篇文章主要介紹了java 通過(guò)聚合查詢(xún)實(shí)現(xiàn)elasticsearch的group by后的數(shù)量,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • 通過(guò)RedisTemplate連接多個(gè)Redis過(guò)程解析

    通過(guò)RedisTemplate連接多個(gè)Redis過(guò)程解析

    這篇文章主要介紹了通過(guò)RedisTemplate連接多個(gè)Redis過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 淺談Java中生產(chǎn)者與消費(fèi)者問(wèn)題的演變

    淺談Java中生產(chǎn)者與消費(fèi)者問(wèn)題的演變

    這篇文章主要介紹了淺談Java中生產(chǎn)者與消費(fèi)者問(wèn)題的演變,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10

最新評(píng)論

砚山县| 丘北县| 丽江市| 连州市| 保靖县| 南汇区| 武威市| 周口市| 积石山| 新津县| 呼伦贝尔市| 昆明市| 九龙坡区| 方正县| 东宁县| 双流县| 金昌市| 监利县| 大荔县| 安新县| 宜丰县| 汉源县| 保亭| 南乐县| 秦安县| 崇信县| 澄江县| 金平| 江西省| 安宁市| 达州市| 沙坪坝区| 留坝县| 凉城县| 荃湾区| 合阳县| 浮山县| 满城县| 佛坪县| 湟中县| 墨玉县|