收藏 分销(赏)

Web基础课程设计.doc

上传人:s4****5z 文档编号:8892789 上传时间:2025-03-06 格式:DOC 页数:27 大小:374KB 下载积分:10 金币
下载 相关 举报
Web基础课程设计.doc_第1页
第1页 / 共27页
Web基础课程设计.doc_第2页
第2页 / 共27页


点击查看更多>>
资源描述
Web技术应用基础课程设计 摘 要 《失物招领系统》是鉴于现今我国现状,为了帮助更多的人更加方便快捷得找回他们丢失的物品而设立的一个平台。在这个网络日益发展的时代,网上寻物成为最简单方便的方式,只需要坐在家里就可以清清楚楚地知道自己丢失物品的情况。基于目前国内该系统也是初步投入使用,在功能和应用方面还有待完善,我们加入自己的新点子,这个系统在以后应该会得到广泛的应用并日臻完善。该项目的主要用户包括一些学校,政府机关和大型企业等。为更好的实现该系统的相关功能,用户可以采用一个独立的数据库实现小范围内的实施该系统,例如学校或者企业等;也可以通过Internet的连接在网页上实施该系统,例如县市级政府机关等。这是一个比较小型的系统,其开发成本不会很高,预算合理,价格低廉。 关键字:失物招领 运行 环境 服务 接口 设计 信息 目录 1 需求分析 4 1.1 编写目的 4 1.2 背景 4 2 概要设计 5 2.1 系统功能 5 2.1.1 功能概述 5 2.1.2 管理端子功能模块 8 2.1.3 用户端子功能模块 12 2.2 用户业务流程图 15 2.2.1 总体业务流图 15 2.3 用户业务数据流图 16 2.3.1 登录数据流图 16 2.3.1 查询数据流图 17 3 数据描述 17 3.1 数据库描述 17 3.2 数据词典 18 4 用户界面设计及代码实现 19 5 参考资料 28 1 需求分析 1.1 编写目的 该系统是关于用户对于失物招领管理系统的功能和性能的要求,重点描述了失物招领系统的功能需求,是概要设计阶段的重要输入。 本文档的预期读者是: Ø 设计人员; Ø 开发人员; Ø 项目管理人员; Ø 测试人员; Ø 用户; 1.2 背景 为了方便失主寻找丢失物品、拾主归还捡拾物品和减轻失物招领中心的管理员的工作负担,以及发扬拾金不昧的美好品德和提高中国人民的道德水平,我们开发了失物招领管理系统。失主可以通过网络进入到本系统,查询自己丢失的物品是否已被好心人拾到并交给了招领中心和对好心人的感谢等;管理员可通过本系统对失物信息、报失信息、留言信息等方便的进行管理。 当今社会,当失主丢失物品后往往苦于寻找,要不是得登报,就得到处张贴寻物启事。同时,拾主捡到物品若希望归还,也是麻烦重重。最重要的是,现在我国正努力建设和谐社会,政府重视城镇居民道德素质的提高,所以弘扬拾金不昧的优秀传统是政府义不容辞的一项责任。虽然现在很多学校已有失物招领中心,可是这些中心在记录失物等的信息时全部都是用笔纸记录的。当失物招领中心的记录很多时,查询起来会耗费大量的时间,同时失主必须到失物招领中心才能报失自己丢失的物品或者确认自己丢失的东西是否保存在失物招领中心。因此,开发失物招领管理系统是一件迫在眉睫的事情,并且该系统是基于网络的,失主可以在网络上查询和报失以及确认。这个系统可以在方便管理人员和失主的同时提高我国人民的道德素质,使我国人民处于更和谐的社会。 2 概要设计 2.1 系统功能 2.1.1 功能概述 以下四个IPO表逐项定量和定性地对系统的功能需求进行描述: 表一 失物管理模块的IPO表 系统名称:失物招领管理系统 设计人: 模块名:失物管理 日期: 模块编号: 上层调用模块:管理端 文件名: 下层被调用模块:失物信息的增加、删除、修改 输入数据:失物的名称(pick_name)、特点(pick_trait)、捡拾地点(pick_place)、时间(pick_time)、捡拾人信息(姓名pname、联系方式pcontact_way)、对应的存储地点(store_place)、上交物品日期(sdate)及存储时间(以天计)(store_time)、处理方式(hand_way) 输出数据:失物的名称(pick_name)、特点(pick_trait)、捡拾地点(pick_place)、时间(pick_time)、捡拾人信息(姓名pname、联系方式pcontact_way)、对应的存储地点(store_place)、上交物品日期(sdate)及存储时间(以天计)(store_time)、处理方式(hand_way) 处理: 有人上交捡拾物品 THEN(调用“失物信息的增加”) IF store_time<=30 失物被领取 (调用“失物信息的修改”hand_way为已领取) ELSE IF store_time<=45 调用“失物信息的修改”hand_way为已捐赠 ELSE (调用“失物信息的删除”) ENDIF 注释: 此模块针对于系统管理人员(既失物招领中心工作人员) 表二 报失管理模块的IPO表 系统名称:失物招领管理系统 设计人: 模块名:报失管理 日期: 模块编号: 上层调用模块:管理端 文件名: 下层被调用模块: 报失物品信息添加、修改、删除 输入数据:报失物品名称(lost_name)、特点(lost_trait)、丢失地点(lost_place)、时间(lost_time)、报失人信息(姓名lname、联系方式lcontact_way)、报失日期(ldate),报失时间(以天计)(time) 输出数据:报失物品名称(lost_name)、特点(lost_trait)、丢失地点(lost_place)、时间(lost_time)、报失人信息(姓名lname、联系方式lcontact_way)、报失日期(ldata)报失时间(以天计)(time) 处理: 有人报失THEN (调用“报失物品信息添加”) 报失人改变信息 THEN (调用“报失物品信息修改”) 失物被领走THEN (调用“报失物品信息删除”) IF time>60 THEN(调用“报失信息删除”) ENDIF 注释:此模块针对于系统管理人员和报失人员,但输出数据只有管理员可见 表三 信息公布管理模块的IPO表 系统名称:失物招领管理系统 设计人: 模块名:信息公布管理 日期: 模块编号: 上层调用模块:失物招领管理系统 文件名: 下层被调用模块:失物招领信息、报失物品信息、留言板信息管理、普通查询和高级检索 输入数据:留言、查询信息 输出数据:1、失物的名称(pick_name)、捡拾地点(pick_place)、时间(pick_time)、捡拾人姓名(name) 2、留言 3、普通查询:名称相同的物品的信息 高级检索:名称相同、丢失地点范围之内的物品的信息 处理: (调用“失物招领信息和报失物品信息”) IF 普通查询(调用“普通查询”) THEN显示名称相同的物品的信息 IF 高级检索(调用“高级检索”) THEN 显示名称相同、一定丢失地点范围之内物品的信息 留言 THEN (调用“留言板信息管理”) 注释:此模块适用于所有用户,且供用户用于站内输入及查看和供用户用于站内查询 系统总功能模块划分图: 2.1.2管理端子功能模块 管理端子系统主要是给失物招领中心管理员提供的功能,它分为失物信息管理报失信息管理、、信息公布管理等部分,管理员须通过安全认证后方能登录,实现相应功能。 下图为它的用例图。 失物管理的功能用例图 管理端的这些用例描述如下: 登录管理:登录管理负责管理端的登录,管理端的人员(管理员)登录到管理端必须经过登录界面,输入自己的用户名和密码,然后系统判断这个用户的权限,实现其功能。 报失信息管理:失者向失物招领中心提供报失信息,管理者进行报失物品信息添加,输入报失物品名称、特点、丢失地点、时间、报失人信息(姓名、联系方式)、报失时间(以天计)。如果失物被领走,则管理员进行报失物品信息的删除。如果报失信息时间超过60天,则系统自动删除报失信息。失者也可自行对报失物品信息进行添加。 失物信息管理:拾者向失物招领中心提供失物信息,管理员登录到系统对失物信息进行添加,输入失物的名称、特点、捡拾地点、时间、领取状态(置为未领取)、捡拾人信息(姓名及联系方式)、对应的存储地点及存储时间(以天计)。若失物被领取,则管理员对失物信息进行修改将领取状态置为已领取。若存储时间超过30,则系统对这些信息进行删除。 信息公布管理:信息公布管理是对失物招领信息和报失物品信息进行部分公开(既将信息进行输出)和用户可在留言板进行留言。输出信息为失物的名称、捡拾地点、时间、捡拾人姓名、逾期失物的处理方式、报失物品名称、报失人信息(姓名和联系方式)及用户留言。用户同时也可进行普通查询和高级检索。普通查询显示名称相同的物品的信息;高级检索显示名称相同、丢失地点范围之内的物品的信息。 用户管理:用户管理由系统管理员增加或删除用户,编辑用户名、用户密码。修改用户权限,使不同的人(管理员)进入系统主界面使用系统的功能。 ü 登录管理 登录到管理端的所有人都需要通过登录界面进入管理界面。在登录界面输入用户名和密码,系统判断用户名和密码的正确性,然后登录到此系统可进行相应的操作。 下图为它的活动图。 登录管理活动 ü 报失信息管理: 报失信息管理主要完成报失信息的添加、修改和删除等维护功能。 用例描述:报失信息管理; 执行者:管理员; 前置条件:管理员已登录系统; 后置条件:如果信息维护成功,则数据库中的报失信息库随之变化,此时用户可以对报失信息进行查询; 基本路径: a) 进入报失信息管理界面,首先展示已有的报失信息; b) 点击每项信息可以详细浏览报失物品的信息,同时也可对信息进行修改; c) 添加信息时,输入报失物品名称、特点、丢失地点、时间、报失人信息(姓名、联系方式)、报失时间(以天计); d) 可删除选择的信息。 ü 失物信息管理: 失物信息管理主要是完成捡拾物品信息的添加、修改和删除等维护功能。 用例描述:失物信息管理; 执行者:管理员; 前置条件:管理员登录到系统; 后置条件:如果信息维护成功,则数据库中的失物信息库随之变化,此时用户可以对失物信息进行查询; 基本路径: a) 进入失物信息管理界面,首先展示已有的失物信息; b) 点击每项信息可以详细浏览失物的信息,同时也可对信息进行修改; c) 添加信息时,输入失物信息进行添加,输入失物的名称、特点、捡拾地点、时间、领取状态(置为未领取)、捡拾人信息(姓名及联系方式)、对应的存储地点及存储时间(以天计); d) 可删除选择的信息。 ü 信息公布管理: 信息公布管理主要是输出部分失物信息、查询(普通查询和高级检索)、用户留言等功能。部分失物信息信息发布后,用户可通过网络可以看到失物的名称(pick_name)、捡拾地点(pick_place)、时间(pick_time)、捡拾人姓名(name) 用例描述:信息公布管理; 执行者:管理员 前置条件:管理员已登录系统; 后置条件:如果信息发布成功后,则数据库中的信息随之变化,失者可通过网络看到部分失物信息,也可对这些失物进行查询以及在留言板上留言。 基本路径: a) 进入失物管理界面对失物信息进行管理; b) 系统自动调用数据库的信息,显示相关信息; c) 管理员可点击某项信息(包括留言信息)对其进行增删改; d) 提供信息查询功能。 ü 用户管理: 管理员可以进行权限设置,在用户管理界面中对用户进行添加、删除、修改、查询。 用例描述:用户管理; 执行者:管理员; 前置条件:管理员已进入登录系统; 后置条件:如果用户信息维护完成,则用户的相应信息将记录到数据库中。 基本路径: a) 进入用户管理界面,显示目前的系统用户; b) 点击不同的用户,可显示这个用户的信息; c) 可增加用户,也可删除用户。 2.1.3 用户端子功能模块 失者报失键入报失物品名称、特点、丢失地点、时间、报失人信息(姓名、联系方式)等。失者可以看到部分失物信息,可以对其进行查询(普通查询和高级检索)。 用户端的功能主要是报失(报失物品的输入)、信息的查询、留言等。此下为它的用例图。 用户端的功能用例图 用户端用例描述如下: 报失:失者键入报失物品名称、特点、丢失地点、时间、报失人信息(姓名、联系方式)。 查询:普通查询和高级检索,普通查询显示名称相同的物品的信息;高级检索显示名称相同、丢失地点范围之内的物品的信息。 留言:在留言板上输入留言信息。 ü 报失 系统提供失者报失信息栏,对报失信息进行键入。具体描述如下。 用例描述:报失 执行者:失者; 前置条件:失者已进入系统; 后置条件:可对物品进行报失。 基本路径: a) 失者登录到系统,显示部分失物信息、留言信息等; b) 选择报失栏,填写报失信息; ü 查询 查询分为普通查询和高级检索,方便失者对物品信息的查询。具体描述如下。 用例描述:查询; 执行者:失者; 前置条件:失者已进入系统; 后置条件:对部分物品信息进行查询。 基本路径: a) 失者登录到系统,显示部分失物信息、留言信息等; b) 选择查询项目,浏览相关信息。 ü 留言 失者在留言板上进行留言。具体用例描述如下。 用例描述:留言; 执行者:失者; 前置条件:失者已进入系统; 后置条件:在留言板上进行留言。 基本路径: a) 失者登录到系统,显示部分失物信息、留言信息等; b) 打开留言板输入留言信息。 2.2用户业务流程图 2.2.1 总体业务流图 2.3 用户业务数据流图 2.3.1 登录数据流图 2.3.2 查询数据流图 3 数据描述 3.1 数据库描述 本系统采用SQL-Sever数据库设计表,数据库名称为swzl.mdb,根据功能模块的划分及相关信息的分类可建3个表,分别为用户信息表(user_info)、失物招领信息表(pick)、失物报失信息表(lost)、留言信息表(leaveword)。 3.2 数据字典 根据系统功能及页面显示等相关信息的描述,在数据库swzl.mdb中创建如下表: 表 3-1 用户信息表(user_info) 列名 数据类型 长度 说明 User_ID Int —— 主键,自增 Name varchar 40 用户名 Password varchar 25 密码 QQ Int 20 QQ E_mail varchar 40 邮箱 Phone Int 20 电话号码 表3-2 失物招领信息表(pick) 列名 数据类型 长度 说明 User_ID Int —— 主键,自增 pick_name varchar 40 失物的名 pick_trait varchar 25 失物的特点 pick_place varchar 100 捡拾地点 pick_time Datetime 捡拾时间 pname varchar 10 捡拾人姓名 pcontact_way varchar 20 捡拾人联系方式 store_place varchar 10 对应的存储地点 sdate Datetime 上交物品日期 store_time Datetime 存储时间 hand_way varchar 30 处理方式 表3-3 失物报失信息表(lost) 列名 数据类型 长度 说明 User_ID Int —— 主键,自增 lost_name varchar 40 报失物品名称 lost_trait varchar 25 报失物品特点 lost_place varchar 100 丢失地点 lost_time Datetime 丢失时间 lname varchar 10 报失人名称 lcontact_way varchar 20 报失人联系方式 ldate Datetime 报失日期 time Datetime 报失时间 表3-4 留言信息表(leaveword) 列名 数据类型 长度 说明 Whole_ID Int —— 主键,自增 Name varchar 40 用户名 context varchar 25 留言内容 Phone Int 20 电话号码 date Datetime 留言时间 4 用户界面及代码实现 1、 数据库的实现 package com.yxq.toolsbean; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DB { private Connection con = null; private Statement stm=null; /* 通过构造方法加载数据库驱动 */ public DB(){ try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch (Exception e) { e.printStackTrace(); System.out.println("加载数据库驱动失败!"); } } /* 创建数据库连接 */ public void createCon() { try { con = DriverManager.getConnection("jdbc:odbc:swzl"); } catch (Exception e) { e.printStackTrace(); System.out.println("获取数据库连接失败!"); } } /* 获取Statement对象 */ public void getStm(){ createCon(); try { stm=con.createStatement(); } catch (SQLException e) { e.printStackTrace(); System.out.println("创建Statement对象失败!"); } } /** * @功能 对数据库的增加、修改和删除的操作 * @参数 sql为要执行的SQL语句 * @返回值 boolean型值 */ public boolean executeUpdate(String sql) { System.out.println(sql); boolean mark=false; try { getStm(); int iCount = stm.executeUpdate(sql); if(iCount>0) mark=true; else mark=false; } catch (Exception e) { e.printStackTrace(); mark=false; } return mark; } /* 查询数据库 */ public ResultSet executeQuery(String sql) { ResultSet rs=null; try { getStm(); try { rs = stm.executeQuery(sql); } catch (Exception e) { e.printStackTrace(); System.out.println("查询数据库失败!"); } } catch (Exception e) { e.printStackTrace(); } return rs; } /* 关闭数据库的操作 */ public void closed() { if(stm!=null) try { stm.close(); } catch (SQLException e) { e.printStackTrace(); System.out.println("关闭stm对象失败!"); } if(con!=null) try { con.close(); } catch (SQLException e) { e.printStackTrace(); System.out.println("关闭con对象失败!"); } } } 2、 用户登录检测 用户登录窗口 登录检测代码如下: <% var uname,pword uname=request.form("username") pword=request.form("password") set rrs=server.createobject("adodb.recordset") connec = "DBQ=" + server.mappath("database/swzl.mdb") + ";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" sql="select * from user_info where Name='"&uname&"'" rrs.open sql,connec,1,1 if rrs.eof then response.write "<script>alert('用户名错误,请核对你的用户名重新登陆');history.back();</script>" response.end else if rrs("Password")<>pword then response.write "<script>alert('密码错误,请核对你的密码重新登陆,如忘记密码请点击确认在返回页面上点击找回密码');history.back();</script>" response.end end if session("Name")=uname response.write"<script>alert('登录成功');location.href='index.jsp'</script>" end if %> 3、失物查询(research.jsp) 失物信息查询:输入要查询的失物的信息,在数据库中检索,查询相关信息并显示结果。 <% String op = request.getParameter("op"); if(op!=null&&op.equals("search")){ String vpick_name=request.getParameter("pick_name"); String vpick_place=request.getParameter("pick_place"); String vpick_time=request.getParameter("pick_time"); String s_ql="select * from pick where 1=1"; if(!vpick_name.equals("")) s_ql+=" and pick_name like'%"+vpick_name+"%' "; if(!vpick_place.equals("")) s_ql+=" and pick_place like'%"+vpick_place+"%' "; if(!vpick_time.equals("")) s_ql+=" and pick_time like'%"+vpick_time+"%' "; session.setAttribute("s_ql",s_ql); response.sendRedirect("picklist.jsp"); } %> 4、失物查询结果显示(picklist.jsp) 5、失物报失(lost.jsp) 失物报失信息的填写:只需将填入的信息更新到数据库lost表中即可,该处代码与查询时的代码类似,只是这个加个数据库的更新。 6、留言(leaveword.jsp) 用户留言:在网页上留下自己需要找寻的物品的信息或者留下自己捡拾到的物品的信息。实现代码如下: <% request.setCharacterEncoding("GB2312"); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conn = DriverManager.getConnection("jdbc:odbc:swzl","sa",""); Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); ResultSet rs=null; String v_userid=(String)session.getAttribute("User_ID"); int i_totalnum=0; //总记录数 int i_pagenum=5; //一页显示的记录数码 int i_totalpage=0; //总页数 int i_currentpage=1; //当前页 String v_createid=""; String v_subject=""; String v_date1=""; String v_context=""; String v_employeeid=""; String v_date2=""; String v_advice=""; rs=stmt.executeQuery("select count(*) from leaveword "); rs.next(); i_totalnum=rs.getInt(1); i_totalpage=i_totalnum/i_pagenum; if(i_totalnum%i_pagenum!=0) i_totalpage++; String op = request.getParameter("op"); if(op!=null&&op.equals("show")){ String v_currentpage = request.getParameter("currentpage"); i_currentpage=Integer.parseInt(v_currentpage); } if(op!=null&&op.equals("previous")){ String v_currentpage = request.getParameter("currentpage"); i_currentpage=Integer.parseInt(v_currentpage)-1; } if(op!=null&&op.equals("next")){ String s_currentpage = request.getParameter("currentpage"); i_currentpage=Integer.parseInt(v_currentpage)+1; } if(op!=null&&op.equals("firstpage")){ i_currentpage=1; } if(op!=null&&op.equals("lastpage")){ i_currentpage=i_totalpage; } %> <div align="right"> 第<%=i_currentpage%>页&nbsp; <% if(i_currentpage>1){%> <a href="leaveword.jsp?op=firstpage">首页</a> <% }else{%>首页<%}%>&nbsp; <% if(i_currentpage>1){%> <a href="leaveword.jsp?op=previous&currentpage=<%=i_currentpage%>">上一页</a> <% }else{%>上一页<%}%>&nbsp; <% if(i_currentpage!=i_totalpage){%> <a href="leaveword.jsp?op=next&currentpage=<%=i_currentpage%>">下一页</a> <% }else{%>下一页<%}%>&nbsp; <% if(i_currentpage!=i_totalpage){%> <a href="leaveword.jsp?op=lastpage">末页</a> <% }else{%>末页<%}%> </div> <% rs=stmt.executeQuery("select * from notes order by id desc "); if(i_currentpage>i_totalpage) i_currentpage=i_totalpage; int i_position=(i_currentpage-1)*i_pagenum; if(i_position==0) rs.beforeFirst(); else rs.absolute(i_position); for(int i=0;i<i_pagenum;i++){ if(!rs.isLast()){ rs.next(); v_createid=(rs.getString("userid")!=null?rs.getString("userid"):""); v_date1=(rs.getString("date")!=null?rs.getString("date").substring(0,10):""); v_context=(rs.getString("context")!=null?rs.getString("context"):""); v_advice=(rs.getString("advice")!=null?rs.getString("advice"):"[请等待工作人员处理]"); %> 将留言写入数据库 代码如下: <% request.setCharacterEncoding("GB2312"); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conn = DriverManager.getConnection("jdbc:odbc:swzl","sa",""); Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); ResultSet rs=null; String v_userid=request.getParameter("User_ID"); String v_context=request.getParameter("context"); String s_sql="insert into notes(User_ID,date,context) "+ "values('"+s_userid+"',getdate(),'"+s_context+"')" ; stmt.executeUpdate(s_sql); response.sendRedirect("leaveword.jsp"); %> 5、参考文献 [1] 郭珍, 王国辉. JSP程序设计教程. 北京:人民邮电出版社. 2008 [2] 刘晓华, 张健. JSP应用开发详解. 北京:电子工业出版社. 2007 [3] 耿祥义. JSP基础教程. 北京:清华大学出版社. 2007 [4] 樊月华、刘雪涛、刘洪发,web技术应用基础,清华大学出版社,2010 [5] 申吉红、廖雪峰、余健,jsp课程设计案例精编,清华大学出版社,2007 [6] 刘晓华、张健,JSP应用开发详解,电子工业出版社,2007 [7] Vivek Chopra,Jon Eaves,Rupert Jones,JSP高级程序设计,张文静、林琪译,人民邮电出版社,2006 [8] 陆惠恩,软件工程实践教程,机械工业出版社,2006
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服