图书馆图书管理系统一、系统简介图书管理系统是图书馆的重要组成部分,一般分为两大部分,流通系统和采购系统。
采购系统分为订单管理、图书入库、图书著录、图书上架、新书上报和书目审查、系统设置。
流通系统分为图书管理、读者管理、借阅证管理、图书借阅、图书归还、系统设置等模块。
其中,核心模块为采购系统:图书入库、图书上架;流通系统:图书管理、读者管理、借阅证管理、图书借阅、图书归还等。
二、系统功能分析——流程图三、系统功能1) 图书采购(订单查询、查询订单、新书通报)2) 图书入库(图书著录、图书入库)3) 图书流通(图书借阅、图书归还、预约登记、图书暂停、图书催还)4) 读者管理(读者登记、读者管理、核发借阅证、暂停借阅证、挂失借阅证补发借阅证、罚款缴纳登记、借阅证注销)5) 统计查询(读者查询、借阅统计、借阅查询、罚款统计、记帐查询记帐统计)6) 系统设置(馆藏位置、用户借阅规定管理、用户管理、系统用户管理供书单位设置)四、程设计实现功能要求因为课程设计时间较短,学生分析设计能力还不熟练,故不要求学生实现以上全部功能,可以对系统进行简化,省去图书采购、上架、分类、馆藏等步骤,基本实现功能要求如下:1、图书证管理读者注册、图书证暂停、挂失、补发、注销管理2、图书流通管理读者借书、还书、图书预约3、统计查询图书查询读者查询借阅统计借阅查询罚款统计以上的东西自己改改吧,还可以用到报告中的。
/** @(#)BookManager.java* Have classes:BookManager Book Borrower* Copyright 2005 Fane. All rights reserved.* @author Fane* @version 1.0.0.0, 09/05/05* @since JDK 1.4*/package person.fane.test;import java.io.BufferedReader;import java.io.InputStreamReader;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Collection;import java.util.Date;import java.util.Iterator;public class LibraryManager{private ArrayList bookList = new ArrayList();private ArrayList userList = new ArrayList();public final int maxBorrower = 100;public final int maxBook = 100;public static void main(String args[]){//System.out.println("欢迎来到图书管理系统!!");LibraryManager newLibraryManager = new LibraryManager();BookManagerThread myBookManagerThread = new BookManagerThread(newLibraryManager);new Thread(myBookManagerThread).start();}/*** @return 返回bookList。
*/public ArrayList getBookList() {return bookList;}/*** @return 返回userList。
*/public ArrayList getUserList() {return userList;}/*** @param userList 要设置的userList。
*/public void setUserList(ArrayList userList) { erList = userList;}}class Book{/** Book类包含的属性*/private String bookName;private float bookPrice;private int bookType;private Date publishDate;private boolean isBorrowed;private Date borrowedDate;/*** @return 返回bookName。
*/public String getBookName() {return bookName;}/*** @param bookName 要设置的bookName。
*/public void setBookName(String bookName) { this.bookName = bookName;}/*** @return 返回bookPrice。
*/public float getBookPrice() {return bookPrice;}/*** @param bookPrice 要设置的bookPrice。
*/public void setBookPrice(float bookPrice) { this.bookPrice = bookPrice;}/*** @return 返回bookType。
*/public int getBookType() {return bookType;}/*** @param bookType 要设置的bookType。
*/public void setBookType(int bookType) { this.bookType = bookType;}/*** @return 返回borrowDate。
*/public Date getBorrowedDate() {return borrowedDate;}/*** @param borrowDate 要设置的borrowDate。
*/public void setBorrowedDate(Date borrowDate) { this.borrowedDate = borrowDate;}/*** @return 返回isBorrowed。
*/public boolean isBorrowed() {return isBorrowed;}/*** @param isBorrowed 要设置的isBorrowed。
*/public void setBorrowed(boolean isBorrowed) { this.isBorrowed = isBorrowed;}/*** @return 返回publishDate。
*/public Date getPublishDate() {return publishDate;}/*** @param publishDate 要设置的publishDate。
*/public void setPublishDate(Date publishDate) {this.publishDate = publishDate;}public String toString(){StringBuffer myStringBuffer = new StringBuffer();myStringBuffer.append("书名:"+this.getBookName()+" ##");myStringBuffer.append("价格:"+this.getBookPrice()+" ## ");myStringBuffer.append("类型:"+this.getBookType()+" \n");myStringBuffer.append("出版日期:"+this.getPublishDate()+" \n");myStringBuffer.append("借阅日期:"+this.getBorrowedDate()+" \n");return myStringBuffer.toString();}}class Borrower{private String name = "user";private int age = 1;private int borrowerId;private ArrayList borrowedBook = new ArrayList();public Borrower(){}public Borrower(String name,int age,int borrowId){this.setName(name);this.setAge(age);this.setBorrowerId(borrowId);}/*** @return 返回age。
*/public int getAge() {return age;}/*** @param age 要设置的age。
*/public void setAge(int age) {this.age = age;}/*** @return 返回borrowBook。
*/public Collection getBorrowedBook() { return borrowedBook;}/*** @return 返回borrowerId。
*/public int getBorrowerId() {return borrowerId;}/*** @param borrowerId 要设置的borrowerId。
*/public void setBorrowerId(int borrowerId) { this.borrowerId = borrowerId;}/*** @return 返回name。
*/public String getName() {return name;}/*** @param name 要设置的name。
*/public void setName(String name) { = name;}/** 输出用户基本信息和借阅信息* (非Javadoc)* @see ng.Object#toString()*/public String toString(){StringBuffer myStringBuffer = new StringBuffer();myStringBuffer.append("用户名:"+ name +" ### ");myStringBuffer.append("年龄:"+ age +" ### ");myStringBuffer.append("用户编号:"+ borrowerId +" ### \n");myStringBuffer.append("借阅书籍如下:\n");Iterator myIterator = this.getBorrowedBook().iterator();while(myIterator.hasNext()){Book myBook = (Book)myIterator.next();myStringBuffer.append("书名:"+myBook.getBookName()+" ");myStringBuffer.append("价格:"+myBook.getBookPrice()+" \n");myStringBuffer.append("出版日期:"+myBook.getPublishDate()+" \n");myStringBuffer.append("借阅日期:"+myBook.getBorrowedDate()+" \n");}return myStringBuffer.toString();}}class BookManagerThread implements Runnable{private boolean isOut = false;private int mainFrame = 0;private int subFrame = 0;private BufferedReader keyboardInput;private LibraryManager myLibraryManager;private SimpleDateFormat mySimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");public BookManagerThread(LibraryManager myLibraryManager)this.myLibraryManager = myLibraryManager;}/** 图书管理系统的运行进程* (非Javadoc)* @see ng.Runnable#run()*/public void run() {while(!isOut){logicProcess();}}private void displayMain(){System.out.println(" 欢迎来到图书管理系统!");System.out.println("1:用户管理<输入U+回车> ");System.out.println("2:图书管理<输入B+回车> ");System.out.println("3:借阅管理<输入L+回车> ");System.out.println("Exit:退出<输入Exit+回车> ");}private void dispalyUserManager(){System.out.println(" 欢迎来到图书管理系统!");System.out.println("1:增加用户<输入A+回车> ");System.out.println("2:修改用户<输入M+回车> ");System.out.println("3:删除用户<输入D+回车> ");System.out.println("Up:返回上一级<输入up+回车> "); }private void dispalyBookManager(){System.out.println(" 欢迎来到图书管理系统!");System.out.println("1:增加图书<输入A+回车> ");System.out.println("2:修改图书<输入M+回车> ");System.out.println("3:删除图书<输入D+回车> ");System.out.println("Up:返回上一级<输入up+回车> "); }private void dispalyBorrowManager(){System.out.println(" 欢迎来到图书管理系统!");System.out.println("1:借阅图书<输入B+回车> ");System.out.println("2:归还图书<输入L+回车> ");System.out.println("3:浏览用户借阅信息<输入V+回车> ");System.out.println("Up:返回上一级<输入up+回车> ");}private void dispalyAllUsers(){Iterator myIterator = this.getMyLibraryManager().getUserList().iterator();int i = 0;while(myIterator.hasNext()){System.out.println("该用户序列号是:"+ i);System.out.println(((Borrower)myIterator.next()).toString());i++;}}private void displayAllBooks(){Iterator myIterator = this.getMyLibraryManager().getBookList().iterator();int i = 0;while(myIterator.hasNext()){System.out.println("该书籍序列号是:"+ i);System.out.println(((Book)myIterator.next()).toString());i++;}}public void logicProcess(){String operateCode = "";/** 以下是菜单选择*/if(mainFrame == 0){displayMain();try{keyboardInput = new BufferedReader(new InputStreamReader(System.in));operateCode = keyboardInput.readLine();if(operateCode.equalsIgnoreCase("U"))mainFrame = 1;if(operateCode.equalsIgnoreCase("B"))mainFrame = 2;if(operateCode.equalsIgnoreCase("L"))mainFrame = 3;if(operateCode.equalsIgnoreCase("Exit"))isOut = true;}catch(Exception ex){System.out.println("输入错误!!!");}}if((mainFrame == 1) && (subFrame == 0)){dispalyUserManager();try{keyboardInput = new BufferedReader(new InputStreamReader(System.in));operateCode = keyboardInput.readLine();if(operateCode.equalsIgnoreCase("A"))subFrame = 1;if(operateCode.equalsIgnoreCase("M"))subFrame = 2;if(operateCode.equalsIgnoreCase("D"))subFrame = 3;if(operateCode.equalsIgnoreCase("Up")){mainFrame = 0;subFrame = 0;}}catch(Exception ex){System.out.println("输入错误!!!");}}if((mainFrame == 2) && (subFrame == 0)){dispalyBookManager();try{keyboardInput = new BufferedReader(new InputStreamReader(System.in));operateCode = keyboardInput.readLine();if(operateCode.equalsIgnoreCase("A"))subFrame = 1;if(operateCode.equalsIgnoreCase("M"))subFrame = 2;if(operateCode.equalsIgnoreCase("D"))subFrame = 3;if(operateCode.equalsIgnoreCase("Up")){mainFrame = 0;subFrame = 0;}}catch(Exception ex){System.out.println("输入错误!!!");}}if((mainFrame == 3) && (subFrame == 0)){dispalyBorrowManager();try{keyboardInput = new BufferedReader(new InputStreamReader(System.in));operateCode = keyboardInput.readLine();if(operateCode.equalsIgnoreCase("B"))subFrame = 1;if(operateCode.equalsIgnoreCase("L"))subFrame = 2;if(operateCode.equalsIgnoreCase("V"))subFrame = 3;if(operateCode.equalsIgnoreCase("Up")){mainFrame = 0;subFrame = 0;}}catch(Exception ex){System.out.println("输入错误!!!");}}/** 以下是个小块功能实现*/if((mainFrame == 1) && (subFrame == 1)){try{Borrower newBorrower = new Borrower();System.out.println("请输入用户名:(up返回上一级)");keyboardInput = new BufferedReader(new InputStreamReader(System.in));String nameTemp = keyboardInput.readLine();if("up".equalsIgnoreCase(nameTemp)){subFrame = 0;}else{System.out.println("请输入年龄:");String ageTemp = keyboardInput.readLine();newBorrower.setAge(Integer.parseInt(ageTemp));newBorrower.setName(nameTemp);if(this.getMyLibraryManager().getUserList() == null){newBorrower.setBorrowerId(1);}else{newBorrower.setBorrowerId(this.getMyLibraryManager().getUserList().siz e()+1);}getMyLibraryManager().getUserList().add(newBorrower);subFrame = 0;}}catch(Exception ex){//ex.printStackTrace();System.out.println("输入错误");}}if((mainFrame == 1) && (subFrame == 2)){try{dispalyAllUsers();System.out.println("请输入序列号来修改:(up返回上一级)");String idTemp = keyboardInput.readLine();if("up".equalsIgnoreCase(idTemp)){subFrame = 0;}else{Borrower modifiedBorrower = (Borrower)this.getMyLibraryManager().getUserList().get(Integer.parseInt(idTemp));System.out.println("请输入用户名:");keyboardInput = new BufferedReader(new InputStreamReader(System.in));String nameTemp = keyboardInput.readLine();System.out.println("请输入年龄:");String ageTemp = keyboardInput.readLine();modifiedBorrower.setAge(Integer.parseInt(ageTemp));modifiedBorrower.setName(nameTemp);subFrame = 0;}}catch(Exception ex){//ex.printStackTrace();System.out.println("输入错误");}}if((mainFrame == 1) && (subFrame == 3)){try{dispalyAllUsers();System.out.println("请输入序列号来删除:(up返回上一级)");String idTemp = keyboardInput.readLine();if("up".equalsIgnoreCase(idTemp)){subFrame = 0;}else{if(((Borrower)this.getMyLibraryManager().getUserList().get(Integer.parseInt (idTemp))).getBorrowedBook().size() == 0)this.getMyLibraryManager().getUserList().remove(Integer.parseInt(idTem p));else{System.out.println("该用户仍有借书,不能删除!!");}subFrame = 0;}}catch(Exception ex){//ex.printStackTrace();System.out.println("输入错误");}}if((mainFrame == 2) && (subFrame == 1)){try{Book newBook = new Book();System.out.println("请输入书名:(up返回上一级)");keyboardInput = new BufferedReader(new InputStreamReader(System.in));String bookNameTemp = keyboardInput.readLine();if("up".equalsIgnoreCase(bookNameTemp)){subFrame = 0;}else{System.out.println("请输入价格:");String bookPriceTemp = keyboardInput.readLine();System.out.println("请输入类型:1-计算机2-数学3-自然科学");String bookTypeTemp = keyboardInput.readLine();System.out.println("请输入出版日期:(格式yyyy-MM-dd HH:mm:ss)");String publishDateTemp = keyboardInput.readLine();newBook.setBookName(bookNameTemp);newBook.setBookPrice(Float.parseFloat(bookPriceTemp));newBook.setBookType(Integer.parseInt(bookTypeTemp));newBook.setPublishDate(mySimpleDateFormat.parse(publishDateTemp));this.getMyLibraryManager().getBookList().add(newBook);subFrame = 0;}}catch(Exception ex){//ex.printStackTrace();System.out.println("输入错误");}}if((mainFrame == 2) && (subFrame == 2)){try{displayAllBooks();System.out.println("请输入序列号来修改:(up返回上一级)");String idTemp = keyboardInput.readLine();if("up".equalsIgnoreCase(idTemp)){subFrame = 0;}else{Book modifiedBook = (Book)this.getMyLibraryManager().getBookList().get(Integer.parseInt(idTemp));System.out.println("请输入书名:");keyboardInput = new BufferedReader(new InputStreamReader(System.in));String bookNameTemp = keyboardInput.readLine();System.out.println("请输入价格:");String bookPriceTemp = keyboardInput.readLine();System.out.println("请输入类型:1-计算机2-数学3-自然科学");String bookTypeTemp = keyboardInput.readLine();System.out.println("请输入出版日期:(格式yyyy-MM-dd HH:mm:ss)");String publishDateTemp = keyboardInput.readLine();modifiedBook.setBookName(bookNameTemp);modifiedBook.setBookPrice(Float.parseFloat(bookPriceTemp));modifiedBook.setBookType(Integer.parseInt(bookTypeTemp));modifiedBook.setPublishDate(mySimpleDateFormat.parse(publishDateTemp) );subFrame = 0;}}catch(Exception ex){//ex.printStackTrace();System.out.println("输入错误");}}if((mainFrame == 2) && (subFrame == 3)){try{displayAllBooks();System.out.println("请输入序列号来删除:(up返回上一级)");String idTemp = keyboardInput.readLine();if("up".equalsIgnoreCase(idTemp)){subFrame = 0;}else{this.getMyLibraryManager().getBookList().remove(Integer.parseInt(idTemp));subFrame = 0;}}catch(Exception ex){//ex.printStackTrace();System.out.println("输入错误");}}if((mainFrame == 3) && (subFrame == 1)){try{displayAllBooks();System.out.println("请输入序列号来选择要借阅的书籍:(up返回上一级)");String idTemp = keyboardInput.readLine();dispalyAllUsers();System.out.println("请输入序列号来选择借阅者:(up返回上一级)");String borrowerIdTemp = keyboardInput.readLine();if(("up".equalsIgnoreCase(idTemp)) || ("up".equalsIgnoreCase(borrowerIdTemp))){subFrame = 0;}else{Book borrowedBook = (Book)this.getMyLibraryManager().getBookList().get(Integer.parseInt(idTemp));Borrower thisBorrower = (Borrower)this.getMyLibraryManager().getUserList().get(Integer.parseInt(borrowerIdTemp));borrowedBook.setBorrowed(true);borrowedBook.setBorrowedDate(new Date());thisBorrower.getBorrowedBook().add(borrowedBook);subFrame = 0;}}catch(Exception ex){//ex.printStackTrace();System.out.println("输入错误");}}if((mainFrame == 3) && (subFrame == 2)){try{this.displayAllBooks();System.out.println("请输入序列号来选择要归还的书籍:(up返回上一级)");String idTemp = keyboardInput.readLine();if("up".equalsIgnoreCase(idTemp)){subFrame = 0;}else{Book returnBook = (Book)this.getMyLibraryManager().getBookList().get(Integer.parseInt(idTemp));if(returnBook.isBorrowed()){Iterator myIterator = this.getMyLibraryManager().getUserList().iterator();Borrower borrowerTemp = new Borrower();while(myIterator.hasNext()){borrowerTemp = (Borrower)myIterator.next();if(borrowerTemp.getBorrowedBook().contains(returnBook)){borrowerTemp.getBorrowedBook().remove(returnBook);returnBook.setBorrowed(false);break;}}}else{System.out.println("该书未被借阅!!!");}subFrame = 0;}}catch(Exception ex){//ex.printStackTrace();System.out.println("输入错误");}}if((mainFrame == 3) && (subFrame == 3)){try{Iterator myIterator = this.getMyLibraryManager().getUserList().iterator();int i = 0;while(myIterator.hasNext()){System.out.println("该用户的序列号是:"+ i);System.out.println(((Borrower)myIterator.next()).getName());i++;}System.out.println("请输入序列号来查看:(up返回上一级)");String idTemp = keyboardInput.readLine();if("up".equalsIgnoreCase(idTemp)){subFrame = 0;}else{System.out.println(((Borrower)this.getMyLibraryManager().getUserList().get (Integer.parseInt(idTemp))).toString());subFrame = 0;}}catch(Exception ex){//ex.printStackTrace();System.out.println("输入错误");}}}/*** @return 返回myLibraryManager。