JAVA图书馆查书、借书、还书对象分析与设计

一、功能展示图

二、UML类图

三、类说明

User类:用于展示用户相关信息,以及进行借书还书操作

package util;
import dao.UserInformation;
import java.util.Arrays;

public class User {
	private String accountNumber;			//用户账号
	private Book[] lentBook;				//所有所借书籍
	private String[] lentBookName;			//所借书籍的种类
	private int[] lentBookNum;				//所借书籍的数目,与种类下标对应
	private int lentBookTotalNum;			//所借书本总数
	private int lentBookVarietyTotalNum;	//所借书本的种类总数
	{
		//对所借书籍数目的数组进行初始化,使其初始值均为0
		int[] lentBookNum = new int[Library.varietyNum];
		for (int i = 0; i < lentBookNum.length; i++) {
			lentBookNum[i]=0;
			}
		this.lentBookNum=lentBookNum;
		//对其他两个数组也进行初始化
		this.lentBook = new Book[Library.varietyNum];
		this.lentBookName= new String[Library.varietyNum];
	}
	public String getAccountNumber() {
		return accountNumber;
	}
	public void setAccountNumber(String accountNumber) {
		this.accountNumber = accountNumber;
	}
	public Book[] getLentBook() {
		return lentBook;
	}
	public void setLentBook(Book[] lentBook) {
		this.lentBook = lentBook;
	}
	public String[] getLentBookName() {
		return lentBookName;
	}
	public void setLentBookName(String[] lentBookName) {
		this.lentBookName = lentBookName;
	}
	public int[] getLentBookNum() {
		return lentBookNum;
	}
	public void setLentBookNum(int[] lentBookNum) {
		this.lentBookNum = lentBookNum;
	}
	public int getLentBookTotalNum() {
		return lentBookTotalNum;
	}
	public void setLentBookTotalNum(int lentBookTotalNum) {
		this.lentBookTotalNum = lentBookTotalNum;
	}
	public int getLentBookVarietyTotalNum() {
		return lentBookVarietyTotalNum;
	}
	public void setLentBookVarietyTotalNum(int lentBookVarietyTotalNum) {
		this.lentBookVarietyTotalNum = lentBookVarietyTotalNum;
	}
	@Override
	public String toString() {
		return "User [accountNumber=" + accountNumber + ", lentBook=" + Arrays.toString(lentBook) + ", lentBookName="
				+ Arrays.toString(lentBookName) + ", lentBookNum=" + Arrays.toString(lentBookNum)
				+ ", lentBookTotalNum=" + lentBookTotalNum + ", lentBookVarietyTotalNum=" + lentBookVarietyTotalNum
				+ "]";
	}
	public User(String accountNumber, Book[] lentBook, String[] lentBookName, int[] lentBookNum, int lentBookTotalNum,
			int lentBookVarietyTotalNum) {
		super();
		this.accountNumber = accountNumber;
		this.lentBook = lentBook;
		this.lentBookName = lentBookName;
		this.lentBookNum = lentBookNum;
		this.lentBookTotalNum = lentBookTotalNum;
		this.lentBookVarietyTotalNum = lentBookVarietyTotalNum;
	}
	public void addBook(UserBook book) {
		int i ;
		for(i =0;i<this.lentBookVarietyTotalNum;i++) {
			if(this.lentBookName[i]==book.getBookName()) {			//判断所借书籍是否有在相同种类
				this.lentBookNum[i]++;								//将种类数组中的数值加一					
				break;
			}
		}
		if(i==this.lentBookVarietyTotalNum) {						//说明不在同一相同种类
			this.lentBookNum[this.lentBookVarietyTotalNum]++;		//将数组相加
			this.lentBookName[this.lentBookVarietyTotalNum]=book.getBookName();	//将新的种类记录进种类数组
			this.lentBookVarietyTotalNum++;							//将所借书籍种类数加一
		}
		this.lentBook[this.lentBookTotalNum]=book;					//将新数组加入数组中
		book.setDoLent(1);											//将书籍标记已借出
		book.setUserAccountNumber(this.accountNumber);				//将书籍被借者账号标注为用户的账号
		this.lentBookTotalNum++;									//用户所借总书数加一

	}
	public void returnBook(UserBook book) {
	//归还书籍
	}
}

Library类:用于展示书籍相关信息,以及是界面与功能的连接处。

package util;
import dao.LibarayBook;
import dao.UserLogin;
import ui.Design;
public class Library {

	private int bookNum;			//图书馆中所有书籍的数目 
	static int varietyNum;			//图书馆中书的种类数目 
	private int lentNum;			//图书馆中已借书籍的总数目 
	private int doLendNum; 			//图书馆中未借书籍的总数目
	private int lentVarietyNum;		//图书馆中已借书籍的种类数目
	private int doLendVarietyNum;	//图书馆中未借书籍的种类数目
	public int getBookNum() {
		return bookNum;
	}
	public void setBookNum(int bookNum) {
		this.bookNum = bookNum;
	}
	public int getVarietyNum() {
		return varietyNum;
	}
	public void setVarietyNum(int varietyNum) {
		Library.varietyNum = varietyNum;
	}
	public int getLentNum() {
		return lentNum;
	}
	public void setLentNum(int lentNum) {
		this.lentNum = lentNum;
	}
	public int getDoLendNum() {
		return doLendNum;
	}
	public void setDoLendNum(int doLendNum) {
		this.doLendNum = doLendNum;
	}
	public int getLentVarietyNum() {
		return lentVarietyNum;
	}
	public void setLentVarietyNum(int lentVarietyNum) {
		this.lentVarietyNum = lentVarietyNum;
	}
	public int getDoLendVarietyNum() {
		return doLendVarietyNum;
	}
	public void setDoLendVarietyNum(int doLendVarietyNum) {
		this.doLendVarietyNum = doLendVarietyNum;
	}
	public Library(int bookNum, int lentNum, int doLendNum, int lentVarietyNum, int doLendVarietyNum) {
		super();
		this.bookNum = bookNum;
		this.lentNum = lentNum;
		this.doLendNum = doLendNum;
		this.lentVarietyNum = lentVarietyNum;
		this.doLendVarietyNum = doLendVarietyNum;
	}
	@Override
	public String toString() {
		return "Library [bookNum=" + bookNum + ", varietyNum=" + varietyNum + ", lentNum=" + lentNum + ", doLendNum="
				+ doLendNum + ", lentVarietyNum=" + lentVarietyNum + ", doLendVarietyNum=" + doLendVarietyNum + "]";
	}
	public void lentBook(User user,UserBook book) {
		user.addBook(book);
	}
	public void rentBook(User user,UserBook book) {
		user.returnBook(book);
	}
	public void srarchBook(LibraryBook book,int number) {
		//根据编号查找书籍
	}
	public void srarchBook(LibraryBook book,String variety) {
		//根据分类查找书籍
	}
	public int judgeLent(LibraryBook book) {
		return bookNum;
		//判断是否还能借书
		//判断界面代码
	}
	void judgeUser(String number,String password) {
		//判断是否为用户正确密码
		//登入界面代码
	}
	void showVarietyBook() {
		//按分类展现书籍
	}
}

Book类:用于保存书籍的信息,标记是否被记,与剩余数目。

package util;

public class Book {
	private String bookName;			//书本名称
	private String varietyName;			//书本分类的名称
	private String bookNumber;			//书本编号
	private String location;			//书本位置
	public String getBookName() {
		return bookName;
	}
	public void setBookName(String bookName) {
		this.bookName = bookName;
	}
	public String getVarietyName() {
		return varietyName;
	}
	public void setVarietyName(String varietyName) {
		this.varietyName = varietyName;
	}
	public String getBookNumber() {
		return bookNumber;
	}
	public void setBookNumber(String bookNumber) {
		this.bookNumber = bookNumber;
	}
	public String getLocation() {
		return location;
	}
	public void setLocation(String location) {
		this.location = location;
	}
	@Override
	public String toString() {
		return "Book [bookName=" + bookName + ", varietyName=" + varietyName + ", bookNumber=" + bookNumber
				+ ", location=" + location + "]";
	}
	public Book(String bookName, String varietyName, String bookNumber, String location) {
		super();
		this.bookName = bookName;
		this.varietyName = varietyName;
		this.bookNumber = bookNumber;
		this.location = location;
	}
}
public class LibraryBook extends Book{//图书馆中的书籍
	private int lastBookNum;			//书本剩余数目
	public int getLastBookNum() {
		return lastBookNum;
	}

	public void setLastBookNum(int lastBookNum) {
		this.lastBookNum = lastBookNum;
	}

	@Override
	public String toString() {
		return "LibraryBook [lastBookNum=" + lastBookNum + "]";
	}
}
public class UserBook extends Book{//用户信息中的书籍
	private int doLent;					//书本是否被借出
	private String userAccountNumber;	//所借人的账号
	public int getDoLent() {
		return doLent;
	}
	public void setDoLent(int doLent) {
		this.doLent = doLent;
	}
	public String getUserAccountNumber() {
		return userAccountNumber;
	}
	public void setUserAccountNumber(String userAccountNumber) {
		this.userAccountNumber = userAccountNumber;
	}
	@Override
	public String toString() {
		return "UserBook [doLent=" + doLent + ", userAccountNumber=" + userAccountNumber + "]";
	}
}

LibarayBook 类:存放所有书籍信息,使用集合中的List。

package dao;

import java.awt.List;

import util.Book;

//用于存放所有书籍
public class LibarayBook {
		static List books;	
		//运用集合保存书本
		//创建文件类
		//按行依次读取书本名称、编号、种类名保存到数组中

}

四、包的规划设计

五、特色

1.使用DAO模式:在对书籍数据的储存,用户信息的存储以及用户账号信息的存储。
好处:将数据封装,更容易使用。
2.进行数据持久化(数据存储)。用文件存储信息。

posted @ 2020-12-09 20:32  偎己  阅读(549)  评论(0)    收藏  举报