联系方式: 微信:biyebang QQ: 629001810
系统设计 需求分析是在于要弄清用户对开发的数据库应用系统的确切要求。本项目WML信息查询及后端发布系统,它的主要功能就是把WEB与WAP的信息共享发布及查询。用户可以通过WAP或WEB中的任何一种方式实现信息的交互。而后端发布系统的管理模块则只需要在WEB上做就可以了。而WAP模块要根据无线网络的一些特点,整个模块应该尽量达到界面简洁,信息冗余量小的特点。根据系统分析,后端发布系统的要求如下。 1) WEB与WAP模块均有以下功能:个人注册,登陆,发布信息,查询信息等基本功能。 2) 用户还可以对信息进行更新,删除等一些基本操作。 3) WEB模块还能对客户信息的进行管理,能够对客户用户管理,用户的密码修改功能。 4) WEB模块对发布信息的管理,该功能可以对发布信息进行增加、删除和修改,并且可以对热点信息进行推荐操作,而WAP模块也可以浏览到这些热点推荐信息。 5) WEB模块对公告信息的管理,能够将最新的站内信息发布到公告栏中。 系统的设计原则如下: 1) 方便性原则: 用户简洁界面友好,操作使用方便简单,具有高效的数据处理能力。 2) 兼容性原则: 对于所选软硬件系统及平台,能很好地适应开发和使用的需要。 3) 规范性原则: 软件设计过程严格按照“信息系统开发方法”的原则,分析阶段、设计阶段和实现阶段。 4) 先进性原则: 采用目前先进的计算机软硬件技术,使系统具有较高的技术水平和较长的生命周期,便于系统的维护。 1) 普通用户可以注册,登陆,查询和发布信息。此功能为在WEB和WAP模块均可以实现。 2) 系统管理员可以通过WEB 模块对整个系统进行管理,可以对信息进行更新,删除,添加及推荐等操作。 3) 系统管理员还可以通过WEB模块对整个系统的用户进行各种管理,比如添加,删除用户等。 4) 普通用户可以对自己的信息进行更新和删除,但是WAP模块只能对一些重要信息进行操作。 下面是后端发布系统的系统设计层次图,如下图1所示: WAP用户进入WAP主页面后,输入用户名和密码以后点击提交后,系统将根据用户输入的用户名和密码判断该用户是否为合法用户;如果用户输入的用户名和密码正确,系统将根据用户所选择的功能进行业务处理;所有合法用户在处理完业务后,都需要进行注销工作,以免被他人窃取信息。注销后,将返回到注销前的页面或网站首页。 系统流程图如图2所示: 数据库设计是系统设计中非常重要的一个环节,因为数据库设计就像在建设高楼大厦的根基一样,如果设计不好,在后来的系统维护,变更和功能扩充时,甚至于在系统开发过程中,将会引起比较大的问题,有时大量的工作将会重新进行。因此,设计出合理的数据库成为本系统设计一个十分关键的步骤。 用户的需求具体体现在各种信息的提供,保存,更新和查询,这就要求数据库结构能充分满足各类信息的输入和输出。收集基本数据,数据结构以及数据处理的流程而制作一份详细的数据库需求分析表,为合理的数据库结构设计打下坚实的基础。 根据视频点播系统的一般要求,通过对整个系统运行过程和数据流程分析,得出本系统的实体表:用户信息表:yonghu、酒店信息表:xinxifabu、景区信息表:fengjing、酒店推荐信息表:htj、景区推荐信息表:ftj、公告管理表:xianshi。 根据视频点播系统的一般要求,通过对整个系统运行过程和数据流程分析,设计出实际的数据库实体,以及他们之间的关系,为后边的数据库逻辑结构设计打基础。这些实体包括各种具体信息,通过相互之间的作用形成数据的流动。 经过前面的数据库分析与设计得到数据库的逻辑结构。本系统使用Microsoft SQLServer 2000作为数据库开发工具;创建名为hiis的数据库根据各种功能的实现以及考虑到将来系统功能上的扩展,设计如下数据项和数据结构: 表1 用户信息表:yonghu 简称 字段名 类型 长度 允许空 备注 用户ID id int 4 not null PK 用户名 username varchar 50 not null 密码 userpassword char 20 not null 级别 jibie varchar 10 not null 邮箱 email char 10 真实姓名 xinming varchar 50 电话 phone char 20 表2 酒店信息表:xinxifabu 简称 字段名 类型 长度 允许空 备注 酒店ID id int 4 not null PK 酒店名 hotelname varchar 50 not null 电话 phone varchar 50 not null 一般房间 yiban varchar 50 not null 豪华房间 gaoji varchar 50 高级房间 haohua varchar 50 星级 grade varchar 50 省份 province varchar 50 not null 城市 city varchar 50 not null 地址 address varchar 50 not null 简介 remark varchar 200 用户名 username varchar 50 not null 点击率 show int 4 not null 表名 tablename int 4 not null 表3 景区信息表:fengjing 简称 字段名 类型 长度 允许空 备注 景区ID fgid int 4 not null PK 景区名 fgname varchar 50 not null 电话 fgphone varchar 50 not null 价格 fgjiage varchar 50 not null 简介 fgremark varchar 200 not null 省份 province char 10 not null 城市 city char 10 not null 地址 fgaddress varchar 50 用户名 username varchar 50 not null 点击率 show int 4 not null 表名 tablename int 4 not null 表4 酒店信息推荐表:htj 简称 字段名 类型 长度 允许空 备注 推荐区ID tjid int 4 not null PK 酒店名 hotelname varchar 50 not null 电话 phone varchar 50 not null 一般房间 yiban varchar 50 not null 高级房间 gaoji varchar 50 豪华房间 haohua varchar 50 星级 grade varchar 50 not null 省份 province varchar 50 not null 城市 city varchar 50 not null 地址 address varchar 50 简介 remark varchar 200 用户名 username varchar 50 not null 表5 景区信息推荐表:ftj 简称 字段名 类型 长度 允许空 备注 推荐区ID fid int 4 not null PK 景区名 fgname varchar 50 not null 电话 fgphone varchar 50 not null 价格 fgjiage varchar 50 not null 简介 fgremark char 200 省份 province char 10 not null 城市 city char 10 not null 地址 fgaddress varchar 50 用户名 username varchar 50 not null 表6公告信息管理表:xianshi 简称 字段名 类型 长度 允许空 备注 公告ID id int 4 not null PK 公告名 gonggao varchar 100 not null 系统实现 本系统采用配置连接池的方式建立同数据库的连接,其中数据库连接池的部分代码如下: package connection; import java.io.Serializable; import java.sql.*; public class DbConn implementsjava.io.Serializable //串行化单个连接类 { private Connection conn = null;//数据库连接对象conn private boolean inuse = false; //构造函数 public DbConn(){} public DbConn(Connection conn){ if (conn!=null) this.conn = conn; } //获取数据库连接对象 public Connection getConnection(){ return conn; } //设置数据库连接对象 public void setConnection(Connection conn){ this.conn = conn; } //设置连接的使用状态 public void setInuse(boolean inuse){ this.inuse = inuse; } //获取连接的使用状态 public boolean getInuse(){return inuse;} //关闭连接 public void close(){ try{conn.close();} catch (SQLExceptionsqle){System.err.println(sqle.getMessage());}}}} Ø 功能简介:系统的所有用户都能使用“注册”模块的功能。“注册”模块提供WAP用户注册功能。因为是WAP页面,考虑到无线网络的带宽相对较窄,所以页面不应该用大量图片或文字,应尽量简洁方便,注册信息也尽可能简洁。 Ø 实现方法:当用户输入注册信息后,系统将注册用户名同数据库表中的值进行比较,通过执行数据库的查询语句,如果注册用户名已经存在则不能注册,反之把注册信息插入数据库,注册成功。 注册页面的代码如下: <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <%response.setContentType("text/vnd.wap.wml"); %> <wml> <cardid="register" title="Register Screen"> <palign="center"> <br/> User Name:<input name="RegisterName" type="text"emptyok="false" value=""/> <br/> Password:<input name="RegisterPwd" type="password"emptyok="false" value=""/> <br/> True Name:<input name=" TrueName" type="text"emptyok="false" value=""/> <br/> Email:<input name=" Email " type="text" emptyok="true"value=""/> <br/> Phone:<input name=" Phone " type="text" emptyok="true"value=""/> </p> <dotype="prev" label="Next"> <gohref="./chklogin.jsp" method="get"> <postfieldname="username" value="$( RegisterName)"/> <postfieldname="password" value="$( RegisterPwd)"/> <postfieldname="truename" value="$( TrueName)"/> <postfieldname="email" value="$( Email)"/> <postfieldname="phone" value="$( Phone)"/> </go> </do> </card> </wml> 注册验证的部分代码如下: <% String username=newString(request.getParameter("RegisterName ").getBytes("ISO8859_1"),"GBK"); String password=newString(request.getParameter("RegisterPwd ").getBytes("ISO8859_1"),"GBK"); String email=newString(request.getParameter("Email ").getBytes("ISO8859_1"),"GBK"); String xinming=newString(request.getParameter("TrueName ").getBytes("ISO8859_1"),"GBK"); String phone=newString(request.getParameter("Phone ").getBytes("ISO8859_1"),"GBK"); int rank=0; //设置新用户为普通级别的用户 boolean valid=true; //判断是否注册合法 String err=""; //注册不合法的提示信息 //加载数据库驱动并用连接池连结数据库 String sql=""; Connection con = null; try{ if (pool.getDriver()==null){ pool.setDriver("com.microsoft.jdbc.sqlserver.SQLServerDriver");//加载驱动 pool.setURL("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=HIIS");//设置数据源 pool.setUsername("sa"); pool.setPassword("sa"); pool.setSize(5); //设置最大连接数 pool.initializePool(); //初始化连接池 } con = pool.getConnection(); //获取连接 Statement statement = con.createStatement(); sql="select ID from yonghu whereName='"+username+"'"; ResultSet rs=statement.executeQuery(sql);//执行查询操作 if (rs.next()){ //如果相同用户名存在 err+="<h3>该用户名已经存在,请更换用户名!</h3>"; valid=false; }else{ sql="insert into yonghu (username,userpassword,rank,email,xinming,phone)values ('"+username+"','"+password+"','"+jibie+"','"+email+"','"+xinming+"','"+phone+"')"; statement.executeUpdate(sql); } //释放数据库连结 pool.releaseConnection(con); }catch (Exception e){ out.println(e.getMessage()); } //根据注册结果判断 if(valid) { %> <h3>Congratulate You!<%=username%></h3> <h3>You are success,please check yourregiste information:</h3> <p></p> You have already the legality user,You can do: <a href="index.jsp">login</a> <% } else{ %> <%=err%> <ahref="javascript:history.back();">back</a> <% } %> Ø 功能简介:本项目的WAP模块不支持匿名浏览,所以所有的WAP用户必须先要登陆才能进行其他的业务操作。 Ø 实现方法:登陆模块采用与SQL数据库连接通过比较用户输入的信息与数据库中的数据判断用户的是否为合法用户。登录身份分为:查询用户及发布用户。同一用户名不能重复登陆,当用户在处理完业务后,可以进行注销操作。 登录页面如图4所示 登陆验证的部分代码如下: Statement statement =con.createStatement(); sql="select * from yonghu where username='"+username+"'and userpassword='"+password+"' andjibie='"+jibie+"'";//查询是否有此用户 ResultSet rs =statement.executeQuery(sql); if (rs.next()){ success=true; }else{ success=false; } pool.releaseConnection(con); }catch (Exception e){ out.println(success); out.println(e.getMessage()); } Vector UserList=(Vector)session.getAttribute("userlist"); if(UserList==null){ UserList=new Vector(); } if(success){ session.setAttribute("username",username); UserList.addElement(username); for(int i=0;i<UserList.size()-1;i++) { if(username.equals(UserList.elementAt(i).toString())) { UserList.removeElement(username); valid=false; %> </span> <h3><spanclass="STYLE4"><%=username%><spanclass="style2">该用户已在线上,请不要重复登陆</span></span></h3> <span> <%} } if(valid) { session.setAttribute("userlist",UserList); session.setAttribute("username",username); session.setAttribute("jibie",jibie); if(jibie.compareTo("2")==0) response.sendRedirect("xiugai.jsp?username="+String.valueOf(username)); elseif(jibie.compareTo("1")==0) response.sendRedirect("index.jsp?username="+String.valueOf(username)); else response.sendRedirect("guanli.jsp?username="+String.valueOf(username)); } }else{%> Ø 功能简介:WAP系统的登录用户都能使用“查询”模块的功能。“查询”模块提供酒店景区等信息的查询。 Ø 实现方法:当用户输入搜索关键字后,系统将关键字同数据库表中的值进行比较,通过执行数据库的查询语句,返回符合关键字的所有数据。 查询及查询结果页面如图5所示: 查询模块部分代码如下: boolean success=false; String(request.getParameter("jwt_province").getBytes("ISO8859_1"),"GBK"); String city=newString(request.getParameter("jwt_city").getBytes("ISO8859_1"),"GBK"); String fenlei=new String(request.getParameter("fenlei").getBytes("ISO8859_1"),"GBK"); String sql=""; Connection con = null; try{ if (pool.getDriver()==null){ pool.setDriver("com.microsoft.jdbc.sqlserver.SQLServerDriver"); pool.setURL("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=HIIS"); pool.setUsername("sa"); pool.setPassword("sa"); pool.setSize(5); pool.initializePool(); } con = pool.getConnection(); Statement statement = con.createStatement(); sql="select * from xinxifabu where province='"+province+"'and city='"+city+"' and tablename='"+fenlei+"'"; Stringsql1="select * from fengjing where province='"+province+"' andcity='"+city+"' and tablename='"+fenlei+"'"; ResultSet rs =statement.executeQuery(sql); Ø 功能简介:WAP系统可以对WEB发布系统的信息进行查询及更新,WEB发布系统也可以对WAP系统的信息进行查询及更新。中间件系统把两个系统的信息连接从而实现共享信息。 Ø 实现方法:WAP系统只是整个系统的一部分,整个系统通过数据库连接池共用一个数据库,所以WAP系统可以对数据库中的一些表进行操作,而这些表是整个中间件系统所共享的。能过对数据库的共享从而达到与发布系统的信息共享。 源文件
3.1 系统需求分析
3.2 系统设计原则
3.3 系统功能介绍
3.4 系统流程图
3.5 数据库设计
4.1 系统数据库的连接
4.2 系统功能模块设计与实现
4.2.1 注册模块的设计
注册页面如图3所示:4.2.2 登陆模块的设计
4.2.3 查询模块的设计
4.2.4与发布系统的连接模块的设计
版权所有© 帮我毕业网 并保留所有权利