图书管理系统开发与设计

来源 :大陆桥视野·下 | 被引量 : 0次 | 上传用户:robinchen
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要 随着电子计算机和通信技术的发展,人类已经逐渐地进入信息化社会。如何获取信息,图书当然是我们最好的获取信息的方式之一。但由于图书馆图书收藏量大大增加,使传统的图书管理员的工作日益繁重起来,对读者去图书馆借书造成了一定困扰。因此,图书管理系统也以方便、快捷的优点正慢慢地进入人们的生活,将传统的图书管理方式彻底地解脱出来,这不仅提高效率,减轻工作人员的工作量,减小出错的概率,也使读者可以花更多的时间在选择书和看书上。该图书管理系统主要采用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.
其他文献
论文以油气成藏地球化学理论为指导,以塔里木盆地台盆区奥陶系天然气、原油为研究主体,在天然气组分、碳同位素,原油物性、轻烃、甾烷萜烷生物标志化合物、碳同位素、芳构化
数字全息技术利用光电传感器记录下物光与参考光的干涉图样,在计算机上进行重建之后,不仅能得到样品的振幅信息,还能获取相位信息,具有普通光学成像无法比拟的优点。该技术在
裴頠对贵无论有着双重态度,一方面为对治西晋元康时期偏执空无的贵无论,他提出了一个具有多层次结构的崇有论体系,但受限于对治情境,这个体系依然存在层次缺失,并因此制约了
<正> 在立体几何中,求异面直线的公垂线,异面直线的距离和异面直线的交角,是一个难点。它之所以困难,是因为公垂线难找,距离和交角难求,解这类问题,技巧性很强。但是,如果以
青年教师的培养,历来是学校的一项重要工作,特别是随着改革开放的深入,越来越多的师范毕业生充实到教师队伍中来,这个问题就越显得更为重要了.我校是一所普通的苏南乡镇初级
为了提高桥梁钻孔灌注桩桩基承载力,近年来出现了后压浆钻孔灌注桩这一新技术。本文结合工程实例,阐述了灌注桩后压浆加固机理,参数的确定,施工工艺及在实际桩基加固工程中的应用
新课的导入至关重要,其优劣将会影响该节课乃至整章节的教学效果。为了更好地激发学生求知兴趣,符合学生的认识规律,获取更多数学知识,在教学中应根据学生心理和年龄的特点,