深圳做网站乐云seo费用优惠,长春业之峰装饰公司怎么样,怎么做网站用户可以发表文章,网站工程专业是什么前言#xff1a; 图书馆管理系统需要结合JavaSE的绝大部分知识#xff0c;是一个很好的训练项目。 为了让大家更加方便的查阅与学习#xff0c;我把代码放开头#xff0c;供大家查询。 还有对代码的分析#xff0c;我将以类为单位分开讲解。 目录
全部代码
Main类
Us… 前言 图书馆管理系统需要结合JavaSE的绝大部分知识是一个很好的训练项目。 为了让大家更加方便的查阅与学习我把代码放开头供大家查询。 还有对代码的分析我将以类为单位分开讲解。 目录
全部代码
Main类
User类
BookList类
Book类
NormalUser类 全部代码
/*一共有三个包*///User包
//User.java
package user;
import Book.BookList;
import Operation.IOparetion;public abstract class User {protected String name;protected IOparetion[] iOparetions;public User(String name) {this.name name;}public abstract int menu();public void doIOparetion(int chioce, BookList bookList){this.iOparetions[chioce].work(bookList);}
}//User包
//NormalUser.java
package user;
import Operation.*;
import java.util.Scanner;public class NormalUser extends User{public NormalUser(String name) {super(name);this.iOparetions new IOparetion[] {new ExitOparetion(),new FindOparetion(),new BorrowedOparetion(),new ReturnOparetion()};}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 choice scanner.nextInt();return choice;}
}//User包
//Administrators.java
package user;
import Operation.*;
import java.util.Scanner;public class Administrators extends User {public Administrators(String name) {super(name);this.iOparetions new IOparetion[]{new ExitOparetion(),new FindOparetion(),new AddOparetion(),new DelOparetion(),new ShowOparetion()};}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 scanner new Scanner(System.in);int choice scanner.nextInt();return choice;}
}//Book包
//Book.java
package Book;public class Book {private String name;private String author;private int price;private String type;private boolean isLend;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 isLend() {return isLend;}public void setLend(boolean lend) {isLend lend;}Overridepublic String toString() {return Book{ name name \ , author author \ , price price , type type \ (isLendtrue?已借出:未借出)};}
}//Book包
//BookList.java
package Book;public class BookList {private Book[] booknew Book[10];private int usedSize;public Book getBook(int pos) {return book[pos];}public void setBook(int pos,Book book) {this.book[pos] book;}public int getUsedSize() {return usedSize;}public void setUsedSize(int usedSize) {this.usedSize usedSize;}public BookList() {book[0]new Book(西游记,吴承恩,19,小说);book[1]new Book(三国演义,罗贯中,36,小说);book[2]new Book(红楼梦,曹雪芹,13,小说);this.usedSize3;}public boolean isFull(){if(usedSizebook.length){return true;}return false;}
}//Oparetion包
//Ioparetion.java
package Operation;import Book.BookList;public interface IOparetion {void work(BookList bookList);
}//Oparetion包
//AddOparetion.java
package Operation;import Book.Book;
import Book.BookList;
import java.util.Scanner;public class AddOparetion implements IOparetion {Overridepublic void work(BookList bookList) {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(请输入书的价格);int pricescanner.nextInt();Book booknew Book(name,author,price,type);if(bookList.isFull()){System.out.println(书架满了借阅失败);return;}bookList.setBook(bookList.getUsedSize(), book);bookList.setUsedSize(bookList.getUsedSize()1);System.out.println(添加成功);}
}//Oparetion包
//BorrowedOparetion.java
package Operation;import Book.BookList;
import java.util.Scanner;public class BorrowedOparetion implements IOparetion{Overridepublic void work(BookList bookList) {System.out.println(请输入你要找的书名);Scanner scannernew Scanner(System.in);String namescanner.nextLine();for(int i0;ibookList.getUsedSize();i){if(name.equals(bookList.getBook(i).getName())){bookList.getBook(i).setLend(true);System.out.println(借阅成功);return;}}System.out.println(借阅失败);}}//Oparetion包
//DelOparetion.java
package Operation;import Book.BookList;
import java.util.Scanner;public class DelOparetion implements IOparetion{Overridepublic void work(BookList bookList) {System.out.println(请输入你要删除的书籍名字);Scanner scannernew Scanner(System.in);String sscanner.nextLine();int pos-1;int i0;for (;ibookList.getUsedSize();i){if(s.equals(bookList.getBook(i))){posi;}if(ibookList.getUsedSize()){System.out.println(没有你要找的书);return;}}for(int ji;ibookList.getUsedSize()-1;i){bookList.setBook(j,bookList.getBook(j1));}bookList.setBook(bookList.getUsedSize(), null);bookList.setUsedSize(bookList.getUsedSize()-1);System.out.println(删除成功);}
}//Oparetion包
//ExitOparetion.java
package Operation;
import Book.BookList;public class ExitOparetion implements IOparetion {Overridepublic void work(BookList bookList) {System.out.println(退出系统中....);for(int i0;ibookList.getUsedSize()-1;i){bookList.setBook(i,null);}System.exit(0);}
}//Oparetion包
//FindOparetion.java
package Operation;import Book.BookList;
import java.util.Scanner;public class FindOparetion implements IOparetion{Overridepublic void work(BookList bookList) {System.out.println(请输入你要找的书名);Scanner scannernew Scanner(System.in);String namescanner.nextLine();for(int i0;ibookList.getUsedSize();i){if(name.equals(bookList.getBook(i).getName())){System.out.println(找到了下标为i);System.out.println(bookList.getBook(i));return;}}System.out.println(没找到);}
}//Oparetion包
//ReturnOparetion.java
package Operation;import Book.BookList;
import java.util.Scanner;public class ReturnOparetion implements IOparetion{Overridepublic void work(BookList bookList) {Scanner scannernew Scanner(System.in);System.out.println(请输入你要归还的书名);String sscanner.nextLine();for (int i 0; i bookList.getUsedSize()-1; i) {if(s.equals(bookList.getBook(i).getName())){bookList.getBook(i).setLend(false);System.out.println(归还成功);return;}}System.out.println(归还失败没有你要归还的书);}
}//Oparetion包
//ShowOparetion.java
package Operation;
import Book.BookList;public class ShowOparetion implements IOparetion{Overridepublic void work(BookList bookList) {for(int i0;ibookList.getUsedSize();i){System.out.println(bookList.getBook(i));}}} 首先我们需要打个框架出来由于java是一门面向对象的编程所以我们应该要多考虑对象而不是过程。 我将它分为三个包User、Book、operation包其实对象有书架、书、用户、管理员。 总体请看下图 这里我主要讲解大致结构和细微的细节 因为方法的思路在数据结构讲解更加清晰 Main类
public class Main {public static User login(){Scanner scannernew Scanner(System.in);System.out.println(请输入你的名字);String namescanner.nextLine();System.out.println(请输入你的身份1.普通用户 2.管理员用户);int choice scanner.nextInt();if(choice1){NormalUser normalUsernew NormalUser(name);return normalUser;}else{Administrators administratorsnew Administrators(name);return administrators;}}public static void main(String[] args) {BookList bookListnew BookList();User userlogin();while (true){int retuser.menu();user.doIOparetion(ret,bookList);}}
}上述代码中 Scanner来new一个对象来输入int一个choice来接收选1还是2选择是管理人还是普通用户。 由于要返回一个对象所以login的返回值是user类型的user与管理员和普通用户是父子关系在main中用user类型接收属于向上转型好处就是发生多态。 User类
package user;
import Book.BookList;
import Operation.IOparetion;public abstract class User {protected String name;protected IOparetion[] iOparetions;public User(String name) {this.name name;}public abstract int menu();public void doIOparetion(int chioce, BookList bookList){this.iOparetions[chioce].work(bookList);}
}上述代码中 User作为父类被管理员和普通用户继承被abstract修饰主要是为了menu这个方法被继承实现多态。 IOparetion是一个接口是为了被那些add和del等等方法实现的还是实现多态 它现在作为一个数组来接收是为了存放这些方法这样就不用一个个在用户或者管理员里面书写了可以直接定义为一个类这也是为什么方法可以另外书写的原因这体现了面向对象的特点大大缩短了工程量和分模块的简洁性即使下次有人需要用不需要再写直接调用就好了。 BookList类
package Book;public class BookList {private Book[] booknew Book[10];private int usedSize;public Book getBook(int pos) {return book[pos];}public void setBook(int pos,Book book) {this.book[pos] book;}public int getUsedSize() {return usedSize;}public void setUsedSize(int usedSize) {this.usedSize usedSize;}public BookList() {book[0]new Book(西游记,吴承恩,19,小说);book[1]new Book(三国演义,罗贯中,36,小说);book[2]new Book(红楼梦,曹雪芹,13,小说);this.usedSize3;}public boolean isFull(){if(usedSizebook.length){return true;}return false;}
}对于上述代码 由于java是面向对象编程所以对于一些信息不需要用户来知道内部是怎么实现的所以用private修饰这样的话需要set和get方法来获取这样之后的代码都需要调用set和get来获取或者是赋值。 BookList是书架所以里面是摆书的所以用Book类型作为数组来收取book。可以放很多本。 usedsize是有效书籍数就是记录里面有多少本。 Book类
package Book;public class Book {private String name;private String author;private int price;private String type;private boolean isLend;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 isLend() {return isLend;}public void setLend(boolean lend) {isLend lend;}Overridepublic String toString() {return Book{ name name \ , author author \ , price price , type type \ (isLendtrue?已借出:未借出)};}
}对于上述代码 Book是类它代表的是一本书所以你需要定义名字作者价格什么什么的。 也是利用封装只把必要的信息给用户所以用privat密封起来更加安全一点所以需要set和get方法。 这里的toString方法里面有个三目操作符如果isLend被借出的话就是true就会打印已借出否则为借出。 NormalUser类
package user;
import Operation.*;
import java.util.Scanner;public class NormalUser extends User{public NormalUser(String name) {super(name);this.iOparetions new IOparetion[] {new ExitOparetion(),new FindOparetion(),new BorrowedOparetion(),new ReturnOparetion()};}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 choice scanner.nextInt();return choice;}
}对于上述代码 如果继承了父类使用构造方法时候需要先把父类的构造方法实现。 因为IOparetion是user里面的user被普通用户继承所以可以直接访问把他变成一个数组这样就可以存方法了不用在这普通用户这个类里一个一个方法写直接脱离出来非常充分体现了面向对象的特点