JAVA商品销售管理系统(ER图+源代码)-课程设计_第1页
JAVA商品销售管理系统(ER图+源代码)-课程设计_第2页
JAVA商品销售管理系统(ER图+源代码)-课程设计_第3页
JAVA商品销售管理系统(ER图+源代码)-课程设计_第4页
JAVA商品销售管理系统(ER图+源代码)-课程设计_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JAVA商品销售管理系统(ER图+源代码)-课程设计JAVA商品销售管理系统(ER图+源代码)目录1

相关技术简介

31.1

SQLServer2005简介

31.2

Eclipse简介

32

销售信息管理系统需求分析

32.1

数据流图

42.2

数据字典

42.2.1产品信息

52.2.2客户信息

52.2.3销售信息

62.2.4售后服务信息

72.2.5策略公告信息

82.3

安全性与完整性

92.3.1安全性

93

概念结构设计

94

逻辑结构设计

104.1

关系数据模型:

104.2

系统结构图:

124.3

安全性和完整性设计

124.3.1

安全性

124.3.2

完整性

125

数据库物理结构设计

135.1

数据库存放位置

135.2

数据库系统配置

136

数据库实施

136.1

创建数据库

136.2

创建基本表

146.3

修改各表外键:

156.4

创建存储过程

166.5

数据库备份和恢复方案

166.6.1登录界面

176.6.2销售人员工作界面

176.6.3售后服务人员工作界面

186.6.4市场部经理工作界面

186.6.5管理员界面

186.6.6程序加密方法

197

系统测试方案和报告

228

系统的使用功能和使用说明

268.1

登录模块

268.2

客户信息管理模块

268.3

销售信息管理模块

278.4

售后服务信息管理模块

278.5

策略公告模块

278.6

统计报表管理模块

279

系统安装说明

279.1

附加数据库

279.2

Java,Eclipse的安装

2710

心得与体会

281

相关技术简介1.1

SQLServer2005简介SQLServer是一个全面的、集成的、端到端的数据解决方案,它为企业中的用户提供了一个安全、可靠和高效的平台用于企业数据管理和商业智能应用。SQLServer2005为IT专家和信息工作者带来了强大的、熟悉的工具,同时减少了在从移动设备到企业数据系统的多平台上创建、部署、管理及使用企业数据和分析应用程序的复杂度。通过全面的功能集、和现有系统的集成性、以及对日常任务的自动化管理能力,SQLServer2005为不同规模的企业提供了一个完整的数据解决方案。1.2

Eclipse简介Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。本次设计采用了SQLServer2005与Eclipse(Java—SWT)技术。2

销售信息管理系统需求分析

销售人员向系统提交自己一段时间的销售数据、查询历史的销售数据、录入客户信息、销售队伍的信息公告。

客户服务人员答复客户的咨询、对产品使用情况进行回访、对产品进行保修等,将这些售后服务信息录入系统、查询历史的售后服务记录、查询某一位客户的产品使用情况。

市场部经理取得销售报表和售后服务报表,根据市场情况对销售策略进行宏观调控,发布策略公告。根据以上信息进行分析,可得出销售信息管理系统应包括以下基本功能:图2.1销售信息管理系统基本功能图2.1

数据流图图2.2销售信息管理系统顶层图图2.3销售信息管理系统0层图2.2

数据字典2.2.1产品信息a.数据项描述:数据项:产品编号含义说明:唯一标识每个产品别名:ID,ProductID类型:整型长度:>=5至MAX取值范围:10000至MAX,步长为1取值含义:无b.数据结构:数据结构名:产品说明:销售管理系统中销售的产品组成:产品编号+产品名称+规格+产商+产品进价+备注c.数据流描述:数据流名称:产品信息说明:产品的相关信息数据流来源:生产商数据流去向:销售信息管理组成:产品编号+产品名称+规格+产商+产品进价+备注平均流量:10份/月高峰期流量:20份/月d.数据存储描述:数据存储名称:产品列表别名:Product简述:存放产品的相关信息组成:产品编号+产品名称+规格+产商+产品进价+备注数据量:200张/年存取方式:索引文件,以产品编号为关键字e.处理过程:处理过程名:产品销售说明:客户购买该产品输入:产品信息,客户信息输出:销售信息处理:客户购买该产品后,产生销售信息,记录客户信息及购买相关的产品。2.2.2客户信息a.数据项描述:数据项:客户编号含义说明:唯一标识每个客户别名:ID,CustomerID类型:整型长度:>=5至MAX取值范围:10000至MAX,步长为1取值含义:无b.数据结构:数据结构名:客户说明:产品的销售对象组成:客户编号客户姓名+客户性别+联系电话+地址+邮编+E-mailc.数据流描述:数据流名称:客户信息说明:客户的相关信息数据流来源:客户数据流去向:销售信息管理组成:客户编号客户姓名+客户性别+联系电话+地址+邮编+E-mail989JAVA商品销售管理系统(ER图+源代码)平均流量:200个/月高峰期流量:500个/月d.数据存储描述:数据存储名称:客户列表别名:Customer简述:存放客户的相关信息组成:客户编号客户姓名+客户性别+联系电话+地址+邮编+E-mail数据量:2000个/年存取方式:索引文件,以客户编号为关键字e.处理过程:处理过程名:产品销售,售后服务说明:客户购买产品,提供售后服务输入:产品信息,客户信息,售后服务信息输出:销售信息,售后服务情况处理:客户购买该产品后,产生销售信息,记录客户信息及购买相关的产品。售后服务人员为客户提供售后服务,记录售后服务情况。2.2.3销售信息a.数据项描述:数据项:销售编号含义说明:唯一标识每次销售别名:ID,SellID类型:整型长度:>=5至MAX取值范围:10000至MAX,步长为1取值含义:无b.数据结构:数据结构名:销售单说明:销售管理系统中销售的情况组成:销售编号+产品编号+客户编号+销售人员编号+销售时间+单价+销售量c.数据流描述:数据流名称:销售信息说明:销售的情况数据流来源:销售人员数据流去向:售后服务信息管理组成:销售编号+产品编号+客户编号+销售人员编号+销售时间+单价+销售量平均流量:200份/月高峰期流量:500份/月d.数据存储描述:数据存储名称:销售列表别名:Sell简述:存放销售结果的描述组成:销售编号+产品编号+客户编号+销售人员编号+销售时间+单价+销售量数据量:2000份/年存取方式:索引文件,以销售编号为关键字e.处理过程:处理过程名:售后服务管理说明:售后服务人员为购买产品的用户提供服务的情况输入:销售信息输出:售后服务信息处理:记录本次售后服务人员为客户提供服务的情况2.2.4售后服务信息a.数据项描述:数据项:售后编号含义说明:唯一标识每个售后服务别名:ID,ServiceID类型:整型长度:>=5至MAX取值范围:10000至MAX,步长为1取值含义:无b.数据结构:数据结构名:售后服务说明:售后服务人员为客户提供的服务情况组成:售后编号+销售编号+服务人员编号+服务类型+详细情况+是否完成+客户满意度c.数据流描述:数据流名称:售后服务信息说明:售后服务情况的记录数据流来源:客户信息,销售信息,服务人员数据流去向:统计分析组成:售后编号+销售编号+服务人员编号+服务类型+详细情况+是否完成+客户满意度平均流量:200份/月高峰期流量:500份/月d.数据存储描述:数据存储名称:售后服务列表别名:Sell简述:存放售后服务信息组成:售后编号+销售编号+服务人员编号+服务类型+详细情况+是否完成+客户满意度数据量:2000张/年存取方式:索引文件,以售后编号为关键字e.处理过程:处理过程名:统计分析说明:一段时间内售后服务的情况统计分析输入:售后服务信息输出:统计结构处理:统计规定时间内售后服务情况2.2.5策略公告信息a.数据项描述:数据项:公告编号含义说明:唯一标识每个公告别名:ID,PolicyID类型:整型长度:>=5至MAX取值范围:10000至MAX,步长为1取值含义:无b.数据结构:数据结构名:公告说明:市场部发布的公告内容组成:公共编号+工作人员编号+公告类型+E-mail+联系电话+发布日期+所回复的公告+内容c.数据流描述:数据流名称:公共信息说明:公告的相关信息数据流来源:工作人员数据流去向:工作人员组成:公共编号+工作人员编号+公告类型+E-mail+联系电话+发布日期+所回复的公告+内容平均流量:30条/日高峰期流量:80条/日d.数据存储描述:数据存储名称:公共列表别名:Policy简述:存放公告的相关信息组成:公共编号+工作人员编号+公告类型+E-mail+联系电话+发布日期+所回复的公告+内容数据量:200张/月存取方式:索引文件,以公告编号为关键字e.处理过程:处理过程名:公告管理JAVA商品销售管理系统(ER图+源代码)说明:工作人员发布公告输入:公共内容输出:发布公共处理:市场部根据统计结果的分析,对销售策略进行宏观调控,发布相关的公告策略。2.3

安全性与完整性2.3.1安全性安全性是本系统设计的一个重点内容。数据库采用自主存取控制,工作人员和管理员对销售信息管理系统的数据库拥有不同的存取权限,不同类型的工作人员(销售人员、售后服务人员、市场部经理)也只能进行相应的不同操作。2.3.2完整性a.实体完整性每个表都以编号为主码,编号为使用IDENTITY自动生成,步长为1。因此不用考虑主码是否唯一或者为空。b.参照完整性每个表的外码都来自其他表的主码。对参照完整性的违约处理采用级联删除。3

概念结构设计图3.1销售信息管理系统E-R图4

逻辑结构设计4.1

关系数据模型:

客户信息表(Customer):字段包括客户编号、客户姓名、性别、联系电话、地址、邮编、E-mail。关键字是客户编号。

产品列表(Product):字段包括产品编号、产品名称、规格、生产厂商、产品进价、备注。关键字是产品编号。

工作人员表(Staff):字段包括工作人员编号、姓名、密码、类型。关键字是工作人员编号。

销售信息表(Sell):字段包括销售编号、产品编号、客户编号、销售人员编号、销售日期、销售单价、销售量。关键字是销售编号。

售后服务信息表(Service):字段包括售后编号、销售编号、市场人员编号、服务类型、详细情况、是否完成、客户满意度。关键字是售后编号。

市场策略信息公告表(Policy):字段包括公告编号、员工编号、E-mail、联系电话、公告时间、公告类型、回复对应公告的编号和公告内容。关键字是公共编号。Customer表字段名

代码

类型

约束客户编号

ID

int

主键客户姓名

Name

varchar(20)

非空性别

Gender

bit

联系电话

Phone

varchar(20)

地址

Address

varchar(20)

邮编

Code

int

电子邮箱

E-mail

varchar(20)

Product表字段名

代码

类型

约束产品编号

ID

int

主键产品名称

Name

varchar(20)

非空规格

Spec

varchar(20)

生产商

Producer

varchar(20)

单价

money

money

描述

Remark

varchar(50)

Staff表字段名

代码

类型

约束职员编号

ID

int

主键姓名

Name

varchar(20)

非空登录密码

Password

varchar(20)

类型

Type

int

Sell表字段名

代码

类型

约束销售编号

ID

int

主键产品编号

ProductID

int

外键,与Product表中ID外键关联客户编号

CustomerID

int

外键,与Customer表中ID外键关联职员编号

StaffID

int

外键,与Staff表中ID外键关联销售时间

SellDateTime

datetime

单价

Price

money

销售量

SellCount

int

Service表字段名

代码

类型

约束服务编号

ID

int

主键销售编号

SellID

int

外键,与Sell表中ID外键关联职员编号

StaffID

int

外键,与Staff表中ID外键关联服务类型

Type

int

非空详细情况

Description

varchar(50)

完成情况

Completed

bit

客户满意度

Satisfy

int

Policy表字段名

代码

类型

约束公告编号

ID

int

主键职员编号

StaffID

int

外键,与Staff表中ID外键关联公告类型

Type

bit

电子邮箱

E-mail

varchar(20)

联系电话

Phone

varchar(20)

发布日期

InputDate

datetime

回复公告编号

ParentID

int

公告内容

Message

varchar(20)

4.2

系统结构图:JAVA商品销售管理系统(ER图+源代码)图4.1销售信息管理系统结构图4.3

安全性和完整性设计4.3.1

安全性工作人员每人都有自己的帐号和密码,这些都保存在员工表Staff中。本次设计运用一种恺撒加密算法的变种对密码字段进行了加密,即使是数据库管理员打开员工表,也不能看出密码,如图2.4所示。该功能是在程序中实现,具体的加密方法将在后面6.6.6程序加密方法介绍。图4.4对员工表的密码字段进行加密4.3.2

完整性图4.5各表之间的关系5

数据库物理结构设计5.1

数据库存放位置F:\Java\workspace\销售信息管理系统\DataBase数据库文件与日志文件在同一目录中注:运行程序时数据库可存放于任意位置,只需将数据库附加到SQLServer2005中。5.2

数据库系统配置SELL.mdf数据库文件初始大小为5MB,增量为3MB,不限制增长。SELL.log日志文件初始大小为3MB,增量为1MB,不限制增长。6

数据库实施6.1

创建数据库查询分析器执行情况:SQL语句及执行结果显示:CREATEDATABASESELLONPRIMARY(NAME=SELL,FILENAME='F:\Java\workspace\销售信息管理系统\DataBase\SELL.mdf',SIZE=5,FILEGROWTH=3)LOGON(NAME=SELL_log,FILENAME='F:\Java\workspace\销售信息管理系统\DataBase\SELL_log.ldf',SIZE=3,FILEGROWTH=1)GO命令已成功完成。

生成的表格截图显示:6.2

创建基本表建立客户信息表(Customer)、产品列表(Product)、工作人员表(Staff)、销售信息表(Sell)、售后服务信息表(Service)、策略信息公告表(Policy):查询分析器执行情况:USESELLGOCREATETABLECustomer([ID]intIDENTITY(10000,1)PRIMARYKEY,[Name]varchar(20)NOTNULL,[Gender]bit,[Phone]varchar(20),[Address]varchar(20),[Code]varchar(10),[E-mail]varchar(20))CREATETABLEProduct([ID]intIDENTITY(10000,1)PRIMARYKEY,[Name]varchar(20)NOTNULL,[Spec]varchar(20),[Producer]varchar(20),[Price]money,[Remark]varchar(50))CREATETABLEStaff([ID]intIDENTITY(10000,1)PRIMARYKEY,[Name]varchar(20)NOTNULL,[Password]varchar(20),[Type]int,)CREATETABLESell([ID]intIDENTITY(10000,1)PRIMARYKEY,[ProductID]intNOTNULL,[CustomerID]intNOTNULL,[StaffID]intNOTNULL,[SellDateTime]datetime,[Price]money,[SellCount]int)CREATETABLEService([ID]intIDENTITY(10000,1)PRIMARYKEY,[SellID]intNOTNULL,[StaffID]intNOTNULL,[Type]intNOTNULL,[Description]varchar(500),[Completed]bit,[Satisfy]int)CREATETABLEPolicy([ID]intIDENTITY(10000,1)PRIMARYKEY,[StaffID]intNOTNULL,[Type]bitNOTNULL,[E-mail]varchar(20),[Phone]varchar(20),[InputDate]datetime,[ParentID]int,[Message]varchar(1000))GO命令已成功完成。

生成的表格截图显示:客户信息表(Customer):产品列表(Product):工作人员表(Staff):销售信息表(Sell):售后服务信息表(Service):市场策略信息公告表(Policy):JAVA商品销售管理系统(ER图+源代码)查询分析器执行情况:USESELLGOALTERTABLEPolicyADDCONSTRAINTSta_PolFOREIGNKEY(StaffID)REFERENCESStaff(ID);ALTERTABLE[Service]ADDCONSTRAINTSta_SerFOREIGNKEY(StaffID)REFERENCESStaff(ID);ALTERTABLE[Service]ADDCONSTRAINTSel_SerFOREIGNKEY(SellID)REFERENCESSell(ID);ALTERTABLESellADDCONSTRAINTSta_SelFOREIGNKEY(StaffID)REFERENCESStaff(ID);ALTERTABLESellADDCONSTRAINTCus_SelFOREIGNKEY(CustomerID)REFERENCESCustomer(ID);ALTERTABLESellADDCONSTRAINTPro_SelFOREIGNKEY(ProductID)REFERENCESProduct(ID);GO命令已成功完成。查看各数据表之间的关系,生成数据库关系图:6.4

创建存储过程由于代码过多,具体实现请参见一下SQL脚本文件:4CREATEPROCEDURE1.sql、4CREATEPROCEDURE2.sql、4CREATEPROCEDURE3.sql4CREATEPROCEDURE4.sql6.5

数据库备份和恢复方案备份方案:每次插入数据时都导出SQL脚本文件,每晚12:00进行一次海量备份恢复方案:由于数据库中所有数据都有相应的SQL脚本文件来生成,数据库出现错误时可使用脚本文件重新建立数据库,并插入数据。6.6

用户界面设计和应用程序编码6.6.1登录界面登录界面编码实现在Login.java文件中。图6.1销售信息管理系统登录界面6.6.2销售人员工作界面此界面的编码实现在Seller.java文件中图6.2销售人员工作界面6.6.3售后服务人员工作界面(代码实现在Servicer.java文件中)图6.3售后服务人员工作界面6.6.4市场部经理工作界面(代码实现在Manage.java文件中)图6.4市场部经理工作界面6.6.5管理员界面(代码实现在Admin.java文件中)图6.5管理员界面6.6.6程序加密方法工作人员每人都有自己的帐号和密码,这些都保存在员工表Staff中。本次设计运用一种恺撒加密算法的变种对密码字段进行了加密,即使是数据库管理员打开员工表,也不能看出密码,如图2.4所示。该功能是在程序中通过调用MyEncryption类对密码加密实现。图6.5对员工表的密码字段进行加密结果以下是MyEncryption类的编码,通过调用该类中passwordMaker()方法来实现加密。JAVA商品销售管理系统(ER图+源代码)packagemyEncryption;publicclassMyEncryption{publicchar[]passwordMaker(Stringmacmaked){//初始密钥

intinc[]={6,1,4,76,111,86,101,9,2,7,10,155,185,89,200,14,32,68,98,124,689};

chartemp;

//将字符串转换为字符数组

char[]word=macmaked.toCharArray();

char[]password=newchar[macmaked.length()];

for(inti=0;i<macmaked.length();i++)

{

password[i]=word[i];

//进行第一轮加密

password[i]=(char)((password[i]*inc[i])%253+1);

}

//进行移位加密

for(intout=1;out<26;out++)

{

//保存第一位密码

temp=password[0];

for(inti=0;i<macmaked.length()-1;i++)

{

password[i]=(char)((password[i+1]+inc[i])%253+1);

//密钥动态变化实现

inc[i]=password[i];

}

//对最后一位密码加密

password[macmaked.length()-1]=(char)((temp+inc[macmaked.length()-1])%253+1);

//改变最后一位密钥

inc[macmaked.length()-1]=password[macmaked.length()-1];

}

returnpassword;//返回加密结果}}可能由于Java与SQL对字符的具体存取格式不同,所以不能仅仅通过上边的方法来实现对密码加密(否则在登录时会导致密码不匹配)。因此,在数据库中建立了一名为Change的表,该表只有一列(Exchange),并同时插入一个数据(任意数据),设置工作人员角色staff_role对该表具有Update和Select权限。通过该表,在工作人员登录系统时,先调用加密方法passwordMaker()对输入的密码进行加密,并将加密结果Update到表Change的ExChange列中,然后再重新取出(这样便实现了Java与SQL对字符的编码不同表示的转换)。最后将去出来的结果与Staff表中对应的Password比较,完全匹配便成功登录系统,否则给出相应的错误提示。工作人员登录时程序所调用的方法编码如下:publicintstaffLogin(Stringid,Stringpwd){intresult=32767;Connectioncon;Statementstmt;//调用加密方法,对输入密码进行加密MyEncryptionme=newMyEncryption();pwd

=

String.valueOf(me.passwordMaker(pwd));try{DBCondbc=newDBCon();con=DriverManager.getConnection(dbc.url,"staff","123");stmt=con.createStatement();Stringquery;ResultSetrs;/***实现sql和程序的字符转换*///向转换表插入数据query="updateChange"+

"setExChange='"+pwd+"';";stmt.executeUpdate(query);//读出插入后的数据query="selectExChangefromChange;";rs=stmt.executeQuery(query);while(rs.next()){pwd

=

rs.getString("ExChange");}if(rs

!=

null)rs.close();/***将转换后的密码与Staff表中的密码比较*/query

="selectPassword,TypefromStaffwhereID='"+id+"';";rs=stmt.executeQuery(query);while(rs.next()){Stringtemp

=

rs.getString("Password");char[]pwdtemp

=

temp.toCharArray();char[]c_pwd

=

pwd.toCharArray();

if(pwdtemp.length==c_pwd.length){

inti

=

0;

for(;i<pwdtemp.length;i++)

{

if(pwdtemp[i]!=c_pwd[i])

{

break;

}

}

if(i==pwdtemp.length)

result=Integer.parseInt(rs.getString("Type"));}}dbc.dbClose(con,rs);}catch(Exceptione)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论