文章目录
- @[TOC](文章目录)
- 前言
- 一.图书管理系统设计思想
- 二、具体实现
- 1.book包
- 1.1book类
- 1.2 booklist类
- 2. user包
- 2.1 User类
- 2.2 AdminUser类
- 2.3 NormalUser类
- 3. operation包
- 3.1Ioperation接口
- 3.2AddOperation类
- 3.3BorrowOperarion类
- 3.4DelOperation类
- 3.5ExitOperation类
- 3.6FindOperation类
- 3.7ReturnOperation类
- 3.8ShowOperation类
- 4.main方法
- 5.操作实例
- 5.1以管理员身份运行
- 5.2以普通成员身份运行
- 三.总结`
文章目录
- @[TOC](文章目录)
- 前言
- 一.图书管理系统设计思想
- 二、具体实现
- 1.book包
- 1.1book类
- 1.2 booklist类
- 2. user包
- 2.1 User类
- 2.2 AdminUser类
- 2.3 NormalUser类
- 3. operation包
- 3.1Ioperation接口
- 3.2AddOperation类
- 3.3BorrowOperarion类
- 3.4DelOperation类
- 3.5ExitOperation类
- 3.6FindOperation类
- 3.7ReturnOperation类
- 3.8ShowOperation类
- 4.main方法
- 5.操作实例
- 5.1以管理员身份运行
- 5.2以普通成员身份运行
- 三.总结`
前言
前一段时间,我学习了一些关于java面向对象的思想,如:继承,多态,向上转型,接口等等。今天我将使用这些思想实现简单的图书管理系统。
一.图书管理系统设计思想
二、具体实现
1.book包
这个包里我们存放书籍和建立书架。
1.1book类
代码如下:
package book;
public class Book {
private String title;
private int price;
private String author;
private String type;
private boolean isBorrowed;
public Book(String title, String author, int price, String type) {
this.title = title;
this.price = price;
this.author = author;
this.type = type;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getPrice() {
return price;
}
public void setPrice(int prince) {
this.price = price;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
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;
}
@Override
public String toString() {
return "book{" +
"title='" + title + '\'' +
", prince=" + price +
", author='" + author + '\'' +
", type='" + type + '\'' +
((isBorrowed)==true?",已借出":",未借出")+
'}';
}
}
1.2 booklist类
代码如下(示例):
package book;
public class BookList {
private Book[] books;
private int usedSize;
public BookList() {
this.books=new Book[10];
this.books[0]=new Book("西游记","吴承恩",12,"小说");
this.books[1]=new Book("三国演义","罗贯中",15,"小说");
this.books[2]=new Book("红楼梦","曹雪芹",14,"小说");
this.usedSize=3;
}
public Book getBook(int pos){
return books[pos];
}
public void setBooks(Book book,int pos) {
books[pos]=book;
}
public int getUsedSize() {
return usedSize;
}
public void setUsedSize(int usedSize) {
this.usedSize = usedSize;
}
}
2. user包
这个包里我们将创建使用者类,通过对图书管理系统的设计,我们可以发现管理员和普通用户的某些方法是可以共用的,这时我们就可以用到继承的思想了。
2.1 User类
代码如下(示例):
package user;
import Operation.Ioperation;
import book.BookList;
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){
Ioperation ioperation=this.ioPerations[choice];
ioperation.work(bookList);
}
}
2.2 AdminUser类
package user;
import Operation.*;
import java.util.Scanner;
public class AdminUser extends User {
public AdminUser(String name) {
super(name);
this.ioPerations=new Ioperation[]{
new ExitOperation(),
new FindOperation(),
new AddOperation(),
new DelOperation(),
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("*************");
Scanner scanner=new Scanner(System.in);
int choice=scanner.nextInt();
return choice;
}
}
2.3 NormalUser类
package user;
import Operation.*;
import java.util.Scanner;
public class NormalUser extends User{
public NormalUser(String name) {
super(name);
this.ioPerations=new Ioperation[]{
new ExitOperation(),
new FindOperation(),
new BorrowOperarion(),
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("*************");
Scanner scanner=new Scanner(System.in);
int choice=scanner.nextInt();
return choice;
}
}
3. operation包
在这个包里,我们将完成各种操作的实现,为了更好的组织管理员和普通用户的各种操作,我们在这里可以创建一个接口Ioperatio来实现,区分管理员和普通用户。
3.1Ioperation接口
ackage Operation;
import book.BookList;
public interface Ioperation {
void work(BookList bookList);
}
3.2AddOperation类
添加图书
package Operation;
import book.Book;
import book.BookList;
import java.util.Scanner;
public class AddOperation implements Ioperation {
@Override
public void work(BookList bookList) {
System.out.println("添加图书");
System.out.println("请输入你要新增的图书的书名");
Scanner scanner=new Scanner(System.in);
String title=scanner.nextLine();
System.out.println("请输入你要新增的图书的作者");
String author=scanner.nextLine();
System.out.println("请输入你要新增的图书的类型");
String type=scanner.nextLine();
System.out.println("请输入你要新增的图书的价格");
int price=scanner.nextInt();
Book book=new Book(title,author,price,type);
int currentSize= bookList.getUsedSize();
for ( int i = 0; i < currentSize; i++) {
Book tmp=bookList.getBook(i);
if (title.equals(tmp.getTitle()))
{
System.out.println("存在这本书,不能重复添加");
return;
}
}
System.out.println("添加成功");
bookList.setBooks(book,currentSize);
bookList.setUsedSize(currentSize+1);
}
}
3.3BorrowOperarion类
借阅图书
package Operation;
import book.Book;
import book.BookList;
import java.util.Scanner;
public class BorrowOperarion implements Ioperation{
@Override
public void work(BookList bookList) {
System.out.println("请输入你要借阅的图书的书名");
Scanner scanner=new Scanner(System.in);
String title=scanner.nextLine();
int currentSize= bookList.getUsedSize();
for (int i = 0; i < currentSize; i++) {
Book book=bookList.getBook(i);
if (title.equals(book.getTitle()))
{
book.setBorrowed(true);
System.out.println("存在这本书,借阅成功");
return;
}
}
System.out.println("没有你要找的书"+title);
}
}
3.4DelOperation类
删除图书
package Operation;
import book.Book;
import book.BookList;
import java.util.Scanner;
public class DelOperation implements Ioperation {
@Override
public void work(BookList bookList) {
System.out.println("删除图书");
System.out.println("请输入你要删除的图书的书名:");
Scanner scanner = new Scanner(System.in);
String title = scanner.nextLine();
int currentSize = bookList.getUsedSize();
int index = -1;
int i = 0;
for (; i < currentSize; i++) {
Book tmp = bookList.getBook(i);
if (title.equals(tmp.getTitle())) {
index = i;
break;
}
}
if (i >= currentSize) {
System.out.println("没有你要删除的图书" + title);
return;
}
for (int j=index;j<currentSize;j++){
Book book=bookList.getBook(j+1);
bookList.setBooks(book,j);
}
bookList.setBooks(null,currentSize-1);
bookList.setUsedSize(currentSize-1);
System.out.println("删除成功! ");
}
}
3.5ExitOperation类
退出系统
package Operation;
import book.BookList;
public class ExitOperation implements Ioperation{
@Override
public void work(BookList bookList) {
System.out.println("退出系统!");
System.exit(0);
}
}
3.6FindOperation类
查找图书
import java.util.Scanner;
public class FindOperation implements Ioperation{
@Override
public void work(BookList bookList) {
System.out.println("查找图书");
System.out.println("请输入你要查阅的书名:");
java.util.Scanner scanner=new Scanner(System.in);
String title=scanner.nextLine();
int currentSize= bookList.getUsedSize();
int i=0;
for (i = 0; i < currentSize;i++) {
Book book = bookList.getBook(i);
if (book.getTitle().equals(title)) {
System.out.println("存在这本书,信息如下:");
System.out.println(book);
return;
}
}
System.out.println("没有你要找的书,书名为 "+title);
}
}
3.7ReturnOperation类
归还图书
package Operation;
import book.Book;
import book.BookList;
import java.util.Scanner;
public class ReturnOperation implements Ioperation{
@Override
public void work(BookList bookList) {
System.out.println("请输入你要归还的的图书的书名");
Scanner scanner=new Scanner(System.in);
String title=scanner.nextLine();
int currentSize= bookList.getUsedSize();
for (int i = 0; i < currentSize; i++) {
Book book=bookList.getBook(i);
if (title.equals(book.getTitle()))
{
book.setBorrowed(false);
System.out.println("归还成功");
return;
}
}
System.out.println("没有你要归还的书的书"+ title);
}
}
3.8ShowOperation类
展示图书
package Operation;
import book.Book;
import book.BookList;
import java.util.Scanner;
public class ShowOperation implements Ioperation{
@Override
public void work(BookList bookList) {
System.out.println("展示图书");
int currentSize= bookList.getUsedSize();
int i=0;
for (i = 0; i < currentSize;i++) {
Book book = bookList.getBook(i);
System.out.println(book);
}
}
}
4.main方法
创建静态登录界面,实现用户的绑定。
import book.BookList;
import user.AdminUser;
import user.NormalUser;
import user.User;
import java.util.Scanner;
public class Main {
public static User login(){
System.out.println("请输入你的姓名》:");
Scanner scanner=new Scanner(System.in);
String name= scanner.nextLine();
System.out.println("请输入你的身份》:1.管理员 2.普通用户");
int choice=scanner.nextInt();
if(choice==1){
return new AdminUser(name);
}
else{
return new NormalUser(name);
}
}
public static void main(String[] args) {
BookList bookList=new BookList();
User user=login();
//noinspection InfiniteLoopStatement
while (true){
int choice= user.menu();
user.doOperation(choice,bookList);
}
}
}
5.操作实例
5.1以管理员身份运行
5.2以普通成员身份运行
三.总结`
以上就是今天要分享的内容,本文只是讲了图书管理系统的一些基本操作,还有很大的操作空间,希望以后我可以完善他。如果觉得我的分享对你有帮助的话,请各位帅哥美女们帮我点个小赞吧!! !