1. 首先确定好需要建立的包与类,项目的主要使用者主要有两类人(普通使用者、管理员)。
2.普通使用者、管理员这两类都可以继承User的对象以及方法,故User可作为父类,而NormalUser与AdminUser可作为子类。
3. 接着我们根据需求者给出的要求来编写Book部分(类型一律使用private体现封装性)
4. 紧接着我们利用快捷键创建所有对象的get与set代码和toString代码
5. 紧接着我们创建一个类来充当书架,以数组为书架来存放书,并设置一个书目计数器,并在构造代码块运用构造方法实例化预存三本书,并将计数器设置为三。
6. 之后我们就要去考虑怎样操作实例化数组中的数了,首先我们设置一个包,并添加用来添加数、查找书的类并写入方法,设置一个接口备用。
7. 以此类推,依次建立好新增、借阅、删除、显示、退出、查找、接口、归还。
8.接下来在主类main中进行登陆界面的编写
9.接下来通过上面代码分别编写AdminUser与NormalUser的登陆界面。
10. 接下来通过user调用menu来达到能够进入菜单的目的(注意此时的User项目里还没有menu方法,需要创建一个但是只是通过它来进入AdminUser与NormalUser的menu故只需抽象类即可)
11.接下来在Main中调用你的选择。
现在要做的是把成员与各种功能连接在一起(也是这个项目中最困难的部分):
12.我们发现无论是 AdminUser还是NormalUser都连接了IOPeration接口,所以我们可以以IOPeration接口创建一个数组将各种功能都存到数组中去。
13.接下来在AdminUser与NormalUser中分别实现接口数组并将各种功能组电脑里面去。
14.现在图书馆的各种功能都存到了接口数组中,现在我们只需要写一个操作接口数组的方法就可以了。
解释:13中设置的数组在14得到了实现,将choice填入接口数组ioPerations的数组下标中,而想用应用方法必须采用work的bookList传参。
15.之后将main中的choice与booklist传入user.doOperation注意设置循环。
16.接下来完善以下findbook类
17. 接下来完善Add功能:首先获取到书的位置,再把书存放到指定位置,最后把存放书的数量加一。
18.如果再此时运行程序我们会发现新增图书功能的类型输入部分会出现问题
这主要是因为:
System.out.println("请输入你要新增图书的价格:"); int price=scanner.nextInt(); System.out.println("请输入你要新增图书的类型:"); String type=scanner.nextLine();
当nextInt()与nextLine()同时存在时,nextLine()会将输入nextInt()后的回车录入到nextLine()中,为了避免这种情况,需要在录入价格后面增加一个nextLine()录入huiche。
然后新增图书就完成了。
19.接下来编写Display功能(可以直接复制查找图书部分)
20.退出系统(直接调用System.exit(0))
21.最后就是删除图书(删除图书需要实现两步:1.查找到书库里是否有这本书,在哪里,下标是多少。2.将后面书的下标与内容覆盖你要删除的书的下标以及内容,实现书的删除)
index是数组下标,将输入的书名和书库中的书名进行依次比较,如果一致,就将找到数组下标i覆盖至index,注意:进行覆盖时i<=index-1,要注意不要让数组越界。
注意一个问题:如上图,这里如果想要删掉水浒传,让0X5覆盖至0X3,最后会有两个内存的0X7指向Java。
这里为了防止之后还有引用第二个0X7位置上的地址,我们需要把它设置为null
这样就彻底删除了。
22.接下来就是Normal用户的借阅功能了(在删除图书的功能上进行下幅度修改)
23.下面再完善一下归还图书(基本照抄借阅图书)
24.最后运行后发现代码输出不太合理进行完善即可运行。