/**
需求:1.欢迎来到我的图书借阅管理系统;
2.展示以下目录:1.查看书籍;2.借阅书籍;3.归还书籍;4.退出系统;
要求每次输入数字前,先展示目录
3.输入数字1,则查看书籍;输入数字2,则借阅书籍;输入数字3,则归还书籍;输入数字4,则退出系统
现在我的图书借阅管理系统中已包含以下信息(图书名称分别为红楼梦 三国演义 西游记 图书编号对应为1 2 3;借出状态对应为:可借 可借 可借 借出次数: 0 0 0)
设计一个图书借阅管理系统,用于管理书籍的借出状态
分析:1.大的框架:
1.先用一个数组来存放当前图书信息
2.输入数字几,则进行什么操作,当输入4时,则退出整个系统;所以在main方法中采用while循环(不限定次数),当输入4时,break;输入数字前,每次都要先展示目录,所以将目录放在while循环中
2.业务逻辑,
1.借书:先判断是否有这个书名,当书名存在时,再判断借出状态,当该书为可借时,则借出成功,同时将借出状态改为不可借,将借出次数加1;
当该书的借出状态为不可借时,提示书已借出,当书名未匹配到系统中的书名时,提示"系统中没有您要找的书"
2.还书基本同上
采用封装的方式来实现:1.属性私有化 2.使用带参的构造器,在创建对象的同时给属性赋值 3.通过对象调用该类的get()、set()方法来获取或改变属性值
通过封装能避免直接给属性赋值,将类中的属性隐藏起来
*/
import java.util.Scanner;
//定义书类
class Book{
//private修饰符定义的属性只能在当前类中被访问
private int bookId; //图书编号
private String bookName;//图书名称
private int bookState; //图书状态,规定0表示可借,1表示不可借
private int bookCount; //图书借出次数
//通过构造器给属性赋值
public Book(int bookId,String bookName,int bookState,int bookCount){
this.bookId = bookId; //this表示当前对象
this.bookName = bookName;
this.bookState = bookState;
this.bookCount = bookCount;
}
//修改书名
public void setBookName(String bookName){
this.bookName = bookName;
}
//获取书名
public String getBookName(){
return bookName;
}
//修改书编号
public void setBookId(int bookId){
this.bookId = bookId;
}
//获取书编号
public int getBookId(){
return bookId;
}
//修改书状态
public void setBookState(int bookState){
this.bookState = bookState;
}
//获取书状态
public int getBookState(){
return bookState;
}
//修改借出次数
public void setBookCount(int bookCount){
this.bookCount = bookCount;
}
//获取借出次数
public int getBookCount(){
return bookCount;
}
}
public class TestBook{
static Book[] input = new Book[3];//定义一个数组,在堆中开辟一块连续的空间来存放input变量的值
//在变量前加static就不需通过创建对象再来调用自身这个类的属性
//存放图书馆中所有书籍信息
public static void init(){
//初始化三个对象
Book b1 = new Book(1,"红楼梦",0,0);
Book b2 = new Book(2,"三国演义",0,0);
Book b3 = new Book(3,"西游记",0,0);
//给数组中元素赋初始值
input[0] = b1;
input[1] = b2;
input[2] = b3;
}
//将展示目录定义为一个方法,在主程序中进行调用
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("=====================================");
}
public static void main(String[] args){
init(); //将图书信息初始化
System.out.println("欢迎来到我的图书借阅管理系统");
Scanner sc = new Scanner(System.in);
while(true){
menu();//每次输入数字前显示目录
System.out.print("请输入一个数:");
int num = sc.nextInt();
if(num == 1){
System.out.println("图书编号"+"\t"+"图书名称"+"\t"+"借出状态"+"\t"+"借出次数");
for(int i=0;i<input.length;i++){
//遍历数组中的元素,显示所有的图书信息
String state = "";
if(input[i].getBookState()==0){
state = "可借";
}else{
state = "不可借";
}
System.out.println(input[i].getBookId()+"\t\t"+input[i].getBookName()+"\t\t"+state+"\t\t"+input[i].getBookCount());
}
}else if(num == 2){
System.out.print("请输入需要借阅的书名:");
String name = sc.next();
boolean bo = false; //用于判断书名是否正确
for(int i=0;i<input.length;i++){
//循环遍历所有书名
if(name.equals(input[i].getBookName())){
bo = true;
if(input[i].getBookState()==1){ //判断该书是否已借出
System.out.println(input[i].getBookName()+"不可借");
}else{
System.out.println("成功借阅《"+input[i].getBookName()+"》");
input[i].setBookState(1); //借阅状态改为不可借
input[i].setBookCount(input[i].getBookCount()+1); //该书借阅次数+1
break;
}
}
}
if(!bo){
System.out.println("您输入的书名有误");
}
}else if(num == 3){
System.out.print("请输入需要归还的书名:");
String name = sc.next();
boolean b = false;
for(int i=0;i<input.length;i++){
if(name.equals(input[i].getBookName())){
b = true;
if(input[i].getBookState()==1){
System.out.println("成功归还《"+input[i].getBookName()+"》");
input[i].setBookState(0);
break;
}else{
System.out.println(input[i].getBookName()+"已被归还,无需再归还");
}
}
}
if(!b){
System.out.println("您输入的书名有误");
}
}else if(num == 4){
System.out.println("欢迎您下次使用");
break;
}
}
}
}
面向对象基本特征之封装
最新推荐文章于 2022-11-23 23:31:28 发布