【JavaWeb实验】图书管理系统

 第一次写文,做一次小尝试。把一年前学校里面的小作业放上来,供参考

代码将于文末以百度网盘的形式分享出来


一.实验背景:

熟悉并掌握如何编写编写各个页面的参数传递以及jsp基本知识。

1、实验目的

      通过JSP&JDBC的综合运用,掌握服务端Java Web数据库编程的基本原理和常用技术。具体包括:

1、编写Java代码,熟悉并掌握JDBC的使用,包括Connection、Statement、PreparedStatement和ResultSet等对象的使用。

2、掌握JDBC在JSP页面中的综合运用。

3、掌握JSP&JDBC对单表和关联关系表进行CRUD等常规数据操作。

2、实验要求

1. 掌握Web JDBC编程的基本步骤和常用对象应用;

2. 掌握模块开发的基本规范;

3. 写出实验报告。

3、背景知识

       在客户端综合编程实验基础上,结合JSP&JDBC等技术,完成相应的数据显示和操作功能,并调试运行程序

二.实验过程与结果

1.开发登录页面,利用用户表信息实现登录判断,登录成功转向首页,失败给予提示;

思路:登录功能通过request获取到文本框输入的用户名于密码,通过与数据库里user表中比对,如果SQL语句执行的结果集不为空则跳转到导航页面否则跳转到错误页面。

关键代码:

String url="jdbc:sqlserver://localhost:1433;databasename=bookstore";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn=DriverManager.getConnection(url,"sa","cx19991120");
String sql="Select * from user1 where username=? and pwd=?";
PreparedStatement pstm=conn.prepareStatement(sql);
pstm.setString(1,name);
pstm.setString(2,pwd);
System.out.print(sql);
pstm.executeQuery();
ResultSet rs=pstm.executeQuery();
if(rs.next()){
	session.setAttribute("username",name);
	session.setAttribute("pwd", pwd);
	response.sendRedirect("index2.html");
}
else{
	response.sendRedirect("undeveloped.html");
}

运行截图:

 图1-1:登录错误1

 图1-2:登录错误2

 图1-3:登录正确1

 图1-4:登录正确2

2.分别开发针对书籍表、出版社表、书籍类型表和用户表的显示以及增加、更新和删除操作;要求根据实际情况分别采用Statement对象和PreparedStatement对象发送SQL语句;

思路:出版社,用户,以及书籍类型表的显示编辑添加页面的设计思路大同小异,仅仅需要改一些SQL语句,以及列名等基本参数,对于书籍表来说则较为复杂,需要连接三张表,显示页面的话需要根据publishid以及booktypeid连接出版社表以及类型表通过value进而找到对应的名称。同样书籍页面编辑也是比较麻烦,因为需要回显类型以及出版社字段,需要用到checked和selected属性和以前学过的JavaScript知识。

关键代码:

<td>
<select name="book_publish">
  <option value="">--请选择出版社---</option>
 <%while(rs1.next()) {%>
  <option  value="<%=rs1.getString("publishid")%>" <%if(publish.equals(rs1.getString("publishid"))){%> selected <%}%>><%=rs1.getString("出版社名称") %></option>
<%} %>
  </select>

</td>
<td class="firsttd">类别:</td>
<td>
<%while(rs2.next()) {%>
<input type="radio" name="book_type"    value="<%=rs2.getString("booktypeid")%>" <%if(type.equals(rs2.getString("booktypeid"))){%> checked <%}%>><%=rs2.getString("类型名称") %>
<%} %>	
</td>

运行截图:

 图1-5:书籍显示页面

 图1-6:书籍编辑页面1

 图1-6:书籍显示页面2

 

 图1-7:书籍删除页面

 图1-8:书籍删除页面2

3. 实现书籍查询功能。

思路:首先需要连接三张表,查询条件用SQL语句的拼接实现,最后回显数据。

关键代码:

String sql = "select a.书号,a.书名, a.作者,a.价格,b.出版社名称 ,c.类型名称,a.出版时间  from book a,publish b,booktype c ";
    sql+="where a.出版社=b.publishid and a.类型=c.booktypeid ";
    String number=request.getParameter("number");
    String name=request.getParameter("name");
    String author=request.getParameter("author");
    String publish=request.getParameter("publish");
    String type=request.getParameter("type");

if(number!=""){
	sql+="and a.书号 like '%" + number + "%'";
}
if(name!=""){
	sql+="and a.书名 like '%" + name + "%'";
}
if(author!=""){
	sql+="and a.作者 like '%" + author + "%'";
}
if(publish!=""){
	sql+="and a.出版社=" + publish +" ";
}
if(type!=""){
	sql+="and a.类型=" + type +" ";
}

运行截图:

 图1-9:书籍查询页面

 图1-10:书籍查询结果

在录屏当中各种情形下的搜索条件都已测试,这里仅展示一种情况。

三、实验分析与总结

(1)实验分析

出版社页面以及书籍页面老师上传了教学视频,跟着视频一步一步走所以没有遇到什么问题。而相对于用户模块和书籍类型模块与出版社模块基本上是照葫芦画瓢,内容仅仅做了一点点修改,途中也没遇到什么问题。但在查询模块遇到了一些问题。

发现问题:在输入查询条件后查询结果集为空。

 图2-1:程序出错图1

 图2-2:程序出错图2

问题缘由:我尝试将SQL语句打印出来,看能不能发现什么问题,于是便发现了端倪,因为查询的思路是如果某个查询条件不为空则给SQL加上对于的条件,但那些文本框为空的值,SQL语句同样也加了进去(刚刚只用了出版社的搜索条件,但其他搜索条件的SQL语句也加了进去),如下图。

 图2-3:程序出错代码

解决问题:所以我判断问题出在了if判断语句,因为文本框什么都不输他的值仍然不为空,所以我将if(**!=null)改换为if(***!=””),结果查询结果正常显示,问题解决。

(2)实验总结

        经过五次实验的磨练,一个趋于完整的书籍后台管理系统基本完成。首先是通过简单的html把每个页面的大致雏形展现出来,再循序渐进的为每个页面增加JavaScript代码,最终用动态的jsp代替先前的静态html。当实验五完成的时候发现,其实每个页面的增删改查功能都是大相径庭,仅仅需要改其中的一小部分就可以搬过来套用。而在不断的实验中,提升的不仅仅是代码能力,而是一种思路,同样自己的改bug能力也在渐入佳境,有的时候不用百度也可以找出错误,但其实这还远远不够。

四.源码

所有原码于同文件夹下的table文件夹中。


百度网盘:
链接:https://pan.baidu.com/s/14qaxEl-a5vjA0jBVAobHPQ
提取码:k642

  • 4
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
图书馆管理系统 1.课程设计的目的 目前,随着网络技术的飞速发展,各行各业都在追求信息化,以防在信息时代落伍,而普 通高校也如此,图书馆是高校师生获得知识的一个重要渠道。因此一个健全的图书管理系 统就必不可少,图书管理系统的使用大大的提高了图书馆的工作效率,很好的节省了大量 的人力、物力和财力资源。管理信息系统的开发是一个开发周期长、技术要求高、影响 因素多的复杂系统工程,因此制定一个完善、可行、合理的开发计划,不仅是系统开发成 功的保证,而且可以提高效率、节省时间、降低成本。 由于在过去人们对信息管理的主要方式是基于文本、表格等纸质的手工处理之上的, 而用手工进行图书借阅管理存在多种弊端,其中包括图书过于繁多,包含很多的信息数据 的管理对于图书借阅情况如:借阅天数、超过限定借阅时间等等的统计和核实,往往采用 对借阅卡的人工查询进行,对借阅天数等用人工计算、手抄进行。信息处理工作量大,容 易出错;由于数据繁多,容易丢失,且不易查找。总的来说缺乏系统、规范的管理手段人 们操控起来是很困难的;因此,使用电子化的管理手段将是大势所趋,建立一个图书管理 系统也是图书管理部门提高工作效益的有效手段。系统能够合理高效地利用图书资源,使 得图书借阅更加的科学合理。 2.设计方案论证 2.1需求分析 对于一个图书管理系统来说,图书的查询及数据的维护管理是其中的核心环节。在现 现行的图书管理中存在几个共同的问题: 〔1图书种类过多,数据庞大;这是几乎所有图书馆都会遇到的共同问题,各种不同种 类的图书馆为这些图书入库,进行添加于维护增加了很多的难题,对这些数据的反复输入 ,往往造成庞大的工作量和较低的效率。 〔2查询图书困难,每天的借阅情况,读者借阅的到期、还书情况,各项数据的汇总和统 计情况必须由管理员统计上报,图书库总管理员才能考虑对图书馆的硬件如某类书的需求 数量进行改变已向上级申报。 〔3图书毁坏及图书破损;在借阅过程中难免此类现象的发生,如何及时发现及事后对 毁坏图书进行淘汰和更新也是个需要解决的问题。 〔4不能及时归还图书;经常有读者超过借阅期的情况发生,对此类读者的超期信息提 示也是图书借阅管理工作中必须解决的问题之一。 本软件主要有以下几方面的功能 〔1系统部分:主要完成本系统工程的维护工作〔包括:添加用户、添加员工、修改 密码 〔2图书管理部分:要完成图书基本信息的管理〔包括:添加、修改、查询、删除图 书基本信息 〔3借阅管理部分:主要完成图书借阅的管理〔包括:图书借阅、归还、查询等2.2系 统包含的类及类之间的关系 本系统共包括15个Java源文件和1个辅助文件。类之间的关系如图1所示。 图1 类关系图 <1>AppBook.java 该文件包含主函数入口,旨在创建登录界面对象并在屏幕中居中显示。 <2>FrLogin.java 该文件是登录界面的封装类,定义并设置了登录界面相关组件及显示效果,还定义了登 录、退出按钮的事件监听。功能:点击登录按钮,对填写的信息进行验证并与数据库数据 进行比对,匹配就登录成功进入主界面;取消按钮即可退出系统。 <3>FrMain.java 该文件是主界面的封装类,定义并设置了主界面相关组件及显示效果,还定义了菜单栏 上面各菜单项的监听事件,有系统管理:修改管理员密码、退出,基本操作:添加新读者 、新书入库、借书、还书、续借、读者管理、图书管理,帮助:关于等10个事件的监听。 功能:点击对应的菜单栏就会弹出对应的对话框,并传递需要的参数。 <4>FrChange.java 该文件是修改用户密码界面的封装类,定义并设置了更改密码界面相关组件及显示效 果,还定义了确定、取消按钮的事件监听。功能:点击确定按钮,对输入的信息进行验证 并与数据库数据进行比对,匹配就更新数据库,下次登录使用新密码;取消按钮即关闭修 改密码界面。 <5>FrAddreader.java 该文件是添加新读者界面的封装类,定义并设置了添加新读者界面相关组件及显示效 果,还定义了提交、返回按钮的事件监听。功能:点击提交按钮,对输入的信息进行验证 ,通过就写入数据库然后返回读者的编号,不符合要求就提示重新输入;返回按钮即关闭 添加新读者界面。 <6>FrAddBook.java 该文件是新书入库界面的封装类,定义并设置了新书入库界面相关组件及显示效果,还 定义了提交、退出按钮的事件监听。功能:点击提交按钮,对输入的信息进行验证,通过 就写入数据库然后返回图书添加成功消息,不符合要求就提示重新输入;退出按钮即关闭 新书入库界面。 <7>FrBorrow.java 该文件是借书登记界面的封装类,定义并设置了借书登记界面相关组件及显示效果,还 定义了确定、取消按钮的事件监听。功能:点击确定按钮,对输入的信息进行验证,若输 入的信息满足要求

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值