一、项目简介
功能描述:登录图书管理系统后台,能够更改用户的密码,能够查询书籍,添加书籍,以及书籍信息的修改,还有会员的添加修改,会员的查询,然后是图书借阅功能,需要会员查询和图书查询的应用,然后再完成借阅和归还功能
参考git地址或博客地址:
无;
个人负责任务:
页面编写,部分servlet的编写,servlet与页面的交互
团队博客链接:
https://blog.csdn.net/huayvmoshui/article/details/122420825
个人博客链接:期望得B的同学必须有
二、功能架构图
三、个人任务简述
-
完成的任务与功能:
简单描述将自己完成的有特色的地方、重难点地方。
序号 完成功能与任务 描述
1 Servlet与web页面的连接 form表单的提交
2 Web,jsp编写,css编写 使用了HBulider软件帮助编写页面,使用了jquery和ajax模式,实现部分网页功能,主要使用table表的模式编写页面
3 登录功能 登录功能,用UserServlet来实现,用servlet体系继承httpServlet的类执行过程,采用了验证码
4 书籍添加修改 响应页面请求的servlet,处理提交form表单,
获取web页面数据,调用方法修改数据库信息
5 会员的添加修改 响应页面的servlet,处理表单,获取web页面数据,调用方法修改数据库信息 -
Git提交记录截图:
本人在项目中的提交提截图。最多1页。
四、本人负责功能详解
-
Web页面,jsp编写,css编写:
主要使用了HBuilderX软件帮助编写; -
登录功能
主要用Servlet体系和继承HttpServlet类来进行响应页面请求,完成服务端与页面的交互,获取页面表单数据,然后与和数据库中的用户信息对比,名字密码正确,以及验证码正确登录成功
String passcode=session.getAttribute("code").toString();
String name =req.getParameter("name");
String pwd =req.getParameter("pwd");
String valcode= req.getParameter("valcode");
User user =userBiz.getUser(name,pwd);
if(user==null){
out.println("<script>alert('用户名或密码不正确');location.href='login1.html'</script>");
}else if(!valcode.equalsIgnoreCase(passcode)){
out.println("<script>alert('验证码不正确');location.href='login1.html'</script>");
}
else{
session.setAttribute("user",user);
out.println("<script>alert('登陆成功');location.href='index.jsp'</script>");
}
3.书籍添加修改
展示数据库中的书籍列表,用jquery实现,从服务端调取数据,然后展示到页面,添加修改获取网页表单信息,修改数据库;
private void add1(HttpServletRequest req, HttpServletResponse resp, PrintWriter out) throws Exception {
Book book =new Book();
book.setName(req.getParameter("name"));
book.setAddress(req.getParameter("address"));
book.setDesc(req.getParameter("desc"));
double price = Double.parseDouble(req.getParameter("price"));
book.setPrice(price);
long stock=Long.parseLong(req.getParameter("stock"));
book.setStock(stock);
book.setPublish(req.getParameter("publish"));
book.setAuthor(req.getParameter("author"));
int count = bookBiz.add(book);
if(count>0){
out.println("<script>alert('添加书籍成功');location.href='book.let?type=query&pageIndex=1';</script>");
}else{
out.println("<script>alert('添加书籍失败');location.href='book_add.jsp';</script>");
}
}
private void modify1(HttpServletRequest req, HttpServletResponse resp, PrintWriter out) throws Exception ,ClassCastException{
Book book=new Book();
book.setName(req.getParameter("name"));
book.setAddress(req.getParameter("address"));
long id =Long.parseLong(req.getParameter("id"));
book.setId(id);
book.setDesc(req.getParameter("desc"));
double price = Double.parseDouble(req.getParameter("price"));
book.setPrice(price);
long stock=Long.parseLong(req.getParameter("stock"));
book.setStock(stock);
book.setPublish(req.getParameter("publish"));
book.setAuthor(req.getParameter("author"));
System.out.println(book.toString());
int count = bookBiz.modify(book);
if(count>0){
out.println("<script>alert('修改书籍成功');location.href='book.let?type=query&pageIndex=1';</script>");
}else{
out.println("<script>alert('该书不存在,修改书籍失败');location.href='book.let?type=query&pageIndex=1';</script>");
}
}
/**
* 查看图书详情
* @param req
* @param resp
* @param out
*/
private void details(HttpServletRequest req, HttpServletResponse resp, PrintWriter out) throws ServletException, IOException {
//1.获取图书的编号
long bookId = Long.parseLong(req.getParameter("id"));
//2.根据编号获取图书对象
Book book = bookBiz.getById(bookId);
//3.将对象保存到req
req.setAttribute("book",book);
//4.转发到 jsp页面
req.getRequestDispatcher("book_details.jsp").forward(req,resp);
}
/**
* 查询
* book.let?type=query&pageIndex=1
* 页数: biz
* 当前页码:pageIndex = 1
* 存:request,转发
* @param req
* @param resp
* @param out
*/
private void query(HttpServletRequest req, HttpServletResponse resp, PrintWriter out) throws ServletException, IOException {
//1.获取信息(页数,页码,信息)
int pageSize = 10;
int pageCount = bookBiz.getPageCount( pageSize);
int pageIndex = Integer.parseInt(req.getParameter("pageIndex"));
if(pageIndex<1){
pageIndex = 1;
}
if(pageIndex>pageCount){
pageIndex = pageCount;
}
List<Book> books = bookBiz.getByPage(pageIndex,pageSize);
//2.存
req.setAttribute("pageCount",pageCount);
req.setAttribute("books",books);
//3. 转发到jsp页面,通过地址栏传页数
req.getRequestDispatcher("book_list.jsp?pageIndex="+pageIndex).forward(req,resp);
}
- 会员添加修改展示
private void add(HttpServletRequest req, HttpServletResponse resp, PrintWriter out) {
Member member =new Member();
member.setName(req.getParameter("name"));
member.setPwd(req.getParameter("pwd"));
member.setIdNumber(req.getParameter("idNumber"));
double balance= Double.parseDouble(req.getParameter("balance"));
member.setBalance(balance);
member.setTel(req.getParameter("tel"));
int count = memberBiz.add(member);
if(count>0){
out.println("<script>alert('添加会员成功');location.href='member.let?type=query';</script>");
}else{
out.println("<script>alert('添加会员失败');location.href='member_add.jsp';</script>");
}
}
private void modify(HttpServletRequest req, HttpServletResponse resp, PrintWriter out) {
Member member =new Member();
long id = Long.parseLong(req.getParameter("id"));
member.setId(id);
member.setName(req.getParameter("name"));
member.setPwd(req.getParameter("pwd"));
member.setIdNumber(req.getParameter("idNumber"));
double balance= Double.parseDouble(req.getParameter("balance"));
member.setBalance(balance);
member.setTel(req.getParameter("tel"));
memberBiz.modify(member);
int count = memberBiz.modify(member);
if(count>0){
out.println("<script>alert('修改成功');location.href='member.let?type=query';</script>");
}else{
out.println("<script>alert('修改失败');location.href='member.let?type=query';</script>");
}
}
五、课程设计感想
第一次参与多人合作项目,也是第一次接触web项目,一开始有太多太多的东西不懂,需要慢慢学习,期间看了很多视频,先是学习web界面的编写,然后慢慢理解页面请求服务端提供服务,完成一系列的交互,编写代码过程出现很多的bug,查阅了很多资料,一个个慢慢解决bug,最先的tomcat配置,就吃了很多苦头,有tomcat启动闪退,还有端口冲突,完成前后端的时候,需要不断传数据,写数据的时候,出现线程冲突,出现了很多问题,困难众多,但此次课程设计收获良多
六、展望
- 页面设计的还不够美观,修改密码功能不能保证密码的第二次和第一次相同
- 课设后想进一步学习web界面的编写,以及与服务端的交互功能。