1、精品文档就在这里 -------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有-------------- -------------------------------------------------------------------------------------------------------------------------------------------- 2.2.3 网络平台与软件平台选择 综合考虑系统的易用性、界面友好性、安全性及价格性能比,本系统的网络平台选用Windows 2000;用户端选用 Windo
2、ws 98; 2.2.4 系统模式的设计 在系统分析中,本系统是基于web技术的酒店前台管理信息系统,其模式的选择采用B/S模式,其优点是:客户端安装简单,简单易用,安全性高,效率高。该模式由三层结构组成如表示层、功能层和数据层,其结构图如下: 图2-10 系统模式结构图 2.2.5 数据库结构的具体设计 A 数据库软件选择 Oracle9i软件,其功能非常强大,实现复杂,维护困难,考虑员工的技能,不易采用该软件,而由微软公司研发的SQL 2000数据库管理软件,具有良好的数据管理功能,面向多用户,事务处理功能,界面的友好性,易安装性等特点,成为
3、选择的对象。 B 数据库表的具体框架 根据表间各关系,转换为物理结构的数据表,各表结构如下: 客房预定表(表2-2) 编号 字段名 主码 外码 类型 长度 小数位数 索引 字段完整性 1 凭证号码 T C 10 主 非空 2 工作单位 C 20 3 房间号 T C 10 非空 4 日期 D 8 5 姓名 C 12 非空 6 联系电话 C 20 7 预订日期 D 8 8 预住天数
4、 Integer 4 9 押金 Float 8 2 10 预住人数 Integer 4 11 备注 C 50 12 预订服务员 C 12 13 时间 C 12 登记表(表2-3) 编号 字段名 主码 外码 类型 长度 小数位数 索引 字段完整性 1 凭证号码 T C 10 主 非空 2 姓名 C 12 非空 3 性别 C 2
5、4 年龄 Integer 4 5 证件名称 C 12 非空 6 证件号码 C 20 非空 7 工作单位 C 20 8 姓名1 C 12 9 性别1 C 2 10 年龄1 Integer 4 11 证件名称1 C 12 12 证件号码1 C 20 13 工作单位1 C 20 14 房间号 T C 10
6、非空 15 住宿日期 D 8 16 预住天数 Integer 4 17 退宿日期 D 8 18 押金 Float 8 2 非空 19 备注 C 50 20 日期 D 8 21 时间 C 12 22 来宿服务员 C 12 23 是否结账 C 1 退宿表(表2-4) 编号 字段名 主码 外码 类型 长度 小
7、数位数 索引 字段完整性 1 凭证号码 T C 20 主 非空 2 姓名 C 12 非空 3 房间号 T C 10 非空 4 住宿日期 D 8 5 住宿时间 C 12 6 实际宿费 Float 8 2 7 结款方式 C 6 8 折扣 Integer 4 9 应收宿费 Float 8 2 10 金额总计 Float 8 2 11
8、押金 Integer 4 12 住宿天数 Integer 4 13 退还宿费 Float 8 2 14 酒水费 Float 8 2 15 电话费 Float 8 2 16 赔偿费 Float 8 2 17 其他费用 Float 8 2 18 退宿日期 D 8 19 退宿时间 C 12 20 备注 C 50 21 操作员
9、 C 12 挂账信息表(表2-5) 编号 字段名 主码 外码 类型 长度 小数位数 索引 字段完整性 1 编号 T 2 凭证号码 T C 20 3 日期 D 8 4 单位编号 C 30 5 摘要 C 50 6 住宿金额 Float 8 2 7 欠款金额 Float 8 2 8 还款金额 Float 8 2 9 金额累计
10、Float 8 2 10 姓名 C 12 11 证件名称 C 12 12 证件号码 C 20 13 时间 C 12 14 是否结清 C 2 客房信息表(表2-6) 编号 字段名 主码 外码 类型 长度 小数位数 索引 字段完整性 1 房间号 T C 12 主 非空 2 类型编号 T Integer 4 候选 3 房态 C 12 4 配置
11、 C 30 5 使用设置 C 30 6 营业时间 D 8 7 备注 C 50 客房类型表(表2-7) 编号 字段名 主码 外码 类型 长度 小数位数 索引 字段完整性 1 类型编号 T Integer 4 主 非空 2 客房类型 C 12 非空 3 价格 Float 8 2 非空 4 备注 C 50 5 6
12、 7 挂账单位信息表(表2-8) 编号 字段名 主码 外码 类型 长度 小数位数 索引 字段完整性 1 单位编号 T C 12 主 非空 2 单位全称 C 30 非空 3 简称 C 20 4 地址 C 50 5 邮政编码 C 20 6 传真 C 20 7 电话 C 20 8 联系人 C 12
13、 9 联系人电话 C 20 员工登记表(表2-9) 编号 字段名 主码 外码 类型 长度 小数位数 索引 字段完整性 1 员工编号 T C 12 主 非空 2 姓名 C 12 3 性别 C 2 4 密码 C 10 5 职务 C 12 6 聘用日期 D 8 7 薪金 Float 8 2 8 备注 C 50 C 数据表之间完整性
14、约束 表(2-10) 父表 主码 子表 外码 修改 删除 插入 客房 房间号 预订登记单 房间号 级联 级联 限制 客房 房间号 入住单 房间号 级联 级联 限制 客房 房间号 退宿单 房间号 级联 级联 限制 客房 房间号 挂账单 房间号 级联 级联 限制 客房类型 类型编号 客房 类型编号 级联 级联 限制 挂账单位 单位编号 挂账单 单位编号 级联 级联 限制 2.2.6 动态网页技术的分析 三种流行语言JSP、ASP、PHP的比较 表(2-11) 内容 JSP ASP
15、 PHP 运行速度 快 较快 较快 运行耗损 较小 较大 较大 难易程度 容易掌握 简单 简单 运行平台 绝大部分平台均可 Windows平台 Windows/UNIX平台 扩展性 好 较好 较差 安全性 好 较差 好 函数支持 多 较少 多 数据库支持 多 多 多 厂商支持 多 较少 较多 对XML的支持 支持 不支持 支持 对组件的支持 支持 支持 不支持 对分布式处理的支持 支持 支持 不支持 应用程度 较广 较广 较广 JSP是由Sun微系统公司于1999年6月推出的一项技术
16、是基于JavaServlet以及整个Java体系的Web开发技术,利用这一技术可以建立先进、安全和跨平台的动态网站。JSP技术在多个方面加速了动态Web页面的开发。它主要有如下几个方面的特点: (1)将内容的生成和显示进行分离 使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者脚本来生成页面上的动态内容(内容是根据请求来变化的,例如请求帐号信息或者一本书的价格)。生成内容的代码被封装在Servlet和JavaBean组件中,并且结合在脚本中,所有的脚本在服务器端运行。 JSP引擎解释JSP标识和脚本程序,生成所请求的内容(例如,通
17、过访问JavaBean组件,使用JDBC技术访问数据库,或者包含文件),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性。 (2)强调组件的重用 绝大多数JSP页面依赖于可重用的,跨平台的组件(JavaBean或者Enterprise JavaBean组件)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行组件,或者使得这些组件为更多的使用者或者客户团体所使用。此方法加速了总体开发进程。 (3)采用标识简化页面开发 Web页面人开发员不都是熟悉脚本语言的编程人员。JSP技术封装了许多功
18、能:访问和实例化JavaBean组件、设置和检索组件的属性、下载Applet以及执行用其他方法更难于编码和耗时的功能。 JSP技术可以通过开发定制的标识库进行扩展。第三方开发人员和其他人员可以为常用功能创建自己的标识库。这使的Web页面开发人员能够使用熟悉的工具和如同标识一样执行特定功能的组件来工作。 (4)健壮的存储管理和安全性 JSP页面的内置脚本语言是基于JAVA编程语言的,而且所有的JSP页面都被编译成为Java Servlet,JSP页面具有Java技术的所有优点,包括健壮的存储管理和安全性。 (5)一次编写,随处运行 作为Java平台的一部分,JSP拥有Java编程语言“
19、一次编写,随处运行”的特点。 从上表可以总结出,JSP动态网页技术语言具有如下优点: (1)开放的技术:JSP技术基于平台和服务器的相互独立,技术支持来自广泛的、专门的、各种工具包,有服务器的组件和数据库产品开发商提供。相比之下,ASP技术主要依赖MICROSOFT支持。 (2)平台和服务器的独立性:JSP编写的代码可运行在任何符合JAVA语法结构的环境中。这样JSP就能够运行在多种WEB服务器上并支持来自多家开发商提供的各种工具包。 (3)开放的开发过程,开放的源码:自1995年以来,SUN用开放过程方法同国际JAVA组织合作开发和修改JAVA技术和规范。 (4)JSP标记可扩充性
20、JSP技术能够是开发者扩展JSP标记,充分利用与XML兼容的标记技术强大的功能,大大减少对脚本语言的依赖。 (5)JSP跨平台的可重用性:JSP组件(EJB,JavaBean或定制的JSP标记)都是跨平台可重用的。 考虑其优点,结合未来的发展趋势,本系统采用JSP作为动态网页的开发语言,相应的选用JAVASCRIPT作为其脚本语言。 2.2.7 JSP引擎的选择 现在流行的JSP引擎主要有Tomcat、JSWDK、Resin、JRun、Servletexec、Websphere、Weblogic、GNUJSP,Enhydra,与几种引擎相比,Tomcat有如下特点: (1) Tom
21、cat是apache上实现jsp+javabean环境的接口程序,集成了jsp和servlet,能够对servlet和jsp规范进行正式参考实现。 (2) 大多数厂商支持Tomcat,它是在Apache Jakarta项目中开发的一个开源产品,目前得到广泛的运用。 (3) Tomcat的容错性比weblogic强。 (4) Tomcat是免费的,而weblogic是收费的。 (5) Tomcat受到Sun公司的全力支持,并由非常强大的开发组织apache来进行发展,JSWDK只是一个简化的服务器平台,性能和稳定程度都比较有限,而且实际上SUN并不许可将它作为internet上的商业平台
22、 (6) Tomcat服务器具有Tomcat管理和控制平台、安全域管理和Tomcat阀等功能。 (7) 易于维护,适合中小型企业。 基于上述特点,本系统运行的服务器采用Tomcat 5.0引擎。 2.2.8 数据接口实现技术的选择 基于JSP与后台数据库连接的数据库驱动程序有四种类型,分别为: (1)JDBC-ODBC桥 (2)部分Java、部分本机驱动程序; (3)中间数据访问服务器 (4)纯Java驱动程序 以下对各种驱动程序作分析: (1)JDBC-ODBC桥 JDBC-ODBC桥驱动程序为Java应用程序提供了一种把JDBC调用映射为ODBC调用的方法。因
23、此,需要在客户端机器上安装一个ODBC驱动。这种方式的缺点是效率低下。 (2)部分Java、部分本机驱动程序 这种驱动程序使用Java实现与数据库厂商专有API的混合形式来提供数据访问,比JDBC-ODBC桥驱动程序实现的方式要快。JDBC驱动将标准的JDBC调用转变为对数据库API的本地调用,该类型的驱动程序是本地部分Java技术性能的本机API驱动程序。 (3)中间数据访问服务器 这种方式使用一个中间数据访问服务器,通过这种服务器,可以把Java客户端连接到多个数据库服务器上。这种方式不需要客户端的数据库驱动,而是使用网络-服务器中层来访问一个数据库。该类型的驱动程序是网路协议完全
24、Java技术性能的驱动程序,它为Java应用程序提供一种进行JDBC调用的机制。 (4)纯Java驱动程序 这种方式使用厂商专有的网络协议把JDBC API调用转换成直接的网络调用,这种方式的本质是使用套接子(Socket)进行编程。 对于本系统,考虑其易用性,执行效率以及编程的难度,采用第二种即部分Java、部分本机驱动程序作为其驱动程序。其结构图如图2-11: 图2-11 2.2.9 系统物理实现体系结构 本系统使用JSP技术作为表现手段,服务器采用Tomcat 5.0作为JSP引擎,系统业务逻辑由JavaBean 组件完成,使用JDBC驱动
25、程序和厂商专有API访问数据库,采用SQL 2000数据库作为数据库服务器。系统采用三层结构,在客户端用户通过浏览器完成数据下载与模拟操作,浏览器端的表现逻辑通过JSP网页完成。而系统内部复杂的业务逻辑主要通过JavaBean的组件(Component)实现, JavaBean组件在WWW服务器上运行,通过JSP返回到客户浏览器。通过表现逻辑与业务逻辑的分离,使网页内容简洁,系统的可维护性和可扩充性增强。在服务器端,系统使用JDBC中间件访问数据库,数据库服务器定义了本系统所需要的事务逻辑和数据逻辑。如图2-12: 图2-12 2.2.10 系统物理
26、实现总体模块设计 该部分分析设计主要解决用JSP开发WEB系统所遵循的规律,有利模块化设计,条理和结构清晰,增加系统的安全性。经分析该系统由三大模块实现,包括登陆模块,用户模块和管理模块。如图2-13: 图2-13 系统整体分分三大模块:登录模块,用户模块和管理模块。 系统登录模块主要完成整个系统登录,从而传递登录参数到用户模块和管理模块。 用户模块主要面向内部前台员工完成整个系统的一些信息初始化以及日常业务的处理,包括调房登记,入住登记,退宿登记,预订登记,挂账处理和查询等子功能。 管理模块主要完成系统对于用户信息和系统敏感信息的管理,保证
27、系统的安全,包括管理员管理,员工管理,客房类型管理等子功能。 2.2.11 系统链接结构设计 系统的链接结构是指页面之间相互链接的拓扑结构。它建立在目录结构基础之上,但可以跨越目录。具体来说:每个页面都是一个固定点,链接则是在两个固定点之间的连线。一个点可以和一个点连接,也可以和多个点连接。更重要的是,这些点并不是分布在一个平面上,而是存在于一个立体的空间中。一般基于网络系统的链接结构的目的在于:用最少的链接,使得浏览最有效率。因此在本系统中,采用了一个树型菜单实现基本连接所有功能。 一般的,建立基于网络的管理系统链接结构有两种基本方式: 一是树状链接结构(一对一)。类似DOS的目
28、录结构,首页链接指向一级页面,一级页面链接指向二级页面。这样的结构优点是条理清晰,访问者明确知道自己在什么位置,不会"迷"路。缺点是浏览效率低,一个栏目下的子页面到另一个栏目下的子页面,必须绕经首页。 二是星状链接结构(一对多)。类似网络服务器的链接,每个页面相互之间都建立有链接。这种链接结构的优点是浏览方便,随时可以到达某个页面。缺点是链接太多,容易使浏览者迷路,搞不清自己在什么位置,看了多少内容。 在本系统的链接设计中,将两种连接方式结合使用,采用树型菜单和框架模式,用户模块和管理模块实现各子功能可通过树型菜单查找,而想从用户模块跳转到管理模块可通过框架解决。我们希望浏览者以及管理者可
29、以随意到达他所需要操作的页面,又可以知道他处于整个系统的什么位置。详细系统链接如图2-14: 图2-14 系统链接图 2.2.12 系统目录结构 根据系统各栏目及功能分类,确定系统目录结构,这样方便管理查找,也方便管理及遍历。整个系统的目录结构如图2-15: 图2-15 系统目录结构图 Empl目录存放用户模块所涉及各子功能的文件; img目录存所有用到的图片; manager目录存放管理模块所涉及各子功能的文件; web-inf目录存站点的一些采用的面向对
30、象类文件;其中bean目录存站点用到的bean文件,存放用户登录信息;db目录存站点数据库连接的类文件;util目录存站点对数据库操作的类文件和中文处理类文件; db目录存站点用到的数据库文件; lib目录存站点数据库连接的驱动程序; src目录存站点全部类文件的源代码; work目录存站点运行时产生的servlet类文件 3 系统实现 3.1 人员培训 (1)让员工了了解系统各功能,包括输入和输出。 (2)保密性培训,包括系统进入的密码以及对敏感信息的保密。 (3)数据库表结构的建立与数据输入: 3.2 数据库表结构的建立与数据输入 3.2.1 数据库表结构的
31、建立 下面列举生成数据库表Transact-SQL 源程序: 预订表: CREATE TABLE [tkfyd] ( [编号] [char] (5) COLLATE Chinese_PRC_CI_AS NOT NULL , [姓名] [char] (20) COLLATE Chinese_PRC_CI_AS NULL , [证件名称] [char] (20) COLLATE Chinese_PRC_CI_AS NULL , [证件号码] [char] (20) COLLATE Chinese_PRC_CI_AS NULL , [联系电话] [char] (20) CO
32、LLATE Chinese_PRC_CI_AS NULL , [详细地址] [char] (50) COLLATE Chinese_PRC_CI_AS NULL , [工作单位] [char] (50) COLLATE Chinese_PRC_CI_AS NULL , [房间号] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [预住日期] [smalldatetime] NULL , [预住天数] [tinyint] NULL , [预付金额] [float] NULL , [备注] [char] (50) COLLATE
33、 Chinese_PRC_CI_AS NULL , [日期] [smalldatetime] NULL , [时间] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [操作员] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , CONSTRAINT [PK_tkfyd] PRIMARY KEY CLUSTERED ( [编号] ) ON [PRIMARY] ) ON [PRIMARY] 入住登记表: CREATE TABLE [tdjb] ( [凭证号码] [c
34、har] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [姓名] [char] (12) COLLATE Chinese_PRC_CI_AS NOT NULL , [性别] [char] (2) COLLATE Chinese_PRC_CI_AS NULL , [年龄] [int] NULL , [证件名称] [char] (12) COLLATE Chinese_PRC_CI_AS NULL , [证件号码] [char] (20) COLLATE Chinese_PRC_CI_AS NULL , [工作单位] [char] (3
35、0) COLLATE Chinese_PRC_CI_AS NULL , [姓名1] [char] (12) COLLATE Chinese_PRC_CI_AS NULL , [性别1] [char] (2) COLLATE Chinese_PRC_CI_AS NULL , [年龄1] [int] NULL , [证件名称1] [char] (12) COLLATE Chinese_PRC_CI_AS NULL , [证件号码1] [char] (20) COLLATE Chinese_PRC_CI_AS NULL , [工作单位1] [char] (30) COLLAT
36、E Chinese_PRC_CI_AS NULL , [房间号] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [住宿日期] [datetime] NULL , [预住天数] [int] NULL , [退宿日期] [datetime] NULL , [押金] [float] NULL , [备注] [char] (50) COLLATE Chinese_PRC_CI_AS NULL , [日期] [datetime] NULL , [时间] [char] (20) COLLATE Chinese_PRC_CI_AS
37、NULL , [来宿服务员] [char] (12) COLLATE Chinese_PRC_CI_AS NULL , [是否结账] [char] (1) COLLATE Chinese_PRC_CI_AS NULL , CONSTRAINT [PK_tdjb] PRIMARY KEY CLUSTERED ( [凭证号码] ) ON [PRIMARY] ) ON [PRIMARY] 退宿登记表: CREATE TABLE [ttfd] ( [凭证号码] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
38、 [姓名] [char] (20) COLLATE Chinese_PRC_CI_AS NULL , [证件名称] [char] (20) COLLATE Chinese_PRC_CI_AS NULL , [证件号码] [char] (20) COLLATE Chinese_PRC_CI_AS NULL , [详细地址] [char] (50) COLLATE Chinese_PRC_CI_AS NULL , [工作单位] [char] (50) COLLATE Chinese_PRC_CI_AS NULL , [住宿原由] [char] (50) COLLATE Chi
39、nese_PRC_CI_AS NULL , [房间号] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [住宿日期] [datetime] NULL , [住宿时间] [char] (20) COLLATE Chinese_PRC_CI_AS NULL , [住宿天数] [int] NULL , [实际宿费] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [结款方式] [char] (16) COLLATE Chinese_PRC_CI_AS NULL , [折扣] [char]
40、10) COLLATE Chinese_PRC_CI_AS NULL , [应收宿费] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [杂费] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [电话费] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [会议费] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [存车费] [char] (10) COLLATE Chinese_PRC_CI_AS NULL
41、 , [赔偿费] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [金额总计] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [预收宿费] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [退还宿费] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [退还日期] [datetime] NULL , [退房时间] [datetime] NULL , [备注] [char] (50) COLLATE C
42、hinese_PRC_CI_AS NULL , [联系电话] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [操作员] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , CONSTRAINT [PK_ttfd] PRIMARY KEY CLUSTERED ( [凭证号码] ) ON [PRIMARY] , CONSTRAINT [FK_ttfd_tkfinfo] FOREIGN KEY ( [房间号] ) REFERENCES [tkfinfo] ( [
43、房间号] ) ) ON [PRIMARY] 客房信息表: CREATE TABLE [tkfinfo] ( [房间号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [类型编号] [int] NULL , [房态] [char] (4) COLLATE Chinese_PRC_CI_AS NULL , [配置] [char] (50) COLLATE Chinese_PRC_CI_AS NULL , [使用设置] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [营业
44、时间] [datetime] NULL , [备注] [char] (50) COLLATE Chinese_PRC_CI_AS NULL , CONSTRAINT [PK_kfinfo] PRIMARY KEY CLUSTERED ( [房间号] ) ON [PRIMARY] , CONSTRAINT [FK_tkfinfo_tkflx] FOREIGN KEY ( [类型编号] ) REFERENCES [tkflx] ( [类型编号] ) ) ON [PRIMARY] 其它的数据表的SQL代码在此就不在列举了。 3.2.2
45、 数据库数据输入 (1)录入数据的SQL 代码: insert into tkfyd(编号,姓名,证件名称,证件号码,联系电话,详细地址,工作单位,房间号,预住日期,预住天数,预付金额,备注,日期,时间,操作员) values"+"('"+account+"','"+name+"','"+zhjname+"','"+zhjno+"','"+telephone+"','"+addr+"','"+comp+"','"+roomid+"','"+theDate+"','"+predays+"','"+premoney+"','"+memo+"','"+nDate+"','"+nTime+"','
46、"+username+"')";其它输入数据代码就不再列举了。 (2)更新数据的SQL 代码: update tkfyd set 姓名='"+name+"',证件名称='"+zhjname+"',证件号码='"+zhjno+"',联系电话='"+telephone+"',详细地址='"+addr+"',工作单位='"+comp+"',房间号='"+roomno+"',预住日期='"+preDate+"',预住天数='"+predays+"',预付金额='"+premoney+"',备注='"+memo+"',日期='"+theDate+"',时间='"+nTime+"',操作员='"+
47、username+"' where 编号='"+account+"' 其它输入数据代码就不再列举了。 (3)删除数据的SQL 代码: delete from tkfyd where 编号='"+account+"' 3.3应用程序设计 3.3.1 登录设计 用户登录的流程如图3-1: 图3-1 登录图 其用户登录界面如图3-2: 图3-2 其判断的源代码如下: <% String str = request.getParameter("username");
48、 String username = EncodeUtil.UnicodeToGBK(str); String pw = request.getParameter("password"); String password = pw.trim(); DBUtil db_util = new DBUtil(); Vector result_train = new Vector(); String sql = "select 密码 from tyginfo where 姓名 ='"+username+"'"; result_train=db_util.selectQu
49、ery(sql); String str1 = (String)(result_train.elementAt(0)); String pwd = str1.trim(); if(password.equals(pwd)){ userbean.setUserName(username); userbean.setPassword(password); out.println("登 陆 成功,欢 迎 您 !"); %>
50、 <% }else { out.println("登 陆 失败,请 检 查 用 户 名 或 密 码 !"); out.println(""); } %> 3.3.2 系统菜单设计 系统树型菜单设计,如图3-3: 图3-3 其各功能上面已经阐述,不再说明,只要鼠标放在即可弹出二级菜单,该菜单用JavaScript实现,代码复杂,不再列出。 3.3.3 系统测试 (1)系统数据输入问题:






