资源描述
辽 宁 工 业 大 学
SQL数据库设计课程设计说明书
题目: 企业营销管理系统
院(系): 软件工程学院
专业班级: 软件工程1 班
学 号: 1313010
参考地址:
科普类别: SEO探索网
教师职称: 副教授
起止时间: 2013.12.30-2014.01.10
目 录
第1章 设计目的与要求 1
1.1设计目的 1
1.2设计环境 1
1.3主要参考资料 1
1. 4设计内容及要求 1
第2章 设计内容 2
2.1数据库设计 2
2.1.2概念设计 2
2.1.3逻辑设计 4
2.1.4物理设计 4
2.1.5 数据库实现 5
2.2程序设计 6
2.2.1概要设计 6
2.2.2程序实现 7
第3章 设计总结 19
参考文献 20
第1章 设计目的与要求
1.1设计目的
本设计专题是软件工程类专业的有关管理信息系统设计开发的一个重要环节,是本专业学生必须学习和掌握的综合实践课程。
本实践课的主要目的是:(1)、掌握运用管理系统及数据库原理知识进行系统分析和设计的方法;(2)掌握关系数据库的设计方法;(3)掌握SQL Server 2000技术应用;(4)掌握简单的数据库应用程序编写方法;(5)理解C/S模式结构。
1.2设计环境
硬件:处理器:Intel Pentium 166MX或更高
内存:32MB
硬盘空间:1GB
光驱:CD-ROM 48X
软件:操作系统: Windows 2000/Windows 98/ Windows xp
网络协议:TCP/IP
数据库:SQL Server2000
1.3主要参考资料
1.《管理信息系统》 黄梯云 高等教育出版社
2.《数据库系统概论》 萨师煊 高等教育出版社
3.《SQL Server 2000 数据库应用系统开发技术》朱如龙编,机械工业出版社。
4.《SQL Server 2000 数据库应用系统开发技术实验指导》朱如龙编,机械工业出版社
1. 4设计内容及要求
一、内容
1.要求根据管理信息系统及数据库设计原理,按照数据库系统设计的步骤和规范,完成各阶段的设计内容。
2.需求分析具体实际,数据流图、数据字典、关系模型要正确规范
3.在sql server2000 上实现设计的数据库模型。
4.对应用程序进行概要设计。
5.用VB实现简单的应用程序编写。
二、要求
设计过程中,要严格遵守课程设计的时间安排,听从指导教师的指导。正确地完成上述内容,规范完整地撰写出课程设计报告。
第2章 设计内容
2.1数据库设计
据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。
设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求。数据库设计一般包括如下几个步骤:
● 数据库需要分析。
● 数据库概念结构设计。
● 数据库逻辑结构设计
2.1.1需求分析
企业营销管理系统涉及基础资料管理、销售组织、市场管理、销售业务管理、销售分析、营销资源管理以及系统管理等多种数据信息。管理用户包括系统管理员和经理。
企业营销管理系统本着经济、实用、高效的原则,为企业提供一个高效、规范、轻松的营销工作环境,满足企业不断发展的需要。
伴随着中国经济从计划经济向市场经济转型,从卖方市场向买方市场过渡,以及全球性的产品过剩以及产品的同质化,导致市场竞争加剧。在这种状况之下,导致企业营销环境也在加速变化,企业营销部门对信息的依赖日益加剧,例如:随着商品的市场覆盖面的扩大,就需要掌握比以前更多更及时的市场信息;从价格竞争发展到非价格竞争,为了有效地运用差异化、广告和促销等竞争工具,也需要更多的信息资源。
2.1.2概念设计
逻辑结构设计一般分为三步进行: 从E-R图向关系模式转化 数据库的逻辑设计主要是将概念模型转换成一般的关系模式,也就是将E-R图中的实体、实体的属性和实体之间的联系转化为关系模式。一个实体类型转换为一个关系模型,将每种实体类型转换为一个关系,实体的属性就是关系的属性,实体的关键字就是关系的关键字。
针对第2个基本销售组织模块进行详细的说明。
关系模型如下所示:每个关系模型的第一个数据项为该关系的主键
销售组织(名称,负责人,所在区域,地址,电话)如图图2.1所示。
销售组织
电话
地址
所在区域
负责人
名称
图2.1销售组织E-R图
销售训练(业务员姓名,训练项目,开始时间,结束时间,成绩
)如图图2.2所示
销售训练
开始时间
结束时间
训练项目
业务员姓名
成绩
图2.2销售训练E-R图
销售业绩考核(业务员姓名,考核指标,完成率,分数,年度)如图图2.3所示
销售业绩考核
年度
分数
考核指标
业务员姓名
完成率
图2.3考核指标E-R图
2.1.3逻辑设计
逻辑结构设计阶段的任务是将概念结构设计阶段所得到的概念模型转换为具体DBMS所能支持的数据模型(即逻辑结构),并对其进行优化。
数据库逻辑设计所要完成的任务是:概念结构设计所得的E-R模型是对用户需求的一种抽象的表达形式,它独立于任何一种具体的数据模型,因而也不能为任何一个具体的DBMS所支持。为了能够建立起最终的物理系统,还需要将概念结构进一步转化为某一DBMS所支持的数据模型,然后根据逻辑设计的准则,数据的语义约束,规范化理论等对数据模型进行适当的调整和优化,形成合理的全局逻辑结构,SEO探索网并设计出用户子模式。
描述概念模型的有力工具是E-R图。E-R模型是一个面向问题的概念模型,即用简单的图形方式描述现实世界中的数据。在E-R模型中,信息由实体型,实体属性和实体间的联系概念单元来表示。
图2.4销售组织关系表
2.1.4物理设计
数据库物理设计阶段的任务是根据具体计算机系统的特点,为给定的数据库模型确定合理的存储结构和存取方法。为了设计数据库的物理结构,必须充分了解所有DBMS的内部特征,充分了解数据系统的实际应用环境,特别是数据应用处理的频率和响应时间的要求,充分了解崴存储设备的特征。数据库的物理结构设计大致包括:确定数据的存取方法,确定数据的存储结构。
物理结构设计阶段实现的是数据库系统的内模式,它的质量直接决定了整个系统的性能。因此在确定数据库的存储结构和存取方法之前,对数据库系统所支持的事物要进行仔细的分析,获得优化数据库物理设计的参数。
若出现数据冗余情况,是因为有某些数据记录不正确,去除了数据文件中的碎片,以保证数据传输的正确性和完整性。循环冗余检查(CRE)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似算法,以保证数据传输的正确性和完整性。若CRC校验不通过,系统重复向硬盘复制数据,陷入死循环,导致复制过程无法完成。
2.1.5 数据库实现
数据库的实施主要是根据逻辑结构设计和物理结构设计的结果,在计算机系统上建立实际的数据库结构,导入数据并进行程序的调试。
(1)销售组织表包含所属名称,负责人,所在区域,地址,电话,如表2.1所示。
表2.1 销售组织表
字段名
数据类型
字段长度与格式
是否为空
名称
文本
10
否
所在区域
文本
50
否
地址
文本
30
是
电话
文本
50
是
(2) 销售训练表包含所属业务员姓名,训练项目,开始时间,结束时间,成绩,如表2.2所示。
表2.2 产品管理表
字段名
数据类型
字段长度与格式
是否为空
业务员姓名
文本
10
否
训练项目
文本
50
否
开始时间
文本
30
否
结束时间
文本
50
是
成绩
文本
10
是
(3)销售业绩考核表包含所属业务员姓名,考核指标,完成率,分数,如表2.3所示。
表2.3考核指标表
字段名
数据类型
字段长度与格式
是否为空
业务员姓名
文本
10
否
考核指标
文本
50
否
利润额
文本
30
否
完成率
文本
50
是
分数
文本
10
是
2.2程序设计
2.2.1概要设计
根据以上对企业营销和企业营销管理系统系统的分析,一个标准的企业营销管理系统应该包括图图2.11所示的几大功能。除此之外还包括信息系统必须具备的通用功能,例如系统管理,权限设置,数据备份与恢复等。其中每个功能都由若干相关联的子功能模块组成。
企业营销管理系统
基本资料
市场管理
销售业务管理
销售组织
系统管理
销售分析
营销资源管理
辅助工具
产品管理
区域管理
销售组织
业务员管理
销售训练
市场跟踪
销售预测
数据导出
数据导入
月销售分析
年销售分析
网上明日
关
于
帮
助
企业名录
邮箱资源
密码修改
数据初始化
图2.2.1企业营销管理系统应包括的基本功能
销售组织包括销售组织,业务员管理,销售训练。
销售组织
销售组织
业务员管理
销售训练
图2.2.2销售组织模块图
2.2.2程序实现
程序实现主要是代码在编译器中运行得到的结果,课程信息类型管理窗体主要由文本框及命令按钮组成,管理员点击“添加、修改、删除、关闭”按钮系统会通过上述四个控件与数据库进行连接并进行数据的相应操作。
实现具体功能:
用户双击“企业营销管理系统.exe”文件的图标,即可进入到企业营销管理系统登录界面。系统登录界面如图3.1所示。
图3.1 系统登录
在“用户名称”文本框中输入“mr”,“密码”文本框中输入“mrsoft”,单击【确定】按钮或连续两次按〈Enter〉键,即可进入企业营销管理系统。企业营销管理系统主界面如图3.2所示。
图3.2 企业营销管理系统主界面
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFlie As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Dim rs1 As New ADODB.Recordset
Dim i, j As Integer
Public strMenu As String
Private Sub Form_Load()
lblMenu_Click (0)
Dim pnlX As Panel
'添加面板,并将它们设置为目录。
StatusBar1.Panels(1).AutoSize = sbrContents
StatusBar1.Panels(1) = mytag
Set pnlX = StatusBar1.Panels.Add
pnlX.AutoSize = sbrContents
pnlX.text = "当前操作员: " & czy
Set pnlX = StatusBar1.Panels.Add
pnlX.Style = sbrDate
Set pnlX = StatusBar1.Panels.Add
pnlX.Style = sbrTime
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Picture1.Visible = False
For i = 0 To 3
Label1(i).ForeColor = &HC0C0C0
Next i
End Sub
Private Sub Label1_Click(Index As Integer)
If Index < 3 Then
m8_Click (Index)
End If
If Index = 3 Then End
End Sub
Private Sub Label1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1(Index).ForeColor = &HC0&
End Sub
Private Sub Label2_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
Picture1.Left = Label2(Index).Left - 10
Picture1.Visible = True
lblCaption = Label2(Index).Caption
End Sub
Private Sub lblCaption_Click()
Select Case lblCaption.Caption
Case "产品管理"
m1_Click (1)
Case "销售组织"
m2_Click (0)
Case "销售训练"
m2_Click (2)
Case "销售业绩考核"
m2_Click (3)
Case "市场跟踪"
m3_Click (1)
Case "市场走势"
m3_Click (2)
Case "销售数据导入"
m4_Click (0)
Case "销售预测"
m4_Click (2)
End Select
End Sub
Private Sub lblMenu_Click(Index As Integer)
strMenu = lblMenu(Index).Caption
Dim m As Integer
For i = 1 To Index
picMenu(i).Top = picMenu(i - 1).Top + picMenu.Item(i - 1).Height
Next i
ListView1.Top = picMenu(i - 1).Top + picMenu.Item(i - 1).Height
If Index < 7 Then picMenu(Index + 1).Top = ListView1.Top + ListView1.Height
For i = Index + 2 To picMenu.Count - 1
picMenu(i).Top = picMenu.Item(i - 1).Top + picMenu.Item(i - 1).Height
Next i
Select Case Index
Case 0
ListView1.ListItems.Clear
ListView1.Enabled = True
For i = 0 To m1.Count - 1
Key = "【" & m1.Item(i).Caption & "】"
m = i + 1
Set itmX = ListView1.ListItems.Add(, , Key, m)
Next i
Case 1
ListView1.ListItems.Clear
ListView1.Enabled = True
For i = 0 To m2.Count - 1
Key = "【" & m2.Item(i).Caption & "】"
m = i + m1.Count
Set itmX = ListView1.ListItems.Add(, , Key, m)
Next i
Case 2
ListView1.ListItems.Clear
ListView1.Enabled = True
For i = 0 To m3.Count - 1
Key = "【" & m3.Item(i).Caption & "】"
m = m1.Count + m2.Count + i
Set itmX = ListView1.ListItems.Add(, , Key, m)
Next i
Case 3
ListView1.ListItems.Clear
ListView1.Enabled = True
For i = 0 To m4.Count - 1
Key = "【" & m4.Item(i).Caption & "】"
m = m1.Count + m2.Count + m3.Count + i
Set itmX = ListView1.ListItems.Add(, , Key, m)
Next i
Case 4
ListView1.ListItems.Clear
ListView1.Enabled = True
For i = 0 To m5.Count - 1
Key = "【" & m5.Item(i).Caption & "】"
m = m1.Count + m2.Count + m3.Count + m4.Count + i
Set itmX = ListView1.ListItems.Add(, , Key, m)
Next i
Case 5
ListView1.ListItems.Clear
ListView1.Enabled = True
For i = 0 To m6.Count - 1
Key = "【" & m6.Item(i).Caption & "】"
m = m1.Count + m2.Count + m3.Count + m4.Count + m5.Count + i
Set itmX = ListView1.ListItems.Add(, , Key, m)
Next i
Case 6
ListView1.ListItems.Clear
ListView1.Enabled = True
For i = 0 To m7.Count - 1
Key = "【" & m7.Item(i).Caption & "】"
m = m1.Count + m2.Count + m3.Count + m4.Count + m5.Count + m6.Count + i
Set itmX = ListView1.ListItems.Add(, , Key, m)
Next i
Case 7
ListView1.ListItems.Clear
ListView1.Enabled = True
For i = 0 To m8.Count - 1
Key = "【" & m8.Item(i).Caption & "】"
m = m1.Count + m2.Count + m3.Count + m4.Count + m5.Count + m6.Count + m7.Count + i
Set itmX = ListView1.ListItems.Add(, , Key, m)
Next i
End Select
End Sub
Private Sub ListView1_Click()
Select Case strMenu
Case "基本资料管理"
m1_Click (ListView1.SelectedItem.Index - 1)
Case "销售组织"
m2_Click (ListView1.SelectedItem.Index - 1)
Case "市场管理"
m3_Click (ListView1.SelectedItem.Index - 1)
Case "销售业务管理"
m4_Click (ListView1.SelectedItem.Index - 1)
Case "销售分析"
m5_Click (ListView1.SelectedItem.Index - 1)
Case "营销资源管理"
m6_Click (ListView1.SelectedItem.Index - 1)
Case "系统管理"
m7_Click (ListView1.SelectedItem.Index - 1)
Case "辅助"
m8_Click (ListView1.SelectedItem.Index - 1)
End Select
End Sub
Private Sub m1_Click(Index As Integer)
text = m1(Index).Caption
rs1.Open "select * from 权限信息表 where 操作员='" & czy & "'", Cnn, adOpenStatic
If rs1.RecordCount > 0 Then
If rs1.Fields(Index) = False Then
MsgBox "对不起,您没有使用此项功能的权限!", vbInformation, "提示窗口"
rs1.Close
Exit Sub
End If
End If
rs1.Close
Select Case Index
Case 0
Load main_jbzl_qygl
main_jbzl_qygl.Show 1
Case 1
Load main_jbzl_cpgl
main_jbzl_cpgl.Show 1
Case 2
jbxxtb = "训练项目表"
Load main_jbzl_public
main_jbzl_public.Show 1
Case 3
jbxxtb = "考核指标表"
Load main_jbzl_public
main_jbzl_public.Show 1
End Select
End Sub
Private Sub m2_Click(Index As Integer)
text = m2(Index).Caption
rs1.Open "select * from 权限信息表 where 操作员='" & czy & "'", Cnn, adOpenStatic
If rs1.RecordCount > 0 Then
If rs1.Fields(Index + m1.Count) = False Then
MsgBox "对不起,您没有使用此项功能的权限!", vbInformation, "提示窗口"
rs1.Close
Exit Sub
End If
End If
rs1.Close
Select Case Index
Case 0
Load main_xszz_xszzgl
main_xszz_xszzgl.Show 1
Case 1
Load main_xszz_ywygl
main_xszz_ywygl.Show 1
Case 2
Load main_xszz_xsxlgl
main_xszz_xsxlgl.Show 1
Case 3
Load main_xszz_xsyjgl
main_xszz_xsyjgl.Show 1
End Select
End Sub
Private Sub m3_Click(Index As Integer)
text = m3(Index).Caption
rs1.Open "select * from 权限信息表 where 操作员='" & czy & "'", Cnn, adOpenStatic
If rs1.RecordCount > 0 Then
If rs1.Fields(Index + m1.Count + m2.Count) = False Then
MsgBox "对不起,您没有使用此项功能的权限!", vbInformation, "提示窗口"
rs1.Close
Exit Sub
End If
End If
rs1.Close
Select Case Index
Case 0
Load main_scgl_scfkgl
main_scgl_scfkgl.Show 1
Case 1
Load main_scgl_scgzgl
main_scgl_scgzgl.Show 1
Case 2
intCP = 0
Load main_cpxx
main_cpxx.Show 1
End Select
End Sub
Private Sub m4_Click(Index As Integer)
text = m4(Index).Caption
rs1.Open "select * from 权限信息表 where 操作员='" & czy & "'", Cnn, adOpenStatic
If rs1.RecordCount > 0 Then
If rs1.Fields(Index + m1.Count + m2.Count + m3.Count) = False Then
MsgBox "对不起,您没有使用此项功能的权限!", vbInformation, "提示窗口"
rs1.Close
Exit Sub
End If
End If
rs1.Close
Select Case Index
Case 0
Load main_xsyw_xsdr
main_xsyw_xsdr.Show 1
Case 1
Load main_xsyw_xslr
main_xsyw_xslr.Show 1
Case 2
Load main_xsyw_xsyc
main_xsyw_xsyc.Show 1
Case 3
Load main_xsyw_xsjh
main_xsyw_xsjh.Show 1
End Select
End Sub
Private Sub m5_Click(Index As Integer)
text = m5(Index).Caption
rs1.Open "select * from 权限信息表 where 操作员='" & czy & "'", Cnn, adOpenStatic
If rs1.RecordCount > 0 Then
If rs1.Fields(Index + m1.Count + m2.Count + m3.Count + m4.Count) = False Then
MsgBox "对不起,您没有使用此项功能的权限!", vbInformation, "提示窗口"
rs1.Close
Exit Sub
End If
End If
rs1.Close
Select Case Index
Case 0
Load main_xsfx_yxsfx
main_xsfx_yxsfx.Show 1
Case 1
Load main_xsfx_jxsfx
main_xsfx_jxsfx.Show 1
Case 2
Load main_xsfx_nxsfx
main_xsfx_nxsfx.Show 1
End Select
End Sub
Private Sub m6_Click(Index As Integer)
text = m6(Index).Caption
rs1.Open "select * from 权限信息表 where 操作员='" & czy & "'", Cnn, adOpenStatic
If rs1.RecordCount > 0 Then
If rs1.Fields(Index + m1.Count + m2.Count + m3.Count + m4.Count + m5.Count) = False Then
MsgBox "对不起,您没有使用此项功能的权限!", vbInformation, "提示窗口"
rs1.Close
Exit Sub
End If
End If
rs1.Close
Select Case Index
Case 0
Load main_yxzy_qymlgl
main_yxzy_qymlgl.Show 1
Case 1
Load main_yxzy_grmlgl
main_yxzy_grmlgl.Show 1
Case 2
jbxxtb = "邮箱表"
Load main_jbzl_public
main_jbzl_public.Show 1
Case 3
Load main_yxzy_yxlpgl
main_yxzy_yxlpgl.Show 1
End Select
End Sub
Private Sub m7_Click(Index As Integer)
rs1.Open "select * from 权限信息表 where 操作员='" & czy & "'", Cnn, adOpenStatic
If rs1.RecordCount > 0 Then
If rs1.Fields(Index + m1.Count + m2.Count + m3.Count + m4.Count + m5.Count + m6.Count) = False Then
MsgBox "对不起,您没有使用此项功能的权限!", vbInformation, "提示窗口"
rs1.Close
Exit Sub
End If
End If
rs1.Close
text = m7(Index).Caption
Select Case Index
Case 0
Load main_xtgl_czqx
main_xtgl_czqx.Show 1
Case 1
Load main_xtgl_mm
main_xtgl_mm.Show
Case 2
Load main_xtgl_sjcsh
main_xtgl_sjcsh.Show
End Select
End Sub
Private Sub m8_Click(Index As Integer)
text = m8(Index).Caption
Select Case Index
Case 0
CommonDialog1.HelpFile = App.Path & "/HELP.HLP"
CommonDialog1.HelpCommand = cdlHelpContents
CommonDialog1.ShowHelp ' 显示 Visual Basic 帮助目录主题
Case 1
Load frm_about
frm_about.Show
Case 2
Dim Temp As String
Temp = "" '所要连接的网站名称
ShellExecute 0&, vbNullString, Temp, vbNullString, vbNullString, 0 '调用IE
End Select
展开阅读全文