迷你图书管理器

author:luckyboy!

version:1.2

知识储备:变量、数据类型、选择结构、循环结构、数组 、面向对象、集合

系统概述:为某图书馆开发一个迷你图书管理系统,实现图书的管理。

功能:

  • 新增图书
  • 查看图书
  • 删除图书
  • 借出图书
  • 归还图书
  • 退出图书系统

创建 .Java文件:Book类、MyBookMgr类、Test测试类

阶段划分

  • 第一阶段:创建用来存储图书信息的Book类
  • 第二阶段:创建集合和初始化方法,将初始化图书信息加入到集合
  • 第三阶段:完成整体框架和退出功能
  • 第四阶段:完成新增图书功能
  • 第五阶段:完成查看图书功能
  • 第六阶段:完成删除图书功能
  • 第七阶段:完成借出图书功能
  • 第八阶段:完成归还图书功能

第一阶段:创建用来存储图书信息的Book类

public class Book {// 图书名称private String name;// 借阅状态,0:可借阅 ;1:已借出private int state;// 借出日期private int date;// 借出次数private int count;//无参构造方法public Book() {super();}//有参构造方法public Book(String name, int state, int date, int count) {super();this.name = name;this.state = state;this.date = date;this.count = count;}//get和set方法public String getName() {return name;}public void setName(String name) {this.name = name;}public int getState() {return state;}public void setState(int state) {this.state = state;}public int getDate() {return date;}public void setDate(int date) {this.date = date;}public int getCount() {return count;}public void setCount(int count) {this.count = count;}@Overridepublic String toString() {return name + "\t" + state + "\t" + date+ "\t" + count;}}

第二阶段:创建集合和初始化方法,将初始化图书信息加入到集合

import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;public class MyBookMgr {Scanner in = new Scanner(System.in);//创建集合保存图书信息List<Book> list = new LinkedList<Book>();//初始化方法public void inti(){Book book1 = new Book("罗马假日", 1, 1, 15);Book book2 = new Book("白雪公主", 0, 0, 12);Book book3 = new Book("葫芦兄弟", 0, 0, 30);//将图书信息保存到集合list.add(book1);list.add(book2);list.add(book3);}
}

第三阶段:完成整体框架和退出功能,此时完成测试类测试功能

import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;public class MyBookMgr {Scanner in = new Scanner(System.in);//创建集合保存图书信息List<Book> list = new LinkedList<Book>();//初始化方法public void inti(){Book book1 = new Book("罗马假日", 1, 1, 15);Book book2 = new Book("白雪公主", 0, 0, 12);Book book3 = new Book("葫芦兄弟", 0, 0, 30);//将图书信息保存到集合list.add(book1);list.add(book2);list.add(book3);}//整体框架开始方法public void start(){int num;// 输出欢迎语句,只输出一次System.out.println("欢迎使用迷你图书管理器");do{// 输出菜单,循环输出多次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("请选择(序号:1-6):");int choose = in.nextInt(); //如果用户输入1-6以外的数字没有此功能,重新输入while(choose < 1 || choose >6){System.out.println("此功能不存在,请重新输入!");choose = in.nextInt();}switch(choose){//新增图书case 1:newBook();break;//查看图书case 2:lookBook();break;//删除图书case 3:delBook();break;//借出图书case 4:lendBook();break;//归还图书case 5:returnBook();break;//退出图书case 6:break;}//如果用户选择退出程序,则跳出循环,结束程序if(choose == 6){System.out.println("程序运行结束,感谢使用此程序!");break;}System.out.println("输入0返回:");num = in.nextInt();//如果输入0以外的数字,则重新输入,只有功能6可以退出程序while(num != 0){System.out.println("输入0返回,请重新输入:");num = in.nextInt();}}while(num == 0);}//新增图书方法public void newBook(){System.out.println("-> 新增图书");}//查看图书方法public void lookBook(){System.out.println("-> 查看图书");}//删除图书方法public void delBook(){System.out.println("-> 删除图书");}//借出图书方法public void lendBook(){System.out.println("-> 借出图书");}//归还图书方法public void returnBook(){System.out.println("-> 归还图书");}
}

Test测试类

public class Test {public static void main(String[] args) {//实例化MyBookMgr类MyBookMgr my = new MyBookMgr();//调用MyBookMgr类中的inti初始化方法my.inti();//调用MyBookMgr类中的start整体框架开始方法my.start();}
}

第四阶段:完成新增图书功能

 //新增图书方法public void newBook() {//思路:实例化Book类,将新的图书信息添加到集合System.out.println("-> 新增图书");System.out.println("请输入您要增加的图书:");String bookName = in.next();//实例化Book类Book book = new Book(bookName, 0, 0, 0);//将图书信息添加到集合list.add(book);System.out.println("新增《"+bookName+"》成功!");}

第五阶段:完成查看图书功能

 //查看图书方法public void lookBook() {//思路:输出集合中的图书信息System.out.println("-> 查看图书");System.out.println("序号\t图书名称\t状态\t时间\t次数");for (int i = 0; i < list.size(); i++) {//设置图书状态,1显示已借出,0显示可借阅String states = list.get(i).getState() == 0 ? "可借阅" : "已借出";//设置借出时间,0日不显示,其它已 数字+日 的形式显示String dates = list.get(i).getDate() == 0 ? "" : list.get(i).getDate() + "日";//设置借出次数,数字+次 的形式显示String counts = list.get(i).getCount() + "次";System.out.println((i+1) + "\t" + list.get(i).getName() + "\t" + states+ "\t" + dates + "\t" + counts);}}

第六阶段:完成删除图书功能

 //删除图书方法public void delBook() {/** 思路:* 在集合中匹配到用户输入的图书名称,图书状态为可借阅,图书可以删除,使用remove删除* 在集合中匹配到用户输入的图书名称,图书状态为已借出,图书不能删除* 在集合中没有匹配到用户输入的图书名称,提示图书不存在*/System.out.println("-> 删除图书");//设置标志位,区分图书是否存在boolean flag = false;System.out.println("请输入您要删除的图书:");String bookName = in.next();for (int i = 0; i < list.size(); i++) {//在集合中匹配到用户输入的图书名称,图书状态为可借阅,图书可以删除,使用remove删除if(list.get(i).getName().equals(bookName) && list.get(i).getState() == 0){list.remove(i);System.out.println("删除《"+ bookName + "》成功!");//图书存在,赋值trueflag = true;}//在集合中匹配到用户输入的图书名称,图书状态为已借出,图书不能删除else if(list.get(i).getName().equals(bookName) && list.get(i).getState() == 1){System.out.println("图书已借出,不能删除!");//图书存在,赋值trueflag = true;}}//如果标志位flag等于false,表示图书u不存在,给出图示信息if(!flag){System.out.println("此图书不存在!");}}

第七阶段:完成借出图书功能

 //借出图书方法public void lendBook() {/** 图书状态可借阅,按照用户输入的图书名称借出指定图书,并判断输入的借出日期是否在1-31之间,否则重新输入日期。* 图书状态已借出,给出相应提示* 图书不存在,给出相应提示* * 思路* ->用户输入需要借出的图书* ->判断图书是否存在* ->图书存在,判断图书是否借出* ->图书存在,可借阅,判断用户输入的借出日期* ->图书存在,可借阅,借出日期正确,修改图书的状态,借出日期和借出次数加1*/System.out.println("-> 借出图书");//设置标志位,区分图书是否存在boolean flag = false;System.out.println("请输入您要借出的图书:");String bookName = in.next();for (int i = 0; i < list.size(); i++) {//在集合中匹配到用户输入的图书名称,图书状态为可借阅,图书可以借出if(list.get(i).getName().equals(bookName) && list.get(i).getState() == 0){System.out.println("请输入借出日期(1-31):");int dates = in.nextInt();while(dates < 1 || dates > 31){System.out.println("借出日期需要大于等于1且小于等于31,请重新输入:");dates = in.nextInt();}//修改借出日期,图书状态,借出次数list.get(i).setDate(dates);list.get(i).setState(1);//图书借出次数加1int counts = list.get(i).getCount();list.get(i).setCount(counts);System.out.println("借出《"+ bookName + "》成功!");//图书存在,赋值trueflag = true;}//在集合中匹配到用户输入的图书名称,图书状态为已借出,图书不能借出else if(list.get(i).getName().equals(bookName) && list.get(i).getState() == 1){System.out.println("图书已借出,不能重复借出!");//图书存在,赋值trueflag = true;}}//如果标志位flag等于false,表示图书u不存在,给出图示信息if(!flag){System.out.println("此图书不存在!");}       }

第八阶段:完成归还图书功能

 //归还图书方法public void returnBook() {/** 用户归还已借出的图书并计算租金。如果用户输入的归还日期大于31或者小于借出日期,提示用户重新输入归还日期。* 用户归还的图书未借出,给出相应提示。* 用户归还的图书不存在,给出相应提示。* * 思路:* ->用户输入需要归还的图书* ->判断图书是否存在* ->判断图书是否借出* ->判断用户输入的归还日期* ->修改归还图书的状态,并计算出租金,租金 = 借出日期 - 归还日期*/System.out.println("-> 归还图书");//设置标志位,区分图书是否存在boolean flag = false;System.out.println("请输入您要归还的图书:");String bookName = in.next();for (int i = 0; i < list.size(); i++) {//在集合中匹配到用户输入的图书名称,图书状态为已借出,图书可以归还if(list.get(i).getName().equals(bookName) && list.get(i).getState() == 1){System.out.println("请输入借出日期(1-31):");int dates = in.nextInt();while(dates < list.get(i).getDate() || dates > 31){if(dates < list.get(i).getDate()){System.out.println("归还日期要大于借出日期,请重新输入:");}else{System.out.println("一个月最多31天,请重新输入:");}dates = in.nextInt();}//计算出租金,租金 = 归还日期 - 借出日期int price = dates - list.get(i).getDate();//修改归还图书的状态为可借阅,图示日期改为0list.get(i).setState(0);list.get(i).setDate(0);System.out.println("归还《" + bookName + "》成功!");System.out.println("应付租金:"+price);//图书存在,赋值trueflag = true;}//在集合中匹配到用户输入的图书名称,图书状态为可借阅,图书不能归还else if(list.get(i).getName().equals(bookName) && list.get(i).getState() == 0){System.out.println("图书未借出,不能归还!");//图书存在,赋值trueflag = true;}}//如果标志位flag等于false,表示图书u不存在,给出图示信息if(!flag){System.out.println("此图书不存在!");}}

完整代码如下

Book类代码

public class Book {// 图书名称private String name;// 借阅状态,0:可借阅 ;1:已借出private int state;// 借出日期private int date;// 借出次数private int count;//无参构造方法public Book() {super();}//有参构造方法public Book(String name, int state, int date, int count) {super();this.name = name;this.state = state;this.date = date;this.count = count;}//get和set方法public String getName() {return name;}public void setName(String name) {this.name = name;}public int getState() {return state;}public void setState(int state) {this.state = state;}public int getDate() {return date;}public void setDate(int date) {this.date = date;}public int getCount() {return count;}public void setCount(int count) {this.count = count;}@Overridepublic String toString() {return name + "\t" + state + "\t" + date+ "\t" + count;}}

MyBookMgr类代码

import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;public class MyBookMgr {Scanner in = new Scanner(System.in);// 创建集合保存图书信息List<Book> list = new LinkedList<Book>();// 初始化方法public void inti() {Book book1 = new Book("罗马假日", 1, 1, 15);Book book2 = new Book("白雪公主", 0, 0, 12);Book book3 = new Book("葫芦兄弟", 0, 0, 30);// 将图书信息保存到集合list.add(book1);list.add(book2);list.add(book3);}// 整体框架开始方法public void start() {int num;// 输出欢迎语句,只输出一次System.out.println("欢迎使用迷你图书管理器");do {// 输出菜单,循环输出多次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("请选择(序号:1-6):");int choose = in.nextInt();// 如果用户输入1-6以外的数字没有此功能,重新输入while (choose < 1 || choose > 6) {System.out.println("此功能不存在,请重新输入!");choose = in.nextInt();}switch (choose) {// 新增图书case 1:newBook();break;// 查看图书case 2:lookBook();break;// 删除图书case 3:delBook();break;// 借出图书case 4:lendBook();break;// 归还图书case 5:returnBook();break;// 退出图书case 6:break;}// 如果用户选择退出程序,则跳出循环,结束程序if (choose == 6) {System.out.println("程序运行结束,感谢使用此程序!");break;}System.out.println("输入0返回:");num = in.nextInt();// 如果输入0以外的数字,则重新输入,只有功能6可以退出程序while (num != 0) {System.out.println("输入0返回,请重新输入:");num = in.nextInt();}} while (num == 0);}//新增图书方法public void newBook() {//思路:实例化Book类,将新的图书信息添加到集合System.out.println("-> 新增图书");System.out.println("请输入您要增加的图书:");String bookName = in.next();//实例化Book类Book book = new Book(bookName, 0, 0, 0);//将图书信息添加到集合list.add(book);System.out.println("新增《"+bookName+"》成功!");}//查看图书方法public void lookBook() {//思路:输出集合中的图书信息System.out.println("-> 查看图书");System.out.println("序号\t图书名称\t状态\t时间\t次数");for (int i = 0; i < list.size(); i++) {//设置图书状态,1显示已借出,0显示可借阅String states = list.get(i).getState() == 0 ? "可借阅" : "已借出";//设置借出时间,0日不显示,其它已 数字+日 的形式显示String dates = list.get(i).getDate() == 0 ? "" : list.get(i).getDate() + "日";//设置借出次数,数字+次 的形式显示String counts = list.get(i).getCount() + "次";System.out.println((i+1) + "\t" + list.get(i).getName() + "\t" + states+ "\t" + dates + "\t" + counts);}}//删除图书方法public void delBook() {/** 思路:* 在集合中匹配到用户输入的图书名称,图书状态为可借阅,图书可以删除,使用remove删除* 在集合中匹配到用户输入的图书名称,图书状态为已借出,图书不能删除* 在集合中没有匹配到用户输入的图书名称,提示图书不存在*/System.out.println("-> 删除图书");//设置标志位,区分图书是否存在boolean flag = false;System.out.println("请输入您要删除的图书:");String bookName = in.next();for (int i = 0; i < list.size(); i++) {//在集合中匹配到用户输入的图书名称,图书状态为可借阅,图书可以删除,使用remove删除if(list.get(i).getName().equals(bookName) && list.get(i).getState() == 0){list.remove(i);System.out.println("删除《"+ bookName + "》成功!");//图书存在,赋值trueflag = true;}//在集合中匹配到用户输入的图书名称,图书状态为已借出,图书不能删除else if(list.get(i).getName().equals(bookName) && list.get(i).getState() == 1){System.out.println("图书已借出,不能删除!");//图书存在,赋值trueflag = true;}}//如果标志位flag等于false,表示图书u不存在,给出图示信息if(!flag){System.out.println("此图书不存在!");}}//借出图书方法public void lendBook() {/** 图书状态可借阅,按照用户输入的图书名称借出指定图书,并判断输入的借出日期是否在1-31之间,否则重新输入日期。* 图书状态已借出,给出相应提示* 图书不存在,给出相应提示* * 思路* ->用户输入需要借出的图书* ->判断图书是否存在* ->图书存在,判断图书是否借出* ->图书存在,可借阅,判断用户输入的借出日期* ->图书存在,可借阅,借出日期正确,修改图书的状态,借出日期和借出次数加1*/System.out.println("-> 借出图书");//设置标志位,区分图书是否存在boolean flag = false;System.out.println("请输入您要借出的图书:");String bookName = in.next();for (int i = 0; i < list.size(); i++) {//在集合中匹配到用户输入的图书名称,图书状态为可借阅,图书可以借出if(list.get(i).getName().equals(bookName) && list.get(i).getState() == 0){System.out.println("请输入借出日期(1-31):");int dates = in.nextInt();while(dates < 1 || dates > 31){System.out.println("借出日期需要大于等于1且小于等于31,请重新输入:");dates = in.nextInt();}//修改借出日期,图书状态,借出次数list.get(i).setDate(dates);list.get(i).setState(1);//图书借出次数加1int counts = list.get(i).getCount();list.get(i).setCount(counts);System.out.println("借出《"+ bookName + "》成功!");//图书存在,赋值trueflag = true;}//在集合中匹配到用户输入的图书名称,图书状态为已借出,图书不能借出else if(list.get(i).getName().equals(bookName) && list.get(i).getState() == 1){System.out.println("图书已借出,不能重复借出!");//图书存在,赋值trueflag = true;}}//如果标志位flag等于false,表示图书u不存在,给出图示信息if(!flag){System.out.println("此图书不存在!");}       }//归还图书方法public void returnBook() {/** 用户归还已借出的图书并计算租金。如果用户输入的归还日期大于31或者小于借出日期,提示用户重新输入归还日期。* 用户归还的图书未借出,给出相应提示。* 用户归还的图书不存在,给出相应提示。* * 思路:* ->用户输入需要归还的图书* ->判断图书是否存在* ->判断图书是否借出* ->判断用户输入的归还日期* ->修改归还图书的状态,并计算出租金,租金 = 借出日期 - 归还日期*/System.out.println("-> 归还图书");//设置标志位,区分图书是否存在boolean flag = false;System.out.println("请输入您要归还的图书:");String bookName = in.next();for (int i = 0; i < list.size(); i++) {//在集合中匹配到用户输入的图书名称,图书状态为已借出,图书可以归还if(list.get(i).getName().equals(bookName) && list.get(i).getState() == 1){System.out.println("请输入借出日期(1-31):");int dates = in.nextInt();while(dates < list.get(i).getDate() || dates > 31){if(dates < list.get(i).getDate()){System.out.println("归还日期要大于借出日期,请重新输入:");}else{System.out.println("一个月最多31天,请重新输入:");}dates = in.nextInt();}//计算出租金,租金 = 归还日期 - 借出日期int price = dates - list.get(i).getDate();//修改归还图书的状态为可借阅,图示日期改为0list.get(i).setState(0);list.get(i).setDate(0);System.out.println("归还《" + bookName + "》成功!");System.out.println("应付租金:"+price);//图书存在,赋值trueflag = true;}//在集合中匹配到用户输入的图书名称,图书状态为可借阅,图书不能归还else if(list.get(i).getName().equals(bookName) && list.get(i).getState() == 0){System.out.println("图书未借出,不能归还!");//图书存在,赋值trueflag = true;}}//如果标志位flag等于false,表示图书u不存在,给出图示信息if(!flag){System.out.println("此图书不存在!");}}}

Test测试类代码

public class Test {public static void main(String[] args) {//实例化MyBookMgr类MyBookMgr my = new MyBookMgr();//调用MyBookMgr类中的inti初始化方法my.inti();//调用MyBookMgr类中的start整体框架开始方法my.start();}}

迷你图书管理器1.2 - 面向对象+集合相关推荐

  1. 迷你图书管理器1.1 - 面向对象+数组

    迷你图书管理器 author:luckyboy! version:10 知识储备:变量.数据类型.选择结构.循环结构.数组 .面向对象 系统概述:为某图书馆开发一个迷你图书管理系统,实现图书的管理. ...

  2. Java迷你图书管理器1.2-面向对象+I/O流

    CSDN话题挑战赛第2期 参赛话题:Java技术分享 迷你图书管理器 author:luckyboy! version:1.2 知识储备:变量.数据类型.选择结构.循环结构.数组 .面向对象.集合和I ...

  3. 迷你图书管理器1.0 - 变量+数组

    迷你图书管理器 author:luckyboy! version:10 知识储备:变量.数据类型.选择结构.循环结构.数组 系统概述:为某图书馆开发一个迷你图书管理系统,实现图书的管理. 功能: 新增 ...

  4. 20、Java——迷你图书管理器(对象+集合)

    ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进.

  5. 14、Java——迷你图书管理器(对象+数组)

    ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进.

  6. 32、Java——迷你图书管理器(对象+JDBC)

    ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进.

  7. Java——迷你图书管理器(JDBC+MySQL+Apache DBUtils)

    ​ ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进.

  8. 【Java-语言入门】开发 迷你图书管理器

    点击链接下载源码,编号填写:11 在学习中有不懂迷茫的童鞋们可以加我一起交流学习(联系方式看主页个签),无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!

  9. 26、Java——迷你图书管理器(对象+IO流)

    ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进.

最新文章

  1. android keytool 不是内部命令或外部命令在 (win7下不能用的解决方法)
  2. 大话软件测试与职业生涯
  3. 成功解决ValueError: Expected 2D array, got 1D array instead: Reshape your data either using array.reshap
  4. AD9834 DDS 使用经验
  5. 你必须知道的23个最有用的Elasticseaerch检索技巧
  6. python中的所有功能_python – 是否可以列出模块中的所有功能?
  7. 3月2日,阿里云开源 PolarDB 企业级架构即将发布
  8. rabbitmq的通配符模式(Topic Exchange)的*和#区别
  9. kloxo 中php如何设置,Kloxo使用教程(5):〖网站设置〗——在Kloxo中设置伪静态...
  10. 如何编写游戏辅助工具
  11. matlab55中值滤波,基于MATLAB的中值滤波算法实现
  12. DTU助力于智能配电房监控系统
  13. cefsharp远程调试工具
  14. 兀键和6键怎么判断_高中有机化学大兀键怎么判断电子数和参与成键的原子数?...
  15. LVGL 8.2图片缩放及旋转
  16. 如何用html5实现网页聊天,HTML5 WebSocket实现点对点聊天的示例代码
  17. 笔记本电脑黑屏基础处理
  18. Python tkinter教程-01:创建窗口
  19. 小红书母婴博主怎么找商家?博主找商家的方法看这里
  20. 编译原理 - 三大经典书籍(龙书 虎书 鲸书)

热门文章

  1. 宝塔 cpanel_cPanel / WHM许可更改
  2. 从 .NET 开发人员的角度理解 Excel 对象模型--------结合上一篇 vb code excel 单元格锁定...
  3. 【排队助手】投屏模式-使用指南
  4. Youtube Data API使用简介
  5. arcgis制作瓦片地图_一种GIS瓦片地图的存储方式的制作方法
  6. html table内边框线条,HTML_TABLE内外边框
  7. JetpackCompose从入门到实战学习笔记2——Modifier的简单使用
  8. 计算机毕业设计Java后勤管理系统(源码+系统+mysql数据库+lw文档)
  9. C-V2X技术发展、应用及展望
  10. 湖北理工学院c语言作业实验六,湖北理工学院c语言实验报告实验六