用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

jun    -  云代码空间

—— 相信 ,梦

java基础综合练习 完成图书管理系统

2014-08-04|2871阅||

摘要:用map集合代理数据库 存取数据 完成图书的curd


下面是一个简单的图书管理源代码,,




创建一个类 Book

package cn.itcast.sh.book;

/*
 * 用于描述图书这个事物的对象
 */
public class Book {
	private int id ;  		//书的编号  UUID 
	private String name;		//书名
	private double price;		//价格
	private String author;		//作者
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	/*
	 * 在创建Book对象的时候明确书的具体属性
	 */
	public Book(int id, String name, double price, String author) {
		super();
		this.id = id;
		this.name = name;
		this.price = price;
		this.author = author;
	}
	public Book() {
	}
	public String toString() {
		return "Book [id=" + id + ", name=" + name + ", price=" + price
				+ ", author=" + author + "]";
	}
}

创建模拟数据库 BookDB

package cn.itcast.sh.book;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/*
 * 主要负责存储图书
 */
public class BookDB {
	private static ArrayList<Book> DB = new ArrayList<>();
	
	//对外提供给DB中存储图书的功能
	public static boolean addBook( Book b ){
		return DB.add(b);
	}
	/*
	 * 负责查询所有图书
	 */
	public static List<Book> findAll() {
		return DB;
	}
	/*
	 * 根据图书名称返回所有的图书
	 */
	public static List<Book> find(String name) {
		
		//创建一个集合,用于存储符合name名称的所有图书
		List<Book> books = new ArrayList<>();
		//遍历容器,取出每本数,然后判断这本书的名字和传递进来的name是否相同
		for( Book b : DB ){
			if( b.getName().equals(name) ){
				books.add(b);
			}
		}
		//在把DB遍历完之后判断,到底有没有符合条件的图书
		if( books.size() == 0 ){
			//没有符合条件的图书,就返回null
			return null;
		}
		return books;
		
	}
	/*
	 * 根据id查询有没有这本书
	 */
	public static boolean getBookById(int id) {
		boolean flag = false;
		//这里使用迭代器遍历,在遍历的时候可以删除数据
		for (Iterator<Book> it = DB.iterator(); it.hasNext();) {
			//获取一本书  Book b = it.next();  if( b.getId() == id ){
				//相同就删除
				it.remove();
				flag = true;
			}
		}
		return flag;
	}
	//给DB中添加需要修改的图书
	public static boolean updateBook(Book b2) {
		return DB.add(b2);
	}
	
}

创建一个控制中心 完成增删改查BookCRUD

package cn.itcast.sh.book;

import java.util.List;
import java.util.Scanner;

/*
 * 这里负责图书的增删改查动作
 *
				B、删除图书信息

 */
public class BookCRUD {
	
	private int id=1;
	
	
	public void manage(){
		
		System.out.print("A、输入图书信息\t");
		System.out.print("B、删除图书信息\t");
		System.out.print("C、修改图书信息\t");
		System.out.print("D、查询图书信息\t");
		System.out.print("E、查询所有图书信息\t");
		System.out.println("F、退出系统\t");
		System.out.println("请您选择具体的操作类型:");
		//获取用户输入的操作类型
		String operator = getKeyInfo();
		//把用户输入的操作类型转成大写
		operator = operator.toUpperCase();
		//使用switch语句分层次来判断到底用户输入的是什么操作符
		switch( operator ){
			case  "A" :
				//调用获取图书对象的方法
				Book book = getBook();
				book.setId(id);
				id++;
				//把book对象存储到集合中。
				boolean boo = BookDB.addBook(book);
				//判断返回的boo值
				if( boo ){
					System.out.println("添加成功");
				}else{
					System.out.println("添加失败");
				}
				manage();
				break;
				
			case  "B" :
				System.out.println("删除图书");
				/*
				 * 删除图书根据id删除。
				 * 1、第一步需要获取用户输入的图书id
				 * 2、把这个id传递到后台,然后遍历DB容器,取出图书的id,通过判断图书的id和传递的id是否相同
				 * 		相同就删除这本书。
				 * 注意:集合在删除的时候,需要使用迭代器自身的删除功能,不能在遍历的时候使用集合自身的删除功能。
				 */
				
				
				break;
				
			case  "C" :
				System.out.println("修改图书");
				/*
				 * 根据id来修改图书信息
				 */
				//首先需要用户输入id
				System.out.println("请输入要修改图书的编号:");
				int id = Integer.parseInt(getKeyInfo());
				//把id传递后台,判断有没有这个id 的图书
				boolean boo2 = BookDB.getBookById(id);
				if( boo2 == false ){
					System.out.println("此编号"+id+"没有对应的图书");
				}else{
					//在后台查询完成之后,有此id对应的图书
					//让用户输入图书的其他信息并封装成book对象
					Book b2 = getBook();
					//给book设置id
					b2.setId(id);
					//把要修改的这个图书给后台
					boolean b = BookDB.updateBook(b2);
					if( b ){
						System.out.println("恭喜您,修改成功");
					}else{
						System.out.println("很遗憾,修改失败");
					}
				}
				manage();
				break;
				
			case  "D" :
				System.out.println("查询图书");
				/*
				 *按照书名进行查询,注意书名可能重复,这样会导致查询到的是一个集合 
				 */
				String name = getBookName();
				//把书名传递给后台程序,获取当前这个书名对象的所有的图书
				List<Book> books = BookDB.find(name);
				//判断当前的书名有没有查询到对应的图书
				if( books == null ){
					System.out.println(name+"没有这本书");
				}else{
					for(Book b : books){
						System.out.println(b);
					}
				}
				manage();
				break;
			case  "E" :
				List<Book> db = BookDB.findAll();
				for(Book b : db){
					System.out.println(b);
				}
				manage();
				break;
			case  "F" :
				System.out.println("退出图书");
				System.out.println("================您已经退出本图书管理系统====================");
				System.exit(0);
			default:
				System.out.println("本系统现在不支持您的需求,请等待。。。。。");
		}
		
	}
	
	/*
	 * 让用户输入书名,并把书名返回
	 */
	
	public String getBookName() {
		System.out.println("请输入要查询的书名");
		return getKeyInfo();
	}
	/*
	 * 用于获取图书信息
	 */
	public Book getBook() {
		System.out.println("请输入图名称:");
		String name = getKeyInfo();
		System.out.println("请输入价格:");
		//这里处理对异常处理,保证可以正常获取到一个价格数据。
		double price = Double.parseDouble(getKeyInfo());
		System.out.println("请输入作者:");
		String author = getKeyInfo();
		//创建Book对象,把书名,价格还是作者封装到book,返回
		Book b = new Book();
		//给book封装数据
		b.setAuthor(author);
		b.setName(name);
		b.setPrice(price);
		//把book返回
		return b;
	}
	/*
	 * 单独抽取方法,用于获取键盘录入数据
	 */
	public String getKeyInfo(){
		Scanner s = new Scanner(System.in);
		return s.next();
	}
	
}

创建系统入口Start

package cn.itcast.sh.book;

public class Start {

	public static void main(String[] args) {
		System.out.println("================欢迎光临本图书管理系统====================");
		//这里需要去调用其他的程序完成图书的更加具体的操作。
		new BookCRUD().manage();
		System.out.println("================您已经退出本图书管理系统====================");
	}

}



顶 4踩 0收藏
文章评论
    发表评论

    个人资料

    • 昵称: jun
    • 等级: 资深程序员
    • 积分: 1523
    • 代码: 94 个
    • 文章: 24 篇
    • 随想: 0 条
    • 访问: 7 次
    • 关注

    最新提问

      站长推荐