javase:简单的图书管理系统

一丶项目简介

这个项目的是一个简单的图书管理系统,可以进行注册,登录,借书,查书,还书的功能。

二丶项目代码

Book.java

package LibaryLend;

public class Book {
    int Bookid;//书籍编号
    String Bookname;//书籍名称
    int stock;//书籍库存
    double price;//书籍价格

    public Book(int Bookid,String Bookname,int stock,double price) {
        this.Bookid = Bookid;
        this.Bookname = Bookname;
        this.stock = stock;
        this.price = price;
    }
}

Student.java

package LibaryLend;

import java.util.ArrayList;
import java.util.List;

public class Student {
    int Sid;//学生学号
    String Sname;//学生姓名
    int books[] = new int[3];//已借阅书籍的集合

    public Student(int sid,String Sname,int[] books) {
        this.Sid = sid;
        this.Sname = Sname;
        this.books = books;
    }
}

Load.java

package LibaryLend;
import LibaryLend.LendingSystem;
import java.util.List;
import java.util.Scanner;

public class Load {
    public int Loading(List<Student> SList){

        //判断登录是否成功
        boolean m = false;

        //学生输入id和name
        System.out.println("请输入你的学号:");
        Scanner id = new Scanner(System.in);
        int sid = id.nextInt();
        System.out.println("请输入你的名字:");
        Scanner name = new Scanner(System.in);
        String sname = name.next();

        //对比学生集合查找信息是否相同
        for(int i = 0 ; i < SList.size() ; i++){
            if(SList.get(i).Sid == sid && SList.get(i).Sname.equals(sname)){
                m = true;
            }
        }

        if(m){
            System.out.println("登录成功");
            return sid;
        }else{
            System.out.println("学号或姓名输入错误");
            return 0;
        }
    }

    public void Register(List<Student> SList){
        System.out.println("----欢迎来到注册界面----");

        System.out.println("请输入你的学号:");
        Scanner id = new Scanner(System.in);

        //输入正确格式的学号,集合添加,否则提示注册失败
        if(id.hasNextInt()){
            int sid = id.nextInt();
            System.out.println("请输入你的姓名");
            Scanner name = new Scanner(System.in);
            String sname = name.next();
            SList.add(new Student(sid,sname, new int[]{0,0,0}));
            System.out.println("注册成功");
        }else{
            String sid = id.next();
            System.out.println("请输入你的姓名");
            Scanner name = new Scanner(System.in);
            String sname = name.next();
            System.out.println("学号输入有误,注册失败");
        }

    }
}

LibarySystem.java

package LibaryLend;

import java.util.List;
import java.util.Scanner;
import java.lang.String;

public class LibarySystem {
    public void borrowBook(List<Book> bookList, List<Student> SList,int id){

        //打印当前学生已借书数量,打印学生剩余可借书数量
        int sum = 0;//记录学生可借书数量
        int i = 0;//学生id对应学生集合中的位置
        for(i = 0 ;i < SList.size(); i++){
            if(SList.get(i).Sid == id){
                break;
            }
        }

        for(int m = 0;  m < SList.get(i).books.length ; m++){
            if(SList.get(i).books[m] != 0){
                sum++;
            }
        }
        System.out.println("你已借书"+sum+"本,还可借阅"+(SList.get(i).books.length-sum)+"本");


        //打印图书列表
        System.out.println("书籍编号\t书籍名称\t书籍价格\t书籍库存");
        for(int m = 0 ; m < bookList.size() ; m++){
            System.out.println(bookList.get(m).Bookid+"\t\t"+bookList.get(m).Bookname+"\t"+bookList.get(m).price+"\t"+bookList.get(m).stock);
        }

        System.out.println("1.借书");
        System.out.println("2.返回");


        //借书,借书余额不足提示无法借书,借书成功修改图书图存和学生已借书籍
        while(true){
            System.out.println("输入数字选择你的操作");
            Scanner s = new Scanner(System.in);
            if(s.hasNextInt()){
                int c = s.nextInt();
                switch(c){
                    case 1:
                        if((SList.get(i).books.length-sum) != 0){
                            borrow(bookList,SList,i);
                        }else{
                            System.out.println("你已达到借书上限,请先还书");
                        }
                        break;
                    case 2:
                        return;
                    default:System.out.println("输入有误");break;
                }
            }else{
                System.out.println("输入有误");
            }

        }
    }

    public void returnBook(List<Book> bookList, List<Student> SList,int id){

        while(true){

            int i = 0;//学生id对应学生集合中的位置
            for(i = 0 ;i < SList.size(); i++){
                if(SList.get(i).Sid == id){
                    break;
                }
            }

            //未借书显示主界面
            boolean b = true;//记录是否存在
            for(int q = 0 ; q < SList.get(i).books.length ; q++){
                if(SList.get(i).books[q] != 0){
                    b = false;
                }
            }

            if(b){
                System.out.println("当前还未借书");
                return;
            }

            //打印学生已借书
            System.out.println("已借书籍");
            System.out.println("书籍编号\t书籍名称");
            for(int m = 0; m < SList.get(i).books.length ; m++){
                if(SList.get(i).books[m] != 0){
                    //学生已借书籍存的是书的编号,编号对应书集合中的位置需要减1
                    System.out.println(bookList.get(SList.get(i).books[m]-1).Bookid+"\t"+bookList.get(SList.get(i).books[m]-1).Bookname);
                }
            }

            //功能  还书 返回
            System.out.println("1.还书");
            System.out.println("2.返回");
            System.out.println("输入数字选择你的操作");

            Scanner s = new Scanner(System.in);
            if(s.hasNextInt()){
                int c = s.nextInt();
                switch(c){
                    case 1:
                        rbook(bookList,SList,i);
                        break;
                    case 2: return;

                    default:System.out.println("输入错误");
                }
            }else{
                System.out.println("输入有误");
            }


            //对应书的库存加1,学生所借书减1
        }


    }

    public void seacherBook(List<Book> bookList, List<Student> SList,int Studentid){

        while(true){
            //提示输入想要查询书籍的id或name
            System.out.println("输入你想要查询的书籍ID或名称");
            Scanner s = new Scanner(System.in);

            int m = 0;//查询结果位置
            boolean b = false;//检查输入是否正确
            if(s.hasNextInt()){

                int c = s.nextInt();
                for(m = 0; m < bookList.size() ; m ++){
                    if(bookList.get(m).Bookid == c){
                        b = true;
                        break;
                    }
                }

                if(b){
                    System.out.println(bookList.get(m).Bookid+"\t\t"+bookList.get(m).Bookname+"\t"+bookList.get(m).price+"\t"+bookList.get(m).stock);
                    break;
                }else{
                    System.out.println("输入错误");
                }
            }else{
                String c = s.next();
                for(m = 0; m < bookList.size() ; m ++){
                    if(bookList.get(m).Bookname.equals(c)){
                        b = true;
                        break;
                    }
                }

                if(b){
                    System.out.println(bookList.get(m).Bookid+"\t\t"+bookList.get(m).Bookname+"\t"+bookList.get(m).price+"\t"+bookList.get(m).stock);
                    break;
                }else{
                    System.out.println("输入错误");
                }
            }
        }


        while(true){
            System.out.println("请输入数字选择你的操作");
            System.out.println("1.借书");
            System.out.println("2.返回");
            Scanner S = new Scanner(System.in);
            if(S.hasNextInt()){
                int c = S.nextInt();
                switch(c){
                    //case 1:return; 不想写了,实现思路跟借书一致
                    case 2:
                        return;
                    default: System.out.println("输入错误");break;

                }
            }
        }



    }

    public static void borrow(List<Book> bookList, List<Student> SList,int i){

        boolean b1 = false;//记录书籍编号或名称是否正确
        boolean b2 = true;//记录该书学生是否借阅
        int m = 0;//记录书籍id对应集合中位置

        System.out.println("请输入你想要借阅的图书的编号或名称");

        Scanner s = new Scanner((System.in));

        if(s.hasNextInt()){

            int c = s.nextInt();

            //匹配书籍id查看输入是否正确
            for(m = 0;m < bookList.size();m++){
                if(bookList.get(m).Bookid == c){
                    b1 = true;
                    break;
                }
            }

            if(b1 && c != 0){

                //匹配书籍id查看该生是否借阅
                for(int n = 0;n < SList.get(0).books.length;n++){
                    if(SList.get(i).books[n] == bookList.get(m).Bookid){
                        b2 = false;
                        break;
                    }
                }
                }else{
                System.out.println("书籍编号输入错误");
            }

            if(b2){

                //书籍库存-1
                if(bookList.get(m).stock != 0){
                    bookList.get(m).stock--;

                    //学生借书+1
                    for(int n = 0 ; n < SList.get(i).books.length ; n++){
                        if(SList.get(i).books[n] == 0){
                            SList.get(i).books[n] = bookList.get(m).Bookid;
                            System.out.println("借书成功");
                            return;
                        }
                    }
                }else{
                    System.out.println("该书已被借完");
                    return;
                }
            }else{
                System.out.println("该书你已借阅");
            }
        }else{

            //匹配书籍名称查看该生是否借阅
            String c = s.next();

            for(m = 0;m < bookList.size();m++){
                if(bookList.get(m).Bookname.equals(c)){
                    b1 = true;
                    break;
                }
            }

            if(b1 && c != null){

                //匹配书籍id查看该生是否借阅
                for(int n = 0;n < SList.get(0).books.length;n++){
                    if(bookList.get(SList.get(i).books[n]).Bookname.equals(c)){
                        b2 = true;
                    }
                }
            }else{
                System.out.println("书名输入错误");
                return;
            }

            if(b2){

                //书籍库存-1
                if(bookList.get(m).stock != 0){
                    bookList.get(m).stock--;

                    //学生借书+1
                    for(int n = 0 ; n < SList.get(i).books.length ; n++){
                        if(SList.get(i).books[n] == 0){
                            SList.get(i).books[n] = bookList.get(m).Bookid;
                            System.out.println("借书成功");
                            return;
                        }
                    }
                }else{
                    System.out.println("该书已被借完");
                    return;
                }
            }else{
                System.out.println("该书你已借阅");
            }

        }

    }

    public static void rbook(List<Book> bookList, List<Student> SList,int i){

        System.out.println("请输入还书的编号或名字");

        Scanner s = new Scanner(System.in);

        //根据输入的内容检索图书是否已借
        //匹配成功书籍库存+1,学生已借图书-1
        if(s.hasNextInt()){
            int c = s.nextInt();

            //记录书籍id对应位置
            int book = 0;//书的位置

            for(book = 0 ; book < bookList.size() ; book++){
                if(bookList.get(book).Bookid == c){
                    break;
                }
            }

            //匹配书籍id查看该生是否借阅
            for(int n = 0;n < SList.get(0).books.length;n++){
                if(SList.get(i).books[n] == bookList.get(book).Bookid){
                    //书籍库存+1
                    bookList.get(book).stock++;
                    //学生借书-1
                    for(int m = 0 ; m < SList.get(i).books.length ; m++){
                        if(SList.get(i).books[m] == bookList.get(book).Bookid){
                            SList.get(i).books[m] = 0;
                            return;
                        }
                    }
                }
            }
            System.out.println("书籍编号输入错误");
            return;
        }else {
            String c = s.next();

            //记录书籍id对应位置
            int book = 0;//书的位置
            for (book = 0; book < bookList.size(); book++) {
                System.out.println("test");
                if (bookList.get(book).Bookname.equals(c)) {

                    break;
                }
            }

            //匹配书籍id查看该生是否借阅
            for (int n = 0; n < SList.get(0).books.length; n++) {
                if (SList.get(i).books[n] == bookList.get(book).Bookid) {
                    //书籍库存+1
                    bookList.get(book).stock++;
                    //学生借书-1
                    for (int m = 0; m < SList.get(i).books.length; m++) {
                        if (SList.get(i).books[m] == bookList.get(book).Bookid) {
                            SList.get(i).books[m] = 0;
                            return;
                        }
                    }
                }
            }
            System.out.println("书籍编号输入错误");
            return;
        }
    }


}

LendingSystem

/*
    图书借阅系统
    1.有学生类和图书类两个类
    2.图书类有Bookid,Bookname,stock(库存),price4个属性
    3.学生类有Sid,Sname,books(已借阅书籍)3个属性
    4.注册功能包含id,name,books3个属性,books属性初始为0
    4.学生借书前要输入id和name进行登录并获取books信息,如果借阅数量已满,需要先还书再借阅,借阅数量为满可以直接借阅
    5.学生借书需要保存已借阅书籍的信息,借书还书前后需要修改图书类的库存信息,学生类已借阅书籍可以有图书类的集合来存储
    6.学生可以通过书籍id或者name来查询书籍,查询成功展示书籍信息,查询未成功提示查询失败并重新输入
    7.学生还书先展示已借阅书籍,学生可通过输入id或者name来选择还的书,id或者name输入错误提示重新输入或者取消还书,还书成功展示还书后的借书信息
    8.主菜单基本逻辑:登录界面有登录注册和退出三个功能。注册成功需要填写id和name,注册成功后可登录。登录成功后有借书,查书,还书和退出四个功能。借书界面展示学生已借书籍数量和可借书籍数量。无法借书时若选择借书则
    提示借书失败,无法借书,需要还书。查书时学生可输入id或者name,有系统判断输入的类型,并展示对应的书籍。查书成功可直接借书。还书界面展示学生已借书籍,学生可以选择
    还书或退会主界面。退出功能会退出到登录界面,在登录界面可以选择重新登录或者退出系统。
 */


package LibaryLend;


import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class LendingSystem {


    static List<Book> bookList = new ArrayList<>();
    static List<Student> SList = new ArrayList<>();

    //记录当前学生
    static int Studentid = 0;

    public static void main (String[] args){
        initBook();
        initStudent();

        System.out.println("----欢迎进入图书管理系统----");

        //判断登录是否成功
        boolean m = true;

        //登录界面
        while(Studentid == 0){

            //功能选项
            System.out.println("1.登录");
            System.out.println("2.注册");
            System.out.println("3.退出");

            System.out.println("输入数字选择你的操作:");

            Scanner s = new Scanner(System.in);
            if(s.hasNextInt()){
                int num = s.nextInt();

                //登录界面:登录,注册,退出
                Load load = new Load();
                switch (num){
                    case 1 :
                        Studentid = load.Loading(SList);
                        break;
                    case 2 :
                        load.Register(SList);
                        break;
                    case 3 :
                        return;
                    default: System.out.println("输入错误,请重新输入");
                }
            }else{
                System.out.println("输入错误,请重新输入");
            }


        }

        //功能界面
        while(true){

            //功能选项
            System.out.println("1.借书");
            System.out.println("2.还书");
            System.out.println("3.查书");
            System.out.println("4.退出");

            System.out.println("输入数字选择你的操作:");

            Scanner s = new Scanner(System.in);

            if(s.hasNextInt()){
                int num = s.nextInt();
                LibarySystem LS = new LibarySystem();
                switch(num){
                    case 1:
                        LS.borrowBook(bookList,SList,Studentid);
                        break;
                    case 2:
                        LS.returnBook(bookList,SList,Studentid);
                        break;
                    case 3:
                        LS.seacherBook(bookList,SList,Studentid);
                        break;
                    case 4:
                        return;
                    default: System.out.println("输入错误,请重新输入"); break;
                }
            }else{
                System.out.println("输入错误,请重新输入");
            }



        }
    }

    // 初始化书籍信息
    public static void initBook(){
        bookList.add(new Book(1,"红楼梦",10,20.0));
        bookList.add(new Book(2,"三国演义",5,15.0));
        bookList.add(new Book(3,"西游记",15,22.0));
        bookList.add(new Book(4,"水浒传",8,30.0));
    }

    //初始化学生信息
    public static void initStudent(){
        SList.add(new Student(2112,"xiaoming", new int[]{1,2,0}));
        SList.add(new Student(2113,"xiaohong", new int[]{2,3,0}));
    }
}

三丶运行结果

注册

在这里插入图片描述

登录

在这里插入图片描述

借书

在这里插入图片描述

还书

在这里插入图片描述

查书

在这里插入图片描述

四丶小结

这次项目的时间不多,主要目的是对之前javase一些知识的运用和总结,所以没有注重太多的细节。查书之后借书的功能还未完善,但基本逻辑与直接借书类似。
由于学习进度问题,类的集合的信息存储使用的是代码初始化,代码演示部分是在控制台输出。在之后学习到GUI类和FILE类之后可以将数据存储在文件中,将运行结果在GUI界面展示出来。之后再学习到javaweb之后也可以以这次项目为基础,搭建一个图书管理系统的网站,使得项目更加完整。
在项目过程中还有一些问题没有解决。使用hasNextInt()之后可以使用nextInt赋值,但在使用hasNext()之后无法使用next()赋值,查询后为明白,在之后的学习中会注意Scanner的使用。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值