面向对象网站开发,哪个网站做室内效果图厉害,一人可以申请两个营业执照吗,wordpress调用oss有了前几篇文章关于封装、继承、多态、接口等的介绍#xff0c;想必各位读者对java面向对象的思想有了一定的认识。接下来这篇文章就让我们趁热打铁#xff0c;利用所学知识做一个小项目图书管理系统吧 目录
一、图书类
1、book类
2、bookList类
二、功能实现
1、IOpera… 有了前几篇文章关于封装、继承、多态、接口等的介绍想必各位读者对java面向对象的思想有了一定的认识。接下来这篇文章就让我们趁热打铁利用所学知识做一个小项目图书管理系统吧 目录
一、图书类
1、book类
2、bookList类
二、功能实现
1、IOperation接口
2、查找图书
3、借阅图书
4、归还图书
5、新增图书
6、删除图书
7、显示图书
8、退出系统
三、用户类
四、主函数逻辑实现
总结 一、图书类 图书管理系统顾名思义起码要先有书被管理。因此我们应当先定义好于书相关的类。
1、book类 先定义一下单本书的特性一本书肯定会包含书名、作者、价格等信息我们可以建立一个book类来描述每本书的特性
package book;public class Book {private String name;private String author;private int price;private boolean IsBorrowed;public Book(String name, String author, int price) {this.name name;this.author author;this.price price;}public String getName() {return name;}public boolean isBorrowed() {return IsBorrowed;}public void setBorrowed(boolean borrowed) {this.IsBorrowed borrowed;}Overridepublic String toString() {return name name \ , author author \ , price price (IsBorrowed?, 已借出:, 未借出);}
}2、bookList类 既然要做管理系统那就不可能只处理一本书了我们需要管理的是许多本特性各异的书。那么如何来存储这些信息呢我们可以建立一个列表类来记录我们的图书信息
package book;public class BookList {private Book[] booksnew Book[20];private int userSize;public BookList() {books[0]new Book(海贼王,尾田荣一郎,17);books[1]new Book(火影忍者,尾田荣一郎,19);books[2]new Book(红楼梦,曹雪芹,45);books[3]new Book(西游记,吴承恩,40);books[4]new Book(三国演义,罗贯中,37);this.userSize5;}public int getUserSize() {return userSize;}public void setUserSize(int userSize) {this.userSize userSize;}public boolean isFull(){if(this.userSizebooks.length){return true;}else{return false;}}public Book getBook(int pos){return books[pos];}public void setBook(int pos,Book book){books[pos]book;}
}二、功能实现 已经存储好书本信息后 我们就要明确我们究竟要实现哪些功能 具体实现就由小编来带大家一一介绍吧
1、IOperation接口
为了功能实现的方便我们通过接口来实现各个功能先定义一个接口IOperation
public interface IOperation {void work(BookList bookList);
}
接着就可以通过重写接口中的work方法来实现各个的功能了并且由于多态性我们可以将各种不同功能的接口按顺序放在一个数组里通过数组访问来实现不同功能大大提高了效率。
如果你不知道多态是什么的话可以看看小编之前的文章面向对象三大特性之多态 哦
2、查找图书
public class FindOperatino implements IOperation{Overridepublic void work(BookList bookList) {System.out.println(查找图书………………);System.out.println(请输入你要查找的书名);Scanner in new Scanner(System.in);String booknamein.nextLine();int Size bookList.getUserSize();for(int i0;iSize;i){Book bookbookList.getBook(i);if(book.getName().equals(bookname)){System.out.println(找到了这本书);System.out.println(book);return;}}System.out.println(没有你要找的书);}
} 3、借阅图书
public class BorrowedOperation implements IOperation{Overridepublic void work(BookList bookList) {System.out.println(借阅图书………………);System.out.println(请输入你要借阅的书名);Scanner in new Scanner(System.in);String booknamein.nextLine();int Size bookList.getUserSize();for(int i0;iSize;i){Book bookbookList.getBook(i);if(book.getName().equals(bookname)){System.out.println(借阅成功);book.setBorrowed(true);//System.out.println(book);return;}}System.out.println(没有你要借阅的书);}
} 4、归还图书
public class ReturnOperation implements IOperation{Overridepublic void work(BookList bookList) {System.out.println(归还图书………………);System.out.println(请输入你要归还的图书);Scanner in new Scanner(System.in);String booknamein.nextLine();int Size bookList.getUserSize();for(int i0;iSize;i){Book bookbookList.getBook(i);if(book.getName().equals(bookname)book.isBorrowed()){System.out.println(归还成功);book.setBorrowed(false);//System.out.println(book);return;}}System.out.println(没有你要归还的书);}
} 5、新增图书
public class AddOperation implements IOperation{Overridepublic void work(BookList bookList) {System.out.println(新增图书………………);Scanner innew Scanner(System.in);if(bookList.isFull()){System.out.println(书架满了无法新增图书了);return;}System.out.println(请输入图书的名称);String namein.nextLine();System.out.println(请输入图书的作者);String authorin.nextLine();System.out.println(请输入图书的价格);int pricein.nextInt();Book booknew Book(name,author,price);int pos bookList.getUserSize();bookList.setBook(pos,book);bookList.setUserSize(pos1);}
} 6、删除图书
public class DeleteOperation implements IOperation{Overridepublic void work(BookList bookList) {System.out.println(删除图书………………);System.out.println(请输入你要删除的图书);Scanner in new Scanner(System.in);String booknamein.nextLine();int Size bookList.getUserSize();for(int i0;iSize;i){Book bookbookList.getBook(i);if(book.getName().equals(bookname)){for(int ji;jSize;j){Book booklbookList.getBook(j1);bookList.setBook(j,bookl);}bookList.setUserSize(Size-1);System.out.println(删除成功);//System.out.println(book);return;}}System.out.println(没有你要删除的书);}
} 7、显示图书
public class ShowOperation implements IOperation{Overridepublic void work(BookList bookList) {System.out.println(显示图书………………);int Size bookList.getUserSize();for(int i0;iSize;i){Book bookbookList.getBook(i);System.out.println(book);}}
} 8、退出系统
public class ExitOperation implements IOperation {Overridepublic void work(Bookshelf bookshelf) {System.out.println(退出图书...);int szbookshelf.getBooknum();// 遍历置为 nullfor (int i 0; i sz ; i) {bookshelf.setBooks(i,null);}System.out.println(图书系统正在退出中...);// 系统退出System.exit(-1);}
} 这时我们就可以用如下方法来整合了
super(name);this.iOperationsnew IOperation[]{new ExitOperation(),new FindOperatino(),new AddOperation(),new DeleteOperation(),new ShowOperation()};
这样就可以通过数组的不同下标来实现功能了,会变得方便许多。 三、用户类 作为一个图书管理系统我们应当设置不同的用户特性如增删书籍应该是管理员才有的权限借阅书籍是普通用户需要实现的功能但同时他们又有许多的共性如姓名等信息这时我们就可以利用继承的思想先定义一个父类User来记录用户的共性
abstract public class User {protected String name;protected IOperation[] iOperations;public User(String name) {this.name name;}public void doIoperation(int choice, BookList bookList){this.iOperations[choice].work(bookList);}public abstract int menu();
}
接着我们就可以写出各个具体的子类用户了
管理员用户
public class AdminUser extends User {public AdminUser(String name) {super(name);this.iOperationsnew IOperation[]{new ExitOperation(),new FindOperatino(),new AddOperation(),new DeleteOperation(),new ShowOperation()};}public int menu(){System.out.println(*********管理员菜单*********);System.out.println(1.查找图书);System.out.println(2.新增图书);System.out.println(3.删除图书);System.out.println(4.显示图书);System.out.println(0.退出系统);System.out.println(**************************);System.out.println(请输入你的操作);Scanner innew Scanner(System.in);int choicein.nextInt();return choice;}
} 普通用户:
public class NormalUser extends User{public NormalUser(String name) {super(name);this.iOperationsnew IOperation[]{new ExitOperation(),new FindOperatino(),new BorrowedOperation(),new ReturnOperation()};}public int menu(){System.out.println(*********普通用户菜单*******);System.out.println(1.查找图书);System.out.println(2.借阅图书);System.out.println(3.归还图书);System.out.println(0.退出系统);System.out.println(**************************);System.out.println(请输入你的操作);Scanner innew Scanner(System.in);int choicein.nextInt();return choice;}
} 四、主函数逻辑实现
public class Main {public static User login(){Scanner in new Scanner(System.in);System.out.println(欢迎来到图书管理系统);System.out.println(请输入你的名字);String namein.nextLine();System.out.println(请输入你的身份);String identityin.nextLine();if(identity.equals(管理员)){AdminUser adminUsernew AdminUser(name);return adminUser;}else{NormalUser normalUsernew NormalUser(name);return normalUser;}}public static void main(String[] args) {BookList bookListnew BookList();User userlogin();while(true){int choiceuser.menu();user.doIoperation(choice,bookList);}}
}通过主函数逻辑来整合我们写过的各个模块从而实现最终功能。 总结 从这个项目中我们可以看到在父类User中实例化了iOperations对象建立了一个以IOperation为元素的数组接着在子类中按顺序建立创建好的功能接口从而可以直接用下标来访问相应接口这利用继承、多态、接口等思想可谓是对面向对象思想的深度诠释。 那么本篇文章就到此为止了如果觉得这篇文章对你有帮助的话可以点一下关注和点赞来支持作者哦。作者还是一个萌新如果有什么讲的不对的地方欢迎在评论区指出希望能够和你们一起进步✊