java 图书管理系统(二)jdbc + servlet + sql server + html

点击查看图书购买管理系统的所有代码

显示图书信息功能

(图书信息保存在数据库中)
用户身份登录显示的界面:
在这里插入图片描述
管理员身份登录所显示的界面:
在这里插入图片描述

关键代码

1、显示图书列表(区别登录者的身份)

protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 获取PrintWriter对象
		PrintWriter writer = response.getWriter();
		// 检测用户是否已经登录,并区分登录的身份
		// 登录身份不同显示的页面不同(添加图书和对图书的删除只有管理员身份登录时才会显示)
		// 管理员可以对图书进行浏览、删除、添加操作,也可以加入购物车;
		// 普通用户只能加入购物车
		ServletContext context = getServletContext();
		Object user = context.getAttribute("user");
		String logIn = (String) context.getAttribute("admin");
		List<Object> userLogin = (List<Object>) context.getAttribute("userLogin");
		int totalNum;
		if (null == user) {// 还未登录
			writer.write("您还未登录,<a href='login.html'>点此重新登录</a>");
		} else if (logIn == null) {
			writer.write("请选择登录身份!<a href='login.html'>点此重新登录</a>");
			// 当登录失败时,访问人数为List的长度-1,并在List记录中删除最近添加的记录
			totalNum = userLogin.size() - 1;
			userLogin.remove(totalNum);
		} else {
			// 只有当登录成功时,才算入到访问人数
			totalNum = userLogin.size();
			// 获取图书信息
			BookService bookService = new BookService();
			List<Book> books = bookService.getBooks("select * from Book");
			// 以表格形式将图书信息返回给客户端浏览器
			// 打印表格表头
			writer.write("<table border='1'>");
			writer.write("<tr align='center'>");
			writer.write("<th width='30'>编号</th>");
			writer.write("<th width='150'>图书名称</th>");
			writer.write("<th width='100'>图书价格</th>");
			writer.write("<th width='150'>出版社</th>");
			writer.write("<th>图书介绍</th>");
			if (logIn.equals("1")) {// 管理员身份登录时显示
				writer.write("<th width='50'>删除</th>");
				writer.write("<th width='50'>修改</th>");
			}
			writer.write("<th width='100'>加入购物车</th>");
			writer.write("</tr>");
			// 打印图书信息
			for (Book book : books) {
				writer.write("<tr align='center'>");
				// 打印图书编号
				writer.write("<td>");
				writer.write(new String((book.getBookId() + "").getBytes(), "utf-8"));
				writer.write("</td>");
				// 打印图书名称
				writer.write("<td>");
				writer.write(book.getBookName());
				writer.write("</td>");
				// 打印图书价格
				writer.write("<td>");
				writer.write(book.getBookPrice() + "");
				writer.write("</td>");
				// 打印出版社
				writer.write("<td>");
				writer.write(book.getBookPublisher());
				writer.write("</td>");
				// 打印图书介绍
				writer.write("<td align='left'>");
				writer.write(book.getBookDesc());
				writer.write("</td>");
				if (logIn.equals("1")) {// 管理员身份登录时显示
					// 删除图书
					writer.write("<td align='center'>");
					writer.write("<a href='deleteBook.action?bookName=" + book.getBookName() + "'>删除</a>");
					writer.write("</td>");
					// 修改图书
					writer.write("<td align='center'>");
					writer.write("<a href='updateBook.action?bookName=" + book.getBookName() + "&bookPrice="
							+ book.getBookPrice() + "&bookPublisher=" + book.getBookPublisher() + "&bookDesc="
							+ book.getBookDesc() + "'>修改</a>");
					writer.write("</td>");
				}
				// 加入购物车
				writer.write("<td align='center'>");
				writer.write("<a href='shopping.action?bookName=" + book.getBookName() + "&bookPrice="
						+ book.getBookPrice() + "'>加入购物车</a>");
				writer.write("</td>");
				writer.write("</tr>");
			}
			writer.write("</table>");
			writer.write("<br/><br/>");
			if (logIn.equals("1")) {// 管理员身份登录时显示
				writer.write("<a href='bookServlet.action'>添加新图书</a>");
				writer.write("&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp");
			}
			writer.write("<a href='createOrder.action'>查看历史订单</a>");
			writer.write("&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp");
			writer.write("<a href='ShowShoppingCart.action'>查看购物车</a>");
			writer.write("&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp访问人数:" + totalNum);
		}
	}

2、BookService中相应的显示图书列表的方法:

/**
	 * 获取所有图书信息
	 * 
	 * @param sql 查询图书的sql语句
	 * @return 图书集合
	 */
	public List<Book> getBooks(String sql) {
		try {
			// 查询所有图书
			ResultSet rs = dbUtil.queryDate("select * from Book");
			while (rs.next()) {
				// 获取图书表字段book_id的值
				int bookId = rs.getInt("book_id");
				// 获取图书表字段book_name的值
				String bookName = rs.getString("book_name");
				// 获取图书表字段book_price的值
				float bookPrice = rs.getFloat("book_price");
				// 获取图书表字段book_publisher的值
				String bookPublisher = rs.getString("book_publisher");
				// 获取图书表字段book_description的值
				String bookDesc = rs.getString("book_description");
				// 根据获取到的图书信息构造图书对象
				Book book = createBook(bookId, bookName, bookPrice, bookPublisher, bookDesc);
				books.add(book);
			}
		} catch (ClassNotFoundException | SQLException e) {
			e.printStackTrace();
		}
		return books;
	}

	/**
	 * 根据图书信息构造图书对象
	 * 
	 * @param bookId        图书编号
	 * @param bookName      图书名称
	 * @param bookPrice     图书价格
	 * @param bookPublisher 出版社
	 * @param bookDesc      图书描述
	 * @return 构造的图书对象
	 */
	private Book createBook(int bookId, String bookName, float bookPrice, String bookPublisher, String bookDesc) {
		Book book = new Book();
		book.setBookId(bookId);
		book.setBookName(bookName);
		book.setBookPrice(bookPrice);
		book.setBookPublisher(bookPublisher);
		book.setBookDesc(bookDesc);
		return book;
	}

添加图书功能

添加图书的界面:在这里插入图片描述
1、添加图书界面的关键代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 获取PrintWriter对象
		PrintWriter writer = response.getWriter();
		// 检测用户是否已经登录
		ServletContext context = getServletContext();
		Object user = context.getAttribute("user");
		String logIn = (String) context.getAttribute("admin");
		if (null == user) {// 还未登录
			writer.write("您还未登录,<a href='login.html'>点此重新登录</a>");
		} else if (logIn == null) {
			writer.write("请选择登录身份!<a href='login.html'>点此重新登录</a>");
		} else {
			// 只有管理员身份登录时才有添加图书选项,因此不需要判断登录者的身份
			writer.write("<form action='addBook.action' method='post'>");
			writer.write("图书名称:<input type='text' name='bookName'>");
			writer.write("<br/><br/>");
			writer.write("图书价格:<input type='text' name='bookPrice'>");
			writer.write("<br/><br/>");
			writer.write("出 版 社 :<input type='text' name='bookPublisher'>");
			writer.write("<br/><br/>");
			writer.write("图书简介:<input type='text' name='bookDesc'>");
			writer.write("<br/><br/>");
			writer.write("<input type='submit' value='提交'>");
			writer.write("</form>");
		}
	}

2、处理新增图书的Servlet中的关键代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 获取PrintWriter对象
		PrintWriter writer = response.getWriter();
		// 检测用户是否已经登录
		ServletContext context = getServletContext();
		Object user = context.getAttribute("user");
		String logIn = (String) context.getAttribute("admin");
		if (null == user) {// 还未登录
			writer.write("您还未登录,<a href='login.html'>点此重新登录</a>");
		} else if (logIn == null) {
			writer.write("请选择登录身份!<a href='login.html'>点此重新登录</a>");
		} else {
			// 只有管理员身份登录时才有添加图书选项,因此不需要判断登录者的身份
			// 获取输入的图书信息
			String bookName = request.getParameter("bookName");
			String price = request.getParameter("bookPrice");
			if (bookName.isEmpty() || price.isEmpty()) {
				response.sendRedirect("addfalse.html");
			} else {
				float bookPrice = Float.parseFloat(price);
				String bookPublisher = request.getParameter("bookPublisher");
				String bookDesc = request.getParameter("bookDesc");
				// 将图书信息添加到数据库
				Book book = new Book();
				book.setBookName(bookName);
				book.setBookPrice(bookPrice);
				book.setBookPublisher(bookPublisher);
				book.setBookDesc(bookDesc);
				boolean flag = new BookService().addBook(book);
				if (flag) {
					// 跳转到显示图书的界面
					response.sendRedirect("book.action");
				} else {
					// 提示图书添加失败
					writer.write("该图书已被添加过,<a href='bookServlet.action'>点此返回添加图书界面</a>");
				}
			}
		}
	}

3、BookService中处理添加图书的代码:

/**
	 * 添加图书
	 * 
	 * @param book 待添加的图书对象
	 * @return 添加图书是否成功,成功返回true,否则返回false
	 */
	public boolean addBook(Book book) {
		// 获取图书信息
		String bookName = book.getBookName();
		float bookPrice = book.getBookPrice();
		String bookPublisher = book.getBookPublisher();
		String bookDesc = book.getBookDesc();
		// 存储插入的记录数
		int n = -1;
		try {
			// 查询数据库中是否存在要添加的这本书的名称
			String select = "select book_name from Book where book_name='" + bookName + "'";
			boolean isExist = dbUtil.isExist(select);
			// 如果不存在,则添加该图书
			if (!isExist) {
				// 拼接插入图书的SQL语句
				String sql = "insert into Book(book_name,book_price,book_publisher,book_description) values('"
						+ bookName + "', '" + bookPrice + "', '" + bookPublisher + "', '" + bookDesc + "')";
				// 将图书信息插入图书表中
				n = dbUtil.addDataToTable(sql);
			}
		} catch (ClassNotFoundException | SQLException e) {
			e.printStackTrace();
		}
		return n > 0 ? true : false;
	}

根据图书名删除图书

1、处理删除图书的Servlet中的关键代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 获取PrintWriter对象
		PrintWriter writer = response.getWriter();
		// 检测用户是否已经登录
		ServletContext context = getServletContext();
		Object user = context.getAttribute("user");
		String logIn = (String) context.getAttribute("admin");
		if (null == user) {// 还未登录
			writer.write("您还未登录,<a href='login.html'>点此重新登录</a>");
		} else if (logIn == null) {
			writer.write("请选择登录身份!<a href='login.html'>点此重新登录</a>");
		} else {
			// 只有管理员身份登录时才会显示有删除图书的操作,因此不需要判断登录者的身份
			// 获取图书名称
			String bookName = request.getParameter("bookName");
			boolean flag = new BookService().deleteBookByName(bookName);
			if (flag) {
				// 跳转到显示图书的界面
				response.sendRedirect("book.action");
			} else {
				writer.write("删除图书信息失败!" + "<a href='book.action'>点击返回图书界面</a>");
			}
		}
	}

2、BookService中处理删除图书的代码:

/**
	 * 根据图书名称删除指定图书
	 * 
	 * @param bookName 图书名称
	 * @return 是否删除图书,成功删除返回true,否则返回false
	 */
	public boolean deleteBookByName(String bookName) {
		// 拼接删除图书的SQL语句
		String sql = "delete from Book where book_name = '" + bookName + "'";
		int n = -1;// 存储删除的记录数
		try {
			n = dbUtil.updateData(sql);
		} catch (ClassNotFoundException | SQLException e) {
			e.printStackTrace();
		}
		return n > 0 ? true : false;
	}

修改图书信息

修改图书信息的界面:
在这里插入图片描述
1、修改图书信息界面的关键代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 获取PrintWriter对象
		PrintWriter writer = response.getWriter();
		// 检测用户是否已经登录
		ServletContext context = getServletContext();
		Object user = context.getAttribute("user");
		String logIn = (String) context.getAttribute("admin");
		if (null == user) {// 还未登录
			writer.write("您还未登录,<a href='login.html'>点此重新登录</a>");
		} else if (logIn == null) {
			writer.write("请选择登录身份!<a href='login.html'>点此重新登录</a>");
		} else {
			// 只有管理员身份登录时才有修改图书选项,因此不需要判断登录者的身份
			writer.write("<form action='UpdateBookServlet.action' method='post'>");
			writer.write("图 书 ID:<input type='text' name='bookId'>");
			writer.write("<br/><br/>");
			writer.write("图书名称:<input type='text' name='bookName'>");
			writer.write("<br/><br/>");
			writer.write("图书价格:<input type='text' name='bookPrice'>");
			writer.write("<br/><br/>");
			writer.write("出 版 社 :<input type='text' name='bookPublisher'>");
			writer.write("<br/><br/>");
			writer.write("图书简介:<input type='text' name='bookDesc'>");
			writer.write("<br/><br/>");
			writer.write("<input type='submit' value='提交'>");
			writer.write("</form>");
		}
	}

2、处理修改图书信息的Servlet中的关键代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 获取PrintWriter对象
		PrintWriter writer = response.getWriter();
		// 检测用户是否已经登录
		ServletContext context = getServletContext();
		Object user = context.getAttribute("user");
		String logIn = (String) context.getAttribute("admin");
		if (null == user) {// 还未登录
			writer.write("您还未登录,<a href='login.html'>点此重新登录</a>");
		} else if (logIn == null) {
			writer.write("请选择登录身份!<a href='login.html'>点此重新登录</a>");
		} else {
			// 只有管理员身份登录时才会显示有修改图书的操作,因此不需要判断登录者的身份
			// 获取图书Id
			int bookId = Integer.parseInt(request.getParameter("bookId"));
			// 获取图书名称
			String bookName = request.getParameter("bookName");
			// 获取图书价格
			float bookPrice = Float.parseFloat(request.getParameter("bookPrice"));
			// 获取图书出版社
			String bookPublisher = request.getParameter("bookPublisher");
			// 获取图书描述
			String bookDesc = request.getParameter("bookDesc");
			boolean flag;
			try {
				flag = new BookService().updateBookById(bookId,bookName, bookPrice, bookPublisher, bookDesc);
				if (flag) {
					// 跳转到显示图书的界面
					response.sendRedirect("book.action");
				} else {
					writer.write("修改图书信息失败!" + "<a href='book.action'>点击返回图书界面</a>");
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

3、BookService中处理修改图书信息的代码:

/**
	 * 根据图书id称修改图书信息(不可更改图书id) 图书修改后的名称不可与原有图书重名
	 * 
	 * @param bookId 图书id
	 * @return 是否修改图书,成功修改返回true,否则返回false
	 * @throws SQLException
	 */
	public boolean updateBookById(int bookId, String bookName, float bookPrice, String bookPublisher, String bookDesc)
			throws SQLException {
		// 拼接修改图书信息的SQL语句
		String sql = "update Book set book_name='" + bookName + "',book_price=" + bookPrice + ",book_publisher='"
				+ bookPublisher + "',book_description='" + bookDesc + "' where book_id='" + bookId + "'";
		int n = -1;// 存储修改的记录数
		try {
			// 查询数据库中是否存在要修改的这本书的名称
			String select = "select book_name from Book where book_name='" + bookName + "'";
			boolean isExist = dbUtil.isExist(select);
			if (!isExist) {
				// 对图书信息进行修改
				n = dbUtil.updateData(sql);
			}
		} catch (ClassNotFoundException | SQLException e) {
			e.printStackTrace();
		}
		return n > 0 ? true : false;
	}

点击查看图书管理系统需要实现的功能、相关功能的描述以及用户的登录和注册功能

点击查看购物车、历史订单相关的关键代码

点击查看图书列表界面访问人数统计、字符过滤、数据库单例模式实现的相关代码

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FF小迷糊吖~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值