miniui+servlet使用后端分页的图书管理练习

项目练习要求:

  1. 数据表结构

图书信息表 BookInfo

字段含义

字段名

类型

是否为空

说明

图书编号

bookguid

NVARCHAR(50)

N

自动生成,不能重复

图书名称

bookname

NVARCHAR(20)

N

图书名称不能重复

图书类别

booktype

Int

N

使用下拉列表展示:1、电子科技2、人文生活3、时尚周刊4、艺术鉴赏

适合人群

suitable

Int

N

使用radioButton展示:1、老年人2、青年人3、儿童

入库日期

buydate

DATE

N

使用日期控件展示

借阅次数

count

Int

N

新增图书时,默认为0

备注

remark

TEXT

 

使用文本域展示

 

借阅管理BorrowInfo

字段含义

字段名

类型

是否为空

说明

图书名称

bookname

NVARCHAR(20)

N

用下拉列表显示图书名称,展示课程名,存入图书编号

借阅标识

useguid

NVARCHAR(50)

N

自动生成,不能重复

借阅人

borrowperson

NVARCHAR(50)

N

 

办理人

handler

NVARCHAR(50)

N

 

借阅事由

borrowcause

NVARCHAR(100)

N

使用文本框展示

借阅日期

borrowdate

DATE

 

使用日期控件展示

归还日期

returndate

DATE

N

使用日期控件展示,归还日期不能在借阅日期之前

备注

remark

TEXT

 

使用文本域展示

数据库建表sql:

create table BookInfo(

bookguid VARCHAR(50) PRIMARY key,

bookname VARCHAR(20) not null UNIQUE,

booktype int  not null,

suitable int not null,

buydate  date not null,

count int not null,

remark text);

create table BorrowInfo(

useguid VARCHAR(50) PRIMARY key,

bookname VARCHAR(20) not null  ,

borrowperson VARCHAR(50)  not null,

handler VARCHAR(50)  not null,

borrowcause VARCHAR(100) not null,

borrowdate date ,

returndate date not null,

 remark text);

  1. 功能描述

具体要求

  1. 在数据库中按照以上的数据表结构要求,创建相应的数据表
  2. 需要的页面分别是:

首页

图书信息的新增、图书信息修改和图书信息列表页面

借阅信息的新增和列表页面

  1. 新增、修改页面采用4列布局,页面整齐,没有滚动条出现
  2. 日期控件可以使用:mydatepicker97,控件使用请自行搜索使用方法,所有日期必须采用日期控件显示也可以用文本框

首页

显示:图书管理、借阅管理

图书管理

列表:展示所有图书信息

  1. 显示新增 、删除选中按钮;右侧放置查询条件
  2. 列表可使用复选框选中行记录,点击删除选中则删除选中记录
  3. 列表每行记录后,有修改、删除按钮或者链接,点击删除,删除当前行记录,点击修改弹出修改页面
  4. 如果图书借阅次数大于10,则用红色字体显示,否则使用绿色显示
  5. 查询条件:可以根据图书类型及入库日期查询
  6. 分页显示所有记录

 

新增,要求如下:

  1. 图书名称前使用下拉列表显示:中心馆、分馆1、分馆2,放置输入框,例如选择中心馆,输入框输入:java开发学习,则数据库存入:中心馆-java开发学习(中间一个减号),图书名称不能重复
  2. 图书编号总共6位,由字母KC+4位数字编号组成(如KC0001),必须唯一,在新增时自动生成,数字编号自动增长。在修改时,图书编号无法修改

3)入库日期不能在当前日期之后

4)借阅次数默认为0,不可修改,每添加一次借阅信息,借阅次数=原借阅次数+1

修改:

  1. 修改页面获取原有记录所有值
  2. 图书名称不允许修改
  3. 修改完成后点击修改按钮可修改记录

图书借阅管理

借阅信息列表:

  1. 展示所有借阅信息,
  1. 显示新增 、删除选中按钮;右侧放置查询条件
  2. 列表每行记录后,删除按钮或者链接,点击删除,删除当前行记录
  3. 可以根据图书名称进行查询,查询输入后面的书名(不包含横线前的中心馆等信息),进行模糊匹配
  4. 列表需显示图书名称,不能显示图书编号

借阅信息新增页面

    1. 使用下拉列表展示所有图书,值字段存入图书编号,文本字段显示图书名称

    2)借阅标识总共6位,由字母JY+4位数字编号组成(如JY0001),必须唯一,在新增时自动生成,数字编号自动增长。在修改时,借阅标识无法修改

3)使用日期控件展示借阅日期及归还日期,归还日期不能在借阅日期之前

4)如果所选图书在申请的时间段已经被借阅,则提示重新选择图书信息

5)借阅信息添加成功更新图书信息中的借阅次数字段

1.项目结构

web页面结构

web页面所需要的文件夹目录都是根据miniui拷贝的。

2.

domain层:

根据数据库创建

dao层:只写两个接口:

public interface IbookManage {
	/**
	 * 查看所有的图书信息
	 * @Title: selectAllBookInfos   
	 * @Description: TODO(查看所有的图书信息,后台分页)   
	 * @param: @return      
	 * @return: List<BookInfo>      
	 * @throws
	 */
	public List<BookInfo> selectAllBookInfos(int pageindex,int pagesize);
	/**
	 * 根据图书编号删除一本图书信息
	 * @Title: delonebook   
	 * @Description: TODO(根据图书编号删除一本图书信息)   
	 * @param: @param book
	 * @param: @return      
	 * @return: boolean      
	 * @throws
	 */
	public boolean delonebook(BookInfo book);
/**
 * 增加一本图书信息
 * @Title: addonebook   
 * @Description: TODO(增加一本图书信息)   
 * @param: @param book
 * @param: @return      
 * @return: boolean      
 * @throws
 */
	public boolean addonebook(BookInfo book);
	/**
	 * 修改一本图书信息
	 * @Title: updateonebook   
	 * @Description: TODO( 修改一本图书信息)   
	 * @param: @param book
	 * @param: @return      
	 * @return: boolean      
	 * @throws
	 */
	public boolean updateonebook(BookInfo book);
	
	/**
	 * 查找数据库中最大的图书编号
	 * @Title: selectmaxbookuid   
	 * @Description: TODO(查找数据库中最大的图书编号)   
	 * @param: @return      
	 * @return: String      
	 * @throws
	 */
	public String selectmaxbookuid();
	/**   
	 * 根据图书名称查找图书信息,需要根据传入的页面分页
	 * @Title: seloneByname   
	 * @Description: TODO(根据图书名称查找图书信息)   
	 * @param: @param bookInfo
	 * @param: @return      
	 * @return: boolean      
	 * @throws   
	 */
	public boolean seloneByname(BookInfo bookInfo );
	/**   
	 * 根据图书类型和入库时间查找图书信息
	 * @Title: selectOnebytype   
	 * @Description: TODO(根据图书类型和入库时间查找图书信息)   
	 * @param: @param bookInfo
	 * @param: @return      
	 * @return: List<BookInfo>      
	 * @throws   
	 */
	public List<BookInfo> selectOnebytype(BookInfo bookInfo,int pageindex,int pagesize);
	
	
	
	
	
	
}
public interface IborrowManage {
	/**
	 * 查看所有借阅信息,后台分页
	 * @Title: selectBorrwinfo   
	 * @Description: TODO(这里用一句话描述这个方法的作用)   
	 * @param: @return      
	 * @return: List<BorrowInfo>      
	 * @throws
	 */
	public List<BorrowInfo> selectBorrwinfo(int pageindex,int pagesize);
	/**
	 * 删除选中的借阅信息
	 * @Title: deloneborrow   
	 * @Description: TODO(这里用一句话描述这个方法的作用)   
	 * @param: @param borrow
	 * @param: @return      
	 * @return: boolean      
	 * @throws
	 */
	public boolean deloneborrow(BorrowInfo borrow);
/**
 * 添加一条借阅信息
 * @Title: addoneborrow   
 * @Description: TODO(添加一条借阅信息)   
 * @param: @param borrow
 * @param: @return      
 * @return: boolean      
 * @throws
 */
	public boolean addoneborrow(BorrowInfo borrow);
	/**
	 * 给指定名称的书本增加一次订阅
	 * @Title: updatebookcount   
	 * @Description: TODO(给指定名称的书本增加一次订阅)   
	 * @param: @param book
	 * @param: @return      
	 * @return: boolean      
	 * @throws
	 */
	public boolean updatebookcount(BookInfo book);
	/**
	 * 查找最大的借阅编号
	 * @Title: selectmaxid   
	 * @Description: TODO(这里用一句话描述这个方法的作用)   
	 * @param: @return      
	 * @return: String      
	 * @throws
	 */
	public String selectmaxid();
	/**   
	 * 根据图书名称查找借阅信息
	 * @Title: searchOneborrow   
	 * @Description: TODO(根据图书名称查找借阅信息)   
	 * @param: @param borrowInfo
	 * @param: @return      
	 * @return: BorrowInfo      
	 * @throws   
	 */
	public List<BorrowInfo> searchOneborrow(BorrowInfo borrowInfo );
	/**   
	 * 根据图书名称模糊查询
	 * @Title: searchborrow   
	 * @Description: TODO(根据图书名称模糊查询)   
	 * @param: @param borrowInfo
	 * @param: @return      
	 * @return: List<BorrowInfo>      
	 * @throws   
	 */
	public List<BorrowInfo> searchborrow(BorrowInfo borrowInfo,int pageindex,int pagesize);
	
	
}

service层:

public interface IbookService {
/**
 * 查询所有图书信息
 * @Title: showBookInfos   
 * @Description: TODO( 查询所有图书信息)   
 * @param: @return      
 * @return: List<BookInfo>      
 * @throws
 */
	public List<BookInfo> showBookInfos(int pageindex,int pagesize);
	/**
	 * 修改图书信息
	 * @Title: changeOneBook   
	 * @Description: TODO(修改图书信息)   
	 * @param: @param bookInfo
	 * @param: @return      
	 * @return: boolean      
	 * @throws
	 */
	public boolean changeOneBook(BookInfo bookInfo);
	
	/**
	 * 删除指定编号的图书
	 * @Title: delOneBook   
	 * @Description: TODO(删除指定编号的图书)   
	 * @param: @param bookInfo
	 * @param: @return      
	 * @return: boolean      
	 * @throws
	 */
	public boolean delOneBook(BookInfo bookInfo);
	/**
	 * 新增一条图书信息
	 * @Title: addOneBook   
	 * @Description: TODO(新增一条图书信息)   
	 * @param: @param bookInfo
	 * @param: @return      
	 * @return: boolean      
	 * @throws
	 */
	public boolean addOneBook(BookInfo bookInfo);
	/** 
	 *根据图书名称查找图书  
	 * @Title: selOneBook   
	 * @Description: TODO(根据图书名称查找图书)   
	 * @param: @param bookInfo
	 * @param: @return      
	 * @return: boolean      
	 * @throws   
	 */
	public boolean selOneBook(BookInfo bookInfo);
	/**   
	 * 根据图书类型和入库时间查找
	 * @Title: selectbytype   
	 * @Description: TODO(根据图书类型和入库时间查找)   
	 * @param: @param bookInfo
	 * @param: @return      
	 * @return: List<BookInfo>      
	 * @throws   
	 */
	public List<BookInfo> selectbytype(BookInfo bookInfo,int pageindex,int pagesize);
	
	
	
	
public interface IborrowService {
/**
 * 查看所有的借阅信息
 * @Title: shoBorrowInfos   
 * @Description: TODO(这里用一句话描述这个方法的作用)   
 * @param: @return      
 * @return: List<BorrowInfo>      
 * @throws
 */
public List<BorrowInfo> shoBorrowInfos(int pageindex,int pagesize);	
	/**
	 * 删除一条借阅信息
	 * @Title: delOneBorrowinfo   
	 * @Description: TODO(删除一条借阅信息)   
	 * @param: @param borrowInfo
	 * @param: @return      
	 * @return: boolean      
	 * @throws
	 */
public 	boolean delOneBorrowinfo(BorrowInfo borrowInfo);
	/**
	 * 新增一条借阅信息
	 * @Title: addOneBorrowinfo   
	 * @Description: TODO(这里用一句话描述这个方法的作用)   
	 * @param: @param borrowInfo
	 * @param: @return      
	 * @return: boolean      
	 * @throws
	 */
public boolean addOneBorrowinfo(BorrowInfo borrowInfo);
	/**   
	 * 根据图书名称查找借阅信息
	 * @Title: searchOneBorrowinfo   
	 * @Description: TODO(这里用一句话描述这个方法的作用)   
	 * @param: @param borrowInfo
	 * @param: @return      
	 * @return: BorrowInfo      
	 * @throws   
	 */
	public List<BorrowInfo> searchOneBorrowinfo(BorrowInfo borrowInfo );
	/**  
	 * 根据图书名称模糊查询借阅信息 
	 * @Title: searchOneBorro   
	 * @Description: TODO(根据图书名称模糊查询借阅信息)   
	 * @param: @param borrowInfo
	 * @param: @return      
	 * @return: List<BorrowInfo>      
	 * @throws   
	 */
	public List<BorrowInfo> searchOneBorro(BorrowInfo borrowInfo,int pageindex,int pagesize);	
	
}

action层:

主要就是一个编码过滤器,还有两个处理的控制器

public class Characterfilter implements Filter {

	/**   
	 * @Fields encoding : TODO(定义变量接收初始化的值)   
	 */
	private static String encoding;  
 @Override
	public void destroy() {
		
	}
 @Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		// 设置字符编码链锁
		request.setCharacterEncoding(encoding);
		response.setCharacterEncoding(encoding);
		chain.doFilter(request, response);
		
	}
	 
 
@Override
 
	public void init(FilterConfig config) throws ServletException {
		// 接收web.xml配置文件中的初始参数
		encoding = config.getInitParameter("CharsetEncoding");
		
	}
}
@WebServlet("/bookServlet")
public class bookServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	IbookService ibookService = new BookServiceImpl();

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String method = request.getParameter("method");
		response.setContentType("application/json;charset=UTF-8");
		// method=searchallbook查询所有信息
		if ("searchallbook".equals(method)) {
			 String Index = request.getParameter("pageIndex");
			String Size = request.getParameter("pageSize");
			int pageIndex = 0;
			int pageSize = 0;
			if (Index != null)
				pageIndex = Integer.parseInt(Index);
			if (Size != null)
				pageSize = Integer.parseInt(Size);
			// 对界面上的查询条件进行判断
			String booktype = request.getParameter("booktype");
			String buydate = request.getParameter("buydate");
			if (booktype == null && buydate == null || "".equals(booktype) && "".equals(buydate)) {
				// 查询所有
				List<BookInfo> bookInfos = ibookService.showBookInfos(pageIndex, pageSize);
				List<BookInfo> list = ibookService.showBookInfos(pageIndex, 0);
				SendUtil.sendObj(response, bookInfos, list.size());
			} else {
				// 根据条件查询
				BookInfo bookInfo = new BookInfo();
				if (!"".equals(booktype) && booktype != null) {
					bookInfo.setBooktype(Integer.parseInt(booktype));
				}
				if (!"".equals(buydate) && buydate != null) {
					bookInfo.setBuydate(Date.valueOf(buydate));
				}
				System.out.println(bookInfo);
				if (bookInfo.getBooktype() != 0 || bookInfo.getBuydate() != null) {
					List<BookInfo> selectbytype = ibookService.selectbytype(bookInfo, pageIndex, pageSize);
					List<BookInfo> list1 = ibookService.selectbytype(bookInfo, pageIndex, 0);
					SendUtil.sendObj(response, selectbytype, list1.size());
				} else {
					List<BookInfo> bookInfos = ibookService.showBookInfos(pageIndex, pageSize);
					List<BookInfo> list = ibookService.showBookInfos(pageIndex, 0);
					SendUtil.sendObj(response, bookInfos, list.size());
				}
			}

		} else if ("addbook".equals(method)) {
			// method=addbook 添加一本图书信息
			String data = request.getParameter("data");
			BookInfo bookInfo = JSON.parseObject(data, BookInfo.class);
			boolean flag = false;
			if (bookInfo != null) {
				flag = ibookService.addOneBook(bookInfo);
			}
			SendUtil.sendJson(response, flag);
		}
		// method=searonebook查看指定名称图书信息是否存在
		else if ("searonebook".equals(method)) {
			String bookname = request.getParameter("bookname");
			BookInfo bookInfo = new BookInfo();
			bookInfo.setBookname(bookname);
			boolean flag = false;
			if (bookInfo != null) {
				flag = ibookService.selOneBook(bookInfo);
			}
			SendUtil.sendJson(response, flag);
		}
		// method=delonebook 删除一本图书信息
		else if ("delonebook".equals(method)) {
			String bookguid = request.getParameter("bookguid");
		 	BookInfo bookInfo = new BookInfo();
			bookInfo.setBookguid(bookguid);
			boolean flag = false;
			if (bookInfo != null) {
				flag = ibookService.delOneBook(bookInfo);
			}
			SendUtil.sendJson(response, flag);
		} // method=editonebook修改一本图书信息
		else if ("editonebook".equals(method)) {
			// StringBuffer readJson = SendUtil.readJson(request);

			String data = request.getParameter("data");
			BookInfo bookInfo = JSON.parseObject(data, BookInfo.class);
			 boolean flag = false;
			if (bookInfo != null) {
				flag = ibookService.changeOneBook(bookInfo);
			}
			SendUtil.sendJson(response, flag);
		}

	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}
@WebServlet("/Showborrow")
public class Showborrow extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public Showborrow() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	IborrowService iborrowManage = new BorrowServiceImpl();

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String method = request.getParameter("method");
		response.setContentType("application/json;charset=UTF-8");
		/// Showborrow?method=showall
		if ("showall".equals(method)) {
			String Index = request.getParameter("pageIndex");
			String Size = request.getParameter("pageSize");
			int pageIndex = 0;
			int pageSize = 0;
			if (Index != null)
				pageIndex = Integer.parseInt(Index);
			if (Size != null)
				pageSize = Integer.parseInt(Size);
			String bookname = request.getParameter("bookname");
			if (bookname == null || "".equals(bookname)) {
				// 查看所有借阅信息
				List<BorrowInfo> borrwinfo = iborrowManage.shoBorrowInfos(pageIndex, pageSize);
				List<BorrowInfo> list = iborrowManage.shoBorrowInfos(pageIndex, 0);
				SendUtil.sendObj(response, borrwinfo, list.size());
			} else {
				// 根据名称查询
				System.out.println("查询姓名:"+bookname);
             	BorrowInfo borrowInfo = new BorrowInfo();
				borrowInfo.setBookname(bookname);
				List<BorrowInfo> searchborrow = iborrowManage.searchOneBorro(borrowInfo, pageIndex, pageSize);
				List<BorrowInfo> list2 = iborrowManage.searchOneBorro(borrowInfo, pageIndex, 0);
				SendUtil.sendObj(response, searchborrow, list2.size());
			}
		} else if ("deloneborrow".equals(method)) {
			// ?method=deloneborrow删除一条信息
			String parameter = request.getParameter("useguid");
			BorrowInfo borrow = new BorrowInfo();
			borrow.setUseguid(parameter);
			boolean flag = iborrowManage.delOneBorrowinfo(borrow);
			SendUtil.sendJson(response, flag);

		} else if ("searchdate".equals(method)) {
			// method=searchdate 根据图书名称查询借阅信息
			String parameter = request.getParameter("bookname");
			BorrowInfo borrowInfo = new BorrowInfo();
			borrowInfo.setBookname(parameter);
			List<BorrowInfo> searchOneborrow = iborrowManage.searchOneBorrowinfo(borrowInfo);
			SendUtil.sendObj(response, searchOneborrow, 0);
		} else if ("addoneborrow".equals(method)) {
			// method=addoneborrow添加一条信息
			String parameter = request.getParameter("data");
			BorrowInfo object = JSON.parseObject(parameter, BorrowInfo.class);
			boolean flag = iborrowManage.addOneBorrowinfo(object);
			SendUtil.sendJson(response, flag);

		}

	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

web.xml配置:

 <filter>
    <description></description>
    <display-name>charact</display-name>
    <filter-name>charact</filter-name>
    <filter-class>com.epoint.action.Characterfilter</filter-class>
    <init-param>
      <param-name>CharsetEncoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>charact</filter-name>
    <url-pattern>/*</url-pattern>

前端界面主要是使用miniui,这里贴两个查询界面既可以了:(实现了查询功能)

<!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<title>查看所有图书信息</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<link href="../css/demo.css" rel="stylesheet" type="text/css" />

<script src="../scripts/boot.js" type="text/javascript"></script>
</head>

<body>
	<h1>图书信息</h1>

	<div style="width: 100%;">
		<div class="mini-toolbar" style="border-bottom: 0; padding: 0px;">
			<table style="width: 100%;">
				<tr>
					<td style="width: 100%;"><a class="mini-button"
						iconCls="icon-add" onclick="add()">增加</a> <a class="mini-button"
						iconCls="icon-remove" onclick="remove()">删除</a></td>
					<td><input id="booktype" emptyText="请选择图书种类"
						class="mini-combobox" url="../data/booktype.json" textField="text"
						valueField="id" /></td>
					<td style="white-space: nowrap;"><input id="buydate"
						emptyText="请选择入库日期" class="mini-datepicker" maxDate='new Date()' />
						<a class="mini-button" onclick="searchone()">查询</a></td>

				</tr>
			</table>
		</div>
	</div>
	<div id="datagrid1" class="mini-datagrid"
		style="width: 100%; height: 360px;" idField="id" multiSelect="true"
		title="查询图书信息" emptyText="您好:系统暂无数据!" sizeList="[5,10]" allowResize="true"
		url="../bookServlet?method=searchallbook">
		<div property="columns">
			<!--<div type="indexcolumn"></div>        -->
			<div type="checkcolumn"></div>

			<div field="bookguid" width="100" headerAlign="center">编号</div>
			<div field="bookname" width="200" headerAlign="center">名称</div>
			<div field="booktype" width="120" headerAlign="center"
				renderer="onbooktyperenderer">图书类别</div>
			<div field="suitable" width="60" headerAlign="center"
				renderer="onsuitablerenderer">适合人群</div>
			<div field="buydate" width="120" headerAlign="center"
				renderer="onbuydaterenderer">入库日期</div>
			<div field="count" width="50" headerAlign="center"
				renderer="oncountrenderer">借阅次数</div>
			<div field="remark" width="200" headerAlign="center">备注</div>

			<div name="play" width="80" headerAlign="center"
				renderer="onplayrenderer">操作</div>
		</div>
	</div>


	<script type="text/javascript">
		mini.parse();

		var grid = mini.get("datagrid1");
		/*  getdata(); */
		grid.load();

		//对表格数据的操作按钮
		function onplayrenderer(e) {
			var grid = e.sender; //代表了整个表格
			var record = e.record; //代表了当前渲染的一行表格数据
			var bookguid = record.bookguid; //一条数据的一个属性
			var rowIndex = e.rowIndex; //当前行的下标
			var s = ' <a class="mini-button" href="javascript:delRow(\''
					+ bookguid + '\')" >删除</a>      '
					+ '<a class="mini-button" href="javascript:editRow(\''
					+ rowIndex + '\')" >编辑</a>  ';
			return s;
		}

		function onbuydaterenderer(e) {
			var value = e.value;
			if (value)
				return mini.formatDate(new Date(value), 'yyyy-MM-dd');
			return "";
		}
		function onbooktyperenderer(e) {
			var value = e.value;
			//1、电子科技2、人文生活3、时尚周刊4、艺术鉴赏
			if (value == 1) {
				return '电子科技';
			} else if (value == 2) {
				return '人文生活';
			} else if (value == 3) {
				return '时尚周刊';
			} else if (value == 4) {
				return '艺术鉴赏';
			}

		}
		function oncountrenderer(e) {
			if (e.value > 10) {
				e.rowStyle = 'color:red;';

			} else {
				e.rowStyle = 'color:green;';
			}
			return e.value

		}
		function onsuitablerenderer(e) {
			var value = e.value;
			//1、老年人2、青年人3、儿童
			if (value == 1) {
				return '老年人';
			} else if (value == 2) {
				return '青年人';
			} else if (value == 3) {
				return '儿童';
			}

		}

		function add() {
			mini.open({
				targetWindow : window, //页面对象。默认是顶级页面。
				url : "addbook.html",
				title : "新增图书",
				width : 700,
				height : 400,
				ondestroy : function(action) { //关闭时,因为做了添加操作。所以页面数据需要重新请求
					grid.load();
				}
			});
		}
		function remove() {//删除按钮
			console.log("删除选中")
			var rows = grid.getSelecteds();
			if (rows.length > 0) {
				for (var i = 0; i < rows.length; i++) {
					delRow(rows[i].bookguid)
				}
			}
		}

		function editRow(index) { //修改学生的操作
			//根据rowInde获取对象
			var grid = mini.get("datagrid1");
			var datas = grid.data[index]; //当前选中的对象
			mini.open({
				targetWindow : window, //页面对象。默认是顶级页面。
				url : "editbook.html",
				title : "编辑图书信息",
				width : 700,
				height : 400,
				onload : function() {
					var iframe = this.getIFrameEl();
					var data = {
						action : "edit",
						data : mini.encode(datas)
					}; //传值给子页面
					iframe.contentWindow.SetData(data);
				},
				ondestroy : function(action) { //关闭子窗口需要更新当前数据,防止修改数据
					grid.load();
				}

			})

		}

		function delRow(bookguid) {
			$.ajax({ //给后台处理删除一条成绩信息操作
				url : "../bookServlet?method=delonebook",
				type : 'post',
				data :  {
					bookguid : bookguid
				} , //发送数据
				success : function(result) { //成功操作
					grid.load();
				},
				error : function() {
					console.log("发送数据失败");
				}
			})

		}
		 

 function searchone() {//根据图书类型和入库时间
		 
 	var booktype = mini.get("booktype").value;
	 var buydate = mini.get("buydate").value;
     grid.load({booktype : booktype,buydate : mini.formatDate (buydate, "yyyy-MM-dd") })
			 
		}

		 
	</script>


</body>

</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>查看所有借阅信息</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<link href="../css/demo.css" rel="stylesheet" type="text/css" />

<script src="../scripts/boot.js" type="text/javascript"></script>
</head>
<body>
	<h1>借阅信息</h1>

	<div style="width: 100%;">
		<div class="mini-toolbar" style="border-bottom: 0; padding: 0px;">
			<table style="width: 100%;">
				<tr>
					<td style="width: 50%;"> 
						 <a class="mini-button" iconCls="icon-add" onclick="add()">增加</a>
                         <a class="mini-button" iconCls="icon-remove" onclick="remove()">删除</a>   </td>
					<td style="white-space: nowrap;"><input id="form2"
						name="bookname" class="mini-textbox" emptyText="请输入书名"
						style="width: 150px;"    /> <a
						class="mini-button" onclick="searchone()">查询</a></td>
					 
				</tr>
			</table>
		</div>
	</div>
	<div id="datagrid1" class="mini-datagrid"
		style="width: 100%; height: 360px;" idField="id" multiSelect="true"
		title="查询借阅信息" emptyText="您好:系统暂无数据!" sizeList="[5,10]"
		url="../Showborrow?method=showall" >
		<div property="columns">
			<!--<div type="indexcolumn"></div>        -->
			 <div type="checkcolumn"></div>
			<div field="bookname" width="200" headerAlign="center"  >图书名称</div>
			<div field="borrowperson" width="60" headerAlign="center" >借出人</div>
			<div field="handler" width="60" headerAlign="center" >处理人</div>
			<div field="borrowcause" width="120" headerAlign="center" >借阅理由</div>
			<div field="borrowdate" width="120" headerAlign="center" renderer="onborrowdaterenderer"
				 >借出日期</div>
				<div field="returndate" width="120" headerAlign="center" renderer="onreturndaterenderer"
				 >归还日期</div>
				<div field="remark" width="180" headerAlign="center"
				 >备注</div>
			 <div name="play" width="50" headerAlign="center"
				renderer="onplayrenderer">操作</div>
		</div>
	</div>


	<script type="text/javascript">
		mini.parse();

		var grid = mini.get("datagrid1");
		grid.load();

		//对表格数据的操作按钮
		function onplayrenderer(e) {
			var grid = e.sender; //代表了整个表格
			var record = e.record; //代表了当前渲染的一行表格数据
			var useguid = record.useguid; //一条数据的一个属性
			var rowIndex = e.rowIndex; //当前行的下标
			var s = '<a class="mini-button" href="javascript:delRow(\''
					+ useguid + '\')" >删除</a>';
			return s;
		}
		 function onborrowdaterenderer(e) {
	            var value = e.value;
	            if (value) return mini.formatDate(new Date(value), 'yyyy-MM-dd');
	            return "";
	        }
		 function onreturndaterenderer(e) {
	            var value = e.value;
	            if (value) return mini.formatDate(new Date(value), 'yyyy-MM-dd');
	            return "";
	        }
		function searchone() {//根据姓名进行模糊查询
			//	console.log("查询")
			var form2 = new mini.Form("#form2");
			var datas = form2.getData();
			console.log(datas)
			grid.load({bookname:datas.bookname});
			 
		}
	 
		function add() {
			mini.open({
				targetWindow : window, //页面对象。默认是顶级页面。
				url : "addborrow.html",
				title : "新增借阅信息",
				width : 700,
				height : 400,
				ondestroy : function(action) { //关闭时,因为做了添加操作。所以页面数据需要重新请求
					grid.load();
				}
			});
		}
		  function remove(){//删除按钮
	        	//console.log("删除选中")
	          	var rows = grid.getSelecteds();
	            if (rows.length > 0) {
	            	for(var i=0;i<rows.length;i++){
	            	//	console.log(rows[i])
	            		delRow(rows[i].useguid) 
	            	}
	            
	               /*  grid.removeRows(rows, true);   */              
	            }  
	        }
		function delRow(useguid) {
			$.ajax({ //给后台处理删除一条借阅信息操作
				url : "../Showborrow?method=deloneborrow",
				type : 'post',
				// url:"../data/menu.json",
				data :  {
					useguid : useguid
				} , //发送数据
				success : function(result) { //成功操作
					grid.load();
				},
				error : function() {
					console.log("发送数据失败");
				}
			})

		}
		 

	 
	 
	</script>


</body>
</html>

menu.json:

[
	{ "id": "user", "text": "菜单"},
	 { "id": "editUser", "pid": "user", "text": "图书信息管理", "iconCls": "icon-edit", "url": "../html/showbook.html" } ,
	 { "id": "editRight", "pid": "user", "text": "借阅信息管理", "iconCls": "icon-edit", "url": "../html/showborrow.html"  } 			
]

实现界面如下:

图书信息管理界面:

借阅信息管理界面:

其中主要是,在后台使用接收参数的方法时,不能混用,否则会造成数据丢失。

猜你喜欢

转载自blog.csdn.net/qq_38735996/article/details/89889585