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

JAVA初級(jí)項(xiàng)目——實(shí)現(xiàn)圖書管理系統(tǒng)

 更新時(shí)間:2020年06月28日 09:24:30   作者:你是人間四月天丿  
這篇文章主要介紹了JAVA如何實(shí)現(xiàn)圖書管理系統(tǒng),文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下

  今天博主再給大家分享一個(gè)小項(xiàng)目:MiNi圖書管理系統(tǒng)。用的是Java語言開發(fā)的,代碼不多,大概260行左右吧,系統(tǒng)是實(shí)現(xiàn)圖書的新增圖書、刪除圖書、借閱圖書、歸還圖書、查看圖書等簡單的功能(后附源代碼)!

  首先展示一下運(yùn)行界面效果圖:運(yùn)行代碼后,會(huì)在控制臺(tái)顯示如下界面:

       然后讓用戶選擇,如果用戶不小心或者誤輸入了錯(cuò)誤的數(shù),會(huì)再次讓用戶進(jìn)行輸入。

  當(dāng)用戶輸入2后,可以查看圖書,會(huì)顯示已有的圖書:包括圖書書名、借閱狀態(tài)、借閱次數(shù)、借閱日期等信息。

   當(dāng)用戶輸入1后,可以新增圖書,再次讓用戶輸入新增的圖書名字,這里博主用mybook,效果如下:

   當(dāng)用戶輸入3后,可以借閱圖書。讓用戶再次輸入借閱的圖書名,如果輸入的名字沒在圖書館,則不可以借閱;如果在館,且狀態(tài)是已借出,也不能再次借閱;如果在館,且狀態(tài)是可借閱,則可以進(jìn)行借閱。

   當(dāng)用戶輸入4后,可以歸還圖書。再次讓用戶輸入歸還的圖書名,同理,如果圖書館找不到該名字,提示用戶不是本圖書館的書,不用歸還;如果找到該書的名字,且狀態(tài)是可借閱的,也不能歸還;如果找到該書,且狀態(tài)是已借出,則可以進(jìn)行圖書的歸還。同時(shí),還要讓用戶輸入歸還的日期,并對(duì)歸還的日期進(jìn)行判斷,如果日期小于借閱的日期,則提示用戶歸還日期必須大于借閱日期,讓用戶再次輸入,輸入成功后,則顯示歸還成功。

   當(dāng)用戶輸入5后,可以進(jìn)行刪除圖書的操作。如果該館找不到用戶輸入的書名,則提示用戶不是本圖書館的書,不用歸還;如果找到,且狀態(tài)是已借出,則不能歸還;如果找到該書,且書的狀態(tài)是可借閱的,則可以進(jìn)行刪除圖書的操作。

   當(dāng)用戶輸入6后,就退出系統(tǒng)。

   源代碼如下:

package cn.kgc.sg.MiTuSys;

import java.util.Scanner;

public class MiNiBookMgrSys {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    //初始化書本信息
    String[] bookNames = new String[6];
    int[] borrowDates = new int[6];
    int[] borrowCounts = new int[6];
    int[] states = new int[6];

    //初始化三本書
    bookNames[0] = "安徒生童話";
    borrowDates[0] = 15;
    borrowCounts[0] = 16;
    states[0] = 0;//0:可借閱 1:已借出

    bookNames[1] = "格林童話";
    borrowDates[1] = 0;
    borrowCounts[1] = 0;
    states[1] = 1;//0:可借閱 1:已借出

    bookNames[2] = "Java開發(fā)";
    borrowDates[2] = 0;
    borrowCounts[2] = 0;
    states[2] = 0;//0:可借閱 1:已借出

    int num = -1;//初始化用戶輸入的數(shù)字
    boolean flag = true;//true:不退出系統(tǒng) false:退出系統(tǒng)
    do{
      System.out.println("************歡迎使用MiNi圖書管理系統(tǒng)**********");
      System.out.println("\t\t\t\t\t1.新增圖書");
      System.out.println("\t\t\t\t\t2.查看圖書");
      System.out.println("\t\t\t\t\t3.借閱圖書");
      System.out.println("\t\t\t\t\t4.歸還圖書");
      System.out.println("\t\t\t\t\t5.刪除圖書");
      System.out.println("\t\t\t\t\t6.退出系統(tǒng)");

      System.out.print("\n請(qǐng)選擇:");
      int choose = sc.nextInt();
      while(choose<0 || choose>6){
        System.out.print("輸入有誤,重新輸入:");
        choose = sc.nextInt();
      }
      switch(choose){
        case 1:
          System.out.println("************1.新增圖書**********");
          System.out.print("請(qǐng)輸入新增圖書的名字:");
          String addBook = sc.next();
          boolean isAdd = false;//false:不能添加圖書  true:可以添加圖書
          //遍歷數(shù)組,查找新增圖書的位置
          for(int i =1;i<bookNames.length;i++){
            //數(shù)組沒滿,可以新增圖書
            if(bookNames[i] == null){
              isAdd = true;
              bookNames[i] = addBook;
              System.out.println("新增圖書成功?。。?);
              break;
            }else{
              isAdd = false;
            }
          }
          //循環(huán)遍歷輸出數(shù)組內(nèi)圖書信息
          for(int i = 0;i<bookNames.length;i++){
            //如果為空,不輸出
            if(bookNames[i] != null){
              String state = (states[i]==0)?"可借閱":"已借出"; //把借閱狀態(tài)的0 1 變成易看的“可借閱 已借出”
              String borrowCount = borrowCounts[i]+"次";
              String borrowDate = borrowDates[i] + "日";
              System.out.println((i+1)+"\t\t"+bookNames[i]+"\t\t"+state+"\t\t"+
            borrowCount+"\t\t"+borrowDate);
            }
          }
          if(!isAdd){
            System.out.println("對(duì)不起,圖書已滿,不能新增!");
            break;
          }
          break;
        case 2:
          System.out.println("2.查看圖書");
          System.out.println("序號(hào)"+"\t\t\t"+"書名"+"\t\t\t"+"借閱狀態(tài)"+"\t\t"+"借閱次數(shù)"+
          "\t\t"+"借閱日期");
          //循環(huán)遍歷輸出數(shù)組內(nèi)圖書信息
          for(int i = 0;i<bookNames.length;i++){
            //如果為空,不輸出
            if(bookNames[i] != null){
              String state = (states[i]==0)?"可借閱":"已借出"; //把借閱狀態(tài)的0 1 變成易看的“可借閱 已借出”
              String borrowCount = borrowCounts[i]+"次";
              String borrowDate = borrowDates[i] + "日";
              System.out.println((i+1)+"\t\t"+bookNames[i]+"\t\t"+state+"\t\t"+
            borrowCount+"\t\t"+borrowDate);
            }
          }
          break;
        case 3:
          System.out.println("3.借閱圖書");
          System.out.print("請(qǐng)輸入您要借閱圖書的名字:");
          String borrowName = sc.next();
          boolean isBorrow = false;//true:能借閱
          for(int i = 0;i<bookNames.length;i++){
            //如果可以找到書,且書的狀態(tài)是可借閱,就可以借閱
            if(bookNames[i] != null && bookNames[i].equals(borrowName) && states[i] == 0){
              isBorrow = true;
              //輸入借閱日期
              System.out.print("請(qǐng)輸入借閱的日期:");
              int borrowRiQi = sc.nextInt();
              //判斷輸入的借閱日期是否合法
              while(borrowRiQi < 1 || borrowRiQi > 31){
                System.out.print("輸入有誤,重新輸入:");
                borrowRiQi = sc.nextInt();
              }
              System.out.println("借閱成功?。。?);
              //更改借閱日期
              borrowDates[i] = borrowRiQi;
              //更新借閱狀態(tài)
              states[i] = 1;
              //更新借閱次數(shù)
              borrowCounts[i]++;
              break;
            }else if(bookNames[i] != null && bookNames[i].equals(borrowName) && states[i] == 1){
              //如果可以找到書,且書的狀態(tài)是已借出,不能借閱
              isBorrow = true;
              System.out.println("書已經(jīng)借出,不能重復(fù)借閱!");
              break;
            //if(bookNames[i] == null)
            //if(!bookNames[i].equals(borrowName))
            }/*else if(bookNames[i] == null){
              isBorrow = false;
              break;
            }*/
          }
          if(!isBorrow){
            //bookNames[i] == null,說明 找不到書
            System.out.println("抱歉,找不到該書?。?!");
            break;
          }
          break;
        case 4:
          System.out.println("4.歸還圖書");
          System.out.print("請(qǐng)輸入您要?dú)w還圖書的名字:");
          String returnName = sc.next();
          boolean isReturn = false;//true:能歸還
          for(int i = 0;i<bookNames.length;i++){
            //if(!bookNames[i].equals(borrowName))
            /*if(bookNames[i] == null){
              //找不到書
              isReturn = false;
              break;
            }else*/
            //如果可以找到書,且書的狀態(tài)是已借出,就可以歸還
            if(bookNames[i]!=null && bookNames[i].equals(returnName) && states[i] == 1){
              isReturn = true;
              //輸入歸還日期
              System.out.print("請(qǐng)輸入歸還的日期:");
              int returnRiQi = sc.nextInt();
              //判斷輸入的歸還日期是否合法
              while(returnRiQi < 1 || returnRiQi > 31 || returnRiQi<borrowDates[i]){
                //輸入的歸還日期不合法
                if(returnRiQi < 1 || returnRiQi > 31){
                  System.out.print("輸入的日期有誤,重新輸入:");
                  returnRiQi = sc.nextInt();
                }else if(returnRiQi<borrowDates[i]){
                  System.out.print("歸還日期必須大于借閱日期,從新輸入:");
                  returnRiQi = sc.nextInt();
                }
              }
              System.out.println("歸還成功?。?!");
              //更新借閱狀態(tài)
              states[i] = 0;
              /*//更新借閱次數(shù)
              borrowCounts[i]++;*/
              break;
            }else if(bookNames[i]!=null && bookNames[i].equals(returnName) && states[i] == 0){
              //如果可以找到書,且書的狀態(tài)是可借閱,不能歸還
              isReturn = true;
              System.out.println("書可借閱,不能歸還!");
              break;
            }
          }
          if(!isReturn){
            //bookNames[i] == null.說明找不到書,不可以歸還
            System.out.println("抱歉,不是本圖書館的書,不用歸還?。?!");
            break;
          }
          break;
        case 5:
          System.out.println("5.刪除圖書");
          System.out.print("請(qǐng)輸入您要?jiǎng)h除圖書的名字:");
          String deleteName = sc.next();
          boolean isDelete = false;//true:能刪 false:不能刪
          for(int i = 0;i<bookNames.length;i++){
            /*//if(!bookNames[i].equals(borrowName))
            if(bookNames[i] == null){
              //找不到書,不能刪
              isDelete = false;
              break;
            }else*/
            if(bookNames[i] != null && bookNames[i].equals(deleteName) && states[i] == 1){
              //如果可以找到書,且書的狀態(tài)是已借出,不能刪除
              isDelete = true;
              System.out.println("書已借出,不能刪除!");
              break;
            }else if(bookNames[i] != null && bookNames[i].equals(deleteName) && states[i] == 0){
              //如果可以找到書,且書的狀態(tài)是可借閱,可以刪除
              isDelete = true;
              //初始化呢index,用來記錄下需要?jiǎng)h除的位置
              int index = -1;
              if(bookNames[i].equals(deleteName)){
                index = i;
              }
              //判斷index是-1還是i
              if(index != -1){
                //index不是-1,說明找到了圖書,可以刪除
                for(i = index;i<bookNames.length-1;i++){
                  //從下標(biāo)index1開始,后面的整體向前移一位
                  bookNames[i] = bookNames[i+1];
                  borrowDates[i] = borrowDates[i+1];
                  borrowCounts[i] = borrowCounts[i+1];
                  states[i] = states[i+1];

                  //最后一位置空
                  bookNames[bookNames.length-1] = null;
                  borrowDates[bookNames.length-1] = 0;
                  borrowCounts[bookNames.length-1] = 0;
                  states[bookNames.length-1] = 0;//0:可借閱 1:已借出
                }
              }
              System.out.println("刪除圖書成功!");
              break;
            }
          }
          if(!isDelete){
            //bookNames[i] == null.說明找不到書,不能刪除
            System.out.println("不是本圖書館的書,不能刪除");
            break;
          }
          break;
        case 6:
          flag = false; //退出系統(tǒng)
          break;
        default:
          flag = false; //退出系統(tǒng)
          break;
      }
      if(flag){
        System.out.print("\n輸入0返回:");
        num = sc.nextInt();
      }else{
        break;
      }
    }while(num == 0);
    System.out.println("謝謝使用?。?!");
  }
}

  ps:本人也在學(xué)Java開發(fā),也是剛?cè)腴T不久,所以也有些Java開發(fā)的資料,以及計(jì)算機(jī)相關(guān)的電子書等資料,所以有想要的小伙伴可以多多互動(dòng)哦,一起多交流交流?。?!O(∩_∩)O

以上就是JAVA初級(jí)項(xiàng)目——實(shí)現(xiàn)圖書管理系統(tǒng)的詳細(xì)內(nèi)容,更多關(guān)于JAVA 圖書管理系統(tǒng)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 基于java 線程的幾種狀態(tài)(詳解)

    基于java 線程的幾種狀態(tài)(詳解)

    下面小編就為大家?guī)硪黄趈ava 線程的幾種狀態(tài)(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就想給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • java并發(fā)請(qǐng)求下數(shù)據(jù)插入重復(fù)問題的解決方法

    java并發(fā)請(qǐng)求下數(shù)據(jù)插入重復(fù)問題的解決方法

    現(xiàn)在遇到一個(gè)項(xiàng)目,移動(dòng)設(shè)備存儲(chǔ)數(shù)據(jù),然后一起上傳,那就出現(xiàn)了許多重復(fù)數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于java并發(fā)請(qǐng)求下數(shù)據(jù)插入重復(fù)問題的解決方法,需要的朋友可以參考下
    2021-11-11
  • 在eclipse中中文漢字亂碼的解決方案

    在eclipse中中文漢字亂碼的解決方案

    在本篇文章里小編給大家分享的是關(guān)于在eclipse中中文漢字亂碼的解決方案,有需要的朋友們可以學(xué)習(xí)下。
    2019-12-12
  • 解決SpringMVC項(xiàng)目連接RabbitMQ出錯(cuò)的問題

    解決SpringMVC項(xiàng)目連接RabbitMQ出錯(cuò)的問題

    這篇文章主要介紹了解決SpringMVC項(xiàng)目連接RabbitMQ出錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • 詳解java中的6種單例寫法及優(yōu)缺點(diǎn)

    詳解java中的6種單例寫法及優(yōu)缺點(diǎn)

    在java中,單例有很多種寫法,面試時(shí),手寫代碼環(huán)節(jié),除了寫算法題,有時(shí)候也會(huì)讓手寫單例模式,這里記錄一下單例的幾種寫法和優(yōu)缺點(diǎn)。需要的朋友可以參考下
    2018-11-11
  • 解決IDEA 2020.3 lombok失效問題

    解決IDEA 2020.3 lombok失效問題

    這篇文章主要介紹了IDEA 2020.3 lombok失效問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • HashMap方法之Map.getOrDefault()解讀及案例

    HashMap方法之Map.getOrDefault()解讀及案例

    這篇文章主要介紹了HashMap方法之Map.getOrDefault()解讀及案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 淺談Java 繼承接口同名函數(shù)問題

    淺談Java 繼承接口同名函數(shù)問題

    這篇文章主要介紹了淺談Java 繼承接口同名函數(shù)問題。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • JDK1.7的ConcurrentHashMap源碼解析

    JDK1.7的ConcurrentHashMap源碼解析

    這篇文章主要介紹了JDK1.7的ConcurrentHashMap源碼解析,HashMap是非線程安全的,而HashTable是線程安全的,但是HashTable實(shí)現(xiàn)同步的方法比較暴力,即在所有的方法體上添加synchronized關(guān)鍵字,需要的朋友可以參考下
    2023-12-12
  • MyBatis中SQL片段復(fù)用使用方法詳解

    MyBatis中SQL片段復(fù)用使用方法詳解

    在使用 MyBatis 進(jìn)行數(shù)據(jù)庫操作時(shí),常常會(huì)遇到一些 SQL 語句的部分內(nèi)容重復(fù)出現(xiàn)的情況,比如多個(gè)查詢語句都涉及相同的字段列表,這時(shí),MyBatis 的 SQL 片段復(fù)用功能就派上用場了,接下小編給大家介紹了MyBatis中SQL片段復(fù)用使用方法,需要的朋友可以參考下
    2024-12-12

最新評(píng)論

建宁县| 新干县| 台中市| 文化| 英山县| 舞钢市| 北宁市| 从江县| 南投县| 易门县| 阿坝| 安顺市| 和顺县| 克山县| 涟源市| 青岛市| 桂平市| 辉南县| 苏尼特左旗| 宝丰县| 淄博市| 义马市| 镇平县| 西乌珠穆沁旗| 乌兰察布市| 五指山市| 阆中市| 招远市| 汉阴县| 定结县| 阜宁县| 自贡市| 南涧| 永济市| 常山县| 合水县| 天峨县| 宜君县| 桃园县| 石景山区| 含山县|