普歌-允异团队:java基础图书馆系统练习

一.前言

	技术需求:java基础,数组,面向对象(封装,继承,接口)

二.整体结构

整体结构

三.基本思路

Book类:定义了(书名,作者,价格,分类,状态)基本的javabean
Library类:控制了整个系统,主要包括用户登录(普通用户,管理员,退出)和总系统的启动(Library)
Operate接口:定义了(查询,删除/借书,添加/还书,显示)操作
Person类:定义了(姓名,年龄,性别)基本的javabean,图书列表(包含运行时添加图书)
Root类:继承Person且实现Operate接口(添加了一个整理方法)
User类:继承Person且实现Operate接口

大概图解
思路图

四.代码区

Book类

public class Book {
    private String bookname;//书名
    private String name;//作者
    private double price;//价钱
    private String simple;//分类
    private boolean state;//状态

    public Book() {

        this(10);
    }

    public Book(String bookname, String name, double price, String simple, boolean state) {
        this.bookname = bookname;
        this.name = name;
        this.price = price;
        this.simple = simple;
        this.state = state;
    }

    public Book(int i) {
        Person.books = new Book[i];
    }

    public String getBookname() {

        return bookname;
    }

    public void setBookname(String bookname) {

        this.bookname = bookname;
    }

    public String getName() {

        return name;
    }

    public boolean isState() {
        return state;
    }

    public void setState(boolean state) {
        this.state = state;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public String getSimple() {
        return simple;
    }

    public void setSimple(String simple) {
        this.simple = simple;
    }

    public Book(boolean state) {
        this.state = state;
    }

    @Override
    public String toString() {
        return "Book{" +
                "bookname='" + bookname + '\'' +
                ", name='" + name + '\'' +
                ", price=" + price +
                ", simple='" + simple + '\'' +
                ", state='" + state + '\'' +
                '}';
    }
}


Person类

abstract class Person {
    private String name;//姓名
    private int age;//年龄
    private String gender;//性别

    public abstract void operate(int i);


    public static Book[] books = new Book[]{  //默认定义书籍

            new Book("西游记","吴承恩",10,"名著",true),
            new Book("红楼梦","曹雪芹",20,"名著",true),
            new Book("三国演义","罗贯中",15,"名著",true),
            new Book("小明同学","小明",5,"杂志",true),
            new Book()

    };

    public Person() {
    }

    public Person(String name, int age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }
}


Operate类

public interface Operate {
    public void inquire(Book[] books);//查询
    public void delete(Book[] books);//删除
    public void add(Book[] books);//t添加
    public void show(Book[] books);//显示
}

Root类

import java.util.Arrays;
import java.util.Comparator;
import java.util.Objects;
import java.util.Scanner;

public class Root extends Person implements Operate {
    private String Rname;//名字
    private String Rgender;//性别
    private  int Rage;//年龄

    public Root(String name, int age, String gender) {

        super(name, age, gender);//继承父类
    }
    Scanner sc=new Scanner(System.in);
    //继承的查询
    @Override
    public void inquire(Book[] books) {
        System.out.println("请输入书名:");
        String n=sc.next();
        //判断输入的n是否为空,若为空不考虑,不为空则输出对应书名的其他属性
        if(n!=null){
            for (int i = 0; i < books.length; i++) {
                if(Objects.equals(n,books[i].getBookname())){
                    System.out.println("此书名信息为:"+books[i].getBookname()+"  "+books[i].getName()+"  "+books[i].getPrice()+"  "+books[i].getSimple()+"  "+books[i].isState());
                    break;
                }else{
                    System.out.println("暂无此书!");
                    break;
                }
            }
        }
    }
   //继承删除
    @Override
    public void delete(Book[] books) {
        System.out.println("请输入书名:");
        String d=sc.next();
        //判断是否为空
        if(d!=null){
            for (int i = 0; i < books.length; i++) {
                //判断是否有此书
                if (Objects.equals(books[i].getBookname(),d)){
                    books[i]=null;
                    System.out.println("删除成功!");
                    break;
                }
            }
        }
    }
    //继承添加
    @Override
    public void add(Book[] books) {
        System.out.println("请输入书名:");
        String name=sc.next();
        System.out.println("请输入作者:");
        String zname=sc.next();
        System.out.println("请输入价格:");
        int price=sc.nextInt();
        System.out.println("请输入分类:");
        String simple=sc.next();
        //循环找空位添加
        for (int i = 0; i < books.length; i++) {
            if(books[i].getBookname()==null){
                books[i].setBookname(name);
                books[i].setName(zname);
                books[i].setPrice(price);
                books[i].setSimple(simple);
                books[i].setState(true);
            }
        }
    }
    //继承显示
    @Override
    public void show(Book[] books) {
        System.out.println("图书列表为:书名--作者--价格--分类--状态");
        //循环输出
        for (int i = 0; i < books.length; i++) {

            if(books[i]!=null){
                System.out.println(books[i].getBookname()+"   "+books[i].getName()+"   "+books[i].getPrice()+"   "+books[i].getSimple()+"   "+books[i].isState());
            }
        }
    }
    //整理
    public void sort(Book[] books){
        System.out.println("图书按价格排序为:");
        //运用Arrays中sort对数组元素进行排序,则对整个数组进行排序判断并输出
        Arrays.sort(books, new Comparator<Book>() {
            @Override
            public int compare(Book o1, Book o2) {
                
                return (int)(o1.getPrice()-o2.getPrice());
            }
        });
        for (int i = 0; i < books.length; i++) {
            System.out.println(books[i].getBookname()+"  "+books[i].getName()+"  "+books[i].getSimple()+"  "+books[i].getPrice()+"  "+books[i].isState());
        }
    }
    //继承接口的内容
    @Override//1.整理  2.查阅  3.增加  4.删除  5.显示
    public void operate(int i) {
        switch (i){
            case 1://整理
                sort(books);
                break;
            case 2://查阅
                inquire(books);
                break;
            case 3://添加
                add(books);
                break;
            case 4://删除
                delete(books);
                break;
            case 5://展示列表
                show(books);
                break;
                default:
                    System.out.println("输入有误!");
        }
    }
}


User类

import java.util.Scanner;

public class User extends Person implements Operate{
    private String Rname;//名字
    private String Rgender;//性别
    private  int Rage;//年龄

    public User(String name, int age, String gender) {
        
        super(name, age, gender);//继承父类
    }
Scanner sc=new Scanner(System.in);
    @Override//查询
    public void inquire(Book[] books) {
        System.out.println("请输入书名:");
        String n=sc.next();
        //判断输入的n是否为空,若为空不考虑,不为空则输出对应书名的其他属性
        if(n!=null){
            for (int i = 0; i < books.length; i++) {
                if(books[i].getBookname().equals(n)){
                    System.out.println("有此书!");
                    System.out.println("图书为:书名--作者--价格--分类--状态");
                    System.out.println(books[i].getBookname()+"  "+books[i].getName()+"  "+books[i].getPrice()+"  "+books[i].getSimple()+"   "+books[i].isState());
                    break;
                }else{
                    System.out.println("暂无此书!");
                    break;
                }
            }
        }
    }

    @Override//删除
    public void delete(Book[] books) {
        System.out.println("请输入要借的书名:");
        String b=sc.next();
        //判断是否为空
        if(b!=null){
        for (int i = 0; i < books.length; i++) {
            //判断是否有此书
            if(books[i].getBookname().equals(b)){
                books[i].setState(false);
                System.out.println("借书成功!!");
                break;
            }else{
                System.out.println("暂无此书!");
                break;
            }
             }
        }
    }

    @Override//添加
    public void add(Book[] books) {
        System.out.println("请输入要还的书名:");
        String name=sc.next();
        if(name!=null){
            //循环找名添加
            for (int i = 0; i < books.length; i++) {
                if(books[i].getBookname().equals(name)){
                    books[i].setState(true);
                    System.out.println("还书成功!!");
                    break;
                }
            }
        }
    }

    @Override//展示
    public void show(Book[] books) {
        System.out.println("图书列表为:书名--作者--价格--分类--状态");
        //循环输出
        for (int i = 0; i < books.length; i++) {
            if(books[i]!=null){
                System.out.println(books[i].getBookname()+"  "+books[i].getName()+"  "+books[i].getPrice()+"  "+books[i].getSimple()+"   "+books[i].isState());
            }
        }
    }

    //继承接口的内容
    @Override//1.查询  2.借阅  3.归还  4.显示
    public void operate(int i) {
        switch (i){
            case 1:
                inquire(books);
                break;
            case 2:
                delete(books);
                break;
            case 3:
                add(books);
                break;
            case 4:
                show(books);
                break;
                default:
                    System.out.println("输入有误!!!");
        }
    }
}


Library类

import java.util.Scanner;

public class Library {
    Scanner sc=new Scanner(System.in);
    public void ll(){
        int count=0;//为循环做限定
        Person p=null;//为后边添加用户铺垫
        while (count<2){
            System.out.println("===========图书管理系统===============");
            System.out.println("1.普通用户   2.管理员  3.退出程序");
            int i=sc.nextInt();
            //选择身份
            if(i>=3){
                return;
            }switch (i){
                case 1:
                    System.out.println("请输入您的姓名:");
                    String n=sc.next();
                    System.out.println("请输入您的性别:");
                    String g=sc.next();
                    System.out.println("请输入您的年龄:");
                    int a=sc.nextInt();
                    p=new User(n,a,g);
                    System.out.println("登陆成功!");
                    System.out.println("当前用户为普通用户,姓名:"+p.getName()+" 年龄:"+p.getAge()+" 性别:"+p.getGender());
                    while(true){
                        System.out.println("请输入你的操作:1.查询  2.借阅  3.归还  4.显示  5.退出");
                        int s=sc.nextInt();
                        if(s==5){
                            System.out.println("退出成功!");
                            break;
                        }else {
                            p.operate(s);//调用普通用户
                        }
                    }
                    break;
                case 2:
                    System.out.println("请输入您的姓名:");
                    String n2=sc.next();
                    System.out.println("请输入您的性别:");
                    String g2=sc.next();
                    System.out.println("请输入您的年龄:");
                    int a2=sc.nextInt();
                    p=new Root(n2,a2,g2);
                    System.out.println("登陆成功!");
                    System.out.println("当前用户为管理员用户,姓名:"+p.getName()+" 年龄:"+p.getAge()+" 性别:"+p.getGender());
                    while(true){
                        System.out.println("请输入您的操作:1.整理  2.查阅  3.增加  4.删除  5.显示  6.退出");
                        int s=sc.nextInt();
                        if(s==6){
                            System.out.println("退出成功!!");
                            break;
                        }else{
                            p.operate(s);
                        }
                    }

            }
        }
    }
    //主函数控制整个系统运行
    public static void main(String[] args) {
        Library library=new Library();
        library.ll();
    }
}

五.结果区

普通用户的基本操作示例:
一部分
另一部分
管理员操作示例:
又是一部分另一部分
最后退出显示:
在这里插入图片描述

  • 最后到这里就结束了!很高兴分享,很高兴熬夜,很高兴变老!评论区我会在!!!

作者:llly?
本文版权归作者和CSDN共有,欢迎转载,且在文章页面明显位置给出原文链接,未经作者同意必须保留此段声明,否则保留追究法律责任的权利。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值