库存分销管理系统数据库设计测试毕业设计论文.docx
- 文档编号:4711469
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:30
- 大小:1.67MB
库存分销管理系统数据库设计测试毕业设计论文.docx
《库存分销管理系统数据库设计测试毕业设计论文.docx》由会员分享,可在线阅读,更多相关《库存分销管理系统数据库设计测试毕业设计论文.docx(30页珍藏版)》请在冰豆网上搜索。
库存分销管理系统数据库设计测试毕业设计论文
库存分销管理系统
─数据库设计、测试
摘要:
本设计通过计算机的软件管理系统对企业的营销网络,进行统一的管理,以提高效率。
本文针对目前库存管理系统存在的有关权限授权和认证问题分析,采用面向对象的开发方法,分析设计了库存分销管理系统,采用Java语言实现了库存分销管理系统中的子功能──系统管理模块。
本文对系统管理模块的开发与实现进行说明,并对该系统即分销商库存管理模块进行测试说明。
关键词:
库存;统计报表;登录;测试
Abstract:
Thefocusofthisdesignisthroughthecomputersoftwaremanagementsystemtoenterprise'smarketingnetwork,unifiedmanagement,inordertoimproveefficiency.Thisarticleaccordingtothepresentstockmanagementsystemexistedtheproblemoftheauthorizationandauthenticationproblem,usedtheobject-orienteddevelopmentmethod,analysisanddesignofthedistributionofinventorymanagementsystem,andusedJavalanguagetorealizethethedistributionofinventorymanagementsystems--systemmanagementmodule.Systemmanagementmodule.Inthisarticle,thedevelopmentandrealizationofthesystemmanagementmodule,andthedistributorinventorymanagementmoduleofthesystemareanalyzedinthetestspecification.
Keywords:
Inventory;Statisticforms;Login;Tes
1 库存分销管理系统的数据库设计
1.1 概述
(DatabaseDesign)是指根据用户的需求,在某一具体的数据库管理系统上,设计数据库的结构和建立数据库的过程。
数据库系统需要操作系统的支持。
数据库设计是建立数据库及其应用系统的技术,是信息系统开发和建议中的核心技术。
由于数据库应用系统的复杂性,为了支持相关程序运行,数据库设计就变得异常复杂,因此最佳设计不可能一蹴而就,而只能是一种“反复探寻,逐步求精”的过程,也就是规划和结构化数据库中的数据对象以及这些数据对象之间关系的过程。
数据库设计与实现是系统开发中的一个重要的环节,一个结构合理的数据库可以提高系统的整体的运行效率,同时可以缩短系统的开发时间。
本系统采用MySql作为数据库。
1.2 数据库的设计原则
在数据库的设计中,本系统按照以下原则进行设计,一尽量满足系统的要求。
1.2.1 数据库中数据的可操作性
数据库设计时注意保证在整个系统运行和业务操作过程中,数据库都能便于访问和查询,同时还需要考虑到要尽量节省数据库操作时的响应时间,尽可能的提高数据库对程序和业务请求的响应速度。
1.2.2 数据库设计的准确性和完整性
数据库中数据的设计要满足程序设计的要求,对于程序中使用的数据和存储的数据内容,都有严格的数据和准确的数据类型与之对应,同时在数据库设计时要对关键数据进行详细的说明,以方便系统设计人员的开发工作。
1.2.3 数据库冗余性
过多的冗余数据会大大增加数据库的工作量,降低数据库的响应时间和准确性。
因为改善数据库性能的一个非常重要的方面就是减少或消除数据库的冗余信息,要通过规范化处理使冗余数据减少。
1.3 数据库连接设计
为了方便连接数据库,本系统把数据库连接代码存在DB.java中,采用TOMCAT服务器提供的数据库连接池。
代码如下:
/**
*数据库管理,使用单例模式
*
*@authorAdministrator
*
*/
publicclassDB{
privatestaticDBdb=null;
privateConnectionconn=null;
privatestaticDataSourceds=null;
privateContextctx=null;
/**
*懒汉式
*
*@return
*/
publicstaticDBgetInstance(){
if(db!
=null){
returndb;
}else{
db=newDB();
returndb;
}
}
privateDB(){
try{
ctx=newInitialContext();
//采用jndi查找连接池
ds=(DataSource)ctx.lookup("java:
comp/env/jdbc/drp");
}catch(NamingExceptionnamee){
System.out.println("查询连接池失败!
\n"+namee.getMessage());
}finally{
if(ctx!
=null){
try{
ctx.close();
}catch(NamingExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
}
publicsynchronizedConnectiongetConn(){
Stringdriver="com.mysql.jdbc.Driver";
Stringurl="jdbc:
mysql:
//localhost:
3306/drp";
Stringusername="root";
Stringpwd="lll123456";
try
{
Class.forName(driver);
}catch(Exceptionex)
{
ex.printStackTrace();
}
Connectionconn=null;
try
{
conn=DriverManager.getConnection(url,username,pwd);
}catch(Exceptionex)
{
ex.printStackTrace();
}//到此结束
returnconn;
}
publicstaticvoidclose(Connectionconn){
if(conn!
=null){
try{
conn.close();
}catch(SQLExceptione){
e.printStackTrace();
}
conn=null;
}
}
publicstaticvoidclose(Statementstmt){
if(stmt!
=null){
try{
stmt.close();
}catch(SQLExceptione){
e.printStackTrace();
}
stmt=null;
}
}
publicstaticvoidclose(ResultSetrs){
if(rs!
=null){
try{
rs.close();
}catch(SQLExceptione){
e.printStackTrace();
}
rs=null;
}
}
}
1.4 结果设计
1.4.1 概念结构设计
图1-1概念设计图
1.5 数据库表格设计
数据字典是系统中各类数据描述的集合,其中规定了每个字段的字段名称,数据类型,长度,主键等基本信息。
有时为了方便,在设计数据库时会有意增加一些数据冗余,对于本系统中出现的数据,我们用一下数据字典做详细描述如下表所示:
表1.1用户表
t_user
列名
中文名称
数据类型
长度
是否能为空
备注
user_id
用户ID
Varchar
10
notnull
primarykey
user_name
用户名
varchar
20
notnull
password
密码
varchar
20
contact_tel
联系电话
varchar
30
邮箱
varchar
30
create_date
创建日期
datetime
表1.2客户信息表
t_client
列名
中文名称
数据类型
长度
是否能为空
备注
id
序列ID
int
notnull
primarykey
pid
上级分销商ID
int
notnull
name
名称
varchar
40
notnull
client_id
分销商代码
varchar
10
client_level
分销商等级
char
3
bank_acct_no
银行账号
varchar
30
contact_tel
联系电话
varchar
20
address
地址
varchar
50
zip_code
邮编
varchar
20
is_leaf
是否为叶子节点
char
default'N'
is_client
是否为分销商
char
default'N'
表1.3分销商
t_temi_client
列名
中文名称
数据类型
长度
是否能为空
备注
id
序列ID
int
notnull
primarykey
pid
上级分销商ID
int
notnull
name
名称
varchar
40
notnull
temi_id
分销商ID
varchar
20
temi_level
分销商级别
char
3
contact_tel
联系电话
varchar
18
contactor
联系人
varchar
30
address
地址
varchar
50
zip_code
邮编
varchar
20
is_leaf
是否为叶子节点
char
1
default'N'
is_temi_client
是否为分销商
char
1
default'N'
2 管理模块的开发与实现
2.1 管理模块结构
系统管理分为用户维护和修改密码两部分。
2.2 struts架构
本分销库存管理系统选取struts架构来设计和开发,是因为struts是当前最流行的JavaWeb开源框架,可以构建出灵活、易于扩展的多层Web应用程序。
且struts是目MVC前比较成熟的Web开发框架,它是在JSPModel2的基础上实现的一个经典的框架。
2.2.1 基本原理
Struts的模型部分包含JavaBean和EJB组件,控制器由ActionServlet和Action组成,师徒部分包含JSP和Struts客户化标签。
下面分别介绍Struts的ActionFormBean、Struts的初始化流程和Struts相应客户请求的工作流程。
Struts框架结构如图所示:
Servlet/JSP容器
分发Dispatch
HTTP
请求Request
Struts配置文件
Struts-config.xml
转向Forward
HTTP
响应Request
图2-2Struts模型图
ActionFormBean是一种JavaBean,它除了具有一些普通JavaBean的常规方法外还包含一些用于验证HTML表单数据以及将其属性重新设置为默认值的特殊方法。
Struts框架利用ActionFormBean来进行View组件和Conntroller组件之间表单的传递。
Struts框架把View组件接收到的表单数据保存在ActionFormBean中,并把它传递给Conntroller组件。
而Conntroller组件可以对ActionFormBean中的数据进行修改。
JSP使用Struts标签或JSTL标签读取修改后的ActionFormBean的信息,重新设置HTML表单,如下图所示:
图2-3ActionFormBean工作原理图
2.2.2 工作流程
(1)Struts框架的初始化流程
在Web应用启动时会加载并初始化控制器ActionServlet,而从文件struts-config.xml中读取配置信息,把它们存放到ActionMapping对象中,这就是Struts框架的初始化的整个过程。
(2)Struts框架响应客户请求的工作流程
1)判断ActionMapping实例是否存在。
如果实例不存在,则创建一个ActionMapping对象,它包含把请求转发给哪个Action的信息。
2)判断ActionFrom实例是否存在。
如果实例不存在,则创建一个对象,并把客户提交的表单数据保存到ActionFrom对象中。
3)根据配置信息决定是否需要表单验证。
如果需要验证,就调用ActionFrom的validate()方法。
4)如果ActionFrom的validate()方法返回null,或返回一个不包含ActionMessage的ActionErrors对象,则表示表单验证成功。
如果的validate()方法返回一个或多个的对象,则表示表单验证失败,将直接吧请求转发给包含客户提交的JSP组件。
在这种情况下,不会再创建Action对象并调用Action的execute方法。
5)ActionServlet根据配置信息决定将请求转发给哪个Action。
如果相应的Action实例不存在,就先创建这个实例,然后调用其execute方法。
6)Action的execute方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件。
7)ActionForward对象指向的JSP组件生成动态网页,返回给客户。
2.2.3系统管理
系统管理主要是对用户进行管理,包括用户维护和修改密码。
1)用户维护:
可以添加、删除或修改用户的信息。
2)修改密码:
输入旧密码和新密码,可以修改密码。
2.3 开发工具与环境
目前,市场上应用和开发的软件有很多。
本系统经过比较并结合自身的特点,选择Genuitec公司的MyEclipse作为毕业设计的前台开发工具,MySQL作为后台数据库开发,tomcat作为Web服务器。
(1)开发工具:
MyEclipse8.0
MyEclipse是一个十分优秀的用于开发Java,J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。
MyEclipse目前支持JavaServlet,AJAX,JSP,JSF,Struts,Spring,Hibernate,EJB3,JDBC数据库链接工具等多项功能。
可以说MyEclipse是几乎囊括了目前所有主流开源产品的专属eclipse开发工具。
(2)数据库:
MySQL5
MySQL是一个关系型数据库管理系统,是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem:
关系数据库管理系统)应用软件之一。
MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。
由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。
(3)服务器:
tomcat6.0
Tomcat是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。
由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现,因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。
2.4 主要代码设计
主要在web.xml文件中添加spring的Listener配置,通过配置以后,在Spring容器中就会创建对象,可以通过这个对象进行调用添加用户的方法。
主要代码如下:
publicclassUserManager{
//静态成员变量
privatestaticUserManagerinstance=newUserManager();
//私有Constructor
privateUserManager(){
}
/**
*入口点方法
*
*@returninstance
*/
publicsynchronizedstaticUserManagergetInstance(){
returninstance;
}
/**
*添加用户
*
*@paramUserForm
*/
publicvoidaddUser(UserFormuser){
Stringsql="insertintot_user(user_id,user_name,password,contact_tel,email,create_date)"
+"values(?
?
?
?
?
?
)";
Connectionconn=null;
PreparedStatementpstmt=null;
try{
conn=DB.getInstance().getConn();
pstmt=conn.prepareStatement(sql);
user.setCreatedate(newDate());
pstmt.setString(1,user.getUserId());
pstmt.setString(2,user.getUserName());
pstmt.setString(3,user.getPassword());
pstmt.setString(4,user.getContactTel());
pstmt.setString(5,user.getEmail());
pstmt
.setTimestamp(6,newTimestamp(user.getCreatedate()
.getTime()));
pstmt.executeUpdate();
}catch(SQLExceptionsqle){
thrownewUserAddException("添加用户失败!
"+"\nErrorMessage:
"
+sqle.getErrorCode()+":
"+sqle.getMessage()+"\n"
+"sql:
"+sql);
}finally{
if(pstmt!
=null){
DB.close(pstmt);
}
if(conn!
=null){
DB.close(conn);
}
}
}
/**
*修改用户数据
*
*@paramuser
*/
publicbooleanmodify(UserFormuser){
booleanstate=false;
Stringsql="updatet_usersetuser_name=?
password=?
"
+"contact_tel=?
email=?
create_date=?
whereuser_id=?
anduser_id<>'root'";
Connectionconn=null;
PreparedStatementpstmt=null;
try{
conn=DB.getInstance().getConn();
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,user.getUserName());
pstmt.setString(2,user.getPassword());
pstmt.setString(3,user.getContactTel());
pstmt.setString(4,user.getEmail());
pstmt
.setTimestamp(5,newTimestamp(user.getCreatedate()
.getTime()));
pstmt.setString(6,user.getUserId());
pstmt.executeUpdate();
state=true;
}catch(SQLExceptionsqle){
sqle.printStackTrace();
}finally{
if(pstmt!
=null){
DB.close(pstmt);
}
if(conn!
=null){
DB.close(conn);
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 库存 分销 管理 系统 数据库 设计 测试 毕业设计 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)