图书管理系统

这篇博客记录了一位学生使用Java编程实现图书管理系统的经历。通过数组、循环等技术,实现了图书的新增、查看、删除、借出、归还和退出等功能。博主在编程过程中遇到并解决了各种问题,强调了对基础知识理解和掌握的重要性,以此提升学习效率,为期末考试做准备。
摘要由CSDN通过智能技术生成

        临近期末,学习更加紧张,Java更是安排了实习周,在经过几天的知识复习后,老师布置了图书管理项目作为作业,当然了,老师自然是做了结果演示,并将要求进行了详细解说。

       

  图书管理项目

  技术: 数组

  功能:

   1. 新 增 图书

   2. 查 看 图书

   3. 删 除 图书

   4. 借 出 图书

   5. 归 还 图书

   6. 退 出图书

功能解析:

   1. 新增图书

      如果图书已经存在,则新增失败;如果图书不存在,则实现新增功能

   2. 查看图书

       遍历打印所有的图书

   3. 删除图书

      如果要删除的图书不存在,则删除失败;

      如果要删除的图书已借出,则删除失败;

      如果图书存在,并且是可解状态,则可以删除

   4. 借出图书

      如果图书不存在,则借出失败;

      如果图书存在,但是是已借出状态,则借出失败;

      如果图书存在,并且是可借出状态,则可以借出

    5. 归还图书

       如果图书不存在,则归还失败。

       如果图书存在,但是是可借状态,则归还失败

       如果图书存在,并且是已借出状态,则可以归还

    6.  退出

       选择该功能后,程序退出

 在经过一系列的学习,练习,更正后,我终于打出了代码

package com.java;

import java.util.Scanner;

public class book {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        boolean flag = true;

        String[] name = new String[8];//书的数量
        int[] state = new int[8];//借阅状态:0可借阅,1已借阅
        int[] date = new int[8];//借出日期
        int[] count = new int[8];//借出次数
        //将每本书初始化
        name[0] = "西游记";
        state[0] = 1;
        date[0] = 2;
        count[0] = 3;

        name[1] = "红楼梦";
        state[1] = 1;
        date[1] = 1;
        count[1] = 6;

        name[2] = "三国演义";
        state[2] = 0;
        count[2] = 4;

        name[3] = "水浒传";
        state[3] = 0;
        count[3] = 10;

        int num = -1;

        do {
            System.out.println("欢迎使用迷你图书管理器");
            System.out.println("------------------------");
            System.out.println("1.新增图书");
            System.out.println("2.查看图书");
            System.out.println("3.删除图书");
            System.out.println("4.借出图书");
            System.out.println("5.归还图书");
            System.out.println("6.退出图书");
            System.out.println("------------------------");

            System.out.println("请选择:");
            int choose = input.nextInt();
            switch (choose){
                case 1:
                    System.out.println("--->新增图书\n");
                    System.out.println("请输入图书名称:");
                    String BookName = input.next();

                    boolean flag2 = false;

                    for (int i = 0; i < name.length; i++){
                        if(name[i] == null){
                            name[i] = BookName;
                            System.out.println("新增《"+BookName+"》成功!");
                            flag2 = true;
                            break;
                        }
                    }
                    if(!flag2){
                        System.out.println("抱歉,新增《"+BookName+"》失败!货架已满");
                    }
                    System.out.println("**********************************");
                    break;
                case 2:
                    System.out.println("--->查看图书\n");
                    System.out.println("序号\t状态\t名称\t借出日期\t借出次数");
                    for (int i = 0; i < name.length; i++){
                        if(name[i] != null){
                            String BookState = (state[i] == 0) ? "可借阅" : "已借出";
                            String dateStr = (date[i] == 0) ? "" : (date[i] + "日");
                            System.out.println((i + 1) + "\t" + BookState + "\t" + name[i] + "\t" + dateStr + "\t" + count[i] + "次");
                        }
                    }
                    System.out.println("*****************************************");
                    break;

                case 3:
                    System.out.println("--->删除图书\n");
                    System.out.println("请输入要删除图书的名称:");
                    String delete = input.next();
                    boolean flag3 = false;
                    int index = -1;
                    for (int i = 0; i < name.length; i++){
                        if (name[i] != null && delete.equals(name[i]) && state[i] == 0){
                            flag3 = true;
                            index = i;
                            System.out.println("图书删除成功!");
                            break;
                        }else if (name[i] != null && delete.equals(name[i]) && state[i] == 1) {
                            flag3 = true;
                            System.out.println("该图书已被借出,目前无法删除!");
                            break;
                        }
                    }
                    if (index != -1) {
                        for (int j = index; j < name.length; j++) {
                            if (j != name.length - 1) {
                                name[j] = name[j + 1];
                                state[j] = state[j + 1];
                                date[j] = date[j + 1];
                            }
                            name[name.length - 1] = null;
                        }
                    }
                    if (!flag3) {
                        System.out.println("没有找到匹配信息!");
                    }
                    System.out.println("*****************************************");
                    break;

                case 4:
                    System.out.println("--->借出图书\n");
                    System.out.println("请输入图书名称:");
                    String want = input.next();
                    for (int i = 0; i < name.length; i++){
                        if (name[i] == null){
                            System.out.println("没有找到匹配信息!");
                            break;
                        }else if (want.equals(name[i]) && state[i] == 0){
                            state[i] = 1;
                            System.out.println("请输入借出日期:");
                            date[i] = input.nextInt();
                            while (date[i] < 1 || date[i] > 31){
                                System.out.println("必须输入大于等于1且小于等于31的数字,请重新输入:");
                                date[i] = input.nextInt();
                            }
                            System.out.println("借出《"+want+"》成功!");
                            count[i]++;
                            break;
                        }else if (want.equals(name[i]) && state[i] == 1){
                            System.out.println("《"+want+"》已被借出");
                            break;
                        }
                    }
                    System.out.println("*****************************************");
                    break;

                case 5:
                    System.out.println("--->归还图书\n");
                    System.out.println("请输入归还图书名称:");
                    want = input.next();
                    for (int i = 0; i < name.length; i++){
                        if (name[i] == null){
                            System.out.println("没有找到匹配信息!");
                            break;
                        }else if(want.equals(name[i]) && state[i] == 1){
                            state[i] = 0;
                            System.out.println("请输入归还日期:");
                            int redate = input.nextInt();
                            while (redate < date[i] || redate > 31) {
                                if (redate < date[i]) {
                                    System.out.println("归还日期不能小于借出日期,请重新输入:");
                                } else {
                                    System.out.println("一个月只有31天,请重新输入:");
                                }
                                redate = input.nextInt();
                            }
                            System.out.println("归还《" + want + "》成功!");
                            System.out.println("借出日期为:" + date[i] + "日");
                            System.out.println("归还日期为:" + redate + "日");
                            date[i] = 0;
                            break;
                        }else if (want.equals(name[i]) && state[i] == 0) {
                            System.out.println("该图书没有被借出!无法进行归还操作。");
                            break;
                        }
                    }
                    System.out.println("*****************************************");
                    break;

                case 6:
                    flag = false;
                    break;
            }
            if(flag){
                System.out.println("请输入0返回:");
                num = input.nextInt();
            }else{
                break;
            }
        }while (num == 0);
        System.out.println("谢谢使用!");
        input.close();
    }
}

       可以说,我的学习并不是很好,每次打代码,总会出现各种各样的问题,或是单词打错,或是符号用错。但我相信之后我会更加细心,出的错误也会越来越少。

        在这个作业里,运用到了数组,循环,三元运算符,boolean等知识,可以说很考验对这些知识的理解和掌握。在家学习要克服人的惰性,没有在学校的时候高效,希望接下来能提高我的学习效率,好好复习,为期末考试做准备。

      希望我们的期末考试都不会挂科吧!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值