图书管理系统


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;


public class Test4 {
    //成员变量区域
    static Scanner input = new Scanner(System.in);
    static String[] names = new String[50];
    static String[] status = new String[50];
    static String[] dates = new String[50];
    static int[] counts = new int[50];


    public static void main(String[] args) {
        init();
        menu();
    }
    /*
    图书管理系统--主菜单
     */
    public static void menu() {
        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("7.退\t出");
        System.out.println("请选择:");

        int number = input.nextInt();
        if (number == 1) {
            System.out.println("---->新增图书");
            System.out.println("请输入图书的名称");
            menu1();
        } else if (number == 2) {
            menu2();
            System.out.println("---->查看图书");
        } else if (number == 3) {
            System.out.println("---->删除图书");
            menu3();
        } else if (number == 4) {
            menu4();
            System.out.println("---->借出图书");
        } else if (number == 5) {
            menu5();
            System.out.println("---->归还图书");
        } else if (number == 6) {
            menu6();
            System.out.println("---->图书馆排行");
        } else if (number == 7) {
            System.out.println("谢谢使用!");
            System.exit(1);//程序正常退出
        }
        returnMune();
    }
    /**
     * 定义一个方法实现循环菜单(原因:该代码重复6遍)
     */
    public static void returnMune() {
        System.out.println("..........");
        System.out.println("******************");
        System.out.println("输入0返回");
        int i = input.nextInt();
        if (i == 0) {
            menu();
        }
    }
    /**
     * 定义方法:给数组定义初始值
     */
    public static void init() {
        names[0] = "罗马假日";
        status[0] = "已借出";
        dates[0] = "2010-7-1";
        counts[0] = 34;

        names[1] = "风声鹤唳";
        status[1] = "可借";
        dates[1] = "\t\t";
        counts[1] = 19;

        names[2] = "浪漫满屋";
        status[2] = "可借";
        dates[2] = "\t\t";
        counts[2] = 24;
    }
    /**
     * 定义方法:查看图书的业务方法(目的:代码可读性)
     */
    public static void menu2() {
        System.out.println("序号\t状态\t名称\t借出日期\t借出次数");
        for (int i = 0; i < names.length; i++) {
            if (names[i] == null) {
                break;
            }
            System.out.println((i + 1) + "\t" + status[i] + "\t" + names[i] + "\t" + dates[i] + "\t" + counts[i]);
        }
    }

    //新增图书
    private static void menu1() {
        System.out.println("---->新增图书");
        System.out.println("请输入图书的名称");
        String nameBook=input.next();
        boolean boo = false;
        for (int i = 0; i < names.length; i++) {
            if(nameBook.equals(names[i])){  // ==  equals
                System.out.println("已存在,新增失败!");
                boo = true;
                break;
            }
        }
        if(!boo){
            for (int i = 0; i < names.length; i++) {
                if(names[i] == null){
                    names[i] = nameBook;
                    status[i] = "可借";
                    dates[i] = "";
                    counts[i] = 0;
                    System.out.println("新增<<"+nameBook+">>成功!");
                    break;
                }
            }
        }
    }

    //删除图书
    public static void menu3() {
        System.out.println("请输入删除图书名称");
        String name = input.next();
        boolean boo = false;
        a:for (int i = 0; i < names.length; i++) {
            if (name.equals(names[i])) {
                boo = true;
                System.out.println("图书存在");
                if (status[i] == "可借") {
                    System.out.println("可以删除");
                    b:for (int j = i; j < names.length; j++) {
                        if (status[j] != null) {
                            names[j] = names[j + 1];
                            status[j] = status[j + 1];
                            dates[j] = dates[j + 1];
                            counts[j] = counts[j + 1];
                        } else {
                            break b;
                        }
                    }
                    System.out.println("删除成功");
                } else {
                    System.out.println("图书已借出,无法删除");
                }
            }
        }
        if (!boo) {
            System.out.println("图书不存在,无法删除");
        }
    }

    //借出图书
    public static void menu4() {
        System.out.println("请输入图书名称");
        String name = input.next();
        boolean boo = false;
        for (int i = 0; i < names.length; i++) {
            if (name.equals(names[i]) && status[i] == "可借") {
                boo = true;
                System.out.println("图书可借出");
                status[i] = "已借出";
                System.out.println("输入借出时间");
                String date = input.next();
                dates[i] = date;
                counts[i]++;
                break;
            } else if (name.equals(names[i]) && status[i] == "已借出") {
                System.out.println("不可借出");
                break;
            }
        }
        if (boo=false) {
            System.out.println("图书不存在,无法借出");
        }

    }

    public static void menu5() {
        System.out.println("---->归还图书");
        System.out.println("输入图书名称");
        String name = input.next();
        System.out.println("输入归还日期(年-月-日)");
        String returndt = input.next();
        boolean boo = false;
        int index = -1;
        for (int i = 0; i < names.length; i++) {
            if (names[i] != null && names[i].equals(name)) {
                boo = true;
                index = i;
                break;
            }
        }
        if (boo && status[index] == "可借") {
            System.out.println("无法归还,未借出");
        } else if (boo && status[index] == "已借出") {

            System.out.println("归还" + name + "成功");
            System.out.println("借出日期" + dates[index]);
            System.out.println("归还日期为" + returndt);
            //计算租金
            int money =getMoney(dates[index], returndt);
            System.out.println("应付租金(元)" +money);
            status[index] = "可借";
            dates[index] = "";
        }
    }
    public static int getMoney(String dt1, String dt2) {
        //字符串转化成整数型(字符串----时间类型----整数型)
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        try {
            Date parse1 = sdf.parse(dt1);
            long time1 = parse1.getTime();

            Date parse2 = sdf.parse(dt2);
            long time2 = parse2.getTime();//获得当前时间 距离时间起点的毫秒数

            return (int)((time2 - time1) / (1000 * 60 * 60 * 24));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return 0;
    }
    public static void menu6(){
        System.out.println("--->图书排行榜");
        /**
         * 冒泡排序:小数在前,大数在后
         * 1.n个元素参与冒泡排序,比较n-1轮
         * 2.轮数+本轮次数=n
         * 3.换数
         */
        /*for (int i = 0; i <数组名.length-1 ; i++) {//循环轮数变化
            for (int j = 0; j <数组名。length-1-i; j++) {//每轮比较的次数
                if (数组名[j]>数组名[j+1]){
                    int 数组名1=数组名[j];
                    shuzuming[j]=shuzuming[j+1];
                    数组名[j+1]=数组名1;
                }
            }
        }Systen.out.println(""+Arrays.toString(数组名)+);
        */
        int index=names.length;
        //获得元素个数-----多少个数参与冒泡排序
        for (int i = 0; i <names.length ; i++) {
            if (names[i]==null){
                index=i;
                break;
            }
        }
        for (int i = 0; i <index-1 ; i++) {//比较轮数
            for (int j = 0; j < index-1-i; j++) {//每轮比较的次数
                if (counts[j]<counts[j+1]){
                    int num=counts[j];
                    String name=names[j];
                    String zt=status[j];
                    String dt=dates[j];

                    counts[j]=counts[j+1];
                    names[j+1]=names[j+1];
                    status[j+1]=status[j+1];
                    dates[j+1]=dates[j+1];

                    counts[j+1]=num;
                    names[j+1]=name;
                    status[j+1]=zt;
                    dates[j+1]=dt;
                }
            }
        }
        System.out.println("***************");
        System.out.println("借出次数\t图书名");
        for (int i = 0; i <index ; i++) {
            System.out.println(counts[i]+"\t"+names[i]);
        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值