zoukankan      html  css  js  c++  java
  • 图书管理系统 源代码 Java初级小项目

      今天博主再给大家分享一个小项目:MiNi图书管理系统。用的是Java语言开发的,代码不多,大概260行左右吧,系统是实现图书的新增图书、删除图书、借阅图书、归还图书、查看图书等简单的功能(后附源代码)!

      首先展示一下运行界面效果图:运行代码后,会在控制台显示如下界面:

       然后让用户选择,如果用户不小心或者误输入了错误的数,会再次让用户进行输入。

      当用户输入2后,可以查看图书,会显示已有的图书:

    包括图书书名、借阅状态、借阅次数、借阅日期等信息。

       当用户输入1后,可以新增图书,再次让用户输入新增的图书名字,这里博主用mybook,效果如下:

       当用户输入3后,可以借阅图书。让用户再次输入借阅的图书名,如果输入的名字没在图书馆,则不可以借阅;如果在馆,且状态是已借出,也不能再次借阅;如果在馆,且状态是可借阅,则可以进行借阅。

       当用户输入4后,可以归还图书。再次让用户输入归还的图书名,同理,如果图书馆找不到该名字,提示用户不是本图书馆的书,不用归还;如果找到该书的名字,且状态是可借阅的,也不能归还;如果找到该书,且状态是已借出,则可以进行图书的归还。同时,还要让用户输入归还的日期,并对归还的日期进行判断,如果日期小于借阅的日期,则提示用户归还日期必须大于借阅日期,让用户再次输入,输入成功后,则显示归还成功。

       当用户输入5后,可以进行删除图书的操作。如果该馆找不到用户输入的书名,则提示用户不是本图书馆的书,不用归还;如果找到,且状态是已借出,则不能归还;如果找到该书,且书的状态是可借阅的,则可以进行删除图书的操作。

       当用户输入6后,就退出系统。

       源代码如下:

      1 package cn.kgc.sg.MiTuSys;
      2 
      3 import java.util.Scanner;
      4 
      5 public class MiNiBookMgrSys {
      6     public static void main(String[] args) {
      7         Scanner sc = new Scanner(System.in);
      8         //初始化书本信息
      9         String[] bookNames = new String[6];
     10         int[] borrowDates = new int[6];
     11         int[] borrowCounts = new int[6];
     12         int[] states = new int[6];
     13         
     14         //初始化三本书
     15         bookNames[0] = "安徒生童话";
     16         borrowDates[0] = 15;
     17         borrowCounts[0] = 16;
     18         states[0] = 0;//0:可借阅  1:已借出
     19         
     20         bookNames[1] = "格林童话";
     21         borrowDates[1] = 0;
     22         borrowCounts[1] = 0;
     23         states[1] = 1;//0:可借阅  1:已借出
     24         
     25         bookNames[2] = "Java开发";
     26         borrowDates[2] = 0;
     27         borrowCounts[2] = 0;
     28         states[2] = 0;//0:可借阅  1:已借出
     29         
     30         int num = -1;//初始化用户输入的数字
     31         boolean flag = true;//true:不退出系统  false:退出系统
     32         do{
     33             System.out.println("************欢迎使用MiNi图书管理系统**********");
     34             System.out.println("					1.新增图书");
     35             System.out.println("					2.查看图书");
     36             System.out.println("					3.借阅图书");
     37             System.out.println("					4.归还图书");
     38             System.out.println("					5.删除图书");
     39             System.out.println("					6.退出系统");
     40             
     41             System.out.print("
    请选择:");
     42             int choose = sc.nextInt();
     43             while(choose<0 || choose>6){
     44                 System.out.print("输入有误,重新输入:");
     45                 choose = sc.nextInt();
     46             }
     47             switch(choose){
     48                 case 1:    
     49                     System.out.println("************1.新增图书**********");
     50                     System.out.print("请输入新增图书的名字:");
     51                     String addBook = sc.next();
     52                     boolean isAdd = false;//false:不能添加图书   true:可以添加图书
     53                     //遍历数组,查找新增图书的位置
     54                     for(int i =1;i<bookNames.length;i++){
     55                         //数组没满,可以新增图书
     56                         if(bookNames[i] == null){
     57                             isAdd = true;
     58                             bookNames[i] = addBook;
     59                             System.out.println("新增图书成功!!!");
     60                             break;
     61                         }else{
     62                             isAdd = false;
     63                         }
     64                     }
     65                     //循环遍历输出数组内图书信息
     66                     for(int i = 0;i<bookNames.length;i++){
     67                         //如果为空,不输出
     68                         if(bookNames[i] != null){
     69                             String state = (states[i]==0)?"可借阅":"已借出";  //把借阅状态的0 1 变成易看的“可借阅 已借出”
     70                             String borrowCount = borrowCounts[i]+"次";
     71                             String borrowDate = borrowDates[i] + "日";
     72                             System.out.println((i+1)+"		"+bookNames[i]+"		"+state+"		"+
     73                         borrowCount+"		"+borrowDate);
     74                         }
     75                     }
     76                     if(!isAdd){
     77                         System.out.println("对不起,图书已满,不能新增!");
     78                         break;
     79                     }
     80                     break;
     81                 case 2:    
     82                     System.out.println("2.查看图书");
     83                     System.out.println("序号"+"			"+"书名"+"			"+"借阅状态"+"		"+"借阅次数"+
     84                     "		"+"借阅日期");
     85                     //循环遍历输出数组内图书信息
     86                     for(int i = 0;i<bookNames.length;i++){
     87                         //如果为空,不输出
     88                         if(bookNames[i] != null){
     89                             String state = (states[i]==0)?"可借阅":"已借出";  //把借阅状态的0 1 变成易看的“可借阅 已借出”
     90                             String borrowCount = borrowCounts[i]+"次";
     91                             String borrowDate = borrowDates[i] + "日";
     92                             System.out.println((i+1)+"		"+bookNames[i]+"		"+state+"		"+
     93                         borrowCount+"		"+borrowDate);
     94                         }
     95                     }
     96                     break;
     97                 case 3:    
     98                     System.out.println("3.借阅图书");
     99                     System.out.print("请输入您要借阅图书的名字:");
    100                     String borrowName = sc.next();
    101                     boolean isBorrow = false;//true:能借阅
    102                     for(int i = 0;i<bookNames.length;i++){
    103                         //如果可以找到书,且书的状态是可借阅,就可以借阅
    104                         if(bookNames[i] != null && bookNames[i].equals(borrowName) && states[i] == 0){
    105                             isBorrow = true;
    106                             //输入借阅日期
    107                             System.out.print("请输入借阅的日期:");
    108                             int borrowRiQi = sc.nextInt();
    109                             //判断输入的借阅日期是否合法
    110                             while(borrowRiQi < 1 || borrowRiQi > 31){
    111                                 System.out.print("输入有误,重新输入:");
    112                                 borrowRiQi = sc.nextInt();
    113                             }
    114                             System.out.println("借阅成功!!!");
    115                             //更改借阅日期
    116                             borrowDates[i] = borrowRiQi;
    117                             //更新借阅状态
    118                             states[i] = 1;
    119                             //更新借阅次数
    120                             borrowCounts[i]++;
    121                             break;
    122                         }else if(bookNames[i] != null && bookNames[i].equals(borrowName) && states[i] == 1){
    123                             //如果可以找到书,且书的状态是已借出,不能借阅
    124                             isBorrow = true;
    125                             System.out.println("书已经借出,不能重复借阅!");
    126                             break;
    127                         //if(bookNames[i] == null)
    128                         //if(!bookNames[i].equals(borrowName))
    129                         }/*else if(bookNames[i] == null){
    130                             isBorrow = false;
    131                             break;
    132                         }*/
    133                     }
    134                     if(!isBorrow){
    135                         //bookNames[i] == null,说明 找不到书
    136                         System.out.println("抱歉,找不到该书!!!");
    137                         break;
    138                     }
    139                     break;
    140                 case 4:    
    141                     System.out.println("4.归还图书");
    142                     System.out.print("请输入您要归还图书的名字:");
    143                     String returnName = sc.next();
    144                     boolean isReturn = false;//true:能归还
    145                     for(int i = 0;i<bookNames.length;i++){
    146                         //if(!bookNames[i].equals(borrowName))
    147                         /*if(bookNames[i] == null){
    148                             //找不到书
    149                             isReturn = false;
    150                             break;
    151                         }else*/ 
    152                         //如果可以找到书,且书的状态是已借出,就可以归还
    153                         if(bookNames[i]!=null && bookNames[i].equals(returnName) && states[i] == 1){
    154                             isReturn = true;
    155                             //输入归还日期
    156                             System.out.print("请输入归还的日期:");
    157                             int returnRiQi = sc.nextInt();
    158                             //判断输入的归还日期是否合法
    159                             while(returnRiQi < 1 || returnRiQi > 31 || returnRiQi<borrowDates[i]){
    160                                 //输入的归还日期不合法
    161                                 if(returnRiQi < 1 || returnRiQi > 31){
    162                                     System.out.print("输入的日期有误,重新输入:");
    163                                     returnRiQi = sc.nextInt();
    164                                 }else if(returnRiQi<borrowDates[i]){
    165                                     System.out.print("归还日期必须大于借阅日期,从新输入:");
    166                                     returnRiQi = sc.nextInt();
    167                                 }
    168                             }
    169                             System.out.println("归还成功!!!");
    170                             //更新借阅状态
    171                             states[i] = 0;
    172                             /*//更新借阅次数
    173                             borrowCounts[i]++;*/
    174                             break;
    175                         }else if(bookNames[i]!=null && bookNames[i].equals(returnName) && states[i] == 0){
    176                             //如果可以找到书,且书的状态是可借阅,不能归还
    177                             isReturn = true;
    178                             System.out.println("书可借阅,不能归还!");
    179                             break;
    180                         }
    181                     }
    182                     if(!isReturn){
    183                         //bookNames[i] == null.说明找不到书,不可以归还
    184                         System.out.println("抱歉,不是本图书馆的书,不用归还!!!");
    185                         break;
    186                     }
    187                     break;
    188                 case 5:    
    189                     System.out.println("5.删除图书");
    190                     System.out.print("请输入您要删除图书的名字:");
    191                     String deleteName = sc.next();
    192                     boolean isDelete = false;//true:能删  false:不能删
    193                     for(int i = 0;i<bookNames.length;i++){
    194                         /*//if(!bookNames[i].equals(borrowName))
    195                         if(bookNames[i] == null){
    196                             //找不到书,不能删
    197                             isDelete = false;
    198                             break;
    199                         }else*/ 
    200                         if(bookNames[i] != null && bookNames[i].equals(deleteName) && states[i] == 1){
    201                             //如果可以找到书,且书的状态是已借出,不能删除
    202                             isDelete = true;
    203                             System.out.println("书已借出,不能删除!");
    204                             break;
    205                         }else if(bookNames[i] != null && bookNames[i].equals(deleteName) && states[i] == 0){
    206                             //如果可以找到书,且书的状态是可借阅,可以删除
    207                             isDelete = true;
    208                             //初始化呢index,用来记录下需要删除的位置
    209                             int index = -1;
    210                             if(bookNames[i].equals(deleteName)){
    211                                 index = i;
    212                             }
    213                             //判断index是-1还是i
    214                             if(index != -1){
    215                                 //index不是-1,说明找到了图书,可以删除
    216                                 for(i = index;i<bookNames.length-1;i++){
    217                                     //从下标index1开始,后面的整体向前移一位
    218                                     bookNames[i] = bookNames[i+1];
    219                                     borrowDates[i] = borrowDates[i+1];
    220                                     borrowCounts[i] = borrowCounts[i+1];
    221                                     states[i] = states[i+1];
    222                                     
    223                                     //最后一位置空
    224                                     bookNames[bookNames.length-1] = null;
    225                                     borrowDates[bookNames.length-1] = 0;
    226                                     borrowCounts[bookNames.length-1] = 0;
    227                                     states[bookNames.length-1] = 0;//0:可借阅  1:已借出
    228                                 }
    229                             }
    230                             System.out.println("删除图书成功!");
    231                             break;
    232                         }
    233                     }
    234                     if(!isDelete){
    235                         //bookNames[i] == null.说明找不到书,不能删除
    236                         System.out.println("不是本图书馆的书,不能删除");
    237                         break;
    238                     }
    239                     break;
    240                 case 6:    
    241                     flag = false; //退出系统
    242                     break;
    243                 default:
    244                     flag = false; //退出系统
    245                     break;
    246             }
    247             if(flag){
    248                 System.out.print("
    输入0返回:");
    249                 num = sc.nextInt();    
    250             }else{
    251                 break;
    252             }    
    253         }while(num == 0);
    254         System.out.println("谢谢使用!!!");
    255     }
    256 }

      ps:本人也在学Java开发,也是刚入门不久,所以也有些Java开发的资料,以及计算机相关的电子书等资料,所以有想要的小伙伴可以多多互动哦,一起多交流交流!!!O(∩_∩)O

  • 相关阅读:
    Python学习进程(1)Python简介
    OpenGL学习进程(10)第七课:四边形绘制与动画基础
    OpenGL学习进程(9)在3D空间的绘制实例
    GO语言结构体
    GO指针
    GO值类型与引用类型
    GO函数
    GO map
    GO切片
    GO数组
  • 原文地址:https://www.cnblogs.com/sunlll666/p/13170035.html
Copyright © 2011-2022 走看看