栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

图书管理系统

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

图书管理系统

Java编写  总结所学

第一部分 实现TestMain测试区

import book.BookList;
import user.Admin;
import user.NormalUser;
import user.User;

import java.util.Scanner;

public class TestMain {
    //利用向上转型  返回值设置为User来接收
    //返回一个对象
    public static User login(){
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入你的姓名");
        String name=scanner.nextLine();
        System.out.println("请输入你的身份 1:管理员  2:普通用户");
        int choice=scanner.nextInt();
        if (choice==1){
            //返回Admin这个对象
return new Admin(name);
        } else {
            //返回NormalUser这个对象
            return new NormalUser(name );
        }
    }

    public static void main(String[] args) {
//准备书籍
        BookList bookList = new BookList();

        //登录  user接收的引用是Admin或NormalUser
        User user = login();
        //发生多态
        //这个菜单到底是什么取决于返回的到底是什么
        //如果user引用Admin 那么就调用它的菜单 反之调用NormalUser


        while (true) {
            //user.menu()表示调用菜单
            //看login引入的是哪个对象

            //如果引入的是Admin 那么这个doOperation访问的就是Admin中的菜单了
           //choice用来接收用户输入的哪一个操作值
            int choice = user.menu();

            //调用这个  传参
          //
            user.doOperation(bookList, choice);
        }
    }
}

第二部分 实现包book

1.实现包中的Java类 Book

package book;

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;
    }

    //提供set和get接口
    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;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + ''' +
                ", author='" + author + ''' +
                ", price=" + price +
                ", type='" + type + ''' +
                ", isBorrowed=" + isBorrowed +
                '}';
    }
}

2.实现包中类BookList

package book;
//图书清单
public class BookList {
    //开辟一块储存图书的空间
    private Book[] books=new Book[100];
    private int usedSize=0;
    public BookList(){
books[0]=new Book("三国演义","罗贯中",100,"小说");
books[1]=new Book("水浒传","施耐庵",100,"小说");
books[2]=new Book("西游记","吴承恩",100,"小说");
this.usedSize=3;
    }
public void setBooks(int pos,Book book){
        //调用books这个数组存放书
        this.books[pos]=book;
}
//当你想要查看一本书的时候
// 输入它的位置 我们即可返回它
public Book getBook(int pos){
return this.books[pos];
}
    //对usedSize实现构造方法
    public int getUsedSize() {
        return usedSize;
    }

    public void setUsedSize(int usedSize) {
        this.usedSize = usedSize;
    }
}

第三部分 实现user包

1.实现包中User主类

package user;

import book.BookList;
import opertion.IOperation;

public abstract class User {
    protected String name;
    //定义一个数组
protected IOperation[] operations;
    public User(String name) {
        this.name = name;
    }
    public abstract int menu();
    public void doOperation(BookList bookList,int choice){
        //我们通过这个数组choice下标.work()来调用opertion包中的对象

        //当choice为多少时  调用AddOperation等等
        // 并且所有的对象都有一个work方法因此我们再调用work方法即可
        // 参数为bookList
        this.operations[choice-1].work(bookList);
    }
}

2.实现User子类Admin

package user;

import opertion.*;

import java.util.Scanner;

public class Admin extends User{
    public Admin(String name) {
        super(name);
        //构造出数组中所有的元素
        this.operations=new IOperation[]{
                new FindOperation(),
                new AddOperation(),
                new DelOperation(),
                new DisplayOperation(),
                new ExitOperation(),
        };
    }

    @Override
    public int menu() {
        System.out.println("_____________________________");
        //我们已经super调用了属性name 因此我们这里可以直接this.name进行引用
        System.out.println("hello"+this.name+"欢迎来到图书系统");
        System.out.println("1.查找图书");
        System.out.println("2.新增图书");
        System.out.println("3.删除图书");
        System.out.println("4.显示所有图书");
        System.out.println("5.退出系统");
        System.out.println("______________________________");
        Scanner scanner=new Scanner(System.in);
        int choice=scanner.nextInt();
        //这里我们要返回一个整数  因此我们要改变返回值的类型
        //抽象类的也要改变
        return choice;
    }
}

3.实现另外一个User子类NormalUser

package user;

import opertion.*;

import java.util.Scanner;

public class NormalUser extends User{
    public NormalUser(String name) {
        super(name);
        //构造出数组中所有的元素
        this.operations=new IOperation[]{
                new FindOperation(),
            new BorrowOperation(),
                new ReturnOperation(),
                new ExitOperation()
        };
    }

    @Override
    public int menu() {
        System.out.println("_____________________________");
        //我们已经super调用了属性name 因此我们这里可以直接this.name进行引用
        System.out.println("hello"+this.name+"欢迎来到图书系统");
        System.out.println("1.查找图书");
        System.out.println("2.借阅图书");
        System.out.println("3.归还图书");
        System.out.println("4.退出系统");
        System.out.println("______________________________");
        Scanner scanner=new Scanner(System.in);
        int choice=scanner.nextInt();
        //这里我们要返回一个整数  因此我们要改变返回值的类型
        //抽象类的也要改变
        return choice;
    }
}

第四部分 实现包operation

1.实现一个接口IOperation

package opertion;


import book.BookList;

public interface IOperation {
   void work(BookList bookList);
}

2.实现包类AddOperation

package opertion;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class AddOperation implements IOperation {

    @Override
    public void work(BookList bookList) {
        System.out.println("增加图书");
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入图书的名字");
        String name=scanner.nextLine();
        System.out.println("请输入图书的作者");
        String author=scanner.nextLine();
        System.out.println("请输入图书的价格");
        int price=scanner.nextInt();
        System.out.println("请输入图书的类型");
        String type=scanner.next();
        //
        Book book=new Book(name,author,price,type);
        //利用尾插法
        int curSize=bookList.getUsedSize();
        //在主函数中new出了  引用bookList
        //通过引用bookList
        bookList.setBooks(curSize,book);
        //每加一本书  数量加一
        bookList.setUsedSize(curSize+1);
        System.out.println("新增成功");
    }
}

3.BorrowOperation

package opertion;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class BorrowOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("借阅图书");
        //输入你要借阅的名字
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入图书的名字:");
        String name=scanner.nextLine();
        for(int i=0;i 

4.DelOperation

package opertion;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class DelOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("删除图书");
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入要删除的图书名称");
        String name=scanner.nextLine();
        int i=0;
        for(i=0;i 

5.DisplayOperation

package opertion;


import book.Book;
import book.BookList;

public class DisplayOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("显示图书");
        //为了显示所有图书
        for(int i=0;i 

6.ExitOperation

package opertion;

import book.BookList;

public class ExitOperation implements IOperation {
    @Override
    public void work(BookList bookList) {
        System.out.println("退出系统");
        //退出系统的标志
        System.exit(1);
    }
}

7.FindOperation

import book.BookList;

import java.util.Scanner;

public class FindOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("查找图书");
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入图书的名字:");
        String name=scanner.nextLine();
        for(int i=0;i 

8.ReturnOperation

package opertion;

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);
        System.out.println("请输入您要归还的书名");
        String name=scanner.nextLine();
        for(int i=0;i 

总结一下:

路还很长  

慢慢来吧

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/460098.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号