用java实现一个小的图书管理系统(基础)

一个小的图书管理系统可以很好地考察和训练我的java基础,用刚学的类和对象做一个图书管理系统再好不过了

首先运用面对对象的思想将与问题(或者说是需求 )有关的实体提取为java中的类
我提取出来两个类:
1.Book类,用JavaBean规范进行封装,使用get、set方法.用private 将成员变量保护起来
2.Test类,有main方法,可以跑程序.方法都写在里面.

Book类中有:

  • *num*(图书编号)  
    
  • *name*(图书名字) 
    
  • *sum*(图书数量)
    
  •  一个 *message*成员方法:用来输出一条str字符串显示在图书目录上的
    

Test类中有:

  • *main()*方法    
    
  • *menu()*:显示主菜单
    
  • *findBook()*:检索图书  
    
  • *addBook()*:增加图书     
    
  • *modifyBook()*:修改图书信息   
    
  • *deleteBook()*:删除图书    
    
  • *list()*:显示图书目录;实现查看所有图书功能
    

下面是具体的源码,注意Book类和Test类要放在同一个package里;就像这样

在这里插入图片描述

Book.java

/**
* <p>Title: Book.java</p>  
* <p>Description: </p>  
* <p>Copyright: Copyright (c) 2020</p>  
* <p>Company: geminno</p>  
* @author chenghouqing
* @date 2020年7月25日  
* @version 1.0 
*/

package com.gem.javacore.day08.book;

/*符合JavaBean规范,对Book类进行封装
 * public class ClassName(){
 * 	//成员变量
 *  //构造方法
 *  //无参构造方法(必须)---后面继承用得到
 *  //有参构造方法[建议]
 *  //成员方法
 *  //getXXX()
 *  //setXXX()
 */
public class Book {
	private String num;// 书籍编号
	private String name;// 书籍名称
	private int sum;// 书籍数量

	public Book() {// 无参构造方法

	}

	public Book(String num, String name, int sum) {// 有参数构造方法

		this.num = num;//
		this.name = name;
		this.sum = sum;
	}

	public String message() {// 成员方法 显示一条图书信息
		String str = "";// 局部变量必须初始化
		str = this.num + "\t" + this.name + "\t" + this.sum;
		return str;// 返回一条str字符串

	}

	public void setnum(String num) {// set方法
		this.num = num;

	}

	public String getnum() {// 获得编号 get方法
		return this.num;// 返回编号
	}

	public void setname(String name) {// set方法
		this.name = name;
	}

	public String getname() {// 获得图书名 get方法
		return this.name;// 返回一个图书名字
	}

	public void setsum(int sum) {// set方法
		this.sum = sum;
	}

	public int getsum() {// get方法
		return this.sum;
	}

}

Test.java

/**
* <p>Title: Test.java</p>  
* <p>Description: </p>  
* <p>Copyright: Copyright (c) 2020</p>  
* <p>Company: geminno</p>  
* @author chenghouqing
* @date 2020年7月25日  
* @version 1.0 
*/

package com.gem.javacore.day08.book;

import java.util.Scanner;

/*
 * 一个简单的图书管理系统,只用到数组、类和对象、基本控制语句、基本数据结构
 * 基本上都用上了
 */
public class Test {
	public static void main(String[] args) {
		Book[] a = new Book[100];// 可以存100个图书对象
		a[0] = new Book("A", "老人与海", 1);
		a[1] = new Book("B", "时间简史", 4);
		a[2] = new Book("C", "物种起源", 10);
		a[3] = new Book("D", "那片星空,那片海", 30);
		a[4] = new Book("E", "钢铁是怎样炼成的", 13);
		int size = 5;// 记录图书信息的个数(已经有5本图书)
		menu();// 输出主菜单
		Scanner input = new Scanner(System.in);
		int num = input.nextInt();
		boolean flag = true;
		while (flag) {
			switch (num) {// 根据编号选择功能
			case 1:
				list(a, size);// 显示图书目录
				menu();
				num = input.nextInt();
				break;
			case 2:
				findBook(a, size);// 调用findbook方法检索图书
				menu();
				num = input.nextInt();
				break;
			case 3:
				size = addBook(a, size);// 将改变后的的size的值重新赋值
				menu();
				num = input.nextInt();
				break;
			case 4:
				modifyBook(a, size);// 修改图书信息
				menu();
				num = input.nextInt();
				break;
			case 5:
				size = deleteBook(a, size);// 删除图书信息 并且将最新的size值赋值给size
				menu();
				num = input.nextInt();
				break;
			case 6:
				System.out.println("退出系统成功");
				flag = false;
				break;
			default:
				System.out.println("你输入的编号有误,请重新输入");
				menu();
				num = input.nextInt();
				break;
			}
		}

	}

	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("请输入功能编号:");
	}

	public static void findBook(Book[] a, int size) {// 检索图书(用书名)
		int flag = 0;// 标记数
		Scanner input = new Scanner(System.in);
		System.out.println("请输入您要查找的图书名字:");
		String name = input.next();// 输入图书名
		for (int i = 0; i < size; i++) {
			if (name.equals(a[i].getname())) {// 如果图书名字相同
				// 注意要使用.equals方法,不能使用==号(后者只比较地址)
				System.out.println("---------------图书目录----------------");
				System.out.println("编号:\t名称:\t\t数量:");
				System.out.println(a[i].message());// 就把图书信息输出
				System.out.println("--------------------------------------");
				flag = 1;

			}
		}
		if (flag == 0) {
			System.out.println("抱歉,图书库存中没有相关信息");
		}

	}

	public static int addBook(Book[] a, int size) {// 添加书籍
		Scanner input = new Scanner(System.in);
		System.out.println("请输入书籍名字:");
		String name = input.next();// 输入书籍名字
		System.out.println("请输入书籍编号:");
		String num = input.next();// 输入书籍编号
		System.out.println("请输入书籍数量:");
		int sum = input.nextInt();// 输入书籍数量
		a[size] = new Book(num, name, sum);// 将对应的值赋给构造方法
		size++;// 每次调用方法,就把新的对象赋给下一个数组元素
		System.out.println("添加书籍成功");
		return size;

	}

	public static void modifyBook(Book[] a, int size) {// 修改图书信息
		int flag = 0;// 设置一个标记位置
		Scanner input = new Scanner(System.in);
		System.out.println("请输入你要修改的图书编号");
		String num = input.next();// 输入编号
		for (int i = 0; i < size; i++) {
			if (num.equals(a[i].getnum())) {// 如果编号存在 编号匹配

				System.out.println("请输入新的图书编号:");
				String newnum = input.next();// 输入新的图书编号
				a[i].setnum(newnum);// 设置新的图书编号

				System.out.println("请输入新的图书名字");
				String newname = input.next();// 输入新的图书名字
				a[i].setname(newname);// 设置新的图书名字

				System.out.println("请输入新的图书数量:");
				int newsum = input.nextInt();// 输入新的图书数量
				a[i].setsum(newsum);
				System.out.println("修改图书信息成功");
				flag = 1;// 将标记设为1
			}

		}
		if (flag == 0) {
			System.out.println("抱歉,没有在库存中找到你输入编号对应的图书");
		}
	}

	public static int deleteBook(Book[] a, int size) {// 删除图书信息
		Scanner input = new Scanner(System.in);
		int flag = 0;
		if (size == 0) {// 如果库存中已经没有图书了 size为图书信息个数
			System.out.println("抱歉,图书库存为空.不能再删除图书了");
			return size;
		}
		System.out.println("请输入你要删除的图书编号:	");
		String num = input.next();// 输入图书编号

		for (int i = 0; i < size; i++) {// 与现有库存中的图书逐一比较
			if (num.equals(a[i].getnum())) {// 如果对应的图书存在
				for (int j = i; j < size - 1; j++) {// 将删除的位置设为i,结束值设为size-1,因为a[j+1],否则会数组越界
					a[j] = a[j + 1];// 将size位置后的元素依次前移一个位置,将要删除元素的位置(size)覆盖掉
				}
				System.out.println("删除图书信息成功");
				flag = 1;// 改变标记值
			}

		}
		if (flag == 0) {
			System.out.println("对不起,在库存中没有找到你需要删除的图书");

		}
		// 删除成功之后,数组长度-1
		size--;
		return size;// 将size的值返回
	}

	public static void list(Book[] a, int size) {// 显示所有图书信息
		System.out.println("---------------图书目录----------------");
		System.out.println("编号:\t名称:\t\t数量:");
		for (int i = 0; i < size; i++) {
			System.out.println(a[i].message());
			// 调用每一个对象中的message方法输出图书信息
		}
		System.out.println("--------------------------------------");
	}

}
  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值