【Java之简易[图书借阅系统]】戳进来看看

大家好,今天给大家带来本人的自主编写的简易版【图书借阅系统】,权当做个人的实战练习和学习作品!老师说过三分看,七分练!

成果展示:

【Java之简易[图书借阅系统]】戳进来看看_第1张图片

【Java之简易[图书借阅系统]】戳进来看看_第2张图片【Java之简易[图书借阅系统]】戳进来看看_第3张图片
【Java之简易[图书借阅系统]】戳进来看看_第4张图片【Java之简易[图书借阅系统]】戳进来看看_第5张图片

一、设计需求

请设计一个图书借阅系统,实现图书信息的展示,借阅,还书等功能。

二、设计构思

1、用SchoolBook的借口来实现,定义一个抽象的Led_Books方法。
2、分别用三个借书、还书、查看已借的书的类来implements借口,再使用借口回调。
3 、CountBooks类用于输入输出图书信息。
4、BookList单链表也用作保存图书编号。
5、主菜单类方法Menu,持续调用Choose类方法。
6、插入系统实时时间!

三、设计关键

1、Choose类方法的构建

对于类方法 Choose的构建,其实也是最为关键的一个部分,因为涉及了对于各部分模块的直接调用,以及对于操作指令的处理,遇到很多的bug和慢慢也被我解决了。
并且这部分代码相对来说,比较冗长,可能是我还没有完全适应oop编程。
【Java之简易[图书借阅系统]】戳进来看看_第6张图片

2、 Menu类方法的实现

菜单Menu类方法的实现,相对简单,主要是每次都要对Choose的调用。

【Java之简易[图书借阅系统]】戳进来看看_第7张图片

3、单链表的运用

目前对于单链表的运用我只是出于一个比较浅层的运用,就是简单的输入输出链表数据。

package Program_1.JavaList;

public class BookList
{
    Node head=null;

    public void add_head(int data)//添加头节点
    {
        Node node =new Node(data);
        node.next=head;
        head=node;

    }

    public void Print()//打印链表
    {
        Node A_Node=head;
        while(A_Node!=null)
        {

            System.out.println("该书编号为:"+A_Node.data);
            A_Node=A_Node.next;
        }
    }

    public void addLast(int data)//添加尾节点
    {
        Node node =new Node(data);
        Node temp =head;

        while (temp.next!=null)
        {
            temp=temp.next;
        }
        temp.next=node;
    }
    public int  length()//链表长度
    {
        Node node=head;
        int length=0;
        while(node!=null)
        {
            length++;
            node=node.next;
        }
        return length;

    }

    public void Insertdata(int index ,int data)
    {
        Node node=new Node(data);
        if(index==0||index>length())
        {
            System.out.println("插入失败!");
            return;
        }
        Node temp=head;
        int length=0;
        while (temp.next!=null)
        {
            length ++;
            temp=temp.next;
            if(index==length) {

                node.next=temp.next;
                temp.next=node;
                return;
            }
        }

    }

四、代码附录

1、main方法

package Program_1;
import Program_1.JavaList.*;
import javax.swing.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class Week4_New {
    public static void main(String[] args) {

        Menu();


    }
    public static  void Menu() {
        Choose choose=new Choose();
        System.out.println("\t\t【<图书借阅系统>】\t\t");
        System.out.println("\n");
        System.out.println("\t\t||①我要借书||");
        System.out.println("\t\t||②我借的书||");
        System.out.println("\t\t||③归还借书||");
        System.out.println("\t\t||④退    出||\n");
        Date date = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("\t\tyyyy-MM-dd :hh:mm:ss");
        System.out.println((dateFormat.format(date)));
        choose.Choose();
    }
    public  static class Choose
    {
        UseIt use = new UseIt();
       static CountBooks count=new CountBooks();

        public  void  Choose() {
            System.out.println("输入您要进行的操作:\n");
            Scanner usage = new Scanner(System.in);
            switch (usage.nextInt()) {
                case 1: {
                    use.UseIt(new Books_info());
                   int x=use.UseIt(new Led__Books());
                   count.Input(x);
                    System.out.println("您借的是:"+count.Booksname[x-1]);
                    int res;
                    do {
                        res = JOptionPane.showConfirmDialog(null, "是否继续借书?",
                                "提示", JOptionPane.YES_NO_OPTION);

                        if (res == JOptionPane.YES_OPTION) {
                            int y=use.UseIt(new Led__Books());
                            count.Input(y);
                            System.out.println("您借的是:"+count.Booksname[y-1]);
                        }
                    }
                    while (res == 0);
                     Menu();
                }break;

                case 2:
                {

                        if (count.Booksnumbers== 0) {
                            System.out.println("您还未借任何书!");
                            Menu();
                            break;
                        }
                    count.Output();
                    }

                Menu();
                case 3:
                {

                    if(count.Booksnumbers<=0)
                    {System.out.println("您还未借任何书!");
                        Menu();break;}
                    int i=0;
                  int x=use.UseIt(new Return__Books());
                  while(i<10)
                  {
                      if(count.BooksId[i]==x)
                      {
                          System.out.println(count.BooksId[i] + "成功归还!");
                          count.Clear(i);
                          break;
                      }
                      else if(i==9&&count.BooksId[i]!=x){System.out.println("输入编号错误!");
                          break;}
                      i++;
                      }


                    int res;
                    do {
                        res = JOptionPane.showConfirmDialog(null, "是否继续还书?",
                                "提示", JOptionPane.YES_NO_OPTION);

                        if (res == JOptionPane.YES_OPTION) {
                            if(count.Booksnumbers==0)
                            {
                                System.out.println("书已经全部还清!");
                                break;
                            }

                            int k=0;
                            int y = use.UseIt(new Return__Books());
                            while (k <10) {
                                if (count.BooksId[k] == y) {
                                    System.out.println(count.BooksId[k] + "成功归还!");
                                    count.Clear(k);
                                    break;
                                }
                                else if(k==9&&count.BooksId[k]!=y){System.out.println("输入编号错误!");
                                break;}
                                k++;
                            }
                        }
                    }while(res==0);


                   Menu();}


                case 4:
                {
                    System.out.println("\t\t正在退出系统——");
                    System.out.println("\t\t退出成功!");
                    System.exit(0);
                }
                    }

                }
            }
        }



interface SchoolBook {
    int  LedBooks();

}

class  Led__Books implements SchoolBook {
    public int LedBooks() {
        System.out.println("\t\t<借书>");
        Scanner bookname = new Scanner(System.in);
        System.out.println("请输入你要借的书的序号:");
        int  x = bookname.nextInt();
        System.out.println("借书成功!");
        return x;
    }


}

class Books_info implements SchoolBook {
    public int LedBooks() {
        System.out.println("图书馆有以下书:");
        System.out.println("||1、性代数线||--||5、数据结构||");
        System.out.println("||2、高等数学||--||6、大学物理||");
        System.out.println("||3、大学物理||--||7、离散数学||");
        System.out.println("||4、高等代数||--||8、Java课程设计||");
        return  0;
    }
}

 class Return__Books implements SchoolBook {
    public int  LedBooks() {

        System.out.println("输入你要归还的书的编号:");
        Scanner Rebooks = new Scanner(System.in);
        int  x= Rebooks.nextInt();
        return x;

    }
}

class UseIt {
    public int UseIt(SchoolBook a)
    { return a.LedBooks(); }
}

class  CountBooks {
    BookList account = new BookList();
    int []BooksNumbers=new int [10];
    int Booksnumbers=0;
     private int i=0;
     int []BooksId=new int [10];
    String[] Booksname = new String[]{"性代数线", "高等数学",
            "大学物理", "高等代数", "数据结构",
            "大学物理", "离散数学", "Java课程设计"};
    public void  Input(int a) {
        account.add_head(202100+a);
        this.BooksNumbers[i]=a;
        this.BooksId[i]=202100+a;
        this.Booksnumbers++;
        i++;
    }
    public void Output() {
        account.Print();
        int i=0;
        while(BooksNumbers[i]!=0&&Booksnumbers!=0)
        {
            System.out.println(Booksname[BooksNumbers[i]-1]);
            i++;
        }
        System.out.println("您共借了"+Booksnumbers+"本书!");

    }
    public void Clear(int x){
this.BooksNumbers[x]=0;
Booksnumbers--;

    }

}

2、BooList单链表类

package Program_1.JavaList;

public class BookList
{
    Node head=null;

    public void add_head(int data)//添加头节点
    {
        Node node =new Node(data);
        node.next=head;
        head=node;

    }

    public void Print()//打印链表
    {
        Node A_Node=head;
        while(A_Node!=null)
        {

            System.out.println("该书编号为:"+A_Node.data);
            A_Node=A_Node.next;
        }
    }

    public void addLast(int data)//添加尾节点
    {
        Node node =new Node(data);
        Node temp =head;

        while (temp.next!=null)
        {
            temp=temp.next;
        }
        temp.next=node;
    }
    public int  length()//链表长度
    {
        Node node=head;
        int length=0;
        while(node!=null)
        {
            length++;
            node=node.next;
        }
        return length;

    }

    public void Insertdata(int index ,int data)
    {
        Node node=new Node(data);
        if(index==0||index>length())
        {
            System.out.println("插入失败!");
            return;
        }
        Node temp=head;
        int length=0;
        while (temp.next!=null)
        {
            length ++;
            temp=temp.next;
            if(index==length) {

                node.next=temp.next;
                temp.next=node;
                return;
            }
        }

    }

  /* public  void main(String []args)
    {
        System.out.println("我运行了!");
        BookList List=new BookList();
        List.add_head(2);
        List.add_head(4);
       /* List.addLast(1);
        List.addLast(7);
        List.Insertdata(3,88);
        List.Print();

    }*/

}
//另一个public类
package Program_1.JavaList;

public class Node//节点类
{
    Node next =null;
    public int data;
    public Node(int data){
        this.data=data;
    }
}



你可能感兴趣的:(小白的进击之路,java,开发语言,后端)