摘 要 隨著電子計(jì)算機(jī)和通信技術(shù)的發(fā)展,人類已經(jīng)逐漸地進(jìn)入信息化社會(huì)。如何獲取信息,圖書當(dāng)然是我們最好的獲取信息的方式之一。但由于圖書館圖書收藏量大大增加,使傳統(tǒng)的圖書管理員的工作日益繁重起來,對(duì)讀者去圖書館借書造成了一定困擾。因此,圖書管理系統(tǒng)也以方便、快捷的優(yōu)點(diǎn)正慢慢地進(jìn)入人們的生活,將傳統(tǒng)的圖書管理方式徹底地解脫出來,這不僅提高效率,減輕工作人員的工作量,減小出錯(cuò)的概率,也使讀者可以花更多的時(shí)間在選擇書和看書上。該圖書管理系統(tǒng)主要采用MySQL為后臺(tái)數(shù)據(jù)庫,基于SSH架構(gòu)的管理平臺(tái)。
關(guān)鍵詞 圖書管理系統(tǒng) 數(shù)據(jù)庫管理 SSH
一、程序主界面
程序啟動(dòng)后,進(jìn)入程序主界面。
圖1 主頁面
二、搜索頁面
圖2 檢索頁面
查詢結(jié)果頁面用于顯示根據(jù)傳遞過來的參數(shù)查詢出的數(shù)據(jù)。在此頁面下讀者可以清楚地看到所有書的信息,包括書名、作者、庫存數(shù)、出版社信息。
三、借閱書刊信息
圖3 書刊詳細(xì)信息頁面
此該模塊下借閱者可以清楚看到借閱書刊信息用來顯示書刊的名稱,作者,借閱時(shí)間以及歸還時(shí)間。
四、讀者管理模塊
1.讀者登錄。
圖4 借閱者登錄頁面
在該模塊下借閱者可以通過注冊(cè)自己的用戶名及密碼進(jìn)行登錄借書頁面。
2.借閱者已借閱模塊。
圖5 已借圖書界面
在該模塊下借閱者可以清楚地看到借閱者已經(jīng)借閱到的書刊。
實(shí)現(xiàn)“待審核借閱”的代碼如下:
public String myUnderApproval(){
this.listUnderApproval = new ArrayList
try {
ActionContext ac = ActionContext.getContext();
@SuppressWarnings(“rawtypes”)
Map session = ac.getSession();
User user = (User)session.get(“user”);
if(user == 1 || ““.equals(user)){
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
response.sendRedirect(request.getContextPath() + “/login.jsp”);
return “l(fā)ogin”;
}
this.listUnderApproval = this.bookRecordService.getBookByUser(user, 0);
System.out.println(“l(fā)ist.size:“+this.listUnderApproval.size());
} catch (Exception e) {
e.printStackTrace();
}
return “myUnderApproval”;
}
3.管理員登錄。
圖6 管理員登錄頁面
在該模塊下可以實(shí)現(xiàn)管理員的登錄。
實(shí)現(xiàn)“管理員登陸”的代碼如下:
public String mangerLogin(){
boolean b = this.managerService.checkUser(this.manager.getManagerName(),this.manager.getPassword());
if(b){
this.userService.clearUserFromSession();
Manager manager = new Manager();
manager = this.managerService.findManagerByManagerName(this.manager.getManagerName());
his.managerService.saveManagerToSession(manager);
return “manager”;
}else{
return “mangerLogin”;
}
}
五、添加圖書信息
圖7 添加圖書信息頁面
在該模塊下管理員可以完成對(duì)圖書的添加,其中包括圖書的一些基本信息。
實(shí)現(xiàn)“添加圖書”的代碼如下:
public String addBook(){
String imageName = this.getUploadFileName();
String result = ““;
if(imageName != 1 !”“.equals(imageName)){
String[] temps = imageName.split(”\\.“);
if(temps.length>1){
//String name = URLEncoder.encode(temps[0]);
result = this.book.getIsbn()+”.“+temps[1];
}
}else{
result = “default.jpg”;
}
this.book.setImage(result);
if(this.managerService.addObject(this.book)){
HttpServletRequest request = 1;
try {
request = ServletActionContext.getRequest();
request.setCharacterEncoding(“utf-8”);
String realPath = request.getSession().getServletContext().getRealPath(“/”);
String path = realPath+“bookimage/”;
InputStream is = new FileInputStream(this.getUpload());
OutputStream os = new FileOutputStream(path+result);
byte[] b = new byte[1024];
int size = is.read(b);
while(size>0){
os.write(b, 0, size);
size = is.read(b);
System.out.println(“realPath:“+realPath);
} catch (Exception e) {
e.printStackTrace();
}
return “addBook”;
}else{
return INPUT;
}
}
}
六、圖書歸還時(shí)管理員的操作模塊
圖8 圖書借閱登記頁面
在該模塊下實(shí)現(xiàn)了借閱者歸還書籍時(shí)管理員對(duì)借閱書籍的查詢。在用戶名處輸入借書者的用戶名,管理員即可查詢?cè)撚脩艚钑那闆r。
實(shí)現(xiàn)“辦理還書”的代碼如下:
public String returnBook(){
try {
ActionContext ac = ActionContext.getContext();
@SuppressWarnings(“rawtypes”)
Map session = ac.getSession();
User user = (User)session.get(“user”);
if(user == 1 || ““.equals(user)){
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
response.sendRedirect(request.getContextPath() + “/login.jsp”);
return “l(fā)ogin”;
}
List
System.out.println(“this.bookId:“+this.bookId);
Book book = new Book();
book = (Book)this.bookRecordService.getObjectById(Book.class, Integer.parseInt(this.bookId));
istBookRecord = this.bookRecordService.getBookIdFromBookRecord(user,book,1);
for(int i=0;i BookRecord bookRecord = new BookRecord(); bookRecord = listBookRecord.get(i); bookRecord.setConfirm(2); Date actualReturnDate = DateUtil.getFormatDate(); bookRecord.setActualReturnDate(actualReturnDate); this.bookRecordService.updateObject(bookRecord); } } catch (Exception e) { e.printStackTrace(); } return “returnBook”; } 七、圖書定損賠償模塊 圖9 圖書歸還頁面 在該模塊下實(shí)現(xiàn)了對(duì)損壞圖書的賠償處罰。此功能實(shí)現(xiàn)了對(duì)涂抹程度及損壞頁數(shù)的賠償金計(jì)算功能,并會(huì)自動(dòng)計(jì)算出賠償價(jià)格。如果沒有損壞可直接辦理還書手續(xù)。 實(shí)現(xiàn)“計(jì)算賠付金”的代碼如下: /** * 計(jì)算賠償金 *1.珍貴圖書:每過期一天,需繳納二角人民幣。 非珍貴圖書:每過期一天,需繳納一角人民幣。 2.珍貴圖書:每損壞一頁,需繳納二元人民幣,損壞超過五頁,按原價(jià)賠償。 非珍貴圖書:每損壞一頁, 需繳納一元人民幣,損壞超過十頁,按原價(jià)賠償。 3、珍貴圖書:涂抹輕微,需繳納十元人民幣,涂抹嚴(yán)重,按原價(jià)賠償。 非珍貴圖書:涂抹輕微, 需繳納五元人民幣,涂抹嚴(yán)重,按原價(jià)賠償。 * @return */ public String compensation(){ this.compensationNum = 0.0f; System.out.println(this.damageNumber); System.out.println(this.compensationNum); System.out.println(this.bookRecord.getBook().getPrice()); //1.珍貴圖書: if(this.bookRecord.getBook().getIsPrecious() == 1){ //涂抹計(jì)算 if(“1”.equals(this.degree)){ this.compensationNum += 10.0f; }else if(“2”.equals(this.degree)){ this.compensationNum = this.bookRecord.getBook().getPrice(); } //損壞計(jì)算 if(Integer.parseInt(this.damageNumber) < 6){ this.compensationNum += Integer.parseInt(this.damageNumber)*2; }else if(Integer.parseInt(this.damageNumber) > 5){ this.compensationNum = this.bookRecord.getBook().getPrice(); } //過期計(jì)算 Date returnDate = this.bookRecord.getReturnDate();//應(yīng)還時(shí)間 Date actualReturnDate = this.bookRecord.getActualReturnDate();//實(shí)際還書時(shí)間 long days = 0l; if(actualReturnDate.after(returnDate)){ days = returnDate.getTime() - actualReturnDate.getTime(); days = days / 1000 / 60 / 60 / 24; his.compensationNum += days*0.2; } }else{ //2.非珍貴圖書: //涂抹計(jì)算 if(“1”.equals(this.degree)){ this.compensationNum += 5.0f; }else if(“2”.equals(this.degree)){ this.compensationNum = this.bookRecord.getBook().getPrice(); } //損壞計(jì)算 if(Integer.parseInt(this.damageNumber) < 11 this.compensationNum != this.bookRecord.getBook().getPrice()){ this.compensationNum += Integer.parseInt(this.damageNumber)*1; }else if(Integer.parseInt(this.damageNumber) > 10){ this.compensationNum = this.bookRecord.getBook().getPrice(); } //過期計(jì)算 Date returnDate = this.bookRecord.getReturnDate();//應(yīng)還時(shí)間 Date actualReturnDate = this.bookRecord.getActualReturnDate();//實(shí)際還書時(shí)間 long days = 0l; if(actualReturnDate.after(returnDate)){ days = actualReturnDate.getTime()-returnDate.getTime(); days = days / 1000 / 60 / 60 / 24; this.compensationNum += days*0.1; } } if(this.compensationNum > this.bookRecord.getBook().getPrice()){ this.compensationNum = this.bookRecord.getBook().getPrice(); } return “compensation”; } 實(shí)現(xiàn)“確認(rèn)還書”的代碼如下: public String confirmRuturnBook(){ try { System.out.println(“this.bookId:“+this.bookId); Book book = new Book(); book = (Book)this.bookRecordService.getObjectById(Book.class, Integer.parseInt(this.sbookId.trim())); User user = new User(); String userName = new String(this.userName.getBytes(”ISO-8859-1“), “UTF-8”); System.out.println(“this.userName:“+userName); user = this.userService.findUserByUserName(userName); List BookRecord bookRecord = new BookRecord(); bookRecord = list.get(0); //確認(rèn)還書,將book中的圖書數(shù)量加1 int bookNumber = book.getBookNumber(); book.setBookNumber(bookNumber+1); this.managerService.updateObject(book); this.managerService.deleteObject(bookRecord); } catch (Exception e) { e.printStackTrace(); } return “confirmRuturnBook”; } 參考文獻(xiàn) [1]郭瑞軍,郭磬君.ASP.NET 2.0數(shù)據(jù)庫開發(fā)實(shí)例精粹.北京:電子工業(yè)出版社,2006. [2]周伶俐.ASP畢業(yè)設(shè)計(jì)指南與項(xiàng)目實(shí)踐.北京:科學(xué)出本社,2007年. [3]孫更新,陳月,周峰.ASP+SQL Server2005動(dòng)態(tài)網(wǎng)站建設(shè).北京:電子工業(yè)出版社,2007. [4]宣小平,但正剛,張文毅.ASP數(shù)據(jù)庫系統(tǒng)開發(fā)實(shí)例導(dǎo)航.北京:人民郵電出版社,2003. [5]施威銘.Microsoft SQL Server2005中文版設(shè)計(jì)實(shí)務(wù).北京:機(jī)械工業(yè)出版社,2008. [6]曹錳,舒新峰.C#與ASP.NET程序設(shè)計(jì).西安: 西安交通大學(xué)出版社, 2005. [7]李千目,嚴(yán)哲,等. ASP.NET程序設(shè)計(jì)與應(yīng)用開發(fā).北京: 清華大學(xué)出版社,2009. [8]王珊,薩師煊.數(shù)據(jù)庫系統(tǒng)概論. 第四版.北京.高等教育出版社,2006. [9]邵兵家.電子商務(wù)概論.第二版.北京:高等教育出版社,2006.