图书管理类

package edu.xcdq;

import com.sun.deploy.security.AbstractBrowserAuthenticator;

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

// 图书管理类
public class LibraryManage {
    Scanner scanner = new Scanner(System.in);
    BookSet bookSet = new BookSet();
    //这一行代码确立了转换的格式,其中 yyyy 是完整的公元年,MM 是月份,dd 是日期
    SimpleDateFormat outBookDate = new SimpleDateFormat("yyyy-MM-dd");
    // 初始化仓库
    public void initial() {
        Book java = new Book();// new一个图书对象
        java.bookSet("java基础教程",false,"2015-7-1",1);// 用bookSet方法给java对象传入数据

        Book mysql = new Book();
        mysql.bookSet("数据库技术",true,"",0);


        Book renYue = new Book();
        renYue.bookSet("人月神话",true,"",0);

        // 把图书信息对象传入图书仓库内
        bookSet.book[0] = java;
        bookSet.book[1] = mysql;
        bookSet.book[2] = renYue;
    }

    // 开始菜单
    public void startMenu() throws ParseException {
        boolean flag1 = true;
        int choose;
        int fanhui;
        stopStartMenu: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("请选择:");
            choose = scanner.nextInt();
            switch (choose) {
                case 1:
                    System.out.println("---> 新增图书");
                    add();
                    break;
                case 2:
                    System.out.println("---> 查看图书");
                    chakan();
                    break;
                case 3:
                    System.out.println("---> 删除图书");
                    delete();
                    break;
                case 4:
                    System.out.println("---> 借出图书");
                    out();
                    break;
                case 5:
                    System.out.println("---> 归还图书");
                    returnBook();
                    break;
                case 6:
                    System.out.println("---> 退   出");
                    break stopStartMenu;
            }
            System.out.print("输入0返回:");
            fanhui = scanner.nextInt();


        }while( fanhui == 0 ) ;
    }

    // 新增图书
    private void add() {
        System.out.print("请输入图书名称:");
        String name = scanner.next();
        boolean flagDelete = true;
        int count = 0;
        String date = "";
        
        Book newBook = new Book();
        newBook.bookSet(name,flagDelete,date,count);
        // 循环找到第一个不为null的对象类数组,并给他存入这个新增的对象,然后结束循环
        for (int i = 0; i < bookSet.book.length; i++) {
            if ( bookSet.book[i] == null ) {
                bookSet.book[i] = newBook;
                break;
            }
        }
        System.out.println("增加" + newBook.name + "成功");
    }
    // 查看图书
    private void chakan() {
        System.out.println("序号 \t状 态 \t  名称  \t\t借出日期");
        // 循环找到并打印不为null的对象
        for (int i = 0; i < bookSet.book.length; i++) {
            if ( bookSet.book[i] != null) {
                bookSet.book[i].print( i+1 );
            }
        }
        System.out.println("***********************************");
    }
    // 删除图书
    private void delete() {
        System.out.println("请输入你要删除图书的名称:");
        String deleteBookName = scanner.next();
        // 循环找到要删除图书的名称
        for (int i = 0; i < bookSet.book.length; i++) {
            if ( bookSet.book[i] != null ) {
                if ( deleteBookName.equals(bookSet.book[i].name) ) {
                    if (bookSet.book[i].flag ) {
                        int j = i;
                        while ( bookSet.book[j+1] != null ) {// 循环把要删除的图书后面的每一位不为null的对象的属性给到前一位
                            bookSet.book[j] = bookSet.book[j+1];
                            j++;
                        }
                        /*
                        这时bookSst.book[j]已经是除去null最后一个有值的对象,前一位对象的属性与当前对象的属性相同,
                        这个对象就多余了,所以把他的值为null
                         */
                        bookSet.book[j] = null;
                        System.out.println("删除成功");
                        break;
                    }else {
                        System.out.println("已借出的书不能删除");
                    }
                }else {
                    System.out.println("图书馆不存在此书");
                    break;
                }

            }

        }


        }
    // 借出图书
    private void out(){
        System.out.print("请输入图书名称:");
        String bookName = scanner.next();
        String outDate;// 借出图书日期
        // 循环找到要借的书的名字,并让用户输入借出的日期,然后用bookSet方法修改图书的状态和借出次数
        for (int i = 0; i < bookSet.book.length; i++) {
            if ( bookSet.book[i] !=null && bookName.equals(bookSet.book[i].name) ) {
                if ( bookSet.book[i].flag ) {
                    System.out.print("请输入借出日期(年-月-日):");
                    outDate = scanner.next();
                    bookSet.book[i].count = bookSet.book[i].count + 1;

                    bookSet.book[i].bookSet(bookName,false,outDate,bookSet.book[i].count);
                    System.out.println("借出成功");
                    break;
                }else {
                    System.out.println("此书已被借走");
                }

            }
        }
    }
    // 归还图书
    private void returnBook() throws ParseException{
        System.out.print("请输入图书名称:");
        String returnBook = scanner.next();
        String guihuanBookDate;// 归还日期
        /*
            循环找到归还图书名称是否与图书馆内图书名字是否相同,并查询此图书状态(借出/ 未借出),
            如果借出那么就让用户输入归还日期,并计算应付金额(1天/1元)
         */

        for (int i = 0; i < bookSet.book.length; i++) {

            if ( returnBook.equals(bookSet.book[i].name) ) {
                if ( bookSet.book[i].flag ) {
                    System.out.println(bookSet.book[i].name + "未借出");
                }else {
                    System.out.println("请输入归还日期(年/月/日):");
                    guihuanBookDate = scanner.next();
                    System.out.println("归还《" + bookSet.book[i].name + "》成功!");
                    bookSet.book[i].flag = true;// 借出状态换为未借出
                    System.out.println("借出日期为:" + bookSet.book[i].date);
                    System.out.println("归还日期为:" + guihuanBookDate);

                    Date d1 = outBookDate.parse(bookSet.book[i].date);
                    Date d2 = outBookDate.parse(guihuanBookDate);
                    //使用 getTime() 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。
                    long daysBetween = (d2.getTime()-d1.getTime()) / (24*60*60*1000);

                    System.out.println("应付租金(元)" + daysBetween + "元");
                    bookSet.book[i].date = "";// 借出日期重置
                    break;
                }

            }else {
                System.out.println("图书馆不存在此书");
                break;
            }
        }

    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容