热门的建设工程人员查询,google搜索优化方法,wordpress调取栏目,绍兴app定制项目要求
该项目会用到类和对象#xff0c;封装、继承、多态、接口、等#xff0c;会帮你巩固并加强这类知识
设计要求及思路 1.要求有两套系统分别给管理员和普通用户使用#xff0c;经过开始的选择会有两个对应功能不同的菜单#xff0c;这里两种角色我们可以放一个包…项目要求
该项目会用到类和对象封装、继承、多态、接口、等会帮你巩固并加强这类知识
设计要求及思路 1.要求有两套系统分别给管理员和普通用户使用经过开始的选择会有两个对应功能不同的菜单这里两种角色我们可以放一个包里并且用到继承和多态可以去很多冗余 2. 功能项目对应有七个不同的功能我们需要用到接口 3. 定义一个书本类使用封装并用书架来接受书本数组 4. 包的创建每个方法放在对应的包下面 项目实现
book包 Book类 书类就是存放一些书的属性书名作者价格类型是否被借出以上用封装包装好并用get and set方法提供接口并需要对参数进行重写提供一个to string方法的重写用于后续对书本的打印大部分都可以通过编译器快速生成。
public class Book {private String name;private String author;private int price;private String type;private boolean isBorrowed;public Book(String name, String author, int price, String type) {this.name name;this.author author;this.price price;this.type type;}public String getName() {return name;}public void setName(String name) {this.name name;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author author;}public int getPrice() {return price;}public void setPrice(int price) {this.price price;}public String getType() {return type;}public void setType(String type) {this.type type;}public boolean isBorrowed() {return isBorrowed;}public void setBorrowed(boolean borrowed) {isBorrowed borrowed;}Overridepublic String toString() {return Book{ name name \ , author author \ , price price , type type \ , isBorrowed (isBorrowedfalse?未借出:借出) };}
}BookList类 书架类创建的作用就是用来存放一个书本类的数组并定义一个变量记录书本的个数这里的也是用到封装参数都用private修饰所以需要定义get and set方法但是这里对数组的方法需要注意一下直接生成的完成不了我们想要的功能需要修改一下
public class BookList {private Book[] books;private int BookSize;public BookList(){//构造里面初始化数据一定要加上thisthis.booksnew Book[10];this.books[0]new Book(sgyy,lgz,10,xiaoshuo);this.books[1]new Book(hlm,cxq,10,xiaoshuo);this.books[2]new Book(xyj,wce,10,xiaoshuo);this.BookSize3;}public Book getBooks(int pos) {return books[pos];//通过调用BookLis.getBook(i),传入pos参数可以获得pos1····位置对应的书}public void setBooks(Book book,int pos) {books[pos]book;//将传入的Book覆盖到pos位置}public int getBookSize() {return BookSize;}public void setBookSize(int bookSize) {BookSize bookSize;}
}
user包 user父类 这里因为需要有两个不同的菜单所以我们定义一个user类让AdminUser和NormalUser分别继承这个类且都需要不同的菜单所以在user定义一个抽象菜单所以user也就需要为抽象类
package user;
import book.BookList;
import operation.IOperation;public abstract class User {protected String name;public User(String name) {this.name name;}protected IOperation[] iOperations;//创建操作数组public void doIoperation(int choice,BookList bookList){this.iOperations[choice].work(bookList);//会通过传递的choice参数调用不同的方法}public abstract int menu();
}AdminUser类 NormalUser类 两个类分别构造自己的功能数组重写自己的菜单并且需要返回一个选择
//管理员类
package user;
import operation.*;
import java.util.Scanner;public class AdminUser extends User{public AdminUser(String name){super(name);this.iOperationsnew IOperation[]{new ExitOperation(),//这里排列是有讲究的第一个元素对应数组第一个元素new FindOperation(),new AddOperation(),new DelOperation(),new ShowOperation(),};}Overridepublic 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 scannernew Scanner(System.in);int choicescanner.nextInt();return choice;}
} //普通用户类
package user;
import operation.*;
import java.util.Scanner;public class NormalUser extends User{public NormalUser(String name){super(name);this.iOperationsnew IOperation[]{new ExitOperation(),new FindOperation(),new BorrowOperation(),new ReturnOperation(),new ShowOperation(),};}Overridepublic 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 scannernew Scanner(System.in);int choicescanner.nextInt();return choice;}
}这里因为两种用户需要调用的方法不一样菜单也不一样所以我们在父类定义一个功能数组并在子类调用时对其实例化其中doOperation方法就是功能菜单和功能数组之间的桥梁通过菜单返回的不同的值调用不同的功能方法也就是实现功能数组的choice下标对应的方法
Main类
import book.BookList;
import user.*;
import java.util.Scanner;public class Main {public static User login(){System.out.println(请输入你的姓名);Scanner scannernew Scanner(System.in);String namescanner.nextLine();System.out.println(1.管理员 2.普通用户);int choicescanner.nextInt();if(choice1){return new AdminUser(name);}else{return new NormalUser(name);}}public static void main(String[] args) {BookList bookListnew BookList();User userlogin();while (true){int choiceuser.menu();user.doIoperation(choice,bookList);}}
} 这里主函数内容就是新建一个书架并通过login选择出用户是管理员还是普通用户再对其用户死循环获取菜单返回值并执行该返回值对应的功能方法 operation包 IOperation类 该类是接口其中主要是为了被operation包其他类其他继承后重写work方法其中传递BookList就是为了 功能方法的实施对象是新建的booklist
package operation;
import book.BookList;public interface IOperation {public void work(BookList bookList);
}ExitOperation类 该类就是两个菜单都有的退出方法也是最简单的
package operation;
import book.BookList;public class ExitOperation implements IOperation{Overridepublic void work(BookList bookList) {System.out.println(退出系统);System.exit(0);}
}ShowOperation类
展示所有图书的功能获取当前书本的个数 int sizebookList.getBookSize();通过booklist获取书书本的个数并用size来接受for循环打印
package operation;
import book.Book;
import book.BookList;public class ShowOperation implements IOperation{Overridepublic void work(BookList bookList) {System.out.println(展示所有图书);int sizebookList.getBookSize();for (int i 0; i size; i) {Book bookbookList.getBooks(i);System.out.println(book);}}
}FindOperation类
这里的if(book.getName().equals(name))比较费解一点就是将当前输入的a书名和i位置的书名用equals方法比较equals结果就是true或者false
public class FindOperation implements IOperation{Overridepublic void work(BookList bookList) {System.out.println(查书);System.out.println(请输入要查找的书名);Scanner scannernew Scanner(System.in);String namescanner.nextLine();int sizebookList.getBookSize();for (int i 0; i size; i) {Book bookbookList.getBooks(i);if(book.getName().equals(name)){System.out.println(已查找到该书);System.out.println(book);return;}}System.out.println(抱歉暂无此书);}
}AddOperation类 添加函数这里需要注意2点 就是添加的书本是否已经在书架上如果在就不需要添加了如果不在就可以继续添加 在用完scanner.nextInt();需要用到scanner.nextLine();//吞回车不然会出现报错 package operation;
import book.*;
import java.util.Scanner;public class AddOperation implements IOperation{Overridepublic void work(BookList bookList) {System.out.println(增加图书);System.out.println(请输入要增加的书名);Scanner scannernew Scanner(System.in);String namescanner.nextLine();int sizebookList.getBookSize();for (int i 0; i size; i) {Book bookbookList.getBooks(i);if(book.getName().equals(name)){System.out.println(已有该图书无需再添加);return;}}System.out.println(请输入作者);String authorscanner.nextLine();System.out.println(请输入价格);int pricescanner.nextInt();scanner.nextLine();//吞回车System.out.println(请输入书类型);String typescanner.nextLine();Book booknew Book(name,author,price,type);bookList.setBooks(book,size);bookList.setBookSize(size1);}
}DelOperation类
删除方法这里需要注意几点 当前书架是否有需要删除的a书如果本来就没有a书就不需要删除这里用到index的值来检查是否有a书删除方法选择的是从后向前覆盖最后覆盖完会有一个本书出现两次就将最后的位置置空 package operation;
import book.Book;
import book.BookList;
import java.util.Scanner;public class DelOperation implements IOperation{Overridepublic void work(BookList bookList) {System.out.println(删除图书);System.out.println(请输入要删除的书名);Scanner scannernew Scanner(System.in);String namescanner.nextLine();int index-1;//索引int sizebookList.getBookSize();for (int i 0; i size; i) {Book bookbookList.getBooks(i);if(book.getName().equals(name)){indexi;}}if(index-1){System.out.println(未找到该书);return;}for (int j index; j size-1; j) {Book bookbookList.getBooks(j1);bookList.setBooks(book,j);}bookList.setBookSize(size-1);System.out.println(删除成功);}
}BorrowOperation类 借阅方法需要注意两点 book.isBorrowed()获取到的是true或者false如果是借阅需要a书是false状态 book.setBorrowed(true);//改为借出 package operation;
import book.*;
import java.util.Scanner;public class BorrowOperation implements IOperation{Overridepublic void work(BookList bookList) {System.out.println(借书);System.out.println(请输入要借阅的书名);Scanner scannernew Scanner(System.in);String namescanner.nextLine();int sizebookList.getBookSize();for (int i 0; i size; i) {Book bookbookList.getBooks(i);if(book.getName().equals(name)){if(!book.isBorrowed()) {//未借出的是falsebook.setBorrowed(true);//改为借出System.out.println(借阅成功);return ;}}}System.out.println(抱歉暂无此书);}
}ReturnOperation类 这里就和借阅方法没什么区别了
package operation;
import book.*;
import java.util.Scanner;public class ReturnOperation implements IOperation{Overridepublic void work(BookList bookList) {System.out.println(还书);System.out.println(请输入要还的书名);Scanner scannernew Scanner(System.in);String namescanner.nextLine();int sizebookList.getBookSize();for (int i 0; i size; i) {Book bookbookList.getBooks(i);if(book.getName().equals(name)){if(book.isBorrowed()) {//借出的是truebook.setBorrowed(false);//改为借出System.out.println(还书成功);return ;}}}System.out.println(抱歉此书不在还书范围中);}
} 好了以上就是图书管理系统的全部内容了希望可以多多点赞评论收藏支持一下
java代码: 欢迎您哈哈哈哈哈哈哈哈https://gitee.com/poetics-c/java-code-.git这里是我的码云图书管理系统代码在20240413文件下感谢大家点赞收藏支持