java小型图书馆管理系统

java小型图书馆管理系统根据需求,建立了一个BookMgr类,该类为实现小型图书馆的各个需求。为了和用户有一个良好的交互,根据需求且满足要求中的隐藏条件,先命名了交互的菜单函数printMenu1(),代码如下:publicvoidprintMenu1(){          System.out.println(“欢迎使用图书馆管理系统”);          Syst

大家好,又见面了,我是你们的朋友全栈君。



根据需求,建立了一个BookMgr类,该类为实现小型图书馆的各个需求。为了和用户有一个良好的交互,根据需求且满足要求中的隐藏条件,先命名了交互的菜单函数printMenu1(),代码如下:

public void printMenu1(){

           System.out.println(欢迎使用图书馆管理系统);

           System.out.println(“————————————————“);

           System.out.println(“1.新增图书);

           System.out.println(“2.查看图书);

           System.out.println(“3.删除图书);

           System.out.println(“4.借出图书);

           System.out.println(“5.归还图书);

           System.out.println(“6.退       );

           System.out.println(“————————————————“);

           System.out.println(请选择:);

    }

运行结果如下图:

对于图书的存储,因为是小型图书管理系统,需要查找元素和遍历元素,对于ArrayList,利用ArrayList集合类进行小型数据库搭建,在BookMgr类中,为数据库创建一个ArrayList对象,来进行图书的存储;而对于每本图书信息的存储,建立了一个Book类,该类有关于图书的名称(name)、图书借出状态(state)、图书借出日期(date)和图书借出次数(count),以及相关的构造方法:

public class Book {

    private String name; 

    private int state; 

    private String date;

    private int count;

     

    public Book(String name,int state, String date, int count) 

    {
 

        this.name = name; 

        this.state = state; 

        this.date = date;

        this.count = count;

    } 

     

    public String getName() {
 

        return name; 

    } 

    public int getState() {
 

        return state; 

    } 

    public String getDate() {
 

        return date; 

    } 

    public int getCount() {
 

        return count; 

    } 

    //获取各个字段的值 

     

     

    public void setName(String name) {
 

        this.name = name; 

       

    } 

    public void setState(int state) {
 

        this.state = state; 

       

    } 

    public void setDate(String date) {
 

        this.date = date; 

       

    } 

    public void setCount(int count) {
 

        this.count = count; 

       

    } 

}

接下来进行数据库的构建,创建一个ArrayList集合类的对象,并加以Book泛型:

代码如下:

ArrayList<Book> bookList = new ArrayList<Book>();

listBookMgr的一个属性,在实现需求之前,则需初始话图书数据库,进行Initial()函数的编写:

代码如下:

public void initial(){

       //初始化三本书

       Book book1 = new Book(“java程序设计,0,“2017-12-13”,1);

       Book book2 = new Book(红楼梦,1,“”,15);

       Book book3 = new Book(“C语言程序设计,1,“”,23);

       bookList.add(book1);

       bookList.add(book2);

       bookList.add(book3);

    }

 

数据库构建之后,对于各个需求的功能函数将在下面进行编写:

  1. 新增图书(addBook)

        在图书数据库进行图书的新增的时候,要与图书数据库连接;首先要获取用户进行增加图书的名字,然后根据名字进行图书的增加,与此同时,如果图书库里含有该书(忽略版本),则不需要进行添加,反馈该书存在的相关信息,并结束此次图书的添加;若没有该图书则进行添加该图书,则添加该图书,并对该图书的信息做初始化。在此,应在获取图书名称之后,对图书库进行遍历,来判断图书库是否有该书籍。

    代码如下:

    public void add(){

           boolean flag = false;

           System.out.println(“—->新增图书\n”);

           System.out.println(请输入图书名称:);

           Scanner input = new Scanner(System.in);

           String books = input.next();

           for(int i=0;i<bookList.size();i++){

               if(bookList.get(i).getName().equalsIgnoreCase(books)){

                  System.out.println(该图书已存在,不需要在增加!);

                  flag = true;

                  break;

               }

           }

           if(!flag){

               Book book = new Book(books,1,“”,23);

               bookList.add(book);

               System.out.println(新增<<“+books+“>>,成功!);

           }

           System.out.println(“*************************************************”);

           returnMain();

        }

    执行结果如下:

  2. 查看图书(search ()

        在进行图书的查看时,首先连接图书数据库,然后对图书信息进行列表显示,根据Bookstate属性,进行图书借出状态显示,date属性进行图书借出日期的显示.

    代码如下:

    public void search(){

           System.out.println(“—->查看图书\n”);

           System.out.println(序号\t状态\t名称\t\t\t借出日期);

           for(int i=0;i<bookList.size();i++){

               if(bookList.get(i).getState()==0){

                  System.out.println((i+1)+“\t已借出\t”+“<<“+bookList.get(i).getName()+“>>\t\t”

                    +bookList.get(i).getDate());

               }else if(bookList.get(i).getState()==1){

                  System.out.println((i+1)+“\t可借\t”+“<<“+bookList.get(i).getName()+“>>\t\t”);

               }

           }

           System.out.println(“*************************************************”);

           returnMain();

        }

    执行结果如下:

  3. 删除图书(deleteBook()

        进行图书库删除图书的操作,首先连接图书数据库;获取用户所需要删除图书的名称;然后利用ArrayListsize()函数,对图书库库存量进行计算;若为0,则无法删除;若找到,并且该书并没有被借出,则用ArrayListremove()函数进行图书的删除,若借出,则删除失败;否则,所删除书不存在。

    代码如下:

    public void delete(){

           boolean flag = false;

           System.out.println(“—->删除图书\n”);

           System.out.println(请输入图书名称:);

           Scanner input = new Scanner(System.in);

           String name = input.next();

           for(int i=0;i<bookList.size();i++){

               if(bookList.get(i).getName()!=null

                      && bookList.get(i).getName().equalsIgnoreCase(name)

                      && bookList.get(i).getState()==1){

                  bookList.remove(i);

                  System.out.println(图书删除成功,欢迎下次使用!);

                  flag = true;

                  break;

               }else if(bookList.get(i).getName()!=null

                   && bookList.get(i).getName().equalsIgnoreCase(name)

                   && bookList.get(i).getState()==0){

                  System.out.println(此图书被借出,不能进行删除!);

                  flag = true;

                  break;

               }

            }

           if(!flag){

               System.out.println(没有录入此图书,不能进行删除!);

           }  

           System.out.println(“*************************************************”);

           returnMain();

          

        }

    执行结果如下:

     

  4. 借出图书(lend ())

        进行借出图书,首先连接图书数据库,获取用户所要借出的图书名称(wantname);进行图书数据库的遍历,若找到用户所借的图书,若该图书并没有被借出,则反馈图书借出成功并初始化该书借出状态与借出日期和借出次数,否则反馈已借出;否则,反馈用户所借图书不存在。

    代码如下:

    public void lend(){

           boolean flag = false;

           System.out.println(“—->借出图书\n”);

           Scanner input = new Scanner(System.in);

           System.out.println(请输入图书名称:);

           String wantname = input.next();

           for(int i=0;i<bookList.size();i++){

               if(bookList.get(i).getName()==null){

                  System.out.println(没有找到该图书!);

                  break;

               }else if( bookList.get(i).getName().equals(wantname)

                      && bookList.get(i).getState()==1){

                  bookList.get(i).setState(0);

                  System.out.println(请输入借书日期(年日):);

                  String date=input.next();

                  bookList.get(i).setDate(date);

                  System.out.println(图书借出成功,欢迎下次使用!);

                  break;

               }else if( bookList.get(i).getName().equalsIgnoreCase(wantname)

                   && bookList.get(i).getState()==0){

                  System.out.println(+wantname+》已被借出,抱歉!);

                  break;

               }

            }

           System.out.println(“*************************************************”);

           returnMain();

        }

    执行结果如下:

  5. 归还图书及计算借书时间和租金(returnBook()long charge()

        归还图书与借出图书的思路一致,归还后还要计算租金,归还图书时候还要计算租书时间,这里利用了将字符串转化为数组的思想,然后将数组相计算。

    代码如下:

    public void returnBook(){

           boolean flag = false;

           Scanner input = new Scanner(System.in);

           long loan=0;

           System.out.println(“—->归还图书\n”);

           System.out.println(请输入图书名称:);

           String wantname = input.next();

           for(int i=0;i<bookList.size();i++){

               if(bookList.get(i).getName()==null){

                  System.out.println(没有找到该图书!);

                  break;

               }else if(bookList.get(i).getName().equalsIgnoreCase(wantname)

                      &&bookList.get(i).getState()==0){

               bookList.get(i).setState(1);

               System.out.println(请输入日期(年日):);

               String returndate = input.next();

               //计算租金

                   loan = charge(bookList.get(i).getDate(),returndate);

                   System.out.println(借出日期为:+bookList.get(i).getDate());

                   System.out.println(归还日期为:+returndate);

                   System.out.println(¥应付租金(元)¥:+loan/2);

                   System.out.println(请按照上面金额付款:);

                   double s = input.nextDouble();

                   if(s==(loan/2)){

                   System.out.println(“\n归还<<“+wantname+“>>成功!);

                   }

                   bookList.get(i).setCount(bookList.get(i).getCount()+1); 

                   break;

               }else if(bookList.get(i).getName().equalsIgnoreCase(wantname)&&bookList.get(i).getState()==1){

               System.out.println(+wantname+未被借出,无法进行归还操作!);

               break;

               }

           }

           System.out.println(“*************************************************”);

           returnMain();

        }

        public long charge(String dstr1,String dstr2){

           long charge=0;

           SimpleDateFormat sd = new SimpleDateFormat(“yyyy-mm-dd”);

           try{

               Date d1 = sd.parse(dstr1);

               Date d2 = sd.parse(dstr2);

               charge = (d2.getTime()-d1.getTime())/(24*60*60*1000);

           }catch(ParseException e){

               e.printStackTrace();

           }

           return charge;

        }

    最后建立一个test类:

    public class Test {

     

        public static void main(String[] args) {

           BookMgr test = new BookMgr();

           test.initial();

           test.bookMgr();

        }

    }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156890.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python怎么安装matplotlib.pyplot_python安装matplotlib模块

    python怎么安装matplotlib.pyplot_python安装matplotlib模块总结经验,前排感谢CSDN大神…一、在Pycharm中安装matplotlib1、打开AnacondaPrompt,输入pipinstallmatplotlib输入pipinstallmatplotlib==3.3.0限制下载的版本为3.3.0.这是为了防止版本过新,之后在PyCharm运行时出现问题。2、打开PyCharm(1)依次点击File-Settings-…

    2022年8月25日
    10
  • 用c#实现简单的登录和注册功能

    用c#实现简单的登录和注册功能这两天c#大作业要求做一个简单的通讯录系统,我就先做了登录和注册的功能,在网上看了一些代码,自己再做,终于做出来了。做的不是很美观,但是可以简单实现。首先用sqlserver建表。我建了一个名为user_info的表,添加username和passdword两个字段。创建登录页面,改了一些控件的名称,效果如下图:登录界面代码如下:privatevoidbtn_Login…

    2022年8月22日
    4
  • bios设置pcie通道_PCI LAN

    bios设置pcie通道_PCI LANPCIewithlspciPCIeWidth#lspci-s81:00.0-vvv|grepWidthLnkCap:Port#0,Speed8GT/s,Widthx16,ASPMnotsupported,ExitLatencyL0sunlimited,L1unlimited…

    2022年9月9日
    4
  • UNIX命令

    UNIX命令 一、UNIX命令格式1、UNIX命令提示符   在命令行下,操作系统会显示一提示符,提示用户在此提示符后可以输入一行命令。不同的Shell有不同的缺省提示符:       BShell和KShell的缺省提示符为”$”;       CShell的缺省提示符为”%”;       但当以root用户登录时,系统提示符统一缺省为”#”。用户可以更改自己的缺省Shell和提

    2022年6月1日
    129
  • vue混合app开发框架_mpvue框架

    vue混合app开发框架_mpvue框架1.npm安装npminstallflyio–save.2.src下新建utils/request.js文件importFlyfrom’flyio/dist/npm/wx’constfly=newFly()consthost=’https://rmall.ukelink.net’//添加请求拦截器fly.interceptors.request.use…

    2022年9月8日
    3
  • 回归分析数学建模_matlab 回归分析

    回归分析数学建模_matlab 回归分析一元线性回归变量之间的关系大致可分为两大类:确定性的关系:可以用精确的函数关系来表达。例如矩形面积S与边长a,b的关系。非确定性的关系:变量之间既互相联系但又不是完全确定的关系,称为相关关系。例如人的身高与体重、农作物产量与降雨量等的关系。从数量的角度去研究这种非确定性的关系,是数理统计的一个任务.包括通过观察和试验数据去判断变量之间有无关系,对其关系大小作数量上的估计、推断和预测,等等.回归分析就是研究相关关系的一种重要的数理统计方法.一元正态线性回归模型只有两个变量的回归分析,称

    2025年6月12日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号