概念设计的目标是产生反映超市组织情况的数据库概念结构,即概念模式。概念模型是独立于数据库的逻辑结构,独立于数据库的数据库管理系统。
根据以上对数据库的需求分析,并结合系统概念模型的特点及建立方法,建立E-R模型图。
E-R图的基本图素包括实体、属性、联系三部分。
2.3.2数据库的逻辑结构设计
数据库的概念模型独立于任何数据库管理系统,因此,需要对特定需求的数据库系统的特定进行相应的转换。从计算机或处理逻辑模型和R数据模型转换应遵循以下原则:
*所有的主键需要定义非空(NOT NULL) *每个实体都要转换成一个关系
*二元联系是按照一对多、弱对实、一对一、多对多等联系来定义外键。 根据E-R模型,超市收银系统建立了以下逻辑数据结构,下面是各数据表的详细说明。
(1)商品分类表主要记录商品的分类基本信息。表结构如表2.1所示。
表2.1商品分类表(t_catelog)
(2)商品信息表主要记录了商品的基本信息,表结构如表2.2所示。
表2.2商品信息表(t_goods)
(3)入库信息表主要记录商品的入库的基本信息,表结构如表3.3所示。
表2.3入库信息表(t_ruku)
(4)入库明细表主要记录商品的入库明细的基本信息,表结构如表3.4所示。
表2.4入库明细信息表(t_rukumingxi)
(5)销售信息表主要记录商品的销售的基本信息,表结构如表3.5所示。
表2.5销售信息表(t_chuku)
列名 数据类型 id Int danjuhao varchar 长度 4 4 允许空 是否主键 否 是 否 否 11
说明 Id 单据号
(6) 销售明细表主要记录的是商品的销售明细的基本信息,表结构如表3.6所示。
表2.6销售明细表(t_ chukumingxi)
(7)管理员信息表主要记录的是管理员的账号信息,包括用户名和密码,表结构如表3.7所示。
表2.7管理员信息表(t_admin)
列名 userId userName userPw 表3.8所示。
表2.8员工信息表(t_yuangong)
列名 id name sex age address tel quanxian loginname loginpw del 数据类型 int varchar varchar 长度 允许空 是否主键 4 否 是 50 否 否 50 否 否 说明 Id 用户名 密码 (3)管理员信息表主要记录的是管理员的账号信息,包括用户名和密码,表结构如
数据类型 int varchar varchar varchar varchar varchar varchar varchar varchar varchar 长度 允许空 是否主键 4 否 是 50 否 否 50 否 否 50 是 否 50 是 否 50 是 否 50 否 否 50 是 否 50 是 否 50 否 否 说明 Id 姓名 性别 年龄 地址 电话 权限 登录名 密码 删除标志
2.3.3数据库的连接原理
DBC连接数据库,数据库只引进项目相应的jar包,可以方便的对数据库进行连接,在程序中,用Class.forName()方法来加载驱动程序,在用DriverManager的getConnection()方法就可以创建一个数据库连接。程序采用的是DAO模式来操作数据库,DAO(Data Access Object,数据访问对象),是Java编程中的一种经典模式,已被广泛应用,也是J2EE架构中持久层框架的基础知识,基于分层次式的软件架构来实现对数据库的访问操作,DAO模式最主要的思想就是从抽象数据源中获取与操纵数据的方法。抽象数据是编写应用程序的程序员不需要去关心数据库的物理位置,现在是何
12
种数据库,而只需要使用封装数据库中表示记录的数据对象就可以了。其思想如图3.10所示:
BusinessObject 使用 DataAccessObject 封装 创建/使用 DataTransferObject
图2.10 DAO模式类图
DataSource 获取/修改
图中BussinessObject是业务对象,是使用DAO模式的商品端;
DataTransferObject数据传输对象,在应用程序不同层次之间的传输对象,在一个分布式应用程序中,一般可以提高整理的性能;DataObjectAcces数据输入及输出对象封装了对数据源的一些基础操作;DataSource指的是数据源。从图中可以大致看出,DAO模式分离了业务逻辑和数据逻辑,令编写的软件具备了良好的层次式体系结构。本系统为了使数据库的操作更加便捷,主要使用DBContent的对象来接一个数据库(建立一个类DBContent),代码如下:在程序需要连接数据库的地方,只需生成一个DBConnet对象,就能对数据库进行连接和操作。
2.4中文乱码问题处理
在程序中常常会遇到中文乱码的情况,如果手动的去在servlet和jsp页面内进行设置,非常的不方便。所以,我在程序的开始就写了一个过滤器SetCharacterEncodingFilter。
在web.xml中配置:
对应的SetCharacterEncodingFilter.java文件中的重要代码,在初始化init()方法中定义: 在工具包util包内同样定义了DataFormate类去处理字符的转换:
public static
13
第三章 系统功能实现
在管理信息系统的生命周期中,在结束需求分析、系统设计等阶段后,就开始了系统实施阶段。在系统分析和设计阶段,这类系统的开发主要集中在逻辑、功能和技术设计,系统实施阶段要继承这些工作的结果,各阶段的设计技术的物理实现,因此系统分析和设计阶段生成了系统实施的结果。
3.1系统登陆页面实现
1.描述:为了保证系统的安全性,使用系统需要登录后才能进行相关操作,同时不同的身份进入系统后获得的权限也不同。
2.程序运行效果图如图4.1所示:
图4.1 系统登陆页面设计
3.在登陆页面输入用户名和密码之后,点击提交按钮,跳转到登陆的service中,在该service中会对用户名、密码进行判断,同时根据相应的用户角色进入到对应的页面,以下是loginservice的关键代码:
3.2系统首页设计
1.描述:管理员主页面:左边的列展示了管理员可操作的各个功能,通过点击对应的功能进入相应的子菜单,并且高亮显示,每个管理模块下面都有相应的子菜单。
2.程序运行效果图如图4.2所示:
图4.2系统主页面
在每个jsp页面将会对相关用户进行拦截操作,这样可以减少不安全因素,防止用户不经过登陆页面而进入任何子菜单页面:
3.3商品分类管理 3.3.1分类信息录入
1.描述:输入分类信息后,选择提交按钮,可以在备注加入其他内容。若是不输入分类名称,则系统发出警示,提示必须输入分类名称。
2.程序效果图如图3.3所示:
图3.3 商品分类录入
14
3.5.2分类信息列表
1.描述:选择商品分类管理可以进行所有的分类信息的管理。 2.程序效果图如图3.4所示:
图3.4 商品分类信息列表
分类管理核心代码:
}
return \
3.4商品管理模块 3.4.1商品信息录入
描述:输入商品类别相关正确信息后单击录入按钮,如若是未输入完整信息,则会给出相应的错误提示,即不能录入成功。输入数据是通过form表单中定义的方法onsubmit=\来检查,checkForm()函数中则是各种的校验输入数据的方式。
程序效果图如下图3.5所示:
图3.5 商品信息录入
3.流程图如下图3.6所示:
图3.6 商品信息录入流程图
3.4.2商品信息管理
1.描述:管理员单击左侧的菜单“商品管理”,页面跳转到商品管理界面,调用后台的action类查询所有的商品信息。
2.程序效果图如下图4.7所示
图4.7 商品信息管理
商品信息管理关键代码:
}
3.4.3商品信息删除
1.描述:单击商品信息管理,页面跳转到商品信息管理界面,阅览所有的商品信息信息,选择要删除的商品信息,根据弹出的对话框进行操作,即可删除该商品信
15