当前位置:首页 > 网上购物系统的设计与实现 论文 - 图文
图3.7 订单信息实体E-R图
3.1.2 数据库的逻辑结构设计
我们知道,数据库概念模型独立于任何特定的数据库管理系统,因此,需要根据具体使用的数据库管理系统的特点进行转换。即转化为按计算机观点处理的逻辑关系模型,E-R模型向关系数据库模型转换应遵循下列原则:
每一个实体要转换成一个关系; 所有的主键必须定义非空(NOT NULL);
对于二元联系应按照一对多、弱对实、一对一、多对多等联系来定义外键。(1)普通用户表主要是记录了普通用户基本信息。表结构如表3.1所示。
表3.1 普通用户表(t_user)
列名 user_id user_name user_pw user_realname user_sex user_tel user_address 数据类型 int varchar varchar varchar varchar varchar varchar 长度 4 50 50 50 50 20 20 允许空 否 否 否 否 否 否 否 是否主键 是 否 否 否 否 否 否 说明 用户ID 用户名 用户密码 姓名 性别 联系方式 住址 (2)商品类别信息表主要是记录了商品类别的基本信息,表结构如表3.2所示。
表3.2 商品类别信息表(t_catelog)
列名 catelog_id catelog_name catelog_miaoshu 数据类型 Int Varchar Varchar 长度 4 50 50 允许空 否 否 否 是否主键 是 否 否 说明 类别ID 类别名称 类别介绍 (3)商品信息表主要是商品的相关信息,其中ID是主键,表结构如表3.3所示。
15
表3.3 商品信息表(t_goods)
列名 goods_id catelog_id goods_name goods_miaoshu goods_pic shichangjia 数据类型 Int Int varchar varchar varchar Date 长度 4 4 50 50 50 50 允许空 否 否 否 否 否 否 是否主键 是 否 否 否 否 否 说明 商品ID 类别ID 名称 介绍 商品封皮 商品价格 (4)管理员信息表主要记录了管理员的账号信息,包括用户名和密码,表结构如表3.4所示。
表3.4 管理员信息表(t_admin)
列名 userId userName userPw 数据类型 int varchar varchar 长度 4 50 50 允许空 否 否 否 是否主键 是 否 否 说明 编号 用户名 密码 (5)订单信息表主要记录的会员的订单的信息,包括订单编号、下单时间等,表结构如表3.5所示。
表3.5 订单信息表(t_order)
列名 order_id order_date order_zhuangtai songhuodizhi fukuanfangshi jine user_id 数据类型 Int Varchar Varchar Varchar Varchar Varchar Int 长度 4 50 50 50 50 50 4 允许空 否 否 否 否 否 否 否 16 是否主键 是 否 否 否 否 否 否 说明 编号 下单时间 订单状态 送货地址 付款方式 总金额 会员ID (6)公告信息表主要记录了管理员发布公告的信息,包括公告标题、公告内容等,表结构如表3.6所示。
表3.6 公告信息表(t_gonggao)
列名 id title content shijian 数据类型 int varchar varchar varchar 长度 4 50 50 50 允许空 否 否 否 否 是否主键 是 否 否 否 说明 编号 公告标题 公告内容 公告时间 3.1.3 数据库的连接原理
采用JDBC连接数据库的方式,只需在工程中导入对应数据库的jar包,就可以方便的对数据库进行连接,在程序中,用Class.forName()方法来加载驱动程序,在用DriverManager的getConnection()方法就可以创建一个数据库连接。程序采用的是DAO模式来操作数据库,DAO(Data Access Object,数据访问对象),是Java编程中的一种经典模式,已被广泛应用,也是J2EE架构中持久层框架的基础知识,基于分层次式的软件架构来实现对数据库的访问操作。DAO模式的主要思想就是从抽象数据源获取与操纵数据的方法。抽象数据的含义就是编写应用程序的程序员不必关心数据库的物理位置,已经是何种数据库,只需使用封装数据库中表示记录的数据对象即可。其思想如图3.8所示:
BusinessObject 使用 DataAccessObject 封装 DataSource
获取/修改 DataTransferObject 创建/使用
图3.8 DAO模式类图
图3.8中BussinessObject是业务对象,是使用DAO模式的客户端;DataTransferObject数据传输对象,在应用程序不同层次之间传输对象,在一个分布式应用程序中,通常可以提高整理的性能;DataAccesObject数据输入/输出
17
对象封装了对数据源的一些基本操作;DataSource指的是数据源。可以从图中看出,DAO模式分离了业务逻辑和数据逻辑,编写的软件具有良好的层次式体系结构。本系统为了方便数据库的操作,主要使用DBContent的对象来接一个数据库(建立一个类DBContent),代码如下: public DBContent(){
String CLASSFORNAME=\com.microsoft.jdbc.sqlserver.SQLServerDriver\//连接数据库的驱动
String url=\
jdbc:microsoft:sqlserver://localhost:1433;databaseName=db_wlgw \
String user=\连接数据库的用户名 String password=\连接数据库的密码 try{
Class.forName(CLASSFORNAME);
con= DriverManager.getConnection(url,user,password);//加载数据库的
驱动
stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.
CONCUR_UPDATABLE);
}
catch(Exception ex){ } }
ex.printStackTrace();
在程序需要连接数据库的地方,只需要生成一个DBConnet的对象,就可以对数据库进行连接并操作。
3.2 中文乱码问题处理
在程序中经常会遇到中文乱码的情况,如果手动的在servlet和jsp页面进行设置,相当麻烦。因此,在程序的开始就写了一个过滤器SetCharacterEncodingFilter。
在web.xml中配置:
18
共分享92篇相关文档