JAVA图书管理系统

        图书管理系统是对"类和对象","继承和多态","抽象类和接口"以及对数组的进一步总结,涉及到了很多方面的知识,因此非常重要,要好好理解。

        对于这个程序,我们首先要创建一个新的JAVA文件,并创建出主函数。其次,我们就要开始思考这个图书管理系统所涉及的对象有哪些。我们首先可以想到 ——书,想到书,我们也会想到需要书架来摆放书。所以,我们可以先创建一个"book"这样一个包,里面可以用来存放书和书架。

                                                 

        在Book这个类中,我们可以将书这个类定义出来,定义书名,作者,价格,类型,是否被借出等属性

        同时,生成构造方法,"toString",以及"Getter and Setter"。

构造方法中,省略了"isBorrowed",是因为其默认为"false"(即未借出)

         Book类就定义好了,这样我们就可以在BookList类中将我们想要存放的书定义出来,我们首先先定义一个数组Book[],用来存放书籍,并将其实例化确定数组的大小。同时创建"usedSize"用来读取当前Book[]数组中的图书数量。

                               

         其次,我们同样创建出BookList的构造方法,并初始化:

        由于许多功能的实现都离不开usedSize,因此我们把usedSize的Getter and Setter创建出来

 

        这样我们就得到了一个简易的图书室,里面放了四本书。

        除了书籍之外,我们还需要有管理者和借阅书籍的普通用户。因此我们再创建一个user类,

由于管理者和普通用户存在一些相同点,所以我们可以创建一个父类,将二者的共同点放在父类中,实现代码的复用。

                                             

首先可以考虑的相同点有姓名,性别等,所以我们可以先在User父类中,将这些相同点定义出来,并添加其构造方法。

                     

        因为是继承的关系,所以子类需要重写父类的构造方法。

         有了用户那么必定存在各种操作,因此,我们创建一个"operation"包,将各种操作类放在里面,

                                             

         由于这些操作,操作的对象都是BookList,因此我们可以写一个接口,里面写一个抽象方法"work()",再通过接口,重写抽象方法。

重写的方法,例如AddOperation:

......

        这样我们的大致框架就搭建出来了。

        现在应该在主函数中将这些对象实现交互,对于没有实现的内容进行填充。

         想要进入程序中,首先我们需要登录,我们创建一个简单的登录方法。通过Scanner进行输入,再通过choice的选择,实例化出user的类型。

         在实例化出不同的对象后,这些对象也有单独的菜单可供选择,例如管理人员可以删除,新增......普通用户可以借阅,归还......

        因此各用户类中,创建一个menu()函数。由于二者都存在menu()函数,所以可以在父类user中写一个抽象方法menu(),再重写父类的抽象方法。

 

 

         存在这些功能后,用户必定会选择其中一个功能进行实现,所以存在选择:

             

         选择后,将选择的值返回到menu()方法,在通过while循环实现反复执行:

        后面需要做的就是,真正的实现,将各个操作放入用户类中, 我们采取在User父类中创建一个数组IOPeration[],因为各个操作都是使用了IOPeration接口,所以使用IOPeration类型的数组。

 

        其后在子类的构造方法中,定义:

 

        为了实现这些功能我们在User父类中编写了一个doOperation的方法,通过刚才的数组下标的方式访问不同的work()方法,实现了多态。 

         再在主函数中调用此方法

        具体运行实现一下: 

        这样完整的框架结构就搭建完成了,接下来就是各个操作的实现了。

=========================================================================

        我们先来实现最简单的

        一、退出系统

         

        只需要简单的一步,就可以实现退出系统,但我们同样可以将其内存释放后再退出系统,若要释放其内存则我们需要创建一个setBooks()方法,用于将每本书都设置为空。在BookList中创建,我们同时创建getBooks():

 

具体的实现:

 

 二、查找图书

先输入查找的书名,再遍历,得到每一本书,再将遍历到的每一本书和输入的书名进行比对,通过.equal(),如果找到了就显示信息,并return出来,如果遍历完都没有找到,则退出循环后输出"没有这本书"。

 三、显示图书

显示图书就是遍历得到一个下标就打印一次,最终完成全部书籍的打印

 

四、新增图书

新增就是先输入新增图书的信息,然后将这些信息用来实例化出一个Book book对象,将这个对象放在currentSize为下标的位置上,最后再将currentSize+1即可。

注意:发现一个问题就是要将nextLine写完了再写nextInt,如果插在中间则无法进行输入。

 

 五、删除图书

删除图书的具体流程就是通过输入,确定你要删除的图书,然后再遍历数组,查找是否存在你要删除的书籍,如果没有就直接跳出,并返回,如果有,则将变量index设置为当前的i值,说明要删除的书籍就是i下标的元素,再通过覆盖的方法,通过setBooks和getBooks用后者将前者覆盖,最后将空间-1即可。

六、借阅图书

借阅图书我们同样先输入书名进行遍历,如果找到后则将book.setBorrowed设为true。

 

 我们这里可以将Book中的to String函数稍作修改,使其可以用中文显示借阅的状态

 

 

 

 七、归还图书

归还图书和借阅图书几乎没有差别,就是将true改为false即可

 

         图书系统就完成了。

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值