2.2.1功能框图图书管理系统用户管理图书管理借阅管理查询统计用户注销用户修改用户添加图书删除用户查询用户挂失图书入库图书修改图书续借还书登记借书登记图书查询罚款记录查询借出记录查询遗失记录查询超期记录查询未还记录查询图书遗失罚款统计图书统计用户统计用户借阅统计图1总体功能框图2.2.2E-R图publisher Varchar 50 出版社price float 8 价格inTime date 10 上架时间type int 4 图书类型operator int 4 管理员ID(2)booktype_t表用来保存图书类型相关信息如表2所示。
表2:booktype_t字段名称数据类型长度备注id int 10 类型IDname varchar 15 类型名3.2.2程序界面设计网站用户登录页面用于提供用户进行登录,登录后分两种用户权限,普通用户和管理员用户,普通用户可以浏览图书馆现有藏书,管理员用户可以对图书馆的图书和图书类别进行增删改查操作,于已经登录的用户,在藏书页面将显示用户的相关信息。
首页主要是根据保存用户名信息的Session参数来判断用户是否已经登录。
如图4所示。
图4用户登录图部分代码如下:public String login(){String username = request.getParameter("username");String password = request.getParameter("password");BookDao bd = new BookDao();User user = new User();List<User> userlist= bd.login(username, password);if(userlist.size()>=1){user=userlist.get(0);session.setAttribute("userinfo", user);return "login";}elsereturn "errlogin";}普通用户可以在本页对网上图书馆现有藏书进行按书名或者分类搜索浏览,管理员具有管理权限,可以对图书进行添加、修改、删除、还可以对图书类别进行管理。
如图5所示。
图5 普通用户登录图6 管理员用户登录部分代码如下:public String getList(){String type =request.getParameter("bookType");String bookName = request.getParameter("bookName");BookDao bd = new BookDao();BookTypeDao btd = new BookTypeDao();List<BookType> BTlist = btd.getType();request.setAttribute("BTlist", BTlist);List<Object[]> list = bd.getUsersList(bookName, type);HttpServletRequest request = ServletActionContext.getRequest();request.setAttribute("list", list);return "getList";}public List<Object[]> getUsersList(String bookName,String type){图7 添加图书界面当管理员用户在登录后,在图书馆浏览页面可以看到添加图书选项,点击会自动跳转到index!toAdd页面来添加图书。
代码如下:public String addBook(){String bookName = request.getParameter("bookName");String author = request.getParameter("author");String publisher = request.getParameter("publisher");String price = request.getParameter("price");String inTime = request.getParameter("inTime");String type = request.getParameter("type");String operator = request.getParameter("operator");try {bookName = new String(bookName.getBytes("iso-8859-1"),"utf-8");author = new String(author.getBytes("iso-8859-1"),"utf-8");publisher = new String(publisher.getBytes("iso-8859-1"),"utf-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}Book b = new Book();b.setBookName(bookName);b.setAuthor(author);b.setPublisher(publisher);b.setPrice(Float.parseFloat(price));b.setInTime(inTime);b.setType(Integer.parseInt(type));b.setOperator(Integer.parseInt(operator));BookDao bd = new BookDao();bd.addBook(b);return "add";}管理员用户登录后具有对图书信息修改的功能,管理员可以看到图书浏览页面每条图书记录后具有对这本图书进行修改的选项,单击修改会进到修改这本书的详情页,自动获取这本图书的信息。
图8修改现有图书信息界面部分实现代码:}所有用户都可以对图书馆现有大量图书进行搜索,以便找到想要的图书或者感兴趣的书籍,可以根据图书的名称关键字进行模糊搜索,或者根据图书类别进行搜索,或者联合这两个选项进行搜索。
图9图书模糊搜索模块部分代码实现:public List<Object[]> getUsersList(String bookName,String type){StringBuffer hqlsb =new StringBuffer( "from Book a, BookType b where a.type=b.id");if(bookName!="" && bookName!=null){ try {bookName = new String(bookName.getBytes("iso-8859-1"),"utf-8");System.out.println(bookName);} catch (UnsupportedEncodingException e) {e.printStackTrace();}hqlsb.append(" and a.bookName like \'%"+bookName+"%\'");}if(type!="" && type!=null)hqlsb.append(" and a.type="+type);String hql = hqlsb.toString();System.out.println(hql);Query query = super.getSession().createQuery(hql);List<Object[]> list = query.list() ;。