当前位置:文档之家› Web开发技课程设计报告

Web开发技课程设计报告

安徽农业大学课程实践(设计)报告实践项目名称图书管理系统的设计项目组成人员院系信年级专业0指导教师傅页脚内容1目录1课程设计背景 (3)2需求分析(包括:功能分析、操作流程分析等) (3)3设计与实现(包括:前台页面、数据库、业务逻辑等设计) (4)ER图: (4)部分实体ER图: (5)页脚内容21课程设计背景图书馆信息化管理从最初的对图书馆业务管理实行信息化管理发展到对图书馆各个业务流程和网络化管理,并建立大规模的以个体文献目录联机查询为主的资源共享系统;而图书馆的正常运营中总是面对大量的读者信息,图书信息及两者相互作用产生的借书信息,所以要对读者资源,读者资源,借书信息进行管理,本系统的开发就是在于提高图书管理的工作效率!2需求分析(包括:功能分析、操作流程分析等)2.1需求分析一般通用的图书馆借阅管理系统包括系统管理、读者管理、编目、图书流通、统计、查询等功能。

比较先进的能够在一个界面下实现图书、音像、期刊的管理,设置假期、设置暂离锁(提高安全性)、暂停某些读者的借阅权、导入导出读者、交换MARC数据、升级辅助编码库等。

此外随着Internet应用的发展,一个完善的系统还应该提供无缝接入Internet的功能,通过IE浏览器让读者使用借阅资料查询、更换密码、预约、资料检索等功能。

有些系统还能提供读者自助服务,可以开放一些客户机让读者自行管理密码、查询自己的借阅史、预约资料、检索资料等。

在构造系统时,首先从需求出发构造数据库表,然后再由数据库结合需求划分系统功能模块。

这样,就把一个大的系统分解成了几个小系统。

这里把系统的层次划分为了两个部分:一个是一般用户态:即图书有服务子系统;另一个是管理员界面:提供图书的管理和维护功能。

对于不同子系统之间的功换,采用了登录功能和用户注销功能。

页脚内容3系统划分了子系统后,下一步的工作是继续划分子系统的小模块。

先考虑在进入子系统时应该做什么,进入系统之后又应该做什么,提供那些服务等。

例如,对于图书信息服务子系统,在用户进入时首先得调用相关数据库表,找出用户的图书借阅情况;进入系统后,子系统得提供图书查询、图书借阅和还书功能。

另外,针对本系统的特殊情况,同时也考虑系统的可移植性,在系统中增加了数据库路径的维护部分。

但由于本人技术有限,下面只做了部分设计3设计与实现(包括:前台页面、数据库、业务逻辑等设计)3.1数据库结构设计3.1.1 概念结构设计(E-R图)概念结构设计是将分析得到的用户需求抽象为概念模型的过程,即在需求分析的基础上,设计出能够满足用户需求的各种实体以及它们之间的相互关系的模型。

这样才能更好地、更准确地用某一DBMS实现这些需求,它是整个数据库设计的关键。

概念结构的主要特点是能真实、充分地反映现实世界,易于理解,易于更改,易于向关系、网状、层次等各种数据模型转换。

描述概念模型的有力工具是E-R模型。

Er图:页脚内容4页脚内容53.1.2 逻辑结构设计逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。

设计逻辑结构时一般要分三步进行,首先是将概念结构转换为一般的关系、网状、层次模型,其次是将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型转换,最后是对数据模型进行优化。

基于B/S的简易图书借阅管理系统采用的是将E-R图向关系数据模型转换。

以下是由概念模型向逻辑模型转化的关系模式:管理员(管理员编号,管理员名称,管理员密码)图书(图书编码,图书名称,图书类别,书架,作者,价格,借阅次数)页脚内容6页脚内容73.2.1物理结构设计数据库的物理结构设计是对于给定的逻辑数据模型,选取一个最合适应用环境的物理结构。

数据库的物理结构指的是数据库在物理设备上的存储结构与存取方法,它依赖于给定的计算机系统表2.2管理员信息表(new_userlist)页脚内容8页脚内容9表2.3图书信息表(new_booklist)页脚内容10Sum次数t4null数据库表:页脚内容113.3.1系统功能设计图书管理模块功能(时间技术有限目前只有此功能)图书类型管理:是对图书进行分类管理,对图书类型的添加、删除、修改等功能。

图书信息管理:管理员对图书信息的详细录入,修改图书信息和删除图书信息等功能。

3.4系统界面设计与实现3.4.1系统登录界面系统首页,同时也是登录界面,在此界面中,管理可以根据自身情况登录到系统中,管理员登录界面如下图所示:页脚内容12相关代码:<!—JSPdl-0--><%@ page contentType="text/html; charset=gb2312" language="java"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312">页脚内容13<title>用户登陆界面</title></head><body><%if(!session.isNew()){String name=(String)session.getAttribute("username");if(name==null) name="";}out.println("Session ID:"+session.getId());//输出会话编号%><p align="center"><table border="1"><caption>管理员登陆:</caption><form action="JSPdl-1.jsp" method="post">页脚内容14<tr><td>管理员姓名</td><td><input type="text" name="username"/></td></tr><tr><td>管理员密码</td><td><input type="password" name="password"/></td> </tr><tr><td><input type="submit" value="提交"/></tr></form></table></p></body></html>页脚内容15<! —JSPdl-1- -><%@ page contentType="text/html; charset=gb2312" language="java" errorPage="" %><%@ page import="java.sql.*"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>用户身份验证</title></head><body><%String username=request.getParameter("username");String password=request.getParameter("password");if(username==null) username="";if(password==null) password="";页脚内容16try{//装载驱动程序Class.forName("org.gjt.mm.mysql.Driver").newInstance();//连接字符串String url ="jdbc:mysql://localhost/new_library";//建立连接Connection conn= DriverManager.getConnection(url,"root","123456");//建立StatementStatement stmt=conn.createStatement();//执行查询建立ResultSetResultSet rs=stmt.executeQuery("select userName,userPw from new_userlist"); //输出查询结果String uname=rs.getString("userName");String upass=rs.getString("userPw");if(username.equals(uname)&&password.equals(upass)){//验证用户信息页脚内容17response.sendRedirect("JSPdl-2.jsp");//进入欢迎页面}else{response.sendRedirect("JSPdl-0.jsp");//进入登陆页面}//关闭连接、释放资源rs.close();stmt.close();conn.close();}catch(ClassNotFoundException cnfe){out.print(cnfe);}catch(SQLException sqle){out.print(sqle);}catch(Exception e){out.print(e);}%>页脚内容18</body></html><!- -JSPdl-0<%@ page contentType="text/html; charset=gb2312" language="java"%> <%@ page import="beans.*,java.sql.*" errorPage="error.jsp"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>显示图书列表</title></head><body><jsp:useBean id="conn" scope="session" class="beans.new_libraryDBean"/> <table border="1">页脚内容19<caption>图书列表</caption><tr><th>图书编号</th><th>书名</th><th>作者</th><th>书类</th><th>书架号</th><th>价格</th><th>借阅次数</th></tr><%new_booklistBean[] records=conn.getAllRecords(); if(records!=null){for(int i=0;i<records.length;i++){out.println("<tr>");页脚内容20out.println("<td>"+records[i].getbookID()+"</td>");out.println("<td>"+records[i].getbookName()+"</td>");out.println("<td>"+records[i].getauother()+"</td>");out.println("<td>"+records[i].getbookType()+"</td>");out.println("<td>"+records[i].getbookCase()+"</td>");out.println("<td>"+records[i].getprice()+"</td>");out.println("<td>"+records[i].getborrowSum()+"</td>");out.println("</tr>");}}%></table><p><a name="url">更多操作:</a><br><a href="JSPdl-3.jsp" target="_self">添加图书</a><a href="#url">返回</a><br><a href="JSPdl-4.jsp" target="_self">删除图书</a>页脚内容21</p></body></html>管理员添加图书记录:页脚内容22相关代码:JSPdl-3<%@ page contentType="text/html; charset=gb2312" language="java"%> <%@ page import="beans.new_booklistBean,beans.ConnBean"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head>页脚内容23<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>添加图书记录</title></head><body><p><table><form action="" method="post"><caption>添加新记录</caption><tr><td>图书编号</td><td><input type="text" name="bookID"/>*</td></tr><tr><td>书名</td><td><input type="text" name="bookName"/>*</td></tr>页脚内容24<tr><td>作者</td><td><input type="text" name="auother"/></td></tr><tr><td>书类</td><td><textarea name="bookType" cols="20"rows="5"></textarea></td></tr><tr><td>书架号</td><td><input type="text" name="bookCase"/>*</td></tr><tr><td>价格</td><td><input type="text" name="price"/>*</td></tr>页脚内容25<tr><td>借阅次数</td><td><input type="text" name="borrowSum"/>*</td></tr><tr><td/><td><input type="submit" value="增加"/><input type="reset" value="重写"/></td></tr></form></table><jsp:useBean id="book" scope="request" class="beans.new_booklistBean"/> <jsp:setProperty name="book" property="*"/><jsp:useBean id="conn" scope="session" class="beans.new_libraryDBean"/> <%if(book.getbookID()!=0&&conn.insertRecord(book))页脚内容26out.println("<hr>添加记录成功");%></p></body></html>JSPdl-4<%@ page contentType="text/html; charset=gb2312" language="java"%> <%@ page import="beans.new_booklistBean,beans.ConnBean"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>删除图书记录</title></head>页脚内容27<body><p><jsp:useBean id="conn" scope="session" class="beans.new_libraryDBean"/> <form action="" method="post"><table border="1"><caption>图书列表</caption><tr><th>图书编号</th><th>书名</th><th>作者</th><th>书类</th><th>书架号</th><th>价格</th><th>借阅次数</th><th>选择</th></tr><%页脚内容28new_booklistBean[] records=conn.getAllRecords();if(records!=null){for(int i=0;i<records.length;i++){out.println("<tr>");out.println("<td>"+records[i].getbookID()+"</td>");out.println("<td>"+records[i].getbookName()+"</td>");out.println("<td>"+records[i].getauother()+"</td>");out.println("<td>"+records[i].getbookType()+"</td>");out.println("<td>"+records[i].getbookCase()+"</td>");out.println("<td>"+records[i].getprice()+"</td>");out.println("<td>"+records[i].getborrowSum()+"</td>");%><td><input type="checkbox" name="<%="check"+i%>" value="<%=i%>" /></td>页脚内容29<%out.println("</tr>");}}%></table><input type="submit" value="提交"/></form><%String[] check=new String[records.length]; for(int i=0;i<check.length;i++){check[i]=request.getParameter("check"+i);if(check[i]==null)check[i]="";if(check[i].equals(""+i)){if(conn.deleteRecord(records[i])){out.println("<hr>删除成功");页脚内容30response.setHeader("refresh","1");}}}%></p></body></html>与系统相关的bean代码:New_booklistBeanpackage beans;public class new_booklistBean {private String bookID;//表示书编号;private String bookName;//书名;private String auother;//作者名;页脚内容31private int bookType;//书类;private int bookCase;//书架号;private int price;//书价;private int borrowSum;//书被借的次数;public String getbookID() {return bookID;}public void setbookID(String bookID) {this.bookID = bookID;}public String getbookName() {return bookName;}public void setbookName(String bookName) {this.bookName = bookName;}public String getauother() {页脚内容32return auother;}public void setauother(String auother) { this.auother = auother;}public int getbookType() {return bookType;}public void setbookType(int bookType) { this.bookType = bookType;}public int getbookCase() {return bookCase;}public void setbookCase(int bookCase) { this.bookCase = bookCase;}页脚内容33public int getprice() {return price;}public void setprice(int price) {this.price = price;}public int getborrowSum() {return borrowSum;}public void setborrowSum(int borrowSum) {this.borrowSum = borrowSum;}}ConnBeanpackage beans;import java.sql.*; //导入jdbc;页脚内容34public class ConnBean {private String driver="sun.jdbc.odbc.JdbcOdbcDriver";//默认驱动程序为jdbc-odbc驱动;private String jdbcurl="jdbc:odbc:";//jdbcurlprivate String database="new_booklist";//数据库或数据源private String userName="root";//用户名private String password="123456";//密码private Connection connection=null;public Connection getConnection() {try{Class.forName(driver);//注册驱动程序;connection=DriverManager.getConnection("jdbc:odbc:new_booklist","","");//建立连接;}catch(ClassNotFoundException e1){e1.printStackTrace();}catch(SQLException e2){页脚内容35e2.printStackTrace();}return connection;}public void closeConnection(Connection connection){//关闭连接;try{if(connection!=null)connection.close();connection=null;}catch(SQLException e3){e3.printStackTrace();}}public void closePstmt(PreparedStatement pstmt){//关闭执行语句;try{if(pstmt!=null)pstmt.close();页脚内容36pstmt=null;}catch(SQLException e){e.printStackTrace();}}public void closeResultSet(ResultSet rs){//关闭结果集语句;try{if(rs!=null)rs.close();rs=null;}catch(SQLException e){e.printStackTrace();}}public String getDriver() {//获取驱动程序return driver;}页脚内容37public void setDriver(String driver) {this.driver = driver;}public String getDatabase() {return database;}public void setDatabase(String database) {this.database = database;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getJdbcurl() {return jdbcurl;页脚内容38}public void setJdbcurl(String url) {this.jdbcurl = url;}public String getUserName() {return userName;}public void setUserName(String userName) {erName = userName;}}New_libraryBean页脚内容39package beans;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.Collection;public class new_libraryDBean extends ConnBean{private Connection connection=null;public new_booklistBean[] getAllRecords(){//获取所有记录ResultSet rs=null;PreparedStatement pstmt=null;Collection list=new ArrayList();try{connection=getConnection();页脚内容40pstmt=connection.prepareStatement("select * fromnew_booklist");//数据表new_booklistrs=pstmt.executeQuery();while(rs.next()){new_booklistBean new_booklist=new new_booklistBean();new_booklist.setbookID(rs.getString(1));new_booklist.setbookName(rs.getString(2));new_booklist.setauother(rs.getString(3));new_booklist.setbookType(rs.getInt(4));new_booklist.setbookCase(rs.getInt(5));new_booklist.setprice(rs.getInt(6));new_booklist.setborrowSum(rs.getInt(7));list.add(new_booklist);}}catch(SQLException e){e.printStackTrace();}finally{页脚内容41closePstmt(pstmt);closeConnection(connection);}new_booklistBean[] records=(new_booklistBean[])list.toArray(new new_booklistBean[0]);return records;}public new_booklistBean queryARecord(String sqlStr){//查询一条记录ResultSet rs=null;PreparedStatement pstmt=null;new_booklistBean new_booklist=new new_booklistBean();try{connection=getConnection();pstmt=connection.prepareStatement(sqlStr);rs=pstmt.executeQuery();if(rs.next()){new_booklist.setbookID(rs.getString(1));页脚内容42new_booklist.setbookName(rs.getString(2));new_booklist.setauother(rs.getString(3));new_booklist.setbookType(rs.getInt(4));new_booklist.setbookCase(rs.getInt(5));new_booklist.setprice(rs.getInt(6));new_booklist.setborrowSum(rs.getInt(7));}}catch(SQLException e){e.printStackTrace();}finally{closeResultSet(rs);closePstmt(pstmt);closeConnection(connection);}return new_booklist;}public boolean insertRecord(new_booklistBean record){//插入记录页脚内容43PreparedStatement pstmt=null;String insStr="insert into new_booklist values (?,?,?,?,?)"; if(record==null) return false;try{connection=getConnection();pstmt=connection.prepareStatement(insStr);pstmt.setString(1, record.getbookID());pstmt.setString(2, record.getbookName());pstmt.setString(3, record.getauother());pstmt.setInt(4, record.getbookType());pstmt.setInt(5, record.getbookCase());pstmt.setInt(6, record.getprice());pstmt.setInt(7, record.getborrowSum());pstmt.execute();}catch(SQLException e){e.printStackTrace();}finally{页脚内容44closePstmt(pstmt);closeConnection(connection);;}return true;}public boolean deleteRecord(new_booklistBean record){//删除记录;PreparedStatement pstmt=null;String delStr="delete from new_booklist where bookID=?";if(record==null) return false;try{getConnection();pstmt=connection.prepareStatement(delStr);pstmt.setString(1, record.getbookID());pstmt.execute();}catch(SQLException e){e.printStackTrace();}finally{页脚内容45closePstmt(pstmt);closeConnection(connection);}return true;}public boolean updateRecord(new_booklistBean ro,new_booklistBean rn){//修改记录if(ro==null||rn==null) return false;PreparedStatement pstmt=null;String updStr="update new_booklist setbookName=?,auother=?,bookType=?,bookCase=?,price=?,borrowSum=?";updStr=updStr+" where bookID="+ro.getbookID();try{connection=getConnection();pstmt=connection.prepareStatement(updStr);pstmt.setString(1,rn.getbookName());pstmt.setString(2, rn.getauother());pstmt.setInt(3, rn.getbookType());页脚内容46pstmt.setInt(4, rn.getbookCase());pstmt.setInt(5, rn.getprice());pstmt.setInt(6, rn.getborrowSum());pstmt.executeUpdate();}catch(SQLException e){e.printStackTrace();}finally{closePstmt(pstmt);closeConnection(connection);}return true;}}页脚内容47。

相关主题