JSP课程设计商品书籍管理系统.docx
- 文档编号:8677981
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:20
- 大小:1.11MB
JSP课程设计商品书籍管理系统.docx
《JSP课程设计商品书籍管理系统.docx》由会员分享,可在线阅读,更多相关《JSP课程设计商品书籍管理系统.docx(20页珍藏版)》请在冰豆网上搜索。
JSP课程设计商品书籍管理系统
数学与计算机学院
课程设计说明书
课程名称:
JAVA/数据库/网络综合课程设计
课程代码:
6013809
题目:
商品书籍管理系统
年级/专业/班2010级网络安全1班
学生姓名:
魏丽
学 号:
312010080605116
开始时间:
2012年12月25日
完成时间:
2013年01月16日
课程设计成绩:
学习态度及平时成绩(30)
技术水平与实际能力(20)
创新(5)
说明书撰写质量(45)
总分(100)
指导教师签名:
年月
1引言
1.1问题的提出
商品书籍管理系统是一些售书单位或网站不可缺少的一部分,每天都存在书籍的大量流动,怎样方便、快捷的管理图书尤其重要。
所以商品书籍管理系统应该为管理者提供各类书籍信息和快速的操作手段。
但一直以来人们使用传统人工的方式管理书籍、期刊等,这种管理方式存在许多缺点,如:
效率低、保密性差、容易出错、不便于查找、更新和维护数据。
基于这个问题,有必要建立书籍管理系统,能够及时、准确、有效的查询和修改图书信息。
使得书籍管理工作规范化、系统化、程序化,避免书籍管理的随意性,提高信息处理速度和准确性。
1.2任务与分析
本课题主要的任务:
用jsp+serlvet+sql模拟商品书籍管理系统,以jsp动态网页形式显示数据库中的数据,并完成对这些数据的增、删、改等基本操作,同时将数据更新会数据库。
对本课题的分析:
1、设计简单、大方、合理的网页以及每个页面各自实现的功能
2、实现jsp和servlet之间的跳转以及信息的传递
3、连接数据库,获取数据库中的数据并显示在页面的是上
4、获取管理者录入的书籍信息,并添加到数据库
5、获取管理者删除某本或某些书籍的信息,并将删除后的数据更新回数据库
6、获取管理者查询某本或某些书籍的信息,并将结果显示在页面上
7、获取管理者输入修改某本或某些书籍的信息,并将修改成功后的数据更新回数据库
程序的主要功能
2.1添加功能
实现将书籍的基本信息添加到数据库,包括书的编号(主键)、种类、书名、作者、出版社、价格、总册数。
不论添加成功或失败都会提示对话框,并在数据库中根据主键的唯一性和不能为空两个特点创建了触发器;为了防止录入非法字符,我们还在客服端进行了拦截。
2.2删除功能
点击删除按钮将操作人员选中的复选框的对应信息从数据库中删除
2.3删除全部书籍信息
选中书籍的所有种类,点击删除按钮,将清空数据库中所有书籍信息。
2.4显示功能
实现将数据库中的书籍的主要信息显示在页面上,包括书的编号、种类、书名、作者、出版社、价格、总册数。
只用点击对应书籍种类的链接,就能将该种类的图书信息显示出来,该功能是用存储过程实现的,且为使页面看起来更加美观,我们还实现了登录进入显示界面就默认显示某种图书信息功能。
2.5查找功能
只要在复选框中选中要显示的书籍信息,点击查询按钮就能将对应书籍的详细信息显示出来,如果未查询到将会弹出提示信息。
2.6修改功能
实现对数据库中已存在的书籍信息进行修改。
修改书籍信息有两种方式即修改单条记录和多条记录。
无论修改成功与否都会弹出提示对话框,如果要修改的图书不存在,则会提示操作员“未找到要修改的图书”;且在客服端对非法字符的录入进行了拦截操作。
3、程序运行平台
1、开发工具:
Eclipse4.2、ApacheTomcatv7.0、jdk1.7
2、具体操作如下:
(1)创建项目
打开Eclipse->文件->新建->动态web项目->在项目名栏输入项目名称->单击下一步(完成)。
(2)为项目添加相应的源文件
添加javaBean:
i、点击项目名下的JavaRescoures->src->右键单击选择新建->包->输入包名(包名一般取为com.xx)
ii、右键单击建好的包->新建->类->输入类名->完成
添加servlet:
i、点击项目名下的JavaRescoures->src->右键单击选择新建->包->输入包名(包名一般取为com.xx)
ii、右键单击建好的包->新建->servlet->输入名称->完成
添加jsp:
i、点击项目名下的WebContent->WEBINF->右键单击选择新建->jsp文件->输入名称->选中新建jsp文件(xhtml)->完成
添加CSS:
i、点击项目名下的WebContent->WEBINF->右键单击选择新建->其他->选择WEB下的CSS文件->输入文件名->完成
添加javascript:
i、点击项目名下的WebContent->WEBINF->右键单击选择新建->其他->选择javascript下的javascript原文件->输入名称->完成
再编译,链接,执行等,此部分可参照实验指导书前面的内容写。
4总体设计
图4.1系统总体框架图
5程序说明
∙Book类的声明
publicclassBook{
intnumber;//书的编号
Stringkinds;//书的种类
Stringbname;//书的名字
Stringeditor;//书的作者
Stringpress;//书的出版社
intprice;//书的单价
intcnumber;//书的总册数
publicintgetNumber(){returnnumber;}//设置编号
publicvoidsetNumber(intnumber){this.number=number;}//获取编号
publicStringgetKinds(){returnkinds;}//设置种类
publicvoidsetKinds(Stringkinds){this.kinds=kinds;}//获取种类
publicStringgetBname(){returnbname;}//设置书名
publicvoidsetBname(Stringbname){this.bname=bname;}//获取书名
publicStringgetEditor(){returneditor;}//设置作者
publicvoidsetEditor(Stringeditor){this.editor=editor;}//获取作者
publicStringgetPress(){returnpress;}//设置出版社
publicvoidsetPress(Stringpress){this.press=press;}//获取出版社
publicintgetPrice(){returnprice;}//设置单价
publicvoidsetPrice(intprice){this.price=price;}//获取单件
publicintgetCnumber(){returncnumber;}//设置总册数
publicvoidsetCnumber(intcnumber){umber=cnumber;}//获取总册数
∙DBExecute类的声明
publicclassDBExecute{
publicConnectiongetConnection()throwsException//连接数据库
{Stringdriver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
Stringurl="jdbc:
sqlserver:
//localhost;integratedSecurity=true;databaseName=xsgl;";
try{Class.forName(driver);
returnDriverManager.getConnection(url);}
catch(SQLExceptione){throwe;}}
publicResultSetCallProc(Connectioncon,Stringprocname,Stringword)throwsSQLException//调用存储过程
{CallableStatementst=con.prepareCall("{call"+procname+"(?
)}");
st.setString(1,word);
st.execute();
ResultSetrs=st.getResultSet();
returnrs;}}
6模块分析
6.1添加模块
设计思想:
进入操作页面后,点击添加按钮,在弹出的注册书籍信息表中输入详细的图书信息,点击保存按钮,如果要添加的书籍信息已在数据库中存在,则弹出消息框提示操作人员该书已存在,反之则提示添加成功,为了防止操作员录入非法数据,将在客服端进行拦截,并提示输入的数据非法,请重新输入
流程:
关键代码:
(1)获取operate.jsp传过来的数据。
如:
Stringzl=request.getParameter("zla");
Intbh=Integer.parseInt(request.getParameter("bha"));
(2)连接数据库并用SQL语句进行添加操作。
Stringurl="jdbc:
sqlserver:
//localhost;integratedSecurity=true;databaseName=xsgl;";
Connectioncon;
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con=DriverManager.getConnection(url);
Stringsql="select*frombookwherebid=?
";
PreparedStatementpstmt=con.prepareStatement(sql);
pstmt.setInt(1,bh);
ResultSetrs=pstmt.executeQuery();
if(rs.next()){//当添加的书已在数据库中存在
PrintWriterout=response.getWriter();
Stringmessage="Thisbookisexist!
";
out.print("
+message+"');");
out.print("
}
else{//要添加的图书在数据库中不存在,就添加该本图书sql="insertintobook(bid,bkind,bname,beditor,bpress,bprice,bnum)values(?
?
?
?
?
?
?
)";//添加图书信息的SQL语句
pstmt=con.prepareStatement(sql);
pstmt.setInt(1,bh);
pstmt.setString(2,zl);
pstmt.setString(3,sm);
pstmt.setString(4,zz);
pstmt.setString(5,cbs);
pstmt.setInt(6,jg);
pstmt.setInt(7,zcs);
intk=pstmt.executeUpdate();
PrintWriterout=response.getWriter();
Stringmessage="ok!
";
out.print("
+message+"');");
out.print("
System.out.println("添加图书的信息成功!
");
System.out.println(k);
rs.close();
pstmt.close();
con.close();}}
catch(Exceptione){
e.printStackTrace();}
6.2显示模块
设计思想:
登录成功后进入显示界面,默认显示文学类书籍的信息;并在显示界面点击相应的链接即可查看对应种类的书籍信息。
流程图:
关键代码:
在Login.jsp中检查输入的用户名和密码是否正确:
functioncheck()
{varuser=document.form1.user.value;
varpassword=document.form1.pass.value;
if(user=="admin"&&password=="123")
{returntrue;}
else{alert("请输入正确的用户名或密码!
");
returnfalse;}}
在Operate.java的doPost()中根据获取的图书的种类响应相应的操作:
Stringkind=request.getParameter("kind");
System.out.println(kind);
ArrayList
switch(kind){
case"wenxue":
al=listAll("文学");
request.setAttribute("alist",al);
request.getRequestDispatcher("/list.jsp").forward(request,response);
break;}//还有显示七种图书的操作同上
在listAll()函数中调用了已定义的存储过程:
ArrayList
{Connectioncon=null;
DBExecutedb=newDBExecute();//自定义的类DBExecute
Stringprocname="p";
Stringword=s;
ArrayList
try{
con=db.getConnection();//连接数据库
ResultSetrs=db.CallProc(con,procname,word);//调用存储过程
if(rs.next()){//查询该种类的书存在
while(rs.next()){//把查询结果加入到列表当中
Booku=newBook();
u.setNumber(rs.getInt
(1));
u.setKinds(rs.getString
(2));
u.setBname(rs.getString(3));
u.setEditor(rs.getString(4));
u.setPress(rs.getString(5));
u.setPrice(rs.getInt(6));
u.setCnumber(rs.getInt(7));
al.add(u);}}
else//查询的该种类的书不存在
System.out.println("没有该种类的书!
");
rs.close();
con.close();}
catch(Exceptione)
{e.printStackTrace();}
returnal;
6.3修改模块
设计思想:
修改方式分为两类:
单条数据修改和多条数据修改;在相应的修改表中输入书籍修改信息(单条数据修改需输入图书的详细信息),点击保存后,无论修改成功与否都会弹出提示框,为防止非法数据的录入,将在客服端进行拦截。
流程图:
关键代码:
(1)检查单行修改的图书信息:
functioncheck1()
{if(!
isNaN(document.getElementById("bhu").value)&&!
isNaN(document.getElementById("jgu").value)&&!
isNaN(document.getElementById("zcsu").value)&&document.getElementById("zlu").value!
=""&&document.getElementById("smu").value!
=""&&document.getElementById("zzu").value!
=""&&document.getElementById("cbsu").value!
="")
{returntrue;}
else{alert("请正确输入修改信息!
");
returnfalse;}}
(2)检查多行数据的修改信息:
functioncheck2()
{if(document.getElementById("zl2").value!
=""&&!
isNaN(document.getElementById("jg2").value)||document.getElementById("zz2").value!
=""&&!
isNaN(document.getElementById("jg2").value))
{returntrue;}
else{window.alert("种类项和作者项只能填其中一项!
(客户端)");
returnfalse;}}
(3)在Update.java的doPost()中选择是多行修改还是单行修改:
Stringoperate=request.getParameter("operate");
if(operate.equals("danh"))//选择的是单行修改
{listAll(request,response);}
elseif(operate.equals("duoh"))//选择的是多行修改
{listAll1(request,response);}
(1)关键的SQL语句:
单行修改:
Stringsql="updatebooksetbkind="+zl1+",bname="+sm1+",beditor="+zz1+",bpress="+cbs1+",bprice=?
bnum=?
wherebid=?
";
多行修改:
sql="updatebooksetbprice=?
wherebkind="+zl1+"";
6.4查找模块
设计思想:
查询分为单条数据查询和多条数据查询,只要用户在操作界面输入了要查找图书的编号,如果存在则在页面上显示对应编号的书籍信息,否则提示用户未查找到(单条数据查询)。
如果没有输入图书的编号,就会查询选中的复选框对应的书籍信息,只要填了价格区间,查询结果就将显示在该价格区间内选中的图书信息,否则只显示查找选中的图书信息。
(多条数据查询)
流程图:
是否
是否是
关键代码:
(1)在Select.java的dopost()中实现查询图书的功能:
String[]values1=request.getParameterValues("checkselect1");
//获取values2和values3的方法同获取values1的方法相同
Stringprice1=request.getParameter("price1");
Stringid=request.getParameter("id");
if(id.isEmpty()){//没有输入图书的编号
if(values1==null&&values2==null&&values3==null){
request.getRequestDispatcher("/operate.jsp").forward(request,response);}
else{//选择有查询条件
ArrayList
al=listAll(values1,values2,values3,price1,price2);
request.setAttribute("alist",al);
request.getRequestDispatcher("/operate.jsp").forward(request,response);}}
else{
list1(request,response);}}//实现根据图书的编号查询图书
stAll()实现按勾选的条件查询:
Stringstr1="";
if(s1!
=null){
str1+="'"+s1[0];
for(inti=1;i str1+="','"+s1[i];} str1+="','"+s1[s1.length-1]+"'";} 根据是否填有价格区间选择查询操作: if(price1.isEmpty()||price2.isEmpty())//价格区间没有填完整 {//只查询勾选了条件的图书 sql="select*frombookwherebpressin("+str2+")andbeditorin("+str3+")";} else{//在勾选了条件的图书的基础上而且在指定价格区间的图书 sql="select*frombookwherebpressin("+str2+")andbeditorin("+str3+")andbpricebetween? and? ";} 6.5删除模块 设计思想: 只要用户输入图书的编号,就会删除该编号的图书信息,否则删除符合勾选条件的图书,如果在价格区间中填入了数值就将该价格区间内符合勾选条件的图书删除。 流程图: 关键代码: 在Delete.java的doPost()中实现删除操作: (1)获取operate.jsp中的数据: String[]values1=request.getParameterValues("checks
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JSP 课程设计 商品 书籍 管理 系统