Web开发技课程设计报告.docx
《Web开发技课程设计报告.docx》由会员分享,可在线阅读,更多相关《Web开发技课程设计报告.docx(28页珍藏版)》请在冰豆网上搜索。
Web开发技课程设计报告
安徽农业大学
课程实践(设计)报告
实践项目名称图书管理系统的设计
项目组成人员
院系信年级专业0
指导教师傅
2.1需求分析3
3.1数据库结构设计4
3.1.1概念结构设计4
3.1.2逻辑结构设计……………………………………………………………………………………………………….7
3.2.1物理结构设计………………………………………………………………………………………………………..8
3.3.1系统功能设计图书管理模块功……………………………………………………………………………11
3.4系统界面设计与实现…………………………………………………………………………………………..11
3.4.1系统登录界面………………………………………………………………………………………………………11
1课程设计背景
图书馆信息化管理从最初的对图书馆业务管理实行信息化管理发展到对图书馆各个业务流程和网络化管理,并建立大规模的以个体文献目录联机查询为主的资源共享系统;而图书馆的正常运营中总是面对大量的读者信息,图书信息及两者相互作用产生的借书信息,所以要对读者资源,读者资源,借书信息进行管理,本系统的开发就是在于提高图书管理的工作效率!
2需求分析(包括:
功能分析、操作流程分析等)
2.1需求分析
一般通用的图书馆借阅管理系统包括系统管理、读者管理、编目、图书流通、统计、查询等功能。
比较先进的能够在一个界面下实现图书、音像、期刊的管理,设置假期、设置暂离锁(提高安全性)、暂停某些读者的借阅权、导入导出读者、交换MARC数据、升级辅助编码库等。
此外随着Internet应用的发展,一个完善的系统还应该提供无缝接入Internet的功能,通过IE浏览器让读者使用借阅资料查询、更换密码、预约、资料检索等功能。
有些系统还能提供读者自助服务,可以开放一些客户机让读者自行管理密码、查询自己的借阅史、预约资料、检索资料等。
在构造系统时,首先从需求出发构造数据库表,然后再由数据库结合需求划分系统功能模块。
这样,就把一个大的系统分解成了几个小系统。
这里把系统的层次划分为了两个部分:
一个是一般用户态:
即图书有服务子系统;另一个是管理员界面:
提供图书的管理和维护功能。
对于不同子系统之间的功换,采用了登录功能和用户注销功能。
系统划分了子系统后,下一步的工作是继续划分子系统的小模块。
先考虑在进入子系统时应该做什么,进入系统之后又应该做什么,提供那些服务等。
例如,对于图书信息服务子系统,在用户进入时首先得调用相关数据库表,找出用户的图书借阅情况;进入系统后,子系统得提供图书查询、图书借阅和还书功能。
另外,针对本系统的特殊情况,同时也考虑系统的可移植性,在系统中增加了数据库路径的维护部分。
但由于本人技术有限,下面只做了部分设计
3设计与实现(包括:
前台页面、数据库、业务逻辑等设计)
3.1数据库结构设计
3.1.1概念结构设计(E-R图)
概念结构设计是将分析得到的用户需求抽象为概念模型的过程,即在需求分析的基础上,设计出能够满足用户需求的各种实体以及它们之间的相互关系的模型。
这样才能更好地、更准确地用某一DBMS实现这些需求,它是整个数据库设计的关键。
概念结构的主要特点是能真实、充分地反映现实世界,易于理解,易于更改,易于向关系、网状、层次等各种数据模型转换。
描述概念模型的有力工具是E-R模型。
Er图:
部分实体ER图:
3.1.2逻辑结构设计
逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。
设计逻辑结构时一般要分三步进行,首先是将概念结构转换为一般的关系、网状、层次模型,其次是将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型转换,最后是对数据模型进行优化。
基于B/S的简易图书借阅管理系统采用的是将E-R图向关系数据模型转换。
以下是由概念模型向逻辑模型转化的关系模式:
管理员(管理员编号,管理员名称,管理员密码)
图书(图书编码,图书名称,图书类别,书架,作者,价格,借阅次数)
3.2.1物理结构设计
数据库的物理结构设计是对于给定的逻辑数据模型,选取一个最合适应用环境的物理结构。
数据库的物理结构指的是数据库在物理设备上的存储结构与存取方法,它依赖于给定的计算机系统
表2.2管理员信息表(new_userlist)
字段名
注释
类型
长度
允许空
默认值
userId
管理员编号
int
4
自动增长(1,1)
userName
管理员名称
varchar
50
Null
userPwd
管理员密码
varchar
50
Null
表2.3图书信息表(new_booklist)
字段名
注释
类型
长度
允许空
默认值
bookid
图书编码
varchar
50
bookName
图书名称
varchar
50
null
bookType
图书类别
int
4
null
bookcase
书架
int
100
null
auother
作者
varchar
80
null
price
价格
money
8
null
borrowSum
借阅次数
int
4
null
数据库表:
3.3.1系统功能设计图书管理模块功能(时间技术有限目前只有此功能)
图书类型管理:
是对图书进行分类管理,对图书类型的添加、删除、修改等功能。
图书信息管理:
管理员对图书信息的详细录入,修改图书信息和删除图书信息等功能。
3.4系统界面设计与实现
3.4.1系统登录界面
系统首页,同时也是登录界面,在此界面中,管理可以根据自身情况登录到系统中,管理员登录界面如下图所示:
相关代码:
—JSPdl-0-->
<%@pagecontentType="text/html;charset=gb2312"language="java"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:
//www.w3.org/TR/html4/loose.dtd">
用户登陆界面<%
if(!
session.isNew()){
Stringname=(String)session.getAttribute("username");
if(name==null)name="";
}
out.println("SessionID:
"+session.getId());//输出会话编号
%>
管理员登陆:
管理员姓名 | |
管理员密码 | |
|
—JSPdl-1-->
<%@pagecontentType="text/html;charset=gb2312"language="java"errorPage=""%>
<%@pageimport="java.sql.*"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:
//www.w3.org/TR/html4/loose.dtd">
用户身份验证<%
Stringusername=request.getParameter("username");
Stringpassword=request.getParameter("password");
if(username==null)username="";
if(password==null)password="";
try{
//装载驱动程序
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
//连接字符串
Stringurl="jdbc:
mysql:
//localhost/new_library";
//建立连接
Connectionconn=DriverManager.getConnection(url,"root","123456");
//建立Statement
Statementstmt=conn.createStatement();
//执行查询建立ResultSet
ResultSetrs=stmt.executeQuery("selectuserName,userPwfromnew_userlist");
//输出查询结果
Stringuname=rs.getString("userName");
Stringupass=rs.getString("userPw");
if(username.equals(uname)&&password.equals(upass)){//验证用户信息
response.sendRedirect("JSPdl-2.jsp");//进入欢迎页面
}
else{
response.sendRedirect("JSPdl-0.jsp");//进入登陆页面
}//关闭连接、释放资源
rs.close();
stmt.close();
conn.close();
}catch(ClassNotFoundExceptioncnfe){
out.print(cnfe);
}catch(SQLExceptionsqle){
out.print(sqle);
}catch(Exceptione){
out.print(e);
}
%>
--JSPdl-0
<%@pagecontentType="text/html;charset=gb2312"language="java"%>
<%@pageimport="beans.*,java.sql.*"errorPage="error.jsp"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"
"http:
//www.w3.org/TR/html4/loose.dtd">
显示图书列表useBeanid="conn"scope="session"class="beans.new_libraryDBean"/>
图书列表
图书编号 | 书名 | 作者 | 书类 | 书架号 | 价格 | 借阅次数 |
---|
<%
new_booklistBean[]records=conn.getAllRecords();
if(records!
=null){
for(inti=0;iout.println("
");out.println("
"+records[i].getbookID()+" | ");out.println("
"+records[i].getbookName()+" | ");out.println("
"+records[i].getauother()+" | ");out.println("
"+records[i].getbookType()+" | ");out.println("
"+records[i].getbookCase()+" | ");out.println("
"+records[i].getprice()+" | ");out.println("
"+records[i].getborrowSum()+" | ");out.println("
");
}
}
%>
更多操作:
添加图书
返回
删除图书
管理员添加图书记录:
相关代码:
JSPdl-3
<%@pagecontentType="text/html;charset=gb2312"language="java"%>
<%@pageimport="beans.new_booklistBean,beans.ConnBean"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"
"http:
//www.w3.org/TR/html4/loose.dtd">
添加图书记录
添加新记录图书编号 | * |
书名 | * |
作者 | |
书类 | |
书架号 | * |
价格 | * |
借阅次数 | * |
|
|
useBeanid="book"scope="request"class="beans.new_booklistBean"/>
setPropertyname="book"property="*"/>
useBeanid="conn"scope="session"class="beans.new_libraryDBean"/>
<%
if(book.getbookID()!
=0&&conn.insertRecord(book))
out.println("
添加记录成功");
%>
JSPdl-4
<%@pagecontentType="text/html;charset=gb2312"language="java"%>
<%@pageimport="beans.new_booklistBean,beans.ConnBean"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"
"http:
//www.w3.org/TR/html4/loose.dtd">
删除图书记录useBeanid="conn"scope="session"class="beans.new_libraryDBean"/>
图书列表
图书编号 | 书名 | 作者 | 书类 | 书架号 | 价格 | 借阅次数 | 选择 |
---|
<%
new_booklistBean[]records=conn.getAllRecords();
if(records!
=null){
for(inti=0;iout.println("
");out.println("
"+records[i].getbookID()+" | ");out.println("
"+records[i].getbookName()+" | ");out.println("
"+records[i].getauother()+" | ");out.println("
"+records[i].getbookType()+" | ");out.println("
"+records[i].getbookCase()+" | ");out.println("
"+records[i].getprice()+" | ");out.println("
"+records[i].getborrowSum()+" | ");%>
"value="<%=i%>"/> | <%
out.println("
");
}
}
%>
<%
String[]check=newString[records.length];
for(inti=0;icheck[i]=request.getParameter("check"+i);
if(check[i]==null)
check[i]="";
if(check[i].equals(""+i)){
if(conn.deleteRecord(records[i])){
out.println("
删除成功");
response.setHeader("refresh","1");
}
}
}
%>
与系统相关的bean代码:
New_booklistBean
packagebeans;
publicclassnew_booklistBean{
privateStringbookID;//表示书编号;
privateStringbookName;//书名;
privateStringauother;//作者名;
privateintbookType;//书类;
privateintbookCase;//书架号;
privateintprice;//书价;
privateintborrowSum;//书被借的次数;
publicStringgetbookID(){
returnbookID;
}
publicvoidsetbookID(StringbookID){
this.bookID=bookID;
}
publicStringgetbookName