论文部分内容阅读
摘 要 随着电子计算机和通信技术的发展,人类已经逐渐地进入信息化社会。如何获取信息,图书当然是我们最好的获取信息的方式之一。但由于图书馆图书收藏量大大增加,使传统的图书管理员的工作日益繁重起来,对读者去图书馆借书造成了一定困扰。因此,图书管理系统也以方便、快捷的优点正慢慢地进入人们的生活,将传统的图书管理方式彻底地解脱出来,这不仅提高效率,减轻工作人员的工作量,减小出错的概率,也使读者可以花更多的时间在选择书和看书上。该图书管理系统主要采用MySQL为后台数据库,基于SSH架构的管理平台。
关键词 图书管理系统 数据库管理 SSH
一、程序主界面
程序启动后,进入程序主界面。
图1 主页面
二、搜索页面
图2 检索页面
查询结果页面用于显示根据传递过来的参数查询出的数据。在此页面下读者可以清楚地看到所有书的信息,包括书名、作者、库存数、出版社信息。
三、借阅书刊信息
图3 书刊详细信息页面
此该模块下借阅者可以清楚看到借阅书刊信息用来显示书刊的名称,作者,借阅时间以及归还时间。
四、读者管理模块
1.读者登录。
图4 借阅者登录页面
在该模块下借阅者可以通过注册自己的用户名及密码进行登录借书页面。
2.借阅者已借阅模块。
图5 已借图书界面
在该模块下借阅者可以清楚地看到借阅者已经借阅到的书刊。
实现“待审核借阅”的代码如下:
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 == null || ““.equals(user)){
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
response.sendRedirect(request.getContextPath() + “/login.jsp”);
return “login”;
}
this.listUnderApproval = this.bookRecordService.getBookByUser(user, 0);
System.out.println(“list.size:“+this.listUnderApproval.size());
} catch (Exception e) {
e.printStackTrace();
}
return “myUnderApproval”;
}
3.管理员登录。
图6 管理员登录页面
在该模块下可以实现管理员的登录。
实现“管理员登陆”的代码如下:
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 添加图书信息页面
在该模块下管理员可以完成对图书的添加,其中包括图书的一些基本信息。
实现“添加图书”的代码如下:
public String addBook(){
String imageName = this.getUploadFileName();
String result = ““;
if(imageName != null && !”“.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 = null;
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;
}
}
}
六、图书归还时管理员的操作模块
图8 图书借阅登记页面
在该模块下实现了借阅者归还书籍时管理员对借阅书籍的查询。在用户名处输入借书者的用户名,管理员即可查询该用户借书的情况。
实现“办理还书”的代码如下:
public String returnBook(){
try {
ActionContext ac = ActionContext.getContext();
@SuppressWarnings(“rawtypes”)
Map session = ac.getSession();
User user = (User)session.get(“user”);
if(user == null || ““.equals(user)){
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
response.sendRedirect(request.getContextPath() + “/login.jsp”);
return “login”;
}
List listBookRecord = new ArrayList();
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 图书归还页面
在该模块下实现了对损坏图书的赔偿处罚。此功能实现了对涂抹程度及损坏页数的赔偿金计算功能,并会自动计算出赔偿价格。如果没有损坏可直接办理还书手续。
实现“计算赔付金”的代码如下:
/**
* 计算赔偿金
*1.珍贵图书:每过期一天,需缴纳二角人民币。 非珍贵图书:每过期一天,需缴纳一角人民币。
2.珍贵图书:每损坏一页,需缴纳二元人民币,损坏超过五页,按原价赔偿。 非珍贵图书:每损坏一页,
需缴纳一元人民币,损坏超过十页,按原价赔偿。
3、珍贵图书:涂抹轻微,需缴纳十元人民币,涂抹严重,按原价赔偿。 非珍贵图书:涂抹轻微,
需缴纳五元人民币,涂抹严重,按原价赔偿。
* @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){
//涂抹计算
if(“1”.equals(this.degree)){
this.compensationNum += 10.0f;
}else if(“2”.equals(this.degree)){
this.compensationNum = this.bookRecord.getBook().getPrice();
}
//损坏计算
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();
}
//过期计算
Date returnDate = this.bookRecord.getReturnDate();//应还时间
Date actualReturnDate = this.bookRecord.getActualReturnDate();//实际还书时间
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.非珍贵图书:
//涂抹计算
if(“1”.equals(this.degree)){
this.compensationNum += 5.0f;
}else if(“2”.equals(this.degree)){
this.compensationNum = this.bookRecord.getBook().getPrice();
}
//损坏计算
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();
}
//过期计算
Date returnDate = this.bookRecord.getReturnDate();//应还时间
Date actualReturnDate = this.bookRecord.getActualReturnDate();//实际还书时间
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”;
}
实现“确认还书”的代码如下:
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 list = this.bookRecordService.getBookIdFromBookRecord(user, book, 2);
BookRecord bookRecord = new BookRecord();
bookRecord = list.get(0);
//确认还书,将book中的图书数量加1
int bookNumber = book.getBookNumber();
book.setBookNumber(bookNumber+1);
this.managerService.updateObject(book);
this.managerService.deleteObject(bookRecord);
} catch (Exception e) {
e.printStackTrace();
}
return “confirmRuturnBook”;
}
参考文献
[1]郭瑞军,郭磬君.ASP.NET 2.0数据库开发实例精粹.北京:电子工业出版社,2006.
[2]周伶俐.ASP毕业设计指南与项目实践.北京:科学出本社,2007年.
[3]孙更新,陈月,周峰.ASP+SQL Server2005动态网站建设.北京:电子工业出版社,2007.
[4]宣小平,但正刚,张文毅.ASP数据库系统开发实例导航.北京:人民邮电出版社,2003.
[5]施威铭.Microsoft SQL Server2005中文版设计实务.北京:机械工业出版社,2008.
[6]曹锰,舒新峰.C#与ASP.NET程序设计.西安: 西安交通大学出版社, 2005.
[7]李千目,严哲,等. ASP.NET程序设计与应用开发.北京: 清华大学出版社,2009.
[8]王珊,萨师煊.数据库系统概论. 第四版.北京.高等教育出版社,2006.
[9]邵兵家.电子商务概论.第二版.北京:高等教育出版社,2006.
关键词 图书管理系统 数据库管理 SSH
一、程序主界面
程序启动后,进入程序主界面。
图1 主页面
二、搜索页面
图2 检索页面
查询结果页面用于显示根据传递过来的参数查询出的数据。在此页面下读者可以清楚地看到所有书的信息,包括书名、作者、库存数、出版社信息。
三、借阅书刊信息
图3 书刊详细信息页面
此该模块下借阅者可以清楚看到借阅书刊信息用来显示书刊的名称,作者,借阅时间以及归还时间。
四、读者管理模块
1.读者登录。
图4 借阅者登录页面
在该模块下借阅者可以通过注册自己的用户名及密码进行登录借书页面。
2.借阅者已借阅模块。
图5 已借图书界面
在该模块下借阅者可以清楚地看到借阅者已经借阅到的书刊。
实现“待审核借阅”的代码如下:
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 == null || ““.equals(user)){
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
response.sendRedirect(request.getContextPath() + “/login.jsp”);
return “login”;
}
this.listUnderApproval = this.bookRecordService.getBookByUser(user, 0);
System.out.println(“list.size:“+this.listUnderApproval.size());
} catch (Exception e) {
e.printStackTrace();
}
return “myUnderApproval”;
}
3.管理员登录。
图6 管理员登录页面
在该模块下可以实现管理员的登录。
实现“管理员登陆”的代码如下:
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 添加图书信息页面
在该模块下管理员可以完成对图书的添加,其中包括图书的一些基本信息。
实现“添加图书”的代码如下:
public String addBook(){
String imageName = this.getUploadFileName();
String result = ““;
if(imageName != null && !”“.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 = null;
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;
}
}
}
六、图书归还时管理员的操作模块
图8 图书借阅登记页面
在该模块下实现了借阅者归还书籍时管理员对借阅书籍的查询。在用户名处输入借书者的用户名,管理员即可查询该用户借书的情况。
实现“办理还书”的代码如下:
public String returnBook(){
try {
ActionContext ac = ActionContext.getContext();
@SuppressWarnings(“rawtypes”)
Map session = ac.getSession();
User user = (User)session.get(“user”);
if(user == null || ““.equals(user)){
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
response.sendRedirect(request.getContextPath() + “/login.jsp”);
return “login”;
}
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 = 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 图书归还页面
在该模块下实现了对损坏图书的赔偿处罚。此功能实现了对涂抹程度及损坏页数的赔偿金计算功能,并会自动计算出赔偿价格。如果没有损坏可直接办理还书手续。
实现“计算赔付金”的代码如下:
/**
* 计算赔偿金
*1.珍贵图书:每过期一天,需缴纳二角人民币。 非珍贵图书:每过期一天,需缴纳一角人民币。
2.珍贵图书:每损坏一页,需缴纳二元人民币,损坏超过五页,按原价赔偿。 非珍贵图书:每损坏一页,
需缴纳一元人民币,损坏超过十页,按原价赔偿。
3、珍贵图书:涂抹轻微,需缴纳十元人民币,涂抹严重,按原价赔偿。 非珍贵图书:涂抹轻微,
需缴纳五元人民币,涂抹严重,按原价赔偿。
* @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){
//涂抹计算
if(“1”.equals(this.degree)){
this.compensationNum += 10.0f;
}else if(“2”.equals(this.degree)){
this.compensationNum = this.bookRecord.getBook().getPrice();
}
//损坏计算
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();
}
//过期计算
Date returnDate = this.bookRecord.getReturnDate();//应还时间
Date actualReturnDate = this.bookRecord.getActualReturnDate();//实际还书时间
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.非珍贵图书:
//涂抹计算
if(“1”.equals(this.degree)){
this.compensationNum += 5.0f;
}else if(“2”.equals(this.degree)){
this.compensationNum = this.bookRecord.getBook().getPrice();
}
//损坏计算
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();
}
//过期计算
Date returnDate = this.bookRecord.getReturnDate();//应还时间
Date actualReturnDate = this.bookRecord.getActualReturnDate();//实际还书时间
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”;
}
实现“确认还书”的代码如下:
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);
//确认还书,将book中的图书数量加1
int bookNumber = book.getBookNumber();
book.setBookNumber(bookNumber+1);
this.managerService.updateObject(book);
this.managerService.deleteObject(bookRecord);
} catch (Exception e) {
e.printStackTrace();
}
return “confirmRuturnBook”;
}
参考文献
[1]郭瑞军,郭磬君.ASP.NET 2.0数据库开发实例精粹.北京:电子工业出版社,2006.
[2]周伶俐.ASP毕业设计指南与项目实践.北京:科学出本社,2007年.
[3]孙更新,陈月,周峰.ASP+SQL Server2005动态网站建设.北京:电子工业出版社,2007.
[4]宣小平,但正刚,张文毅.ASP数据库系统开发实例导航.北京:人民邮电出版社,2003.
[5]施威铭.Microsoft SQL Server2005中文版设计实务.北京:机械工业出版社,2008.
[6]曹锰,舒新峰.C#与ASP.NET程序设计.西安: 西安交通大学出版社, 2005.
[7]李千目,严哲,等. ASP.NET程序设计与应用开发.北京: 清华大学出版社,2009.
[8]王珊,萨师煊.数据库系统概论. 第四版.北京.高等教育出版社,2006.
[9]邵兵家.电子商务概论.第二版.北京:高等教育出版社,2006.