做网站数据需要的软件,网络营销常用工具有哪些?,中企动力 网站推广,电脑网页打不开怎么回事文章目录 前言要求1.设置对象1.1.图书1.2.书架2.管理员3.功能的实现 2.搭建框架2.1.登录(login)2.2.菜单2.3.操作方法的获取 3.操作方法的实现3.1.退出系统(ExitOperation)3.2.显示图书(ShowOperation)3.3.查阅图书(FindOperation)3.4.新增图书(AddOperation)3.5.借出图书(Borr… 文章目录 前言要求1.设置对象1.1.图书1.2.书架2.管理员3.功能的实现 2.搭建框架2.1.登录(login)2.2.菜单2.3.操作方法的获取 3.操作方法的实现3.1.退出系统(ExitOperation)3.2.显示图书(ShowOperation)3.3.查阅图书(FindOperation)3.4.新增图书(AddOperation)3.5.借出图书(BorrowOperation)3.6.归还图书(ReturnOperation)3.7.删除图书(DelOperation) 前言
前面足足有十篇博客给大家讲解了Java的基础语法尤其是面向对象以及其思想是我们遇到的第一种障碍为此咱们写一个图书管理系统进行巩固。
要求 这边是一个主要流程其中具体的功能就不在此一一展示等会在功能的实现中具体再说
1.设置对象
1.1.图书
根据图上所示我们可以发现每一个图书的成员变量有五个 书名作者价格类型以及借出情况。 并且我们不想要让别人直接得到那么都需要用private修饰。
1.2.书架
每本书都要放到书架中方才可以使用当然还要直到当前图书的个数以及如何取书和放书。 下来我们这两个放到一个包中编写其内容代码。 书架类
public class BookList {Book[]booksnew Book[10];private int UseSize;public BookList(){this.books[0]new Book(三国演义,罗贯中,9.9,小说);this.books[1]new Book(我与地坛,史铁生,23.9,散文);this.books[2]new Book(红楼梦,曹雪芹,9.9,小说);this.UseSize3;}public BookList(int useSize) {UseSize useSize;}public Book getBook(int pos){return books[pos];}public void setBook(int pos,Book book){this.books[pos]book;}public int getUseSize() {return UseSize;}public void setUseSize(int useSize) {UseSize useSize;}public Book[] getBooks() {return books;}public void setBooks(Book[] books) {this.books books;}
}
图书类
public class Book {private String name;private String author;private double price;private String type;private boolean isBorrowed;public Book(String name, String author, double 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 double getPrice() {return price;}public void setPrice(double 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 \ (isBorrowedfalse?未借出:已借出)};}
}2.管理员
管理员分为两类1.一种是普通用户2。一种是管理员用户。 我们把这两种用户的相同点放到一个User抽象类中再分别实现自己的功能把这三个类放到一个包里。 User抽象类
public abstract class User {protected String name;public User(String name) {this.name name;}public abstract void menu();
}AdminUser类
public class AdminUser extends User {public AdminUser(String name) {super(name);}Overridepublic void menu() {}
}NormalUser类
public class NormalUser extends User{public NormalUser(String name) {super(name);}Overridepublic void menu() {}
}
其中具体的实现等会在写
3.功能的实现
我们通过上面的图可以发现一共有7种操作方法并且有一样的首先我们会有2个问题第一个问题如何可以知道User的类型第二种,如何可以该用户有哪些方法并且如何去进行调用呢这些方法等会都会进行解答首先我们先把每个功能的框架搭建一下在创建一个包(iOperation)。
这边各种包的创建过程其中有7大操作功能内容和上面的都一样大家下面自己去搭建一下。 具体内容现在进行操作。 2.搭建框架
2.1.登录(login) 我们现在实现这个页面的内容。主要我们是要想返回值是什么结合上面第一个问题返回值是User通过登录这个方法我们可以确定目前是什么用户进行登录。
public static User login(){Scanner scannernew Scanner(System.in);System.out.println(输入你的名字:);String namescanner.nextLine();System.out.println(输入你的身份 1.管理员 2.普通用户);int choicescanner.nextInt();if(choice1){return new AdminUser(name);}else {return new NormalUser(name);}}2.2.菜单 现在我们完成这个菜单页面并且返回值又是什么因为我们已经知道身份了那么就要知道操作方法的选择因此返回值是int。
AdminUser类
public class AdminUser extends User {public AdminUser(String name) {super(name);}Overridepublic int menu() {System.out.println(****************);System.out.println(0.退出系统 );System.out.println(1.查找图书 ) ;System.out.println(2.新增图书 ) ;System.out.println(3.删除图书 ) ;System.out.println(4.显示图书 ) ;System.out.println(****************);System.out.println(请输入你的操作:);Scanner scannernew Scanner(System.in);int choicescanner.nextInt();return choice;}
}NormalUser类
public class NormalUser extends User{public NormalUser(String name) {super(name);}Overridepublic int menu() {System.out.println(****************);System.out.println(0.退出系统 );System.out.println(1.查找图书 ) ;System.out.println(2.借阅图书 ) ;System.out.println(3.归还图书 ) ;System.out.println(****************);System.out.println(请输入你的操作:);Scanner scannernew Scanner(System.in);int choicescanner.nextInt();return choice;}
}User父类就是把原来menu的返回值改为int即可我就在这不演示啦。
2.3.操作方法的获取
现在便是要解决最难得一个问题如何让控制台得知我们要进行那个操作现在我们知道了用户类型以及选择的方法我们可以使用一个数组每个下标都对应各自的方法而我们要将7大操作方法组合在一起又要跟下标相关联那一定是数组。并且要让7大操作方法都有一个共有的东西使得在调用这个东西的时候就是在调用他们自己的话那就是接口啦 为此我们在iOperation包中创建一个接口。 IOperation接口
public interface IOPeration {void work(BookList bookList);
}创建完接口下来就要在User中创建IOperation数组了然后分别在AdminUser和NormalUser中分别对数组进行初始化与此同时在User中创建一个方法可以在Test中使用接口。 User抽象类
public abstract class User {protected String name;protected IOPeration[]ioPerations;public User(String name) {this.name name;}public abstract int menu();public void doOperation(int choice, BookList bookList){ioPerations[choice].work(bookList);}
}AdminUser类
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(0.退出系统 );System.out.println(1.查找图书 ) ;System.out.println(2.新增图书 ) ;System.out.println(3.删除图书 ) ;System.out.println(4.显示图书 ) ;System.out.println(****************);System.out.println(请输入你的操作:);Scanner scannernew Scanner(System.in);int choicescanner.nextInt();return choice;}
}NormalUser类
public class NormalUser extends User{public NormalUser(String name) {super(name);this.ioPerationsnew IOPeration[]{new ExitOperation(),new FindOperation() ,new BorrowOperation(),new ReturnOperation()};};Overridepublic int menu() {System.out.println(****************);System.out.println(0.退出系统 );System.out.println(1.查找图书 ) ;System.out.println(2.借阅图书 ) ;System.out.println(3.归还图书 ) ;System.out.println(****************);System.out.println(请输入你的操作:);Scanner scannernew Scanner(System.in);int choicescanner.nextInt();return choice;}
}Test类
public class Test {public static User login(){Scanner scannernew Scanner(System.in);System.out.println(输入你的名字:);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.doOperation(choice,bookList);}}
}由此观之将7大操作方法连接起来的的是接口 将方法按照顺序让控制台知道我们的操作是数组(也可以说是下标)将这两个结合起来便是我们的创新的点子最精彩的在上面大家好好领悟领悟完再看每个操作方法的具体实现 3.操作方法的实现
3.1.退出系统(ExitOperation)
public class ExitOperation implements IOPeration{public void work(BookList bookList){System.out.println(退出系统...);System.exit(0);}
}3.2.显示图书(ShowOperation)
public class ShowOperation implements IOPeration{public void work(BookList bookList){System.out.println(显示图书...);int currentSizebookList.getUseSize();for (int i 0; i currentSize; i) {Book bookbookList.getBook(i);System.out.println(book);}}
}3.3.查阅图书(FindOperation)
public class FindOperation implements IOPeration {public void work(BookList bookList){Scanner scannernew Scanner(System.in);System.out.println(请输入你想查阅的书名);String namescanner.nextLine();int currentSizebookList.getUseSize();for (int i 0; i currentSize; i) {Book bookbookList.getBook(i);if(book.getName().equals(name)){System.out.println(找到了图书:);System.out.println(book);return;}}System.out.println(没有找到你想查阅的书籍);}
}3.4.新增图书(AddOperation)
public class AddOperation implements IOPeration{public void work(BookList bookList){//1.判满和判空System.out.println(新增图书...);int currentSize bookList.getUseSize();if(currentSize0){System.out.println(书架中已无书);return;}if(currentSizebookList.getBooks().length){System.out.println(书架已放满书);return;}Scanner scannernew Scanner(System.in);System.out.println(请输入书名:);String namescanner.nextLine();System.out.println(请输入作者:);String authorscanner.nextLine();System.out.println(请输入类型:);String typescanner.nextLine();System.out.println(请输入价格:);Double price scanner.nextDouble();Book newbooknew Book(name,author,price,type);for (int i 0; i currentSize; i) {Book bookbookList.getBook(i);if(book.getName().equals(name)){System.out.println(此书在书架上已存在...);return;}}//插入书籍bookList.setUseSize(currentSize1);bookList.setBook(currentSize,newbook);System.out.println(新书增加成功...);}
}3.5.借出图书(BorrowOperation)
public class BorrowOperation implements IOPeration {public void work(BookList bookList){System.out.println(借阅图书...);Scanner scannernew Scanner(System.in);System.out.println(请输入你想借阅的书名:);String namescanner.nextLine();int currentSizebookList.getUseSize();for (int i0;icurrentSize;i){Book bookbookList.getBook(i);if(book.getName().equals(name)){if(book.isBorrowed()){System.out.println(此书已经借出);return;}book.setBorrowed(true);System.out.println(借阅成功...);return;}}System.out.println(没有查到你要借阅的图书);}
}3.6.归还图书(ReturnOperation)
借阅图书和归还图书本质是一样的
public class ReturnOperation implements IOPeration{public void work(BookList bookList){System.out.println(归还图书...);Scanner scannernew Scanner(System.in);System.out.println(请输入你想归还的书名:);String namescanner.nextLine();int currentSizebookList.getUseSize();for (int i0;icurrentSize;i){Book bookbookList.getBook(i);if(book.getName().equals(name)){if(book.isBorrowed()){book.setBorrowed(false);System.out.println(归还成功...);return;}}}System.out.println(没有查到你要归还的图书);}
}3.7.删除图书(DelOperation)
这就需要数据结构的知识啦可以利用画图来演示 这里用数字代替图书
public class DelOperation implements IOPeration {public void work(BookList bookList){System.out.println(删除图书...);System.out.println(请输入你想删除的书名);Scanner scannernew Scanner(System.in);String namescanner.nextLine();int currentSizebookList.getUseSize();int i0;int pos-1;for (;icurrentSize;i){Book bookbookList.getBook(i);if(book.getName().equals(name)){posi;break;}}if(icurrentSize){System.out.println(没有找到你想删除的图书);return;}//删除图书for (int jpos;jcurrentSize-1;j){Book bookbookList.getBook(j1);bookList.setBook(j,book);}bookList.setBook(currentSize,null);bookList.setUseSize(currentSize-1);System.out.println(删除成功!);}
} 具体代码请看大松鼠的码云 完