第一篇:销售库存管理系统的设计与实现 程序运行说明
程序运行说明
1、运行环境
本系统源程序是在Windows XP下开发的,用户只有在Windows XP下正确配置程序所需的运行环境后,才能使用源程序。软件开发平台如下:
(1)操作系统:Windows XP(2)数 据 库:SQLServer 2000
(3)开发工具:MyEclipse2、安装步骤
(1)SQLServer 2000的安装
从网上下载SQLServer 2000。然后双击进行解压,找到解压包中的setup.bat文件。
双击打开该文件文件可以开始安装,会出现安装提示框,点击“下一步”,然后出现软件的许可证协议,点击“同意”,再点击“下一步”,然后选择安装的目录(一般默认在C盘)可以根据自己的情况更改安装目录,然后就直接点击“下一步”,在选择用户是选择本地用户,用户名和密码均设为“sa”。然后就直接点击“下一步”,直至完成安装。
(2)MyEclipse安装
从网上下载MyEclipse。双击解压,按照安装程序的指引步骤就可以正确安装本软件。
(3)附加数据库
打开Microsoft SQL Server 2000,把控制台左侧目录逐层展开,会看到“数据库”这个文件夹,右击该文件夹选择“所有任务”,单击“附加数据库”该项。此时会弹出“附加数据库”对话框,选择打开App_Date文件夹,从中选择“.MDF”选择完成后,单击“确定”按钮。返回“附加数据库”对话框,单击“确定”按钮,系统自动弹出提示信息“附加数据库顺利完成”,单击“确定”按钮。3 程序登录名和密码
用户名:admin
密码:123
第二篇:医院药品库存管理系统的设计与实现
医院药品库存管理系统的设计与实现
专业班级:计算机科学与技术2092班
学生姓名:苏勇
指导老师:郑刚
摘要
药房是医院最繁忙的科室之一,无论门诊还是住院药房,面临着大量取药的患者和家属,工作人员都在忙于事物性工作。各种原因造成药品上的差错不能及时发现和纠正,管理中的混乱现象也就不可避免。大型医院药房药品数量繁多,采购和发放的帐目登记是一件很繁琐的事情而且药品的价格经常调整,退货现象时有发生,使账目工作更加复杂,呈报准确库存资金和汇总某一期资金流动情况,其统计工作更是十分困难。医疗质量的提高和重病患者的抢救,与药品供应有着密切的关系。为了解决这个矛盾,实现科学化、现代化的医院药房药品的管理,我们在这里来研究与开发医院药品库存管理系统,并用于实践。
根据当前社会现状和技术发展的不断进步,我们应用现有的技术和环境,开发了医院药品库存管理系统,不仅要提高医院的经济效益,而且要使医院信息管理工作尽快达到规范化、制度化、科学化,最终要实现医院信息技术全电子无纸化和胶片管理的最终目标。
关键字:医院药品库存管理系统;VB;SQL Server 2000;E-R
引言
本软件是一个医院药品库存管理系统,是医院信息系统中的一个重要组成部分。它不仅涉及的数据量巨大,而且要求具有极高的准确性、安全性和保密性,其建设成果的好坏直接关系到整个医院医务工作人员工作效率和数据的安全性。为此,本软件严格遵循软件工程规定的设计方法和步骤,采用面向对象的开发、分析技术,对系统进行了深入细致的研究。本文介绍了面向对象的开发工具VB6.0以及数据库SQL Server的使用。重点阐述本系统的开发过程,详细地论述了一个系统开发应有的步骤:系统分析(系统背景分析、系统初步调查、系统可行性研究、现行系统的详细调查)、系统设计(包括系统总体结构设计、系统详细设计)和系统实施。
采用面向对象方法建立的系统具有较强的应变能力,各组成部分可重用性好。并且面向对象方法在系统分析、设计和实施阶段均采用以对象为基本单元的统一的模型,使开发各阶段之间具有良好的衔接。本文所叙述的内容以及程序代码都是医院库存管理中之常见问题。
第三篇:数据库课程设计——库存销售管理系统
数据库课程设计
实验报告
姓名:黄世增
班级:计算机1403
学号:14116403051.实验名称
使用Visual Basic 6.0和SQL Server 2014开发库存销售管理系统
2.实验目的
使用Visual Basic 6.0开发工具开发一个库存销售管理系统,该系统采用SQL Server 2014数据库保存库存货物信息,数据库中包括货物出入库信息和商品销售等信息。该系统包括系统登录、货物出入库管理、商品销售管理和商品统计管理等功能,通过这些功能实现对库存中货物信息和销售信息进行管理。
系统主要实现以下目标:
实现系统登录及修改用户密码的功能。 对库存货物的出入库信息进行管理。 对商品的销售信息进行管理。
根据销售日期统计商品的销售数据。
3.实验步骤 3.1 设计数据库
建立一个名为“DB_KCGL”的数据库,根据前述的主要功能目标,需要建立3个数据表(关系):
(1)货物的出入库信息:保存货物的出入库信息
id:库存货物信息的编号,主码,建议长度为18的numeric类型。 tb_title:库存货物的名称,建议长度为50的varchar类型。 tb_style:库存货物的类型,建议长度为50的varchar类型。 tb_nums:库存货物的数量,建议为整型int。 tb_values:库存货物的价格,实数类型real。
tb_date:库存货物的入库日期,时间日期类型datetime。
tb_mark:库存货物的备注信息,建议长度为50的varchar类型。
(2)商品的销售信息:保存商品的销售信息
id:商品销售信息的编号,主码,建议长度为18的numeric类型。
tb_title:销售商品的名称,建议长度为50的varchar类型。tb_nums:建议为整型int。
tb_values:销售商品的总价,浮点类型float。
tb_date:商品销售的日期,时间日期类型datetime。
(3)系统用户的信息:保存系统用户的信息
id:用户信息的编号,主码,建议长度为18的numeric类型。 tb_name:用户名称,建议长度为50的varchar类型。
tb_pas:用户的密码信息,建议长度为50的varchar类型。
3.2 设计连接数据库的模块
需要首先建立一个连接数据库的模块,这样应用程序才能与数据库中的数据表取得连接,将数据信息从数据表中读出到应用程序中或通过应用程序保存到数据表中。
为此,建立一个负责数据库连接的模块如下:
(1)选择“工程”菜单下的“添加模块”命令,在应用程序中添加一个模块Module1。(2)Module1模块的实现如下: '数据连接模块
Public MyStrs As String Public DB_AdoRs As New ADODB.Recordset
'后添加一个记录集对象 Public DB_AdoRs1 As New ADODB.Recordset
'后添加一个记录集对象 Public DB_AdoRs2 As New ADODB.Recordset
'后添加一个记录集对象 Public Function Cnn()As ADODB.Connection
'定义连接字符串函数
Set Cnn = New ADODB.Connection
Cnn.Open “Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DB_KCGL;Data Source=.” End Function Public Sub Main()
MyStrs = “Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security
Info=False;Initial Catalog=DB_KCGL;Data Source=.”
'显示系统登录窗体
Form1.Show End Sub(3)这里需要将程序的入口设置为模块中的Main()函数。选择“工程”菜单下的“工程属性”命令,在“通用”标签中进行相应设置。
3.3 系统登陆模块设计
在本库存销售管理系统中,只有授权用户(管理员)可以登录并进行库存和销售信息管理与维护,因此需要一个系统登录界面,防止非法用户登录到系统中,从而保证了应用程序的安全性和可靠性。
3.3.1 登录窗体设计
设计如下的登录窗体,在窗体中要添加一个ADO控件,命名为Adodc1。
(1)登录窗体启动之后,需要将系统用户的信息数据表中的所有用户名称信息添加到窗体的ComboBox控件的Op_Name属性中,即实现在“操作员名称”下拉列表中可以出现系统当前的操作员信息,供登录用户选择。Private Sub Form_Load()'使用代码连接数据库与数据表
Adodc1.ConnectionString = MyStrs
Adodc1.RecordSource = “select * from 系统的用户信息”
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
Adodc1.Recordset.MoveFirst
Op_Name.Clear
'在添加数据时,首先清空控件中的内容
Do While Adodc1.Recordset.EOF = False
'将操作员信息添加到下拉列表框控件当中
Op_Name.AddItem(Adodc1.Recordset.Fields(“tb_name”))
Adodc1.Recordset.MoveNext
Loop
End If End Sub
(2)当用户在“操作员名称”下拉列表中选择操作员的名称,并且在“操作员密码”文本框输入正确的密码之后,单击“确定”按钮将登录到系统中,否则将无法登录系统。具体实现如下:
Private Sub Cmd_Ok_Click()Adodc1.RecordSource = “select * from Tb_User where tb_name ='” & Op_Name.Text & “'” Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
MPassword = Adodc1.Recordset.Fields(“tb_pas”)
If Txt_Password.Text = MPassword Then
'判断数据的密码是否正确
Name1 = Op_Name.Text
Frm_Main.StatusBar1.Panels.Item(2).Text = “当前操作员: ” + Adodc1.Recordset.Fields(“tb_name”)
Frm_Main.Show
'通过身份验证则显示主窗体,登录到系统当中
Unload Me
Else
MsgBox “密码不正确,请您确认后重新输入”, , “提示信息”
Txt_Password.Text = “"
Txt_Password.SetFocus
End If
Else
MsgBox ”对不起 没有此用户的信息“, , ”提示信息“
Op_Name.Text = ”“
Txt_Password.Text = ”“
End If End Sub 3.4 系统主界面的实现
3.4.1 主界面设计
(1)在工程中添加一个窗体,将窗体命名为Frm_main,将窗体Caption属性设置为“库存管理系统”。
(2)添加一个Toolbar控件,工具栏由“修改密码”、“库存管理”、“商品销售”、“销售统计”和“退出系统”5个按钮组成。(3)添加一个StatusBar控件,使得状态栏中能够显示登录操作员姓名和当前系统时间等信息。
(4)在主窗体上添加一个时钟控件,用于显示系统当前日期和时间信息。
(5)在主窗体上添加一个Label标签控件,将其Caption属性设置为“库存管理系统”。
3.4.2 代码实现
(1)窗体启动时,在窗体的状态栏中将显示当前系统的日期信息: Private Sub Form_Load()
StatusBar1.Panels.Item(3).Text = Format(Now, ”yyyy年mm月dd日“)End Sub
(2)单击窗口工具栏按钮时,将会调用系统的各个子功能模块: Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Index
Case 1
Frm_Pas.Show
'修改密码
Case 2
Frm_Inout.Show '库存管理
Case 3
Frm_Sale.Show
'商品销售
Case 4
Frm_Stat.Show
'销售统计
Case 5
End
'退出系统
End Select End Sub
(3)在时钟控件的Timer事件中添加如下代码,实现在状态栏中显示当前系统时间的功能: Private Sub Timer1_Timer()
StatusBar1.Panels.Item(4).Text = Time End Sub
(4)再向状态栏中添加公司名称,操作员和公司网址信息。
系统主窗体的运行界面如下图所示:
3.5 出入库管理模块的设计与实现
该模块主要是记录和维护库存中的货物信息,其中包括对货物信息的删除、修改和保存等方面的功能。
3.5.1 窗体界面设计
(1)在工程中添加一个窗体,命名为Frm_Inout,将窗体Caption设置为“出入库管理”。(2)在窗体上添加相应的控件,如下图所示。
(3)通过“工程”菜单下的“部件”命令将DataGrid数据表格控件添加到工具箱中,然后在窗体上添加1个数据表格控件DataGrid1。
(4)在窗体上添加一个ADO控件Adodc1,同时将DataGrid1的数据源属性DataSource设置为Adodc1。
3.5.2 程序代码实现
(1)窗口载入时,将数据库中商品表数据读出。Private Sub Form_Load()
Adodc1.ConnectionString = MyStrs
Adodc1.RecordSource = ”select * from 货物的出入库信息 order by id“
Adodc1.Refresh
AddTitle End Sub
其中,AddTitle函数用于向DataGrid1添加表头,实现如下: '添加数据库字段标题的事件过程 Private Sub AddTitle()
DataGrid1.Columns.Item(0).Caption = ”编号“
DataGrid1.Columns.Item(1).Caption = ”名称“
DataGrid1.Columns.Item(2).Caption = ”类型“
DataGrid1.Columns.Item(3).Caption = ”数量“
DataGrid1.Columns.Item(4).Caption = ”单价“
DataGrid1.Columns.Item(5).Caption = ”入库日期“
DataGrid1.Columns.Item(6).Caption = ”备注“
End Sub
(2)点击“添加”按钮,清空编辑框,让用户输入新的待添加内容 Private Sub Command1_Click()'清空文本框中的内容
Text1.Text = ”“
Text2.Text = ”“
Text3.Text = ”“
Text4.Text = ”“
Text5.Text = ”“
Text6.Text = ”“
Text1.SetFocus End Sub(3)点击“删除”按钮,删除选中当前记录。Private Sub Command2_Click()'删除库存信息
c = MsgBox(”确认要删除该信息吗“, 17, ”提示信息“)
If c = vbOK Then
'如果有错误则执行错误处理
On Error Resume Next
Set DB_AdoRs = Cnn.Execute(”Delete from 货物的出入库信息 where id='“ + Text1.Text + ”'“)MsgBox ”数据删除成功“, 64, ”提示信息“
'删除后刷新数据信息
Adodc1.RecordSource = ”select * from 货物的出入库信息 order by id“
Adodc1.Refresh
AddTitle
End If
Text1.Text = ”“
Text2.Text = ”“
Text3.Text = ”“
Text4.Text = ”“
Text5.Text = ”“
Text6.Text = ”“
End Sub
(4)点击“修改”按钮,修改当前的记录信息。Private Sub Command3_Click()'修改库存信息
c = MsgBox(”确认修改信息吗“, 33, ”提示信息“)
If c = vbOK Then
'
On Error Resume Next
Set DB_AdoRs = Cnn.Execute(”UPDATE 货物的出入库信息 SET tb_title='“ + Text2 + ”',tb_style='“ + Text3 + ”',tb_nums='“ + Text4 + ”',tb_values='“ _
+ Text5 + ”',tb_mark='“ + Text6 + ”' where id='“ + Text1.Text + ”'“)
MsgBox ”数据修改成功“, 64, ”提示信息“
Adodc1.RecordSource = ”select * from 货物的出入库信息 order by id“
Adodc1.Refresh
AddTitle
End If End Sub(5)点击“保存”按钮,将保存文本框中输入的货物信息。Private Sub Command4_Click()If Text1.Text = ”“ Or Text2.Text = ”“ Or Text3.Text = ”“ Or Text4.Text = ”“ Or Text5.Text = ”“ Or Text6.Text = ”“ Then
MsgBox ”保存的数据信息不能为空“, 48, ”提示信息“
Else
DB_AdoRs.Open ”select * from 货物的出入库信息 where tb_title='“ + Text2.Text + ”'“, Cnn, adOpenKeyset
If DB_AdoRs.RecordCount > 0 Then
'判断要保存的信息是否已经存在
MsgBox ”该货物信息信息已经存在“, 48, ”提示信息“
DB_AdoRs.Close
Else
DB_AdoRs.Close
c = MsgBox(”确认保存信息吗“, 33, ”提示信息“)
If c = vbOK Then
'如果选择的是“确定”按钮则保存信息
Set DB_AdoRs = Cnn.Execute(”insert into 货物的出入库信息 values(“ & Text1 & ”,'“ & Text2 & ”','“ & Text3 & ”',“ & Text4 & ”,“ _
& Text5 & ”,'“ & Date & ”','“ & Text6 & ”')“)
MsgBox ”信息保存成功“, 64, ”提示信息“
Else
End If
'保存数据后刷新数据信息
Adodc1.RecordSource = ”select * from 货物的出入库信息 order by id“
Adodc1.Refresh
AddTitle
End If
End If End Sub(6)点击退出,销毁当前窗口。Private Sub Command6_Click()
Unload Me End Sub
(7)单击DataGrid1中的相应记录,会在窗体左侧的各个编辑框中显示相应的内容。Private Sub DataGrid1_Click()'On Error Resume Next
If Adodc1.Recordset.RecordCount > 0 Then
Text1.Text = Adodc1.Recordset.Fields(0)
Text2.Text = Adodc1.Recordset.Fields(1)
Text3.Text = Adodc1.Recordset.Fields(2)
Text4.Text = Adodc1.Recordset.Fields(3)
Text5.Text = Adodc1.Recordset.Fields(4)
Text6.Text = Adodc1.Recordset.Fields(6)
End If End Sub
窗体的运行界面如下图所示:
3.6 商品销售模块的设计与实现
在“商品销售管理”窗口中的“销售商品”下拉列表中选择要销售的商品之后,该商品的基本信息将显示在窗体中相应的文本框中,在输入销售数量和实收金额后,单击“确认销售”按钮完成销售商品的操作。
3.6.1 窗体界面设计
(1)在工程中添加一个窗体,命名为Frm_Sale,将Caption属性设置为“商品销售管理”。(2)在窗体上添加相应的控件,如下图所示。
(3)通过“工程”菜单下的“部件”命令将DataGrid数据表格控件添加到工具箱中,然后在窗体上添加1个数据表格控件DataGrid1。
(4)在窗体上添加2个ADO控件Adodc1和Adodc2,同时将DataGrid1的数据源属性DataSource设置为Adodc2。
3.6.2 程序代码实现
(1)窗体启动时,将商品库存中的货物名称信息添加到下拉列表中,然后再将商品销售的数据信息显示在DataGrid1控件中。Private Sub Form_Load()Adodc2.ConnectionString = MyStrs
Adodc2.RecordSource = ”select * from 商品的销售信息 order by id“
Adodc2.Refresh
AddTitle
'使用代码连接数据库与数据表
Adodc1.ConnectionString = MyStrs
Adodc1.RecordSource = ”select * from 货物的出入库信息“
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
Adodc1.Recordset.MoveFirst
Combo1.Clear
'在添加数据时,首先清空控件中的内容
Do While Adodc1.Recordset.EOF = False
'将货物出入库信息添加到下拉列表框控件当中
Combo1.AddItem(Adodc1.Recordset.Fields(”tb_title“))
Adodc1.Recordset.MoveNext
Loop
End If End Sub Private Sub AddTitle()
DataGrid1.Columns.Item(0).Caption = ”编号“
DataGrid1.Columns.Item(1).Caption = ”名称“
DataGrid1.Columns.Item(2).Caption = ”销售数量“
DataGrid1.Columns.Item(3).Caption = ”销售总价“
DataGrid1.Columns.Item(4).Caption = ”销售日期“ End Sub(2)选择下拉列表中的商品之后,该商品的详细信息将显示在窗体中相对应的文本框中。'商品详细信息
Private Sub Combo1_Click()Adodc1.RecordSource = ”select * from 货物的出入库信息 where tb_title ='“ & Combo1.Text & ”'“ Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
Text1.Text = Adodc1.Recordset.Fields(”id“)
Text2.Text = Adodc1.Recordset.Fields(”tb_style“)
Text3.Text = Adodc1.Recordset.Fields(”tb_nums“)
Text4.Text = Adodc1.Recordset.Fields(”tb_values“)
Text5.Text = Adodc1.Recordset.Fields(”tb_mark“)
End If
'清空文本框中的内容
Text6.Text = ”“
Text7.Text = ”“
Text8.Text = ”“
Text9.Text = ”“
End Sub
(3)单击“确认销售”按钮,将完成销售商品的操作。
(4)当用户输入销售数量后并将输入焦点移开后,需要实时更新商品详细信息中的数量信息,即在原有数量的基础上减去用户输入的销售数量。(3)和(4)的代码:
Private Sub Command1_Click()
Adodc1.ConnectionString = MyStrs
Adodc1.RecordSource = ”select * from 货物的出入库信息 where tb_title ='“ & Combo1.Text & ”'“
Adodc1.Refresh
Dim a As Integer
Dim b As Integer
a = Val(Text7.Text)
b = Val(Text4.Text * Text6.Text)
If Text6.Text = ”“ Or Text7.Text = ”“ Then
MsgBox ”请补全信息!“, 64, ”提示信息“
Else
If a < b Then
MsgBox ”信息输入有误,请重新输入!“, 64, ”提示信息“
Else
Text8.Text = Text4.Text * Text6.Text
Text9.Text = Text7.TextText6.Text
Adodc1.Recordset.Update
Set DB_AdoRs = Cnn.Execute(”insert into 商品的销售信息 values('“ & Adodc2.Recordset.RecordCount + 1 & ”','“ & Combo1.Text & ”','“ & Text6 & ”',“ & Text8 & ”,'“ & Date & ”')“)
Set DB_AdoRs = Cnn.Execute(”UPDATE 货物的出入库信息 SET tb_nums = '“ & Text3 & ”' where id= '“ & Text1 & ”'“)
MsgBox ”销售成功!“, 64, ”提示信息“
Adodc2.RecordSource = ”select * from 商品的销售信息 “
Adodc2.Refresh
AddTitle
End If
End If End Sub
窗体的运行结果如下图所示:
3.7 销售统计模块的设计与实现
该模块主要实现统计商品销售信息的功能。选择商品的销售日期和销售商品的名称之后,在下面的DataGrid数据表格控件中就会显示查询的数据结果信息,同时统计出销售商品的总数量和总价格。
3.7.1 窗体界面设计
(1)添加一个窗体,命名为Frm_Stat,将窗体的Caption属性设置为“销售统计”。(2)在窗体上添加控件情况如后图。
(3)在窗体上添加一个数据表格控件DataGrid1。
(4)在窗体上添加2个ADO控件Adodc1和Adodc2,同时将DataGrid1的数据源属性DataSource设置为Adodc2。
销售统计窗体的设计界面如下图所示。
3.7.2 程序代码实现
(1)在启动窗体时,将货物的名称信息添加到下拉列表控件中,然后再将商品销售的数据信息显示在表格控件中。
(2)在日期时间控件DTPicker1的Change事件下添加如下的程序代码,实现根据选择条件统计商品销售信息的功能。
(3)在日期Combo1控件的Click事件下添加如下的程序代码,实现根据选择条件统计商品销售信息的功能。
Private Sub Combo1_Click()Adodc2.RecordSource = ”select * from 商品的销售信息 where tb_title ='“ & Combo1.Text & ”' and tb_date ='“ & DTPicker1.Value & ”' “ Adodc2.Refresh AddTitle Dim n, m As Integer n = 0 m = 0 Do While Not Adodc2.Recordset.EOF n = n + Adodc2.Recordset.Fields(2).Value m = m + Adodc2.Recordset.Fields(3).Value Adodc2.Recordset.MoveNext Loop Text1.Text = n
Text2.Text = m End Sub
Private Sub DTPicker1_Change()Adodc2.RecordSource = ”select * from 商品的销售信息 where tb_title ='“ & Combo1.Text & ”' and tb_date ='“ & DTPicker1.Value & ”' “ Adodc2.Refresh AddTitle Dim n, m As Integer n = 0 m = 0 Do While Not Adodc2.Recordset.EOF n = n + Adodc2.Recordset.Fields(2).Value m = m + Adodc2.Recordset.Fields(3).Value Adodc2.Recordset.MoveNext Loop Text1.Text = n Text2.Text = m End Sub
Private Sub Form_Load()
Adodc2.ConnectionString = MyStrs
Adodc2.RecordSource = ”select * from 商品的销售信息 where tb_title ='“ & Combo1.Text & ”' and tb_date ='“ & DTPicker1.Value & ”' order by id“
Adodc2.Refresh
AddTitle
'使用代码连接数据库与数据表
Adodc1.ConnectionString = MyStrs
Adodc1.RecordSource = ”select * from 货物的出入库信息 “
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
Adodc1.Recordset.MoveFirst
Combo1.Clear
'在添加数据时,首先清空控件中的内容
Do While Adodc1.Recordset.EOF = False
'将商品销售信息添加到下拉列表框控件当中
Combo1.AddItem(Adodc1.Recordset.Fields(”tb_title“))
Adodc1.Recordset.MoveNext
Loop
End If End Sub
Private Sub AddTitle()
DataGrid1.Columns.Item(0).Caption = ”编号“
DataGrid1.Columns.Item(1).Caption = ”名称“
DataGrid1.Columns.Item(2).Caption = ”销售数量“
DataGrid1.Columns.Item(3).Caption = ”销售总价“
DataGrid1.Columns.Item(4).Caption = ”销售日期“ End Sub
窗体的运行结果如下:
3.8 修改密码模块的设计与实现
3.8.1 窗体界面设计
(1)添加一个窗体,命名为Frm_Pas,将Caption属性设置为“密码修改”。(2)在窗体上加入一个ADO控件Adodc1。(3)设计窗体的界面如下图。
3.8.2 程序代码实现
(1)载入窗口时连接操作员信息数据表 Private Sub Form_Load()'使用代码连接数据库与数据表
Adodc1.ConnectionString = MyStrs
Adodc1.RecordSource = ”select * from 系统用户的信息“
Adodc1.Refresh End Sub
(2)当点击“确定”按钮时,首先判断用户输入的用户名和原密码信息是否正确,如果正确并且两次输入的新密码一致,就将用户密码修改为新密码。Private Sub Command1_Click()Adodc1.RecordSource = ”select * from 系统用户的信息 where tb_name ='“ & Text1.Text & ”'“ Adodc1.Refresh
If Text1.Text = ”“ Then
MsgBox ”请输入用户名!“, 48, ”提示信息“
Text1.SetFocus
Else
If Text2.Text = ”“ Then
MsgBox ”请输入旧密码!“, 48, ”提示信息“
Text2.SetFocus
Else
If Text3.Text = ”“ Then
MsgBox ”请输入新密码!“, 48, ”提示信息“
Text3.SetFocus
Else
If Text4.Text = ”“ Then
MsgBox ”请确认新密码!“, 48, ”提示信息“
Text4.SetFocus
Else
If Adodc1.Recordset.RecordCount > 0 Then
MPassword = Adodc1.Recordset.Fields(”tb_pas“)
If Text2.Text = MPassword And Text3.Text = Text4.Text Then
'判断数据的密码是否正确
Set DB_AdoRs = Cnn.Execute(”UPDATE 系统用户的信息 SET tb_pas='“ + Text3.Text + ”' where tb_name='“ + Text1.Text + ”'“)
MsgBox ”密码已修改!“, 48, ”提示信息“
Unload Me
Else
If Text2.Text <> MPassword Then
MsgBox ”密码不正确,请您确认后重新输入!“, 64, ”提示信息“
Text2.Text = ”“
Text3.Text = ”“
Text4.Text = ”“
Text2.SetFocus
Else
MsgBox ”两次输入的新密码不一致,请重新输入!“, 64, ”提示信息“
Text3.Text = ”“
Text4.Text = ”“
Text3.SetFocus
End If
End If
Else
If Text1.Text <> ”“ Then
MsgBox ”对不起 没有此用户的信息!“, 64, ”提示信息“
Text1.Text = ”“
Text2.Text = ”“
Text3.Text = ”“
Text4.Text = ”"
Text1.SetFocus
End If
End If
End If
End If
End If
End If End Sub
(3)当用户点击“取消”时,关闭密码修改对话框。Private Sub Command2_Click()
End End Sub
窗体的运行结果如下:
4.实验总结
通过这两星期的学习,加深了我对数据库的认识,懂得了如何去应用数据库,也对Visual Basic有了一定的了解了,虽然设计的过程中并不是那么的顺利,但经过查找相关的资料后,问题一步一步地解决了,相信对我以后的学习有一定的帮助。
第四篇:库存管理系统的与设计介绍
库存管理系统的分析与设计
目 录 第一章 导言 ………………………………………………………(2)
1.1问题的提出 ……………………………………………………(2)
1.2本文研究路线 …………………………………………………(3)
第二章 库存管理系统研究概述 …………………………………(4)
2.1传统企业库存管理存在的问题 ………………………………(4)
2.2企业库存管理系统的特点 ……………………………………(5)
2.3企业库存管理系统应用解决方案 ……………………………(5)
第三章 库存管理系统分析与设计…………………………………(6)
3.1企业库存管理系统功能需求简介 ……………………………(6)
3.2功能需求描述 …………………………………………………(6)3.3系统业务流程 …………………………………………………(10)
3.4库存管理流程 …………………………………………………(11)3.5系统的主要模块 ………………………………………………(11)3.6系统逻辑结构 …………………………………………………(12)
3.7系统平台选择 …………………………………………………(14)3.8数据库设计 ……………………………………………………(15)3.9数据结构设计 …………………………………………………(15)
第四章 库存统计分析库模块
…………………………………(16)4.1毕业设计课题目标与意义 ……………………………………(16)
4.2统计分析模块功能 ……………………………………………(16)
4.3统计查询流程图 ………………………………………………(17)4.4设计总结 ………………………………………………………(18)
4.5谢词 ……………………………………………………………(18)
第五章 参考文献 …………………………………………………(19)
[摘要]
库存管理系统是生产、计划和控制的基础。本系统通过对仓库、货位等帐务管理及入/出库类型、入/出库单据的管理,及时反映各种物资的仓储、流向情况,为生产管理和成本核算提供依据。通过库存分析,为管理及决策人员提供库存资金占用情况、物资积压情况、短缺/超储情况、ABC分类情况等不同的统计分析信息.通过对批号的跟踪,实现专批专管,保证质量跟踪的贯通。通过清仓盘库管理,保证帐面与实物一致,为计划及决策人员提供实时准确的存货信息,以便及时调整生产,保证企业各项生产经营活动的顺利进行。
本系统与其他子系统如采购、销售、生产等.只有和其它子系统结合起来运行时,才能对整个企业的产、供、销、人、财、物实行全面的管理,以最快的速度获取最新的信息,最终提高企业的经济效益。
[关键字] 出入库、货位、流水帐、统计分析、盘点、ABC分类
第一章 导 言
1.1问题的提出
当今企业竞争范围的扩大,要求在企业的各个方面加强管理,并要求企业有更高的信息化集成,要求对企业的整体资源进行集成管理,而不仅仅对制造资源进行集成管理。因此,信息管理系统与理论仅停留在对制造部分的信息集成与理论研究上是远远不够的。企业之间既是竞争对手,又是合作伙伴,信息管理要求扩大到整个供应链的管理。随着现代管理思想和方法的提出和发展,如JIT(Just ln Time——及时生产)、TQC(TotalQualityControl——全面质量管理)、OPT(OptimizedProduction Technology——优化生产技术)及DRP(Distribution Resource lanning——分销资源计划)等,又相继出现了MES(ManufacturingExecuteSystem——制造执行系统)、AMS(Agile Manufacturing System——敏捷制造系统)等现代管理思想。MRP-II逐步吸收和融合其它先进思想来完善和发展自身理论。20世纪90年代MRP-II发展到了一个新的阶段:ERP(EnterpriseResourcePlanning——企业资源计划)。简要地说企业的所有资源包括3大流:物流、资金流和信息流。ERP也就是对这3种资源进行全面集成管理的管理信息系统。概括地说,ERP是建立在信息技术基础上,利用现代企业的先进管理思想,全面地集成了企业的所有资源信息,并为企业提供决策、计划、控制与经营业绩评估的全方位和系统化的管理平台。ERP系统是一种管理理论和管理思想,不仅仅是信息系统。它利用企业的所有资源,包括内部资源与外部市场资源,为企业制造产品或提供服务创造最优的解决方案,最终达到企业的经营目标。ERP融合了离散型生产和流程型生产的特点,扩大了管理的范围,更加灵活或“柔性”地开展业务活动,实时地响应市场需求。总之,ERP极大地扩展了业务管理的范围及深度,包括质量、设备、分销、运输、多任务厂管理、数据采集接口等。ERP的管理范围涉及企业的所有供需过程,是对供应链的全面管理和企业运作的供需链结构的全面管理。
为了加强管理,提高企业的信息化水平,福州台钻厂计划引入ERP系统,并委托我院对其实施ERP系统提供帮助。
1.2本文研究路线
库存管理系统是生产、计划和控制的基础。库存管理系统是通过对仓库、货位、入出库类型与入出库单据的管理,及时反映物资的仓储、流向情况,为生产管理和成本核算提供依据。并通过库存分析,为管理及决策人员提供库存资金占用情况、物资短缺(超储)情况、ABC分类情况等不同的分析信息。通过清仓盘库管理,保证帐面与实物一致,为计划及决策人员提供实时准确的存货信息,以便及时调整生产,保证企业各项生产经营活动的顺利进行。
第二章 企业库存管理系统研究概述
2.1传统企业库存管理存在的问题
库存管理是企业管理(本文以制造业企业为例)的重要组成部分。在企业生产经营活动中,库存管理既必须保证生产车间对原材料、零部件需求,又直接影响采购、销售部门的购、销活动。为盘活企业流动资金,加快资金周转,在保障供给的前提下,最大限度地降低压库资金,直接牵动着企业的经营效益。根据对我国众多制造业企业的库存管理情况所作的调查和参考有关资料,发现目前制造业企业在库存管理方面普遍存在着如下问题:
(1)不能及时获得库存信息。在企业运作过程中,有时必须获知各种零部件当前的库存量,但由于零部件种类多、数量大,需要进行仔细地核算,这不仅费时,而且易出错,从而影响企业快速有效地运转。
(2)库存信息不够准确。仓库管理员根据各种送货单、退货单、收料单、发料单、领料单和退料单进行物料的入库、出库搬运后,要随时修改库存信息和借、欠料信息,以便反映库存状况。工作中的主要问题是,由于零部件种类多、数量大,使得库存记录和实际库存时常不是严格一致的。因而需要通过盘点来纠正差错,这既耽误时间,工作量又大。
(3)无法及时了解发料和生产用料情况。在工令单下达后,由于零部件与生产线的关系复杂,根据送料员的个人经验给各配料点送料时,常缺少发料、用料记录和相关信息,经常出现生产线缺料才知道需要送料的情况,导致生产和用料发生混乱,无法了解发料和生产用料的实际情况。
市场需求日益多样化和个性化,产品更新换代的周期越来越短,这就要求制造业企业必须改变库存管理现状。
2.2企业库存管理系统的特点
因为传统企业库存管理存在以上的问题难于适应现代库存管理要求,所以现代企业库存管理系统要具有以下的特点:
1.科学的库存管理流程
存货的种类不同,所涉及的业务环节及它们所组成的业务流程也各有差异。一般而言,存货业务包括到货处理、保管和发放三个主要部分。通畅的业务流程是保障高效库存管理的基础,应具备优化、无冗余、并行作业的基本属性。
2.科学的组织结构 科学的组织结构确保了业务流程的高效执行,明确了工厂、存储区域、仓库编码、仓储种类以及仓储箱之间的合理关系。
3.进行物料代码化管理
物料种类繁多,在库存管理过程中极易发生混乱的问题。IT技术与层次编码技术的结合为物料的高效管理提供了可能。这种编码技术将所有存货按照层次和类别进行编码的唯一形管理,编码的组成部分包括存货的型号、规格、尺寸等内容。它具有易读和易记的特点,使得管理者只需知道货物的编码,就可以了解该物料的所有信息,以便在每日的烦杂管理中,保持规范、有序的状态。
2.3企业库存管理系统应用解决方案
一般的操作步骤为:
(1)企业采购部采购商品后,填制采购入库单,并将商品发送给仓库,办理入库。
仓库收到采购部门的商品后,办理入库业务,并对入库后的采购入库单进行审核,然后将已审核的采购入库单反传给企业采购部门,以便企业采购部门了解商品的在途情况。
(3)企业销售商品后,开据销售出库单,操作员或业务员拿着销售出库单到仓库中提货或仓库根据销售出库单发货。
第三章 企业库存管理系统分析与设计
3.1企业库存管理系统功能需求简介
库存管理系统通过对仓库、货位、入出库类型与入出库单据的管理,通过库存分析、清仓盘库管理来实现对企业库存的管理,全面监控企业商品的进、出、存等各种状况,以满足现代企业的库存管理需要。
1.具有进行期初建帐、系统盘点、数据备份等的系统初始化功能;
2.能够进行企业物料基础数据的设置(包括仓库、货物、部门、项目等的设置);
3.可以根据企业实际情况,进行仓库管理,如出库、入库、盘点操作等;
4.对库存货物可进行数据查询,如出入库统计查询、项目资金分析统计等;
3.2功能需求描述
1.系统初始
基础数据:仓库信息、存放地点、构成信息、库存常用数据等。
系统支持基础数据的查询、打印、增加、修改、删除等操作。
编码方案:定义货物分类、库存属性、部门、子类等的编码方案。
2.日常业务:
(1)采购入库单 采购入库单一般指采购原材料验收入库时,所填制的入库单据;企业一般指商品进货入库时,填制的入库单。采购入库单是企业入库单据的主要部分,因此在本系统中,采购入库单也是日常业务的主要原始单据之一。
(2)材料出库单 材料出库单是企业领用材料时,所填制的出库单据。材料出库单是企业出库单据的主要部分,因此在本系统中,材料出库单也是进行日常业务处理和记帐的主要原始单据之一。
(3)产成品入库单 产成品入库单是指产成品验收入库时,所填制的入库单据。产成品入库单是以企业入库单据的主要部分。
(4)销售出库单 销售出库单是指产成品销售出库时,所填制的出库单据。销售出库单也是企业出库单据的主要部分,因此在本系统中,销售出库单也是进行日常业务处理和记帐的主要原始单据之一。
(5)其他入库单 企业的其他入库单是指除采购入库、产成品入库之外的其他入库业务,如调拨入库、盘盈入库、形态转换入库等业务形成的入库单。
(6)其他出库单 企业的其他出库指除销售出库、材料出库之外的其他出库业务,如调拨出库、盘亏出库、形态转换出库等。
(7)调拨:管理仓库间的实物转移和分销意义上的仓库分配、调拨业务,属转移事务类型。
(8)形态转换:某种物品在加工或存储过程中,由于加工或环境的原因,使其形态和名称发生变化,这时需处理形态转换业务,调整库存帐。
(9)反冲:对于生产环节在制品及不入库半成品业务,系统按照产品结构管理实现原材料与在制品、半成品对冲处理功能,实现在制品、半成品管理。
(10)盘点单
在日常物品收发、保管过程中,由于计量错误、检验疏忽、管理不善、自然损耗、核算错误等原因,有时会发生物品的盘盈、盘亏和毁损现象,从而造成物品帐实不相符。为了保护企业流动资产的安全和完整,做到帐实相符,企业必须对物品进行定期或不定期的清查。确定企业各种物品的实际库存量,并与帐面记录相核对,查明物品盘盈、盘亏和毁损的数量以及造成的原因,并据以编制物品盘点报告表,按规定程序,报有关部门审批。物品盘盈、盘亏和毁损,在查明原因、分清责任、按规定程序报经有关部门批准后,应进行相应的帐务处理,调整物品帐的实存数,使物品的帐面记录与库存实物核对相符。物品盘点报告表,是证明企业物品盘盈、盘亏和毁损,据以调整物品实存数的书面凭证,经企业领导批准后,即可作为原始凭证入帐。但是,物品的盘盈、盘亏和毁损必须在按规定程序报经有关部门批准后才能进行处理。
3.库存分析:
(1)安全库存报警
通过对各种物品当前库存量和安全库存量的对比分析,对超过或低于安全库存量的物品进行报警,并可查询当前库存量等于安全库存量的物品。安全库存预警输出的内容包括物品、物品的安全库存量、当前库存量及当前库存量与安全库存量的差。各物品的安全库存量取自物品档案中各物品的安全库存量,当前库存量为各物品所有仓库的现存量之和,差量=当前库存量-安全库存量。
(2)短缺物品查询
通过对各种物品当前库存量和最低库存量对比分析,当前库存量低于最低库存量的物品表示短缺物品。短缺物品查询输出的内容包括物品、各物品的最低库存量、当前库存量及短缺量。各物品的最低库存量取自物品档案中各物品的最低库存量,当前库存量为各物品所有仓库的现存量之和,短缺量=最低库存量-当前库存量。
(3)呆滞积压物品
系统提供呆滞积压物品的分析方法是按物品周转率分析的。当前库存量与最高库存量或安全库存量比较,周转率低于呆滞积压标准且超过最高库存量(或安全库存量)的物品为积压物品,周转率低于呆滞积压标准且未超过最高库存量(或安全库存量)的物品为呆滞物品。呆滞积压物品分析输出的内容包括物品、各物品的最高库存量(或安全库存量)、当前库存量、短缺量、周转率、周转率与最低周转率(呆滞积压标准)的差、状态(表示该物品是呆滞物品还是积压物品)。物品的呆滞积压标准在【物品档案】中设置。呆滞积压标准是操作员设置的每一物品的最低周转率,低于此周转率的物品就是呆滞积压的物品。当前库存量为该物品所有仓库的现存量之和超储量=当前库存量-最高库存量(或安全库存量)物品周转率=一定期间内物品的已消耗量÷一定期间内物品的平均库存量平均库存量=一定期间内物品每天的平均库存量之和÷天数 每天的平均库存量=(当天的期初结存数量+当天的期末结存数量)÷2 已消耗量=一定期间内该物品的出库数量 差率=周转率-呆滞积压标准 状态:超储量大于零且差率小于零的物品为积压物品,状态为积压;超储量小于等于零且差率小于零的物品为呆滞物品,状态为呆滞;超储量小于等于零且差率大于等于零的物品为非呆滞积压物品,状态为空。
4.统计分析:
(1)收发存汇总表
反映仓库各物品各种收发类别的收入、发出及结存情况。收发存汇总表是按仓库进行分页查询的。一页显示一个仓库的收发存汇总表。仓库的收发存汇总表通过汇总功能查询。收发存汇总表输出的内容包括仓库、物品、自由项、期初结存数量(件数)、各种入库类别的入库数量(件数)、各种出库类别的出库数量(件数)、期末结存数量(件数)。
期末结存数量=期初结存数量+各种入库类别的入库数量-各种出库类别的出库数量。
期末结存件数=期初结存件数+各种入库类别的入库件数-各种出库类别的出库件数。
(2)业务类型收发存汇总表
反映仓库各物品各种业务类型的收入、发出及结存情况。系统提供的业务类型包括:采购、销售、产品入库、材料出库、盘盈入库、盘亏出库、其他入库、其他出库。业务类型汇总表是按仓库进行分页查询的。一页显示一个仓库的业务类型汇总表。业务类型汇总表输出的内容包括仓库、物品、期初结存数量(件数)、各种业务类型的入库数量(件数)、各种业务类型的出库数量(件数)、期末结存数量(件数)。
期末结存数量=期初结存数量+各种业务类型的入库数量-各种业务类型的出库数量。
期末结存件数=期初结存件数+各种业务类型的入库件数-各种业务类型的出库件数。
(3)收发类别汇总表
反映仓库各物品各种收发类别的入库或出库的情况。收发类别汇总表是按仓库进行分页查询的。一页显示一个仓库的收发类别汇总表。收发类别汇总表输出的内容包括仓库、物品、用户所选入库类别的入库数量(件数)或用户所选出库类别的出库数量(件数反映各供货单位供应的物品的收入、发出及结存情况。
3.3系统业务流程
系统的业务流程主要包括三个部分:采购、部门领料和库存盘点。
1.采购的业务流程是:①计划部门制定物资需求单,评审,如果评审通过,根据仓库库存情况平衡采购,然后制定采购单。②对采购单进行评审,如果评审通过,则可以签定采购合同进行采购。③到货后,进行登记并入库。
2.部门领料的流程很简单,各部门主要通过仓库领取物资,只需要填写部门领料单即可。
3.库存盘点用于登记仓库中物质的养活和增加情况,并使实际库存和数据库中的库存数目保持一致。
3.4库存管理流程
库存管理主要是对库存货物的入库、出库、查询统计、盘点等进行控制和管理,以便及时了解库存情况,达到降低库存量、提高取货备货效率。
库存管理的具体内容有:基础数据维护、系统设置、入库操作、出库操作、查询操作、统计分析、盘点操作、报表输出等。
3.系统的主要模块
3.6系统逻辑结构
库存管理系统
1、库存系统管理
(1)库存管理数据
(2)库存物料主文件维护
(3)库存代码定义
A、仓库货位代码维护
B、入出库类型定义
(4)用户管理
2、库存货位管理
(1)仓库主文件维护
(2)货位主文件维护
(3)库存货位综合查询
(4)库存空货位查询
3、库存流水帐管理
(1)入出库数据登录
(2)库存流水帐查询
(3)历史流水帐处理
(4)历史流水帐查询
(5)主帐月末结转处理
4、库存统计分析
(1)库存主帐查询
(2)库存积压分析
(3)短缺超储分析(项目)
(4)ABC分类处理
(5)短缺超储分析(时间)
(6)车间月领料查询
5、清仓盘库处理
(1)打印盘库清单
(2)实际盘库录入
(3)打印盘盈盘亏表
具体如下:
1.库存代码定义
建立合理的代码体系是有效地使用计算机进行库存管理的基础。本功能模块旨在让用户对仓库有关信息进行编码定义,包括对仓库、仓库管理方式、仓库口令、入出库类型及不同入出库类型对各种数据的影响等的定义,并提供库存资金图及库存资金历史曲线。
2.库存货位管理
可以对按货位管理的仓库,实现货位信息跟踪,描述其存放的物品品种、数量。允许同一物品存放在多个仓库、多个货位,同一货位允许存放1种物品。
3.库存流水帐管理
本模块对于每日发生的每笔入/出库活动进行登录,并提供对库存数据的增加、删除、查询功能,保证帐上数据的正确.当数据量过于庞大时,提供历史流水帐处理,减少在线流水帐数据,提高查询速度。
4.库存统计分析
本模块旨在帮助管理人员进行各种库存统计分析,加强库存控制,减少库存积压、减少物品报废和资金占用,从而提高经济效益。可以对各车间(分厂)领料数量及生定产量(已入库部分)进行查询及维护.可以进行多种统计,如可按供应商、销售客户、部门(车间)分别进行出入库进行统计.可按不同的人出库类型进行分别统计。可进行短缺超储分析、物资积压分析、ABC分类处理及资金占用分析,还可对车间月产量,车间月领料进行查询。主帐管理统计:以月为单位描述各仓库库存物品的仓储信息及仓储累计信息,包括各种物品的现有库存、累计人出库数量及期初数量。库存帐务结转处理:将前一阶段的数据,转移到历史文件保存起来,并将前一阶段的期末数据结转为下一阶段的期初数据。
5.清仓盘库管理
用于仓库的定期或不定期的盘点工作,提供盘库清单,当盘库数据录入后,打印盘盈盘亏数据表,并自动修改各帐务。
6.库存系统管理
包括库存子系统的数据初始化,数据备份,数据恢复,数据排序,数据库数据整理等。
3.7系统平台选择
1.软件平台
本系统前台用delphi7.0编写,oracle 8.1.7作为后台数据库。
2.硬件平台
(1)服务器端:
服务器主要用来运行数据库管理系统ORACLE,需要WINDOS2000(含SERVERS版)、NT、XP、LINUX或更高版本;同时要把本管理系统的数据库导入到ORACLE数据库中。
(2)客户机:
客户机主要运行本系统的前台程序:同时设置好数据库连接参数。客户机需要WIN95/98或者WIN NT4.0、WIN2000、XP。该系统可运行于windows 98、ME、2000、NT、XP的机子上,前台用delphi7.0编写,oracle 8.1.7作为后台数据库。
3.网络平台
本系统采用二层C/S结构,二层C/S结构的客户机/服务器(Client/Server)是在网络基础上,以数据库管理系统为后缓,以微机作为工作站的一种系统结构。其关键点在于“一分为二”,即把数据存取与应用程序分离开,分别由数据库(Server端)及工作站(Client端)来执行,从而明显地既保证整个系统的运行性能,又增加了系统的易开发性、可扩充性和可维护性。
3.8数据库设计
数据库设计包括了数据库表结构设计、数据库ER图设计和SQL脚本编程。其中数据库表结构设计重点在设计表的字段和约束。数据库ER图设计重点在设计数据库表之间的关系。设计完后就可以编写SQL脚本,就创建数据库了。
3.9数据结构设计
数据结构设计是开发应用系统中非常重要的一个环节,数据结构设计的好坏将直接关系到程序的后期开发效率及开发的成败,因此在具体编写代码前,一定要作好数据结构的设计工作。设计一个好的数据结构需要良好的应用系统需求分析,另一方面设计的经验也是很重要的因素。
每个表应有主关键字,其他数据元素与主关键字一一对应,在确实没有主关键时候,则加入一个ID字段。ID字段是一个自加类型的字段,可以用它来作为主关键字。
注:由于选择了ORACLE来作为后台数据库,但由于ORACLE没有自加类型数据类型,所以使用了序列器来产生新ID。
CREATE SEQUENCE WZGL
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE
有了序列器再加上触发器就完全可以自动产生新ID了,不过我们并不使用触发器来自动产生新ID,而是自己来得到ID。如:SELECT WZGL.NEXTVAL FROM DUAL 来获得新ID。
第四章 库存统计分析库模块
4.1毕业设计课题目标与意义
库存管理系统是生产、计划和控制的基础。库存管理系统设计的总体目标是通过对仓库、货位、入出库类型与入出库单据的管理,及时反映物资的仓储、流向情况,为生产管理和成本核算提供依据。并通过库存分析,为管理及决策人员提供库存资金占用情况、物资短缺(超储)情况、ABC分类情况等不同的分析信息。通过清仓盘库管理,保证帐面与实物一致,为计划及决策人员提供实时准确的存货信息,以便及时调整生产,保证企业各项生产经营活动的顺利进行。
本人目标:完成库存管理系统中的库存统计分析模块,以帮助管理人员进行各种库存统计分析,加强库存控制,减少库存积压。可对各车间的领料数量及生产量进行维护及查询。可按物料及车间进行入出库统计,打印出统计报表。
4.2统计分析模块功能
1.统计查询功能
统计查询管理模块可以对库存产品进行各种类型的统计和查询,从而使用户能够全
面地了解库存状况,具体可以实现以下功能:
A、产品出入库统计查询,生成进货、销售、库存、资金流动、综合分析等多种报表,从不同角度了解企业的经营情况;
B、单据、报表都可以打印,打印格式可以灵活定义;
2.资金占用分析功能
具有资金占用分析功能,如资金占用分析、项目资金占用分析、ABC分析等数据分析与跟踪;提供库存资金占用情况分布图,库存成本比例等,可以实时反应库存信息,以协助作出合理的库存决策。
3.库存预警功能
库存预警:设定每种商品库存上、下限,随时查询短缺或积压的商品,库存预警是指对库存中接近或超过临界值的产品进行报警。在产品信息中,包含产品的合理数量范围和有限期限。产品数量小于合理数量的下限称为短线产品;数量大于合理数量的上限称为超储。产品出现短线、超储、接近或超过有效期限需要报警。
库存预警管理模块可以实现以下功能:
A、库存产品数量报警
B、库存产品失效报警
4.3 统计查询流程图
4.4设计总结:
本次的设计存在着一些不足的地方,如网络平台的二层C/S结构存在以下的缺点:
在两层C/S结构中,客房端应用程序直接连接数据库服务器,这样数据库服务器将消耗一定的资源以处理与客房端的连接工作。随着连接工作的频繁发生,数据库服务器的运行效率将会不断下降。
在两层C/S结构中,只有惟一一个在线的数据库服务器,这种结构将成为妨碍系统可靠性的重大隐患。如果数据库服务器因为某种原因而停止工作,那么整个系统将趋于瘫痪。
两层C/S结构应用程序的分布比较麻烦,需要一些*.dll支持,另外每个客户端还需要配置ODBC或BDE。
4.5 谢词
在这个系统开发过程中,本人增强了团体意识,对一些软件开发模式有了一定的认识,学会了如何进行小组式的开发一个综合系统,在此本人特向给了很多指导意见的老师表示感谢!也感谢本组成员对本人的关心
帮助。因为本系统所涉及的内容非常广泛并且比较复杂,加上时间的仓促,尽管本组竭尽全力来保证系统的可靠性和完善性,但是还有一些不足之处,恳请老师批评指正。
第五章 参考文献
1.《Delphi6.0程序员开发指南》
机械工业出版社
李
维
编译
2.《Delphi6.0企业级解决方案应用剖析》
机械工业出版社
刘
艺
编著
3.《Oracle 8.X For Windwos NT 实用教程》 清华大学出版社
翁正科 王新英
编著 4.《数据库系统原理教程》
清华大学出版社
陈
红 王
珊
编著
5.《Delphi6.0程序设计教程》
冶金工业出版社
李光明
编著
7.《深入学习Delphi编程》
社
静
海
编著
8.《Delphi 7高效数据库程序设计》
社
李
维
编著
中国铁道出版机械工业出版
第五篇:汽车销售管理系统实现与维护实验报告
电子科技大学
标准实验报告
数据库原理综合实验
电子科技大学教务处制表
(实验)课程名称电子科技大学
实验报告
学生姓名: 学号:
指导教师:蔡运娟
实验地点:电子政务可视化再现实验室实验时间:2017年6月4日
一、实验室名称:
二、实验项目名称:数据库实现与维护
三、实验学时:4
四、实验原理:
五、实验目的:
掌握数据库管理系统的安装、使用和维护;掌握在数据库管理系统中创建数据库及对数据库进行维护和数据查询的基本方法;培养动手能力。
六、实验内容:
①建库,命令方式及快捷菜单方式; ②建表,命令方式及快捷菜单方式; ③修改表结构,快捷菜单方式; ④数据关系图,快捷菜单方式
⑤数据编辑:快捷菜单方式输入测试数据,数据的增删改命令各2句,增删改时专门测试有参照关系的表之间数据增删改的关联变化。⑥数据的查询,查询功能及其实现(6个)⑦创建视图,使用视图(2个)⑧触发器建立及测试(1个)
七、实验器材(设备、元器件):计算机、Microsoft Visio2013软件
八、实验步骤:
建库、建表:如果所建表属性列有参照关系时要先建有别参照关系的表、建视图、设置触发器
九、实验数据及结果分析:
1、建库:
命令语句如下(命令行占地内容较大,详情见附件1)快捷菜单方式如下:
2、建表:
命令语句如下(见附件2)
3、修改表结构:
4、数据库关系图: ①整体数据库关系图:
②某一部分放大数据库关系图:
5、数据编辑 ①所有表:
②数据的增删改命令: a、快捷方式输入测试数据:
b、数据的增加
当插入数据到业务处理表中,外码的值事先在相应表中没有定义,但是任然可以在联系表中插入数据。如示例中,在订单结算表中插入’pi00000008’,’sp00000001’,’c0001’,但是’pi0000000008’在支付通知单中没有相应记录,但是插入操作仍可执行。(触发器?)
c、数据的修改
当修改列数据为另一个表的外键时会提示错误信息,如在订单结算业务逻辑中供应商号和出纳员编号是当前表的外键,当修改操作设计以上两个属性列时就会出现错误信息:
当修改操作为涉及到主键时就不会弹出错误信息,但是所修改项也不会变,例如当前订单结算表中数据为如下所示
当在支付通知单表中把支付通知单号pi00000001改为pi00000007时,虽然支付通知单表内的数据项会更改,但是订单结算业务表中支付通知单号还为原来的pi00000001.(要用触发器?)
d、数据的删除: 同样,当试图删除出纳员时,因为出纳员编号作为订单结算外键的存在,不能成功删除,弹出错误信息:
在试图删除支付通知单号为’pi00000001’的支付通知单时,虽然成功删除了指定支付通知单内容,但是在订单结算业务中,关于’pi00000001’的记录仍然存在:
6、数据的查询: ①查询所有供应商信息:
②查询供应商信息及该供应商仓库存货信息:
③查询拥有仓库数量>3个的供应商号:
④按库存递增顺序查询所有供应商仓库库存信息
⑤查询供应商号为’sp00000001’的供应商已存在的订单结算业务细节:
⑥查询仓库号为’wh00000001’的仓库历史入库记录:
7、创建视图,使用视图
①供应商基本信息及对应存货信息视图: 视图的创建:
视图的查询:
②汽车经销商经理合同查询视图:
8、触发器建立及测试
①触发器设置:该触发器设置到入库单表上,当有插入操作时响应触发器,触发器首先判断插入的入库单涉及到的仓库号和入库车辆名称是否在仓库存货信息中存在对应记录。如果存在,则把入库车辆数累加到车辆名称对应的库存数量上;如果不存在,就新插入一条记录到仓库存货信息表中。(触发器代码见附件3)
②触发器测试: a、插入一条已经在仓库存货信息表中有记录的车辆信息: 插入前:
插入命令: 插入后:
b、插入一条之前在仓库存货信息表中没有记录的车辆信息: 插入命令:
插入后:
9、分离和附加数据库: ①分离:
②附加:
十、实验结论:
本次实验完成了汽车销售管理系统数据库的建立,包括41个表的创建、2个视图的创建以及1个触发器的设置。当前数据库能够完成表的增删改操作及基本的查询操作。
十一、总结及心得体会:
随着这次实验接近尾声,汽车销售管理系统数据库的功能实现大体完成,因为时间有限,在数据库实现阶段只创建了两个视图和一个触发器,在数据库的物理设计阶段也没有建索引等更多的内容。没有更加完整的完成这次实验也算一个遗憾。通过这次实验,掌握了设计数据库的整体流程,从需求分析到概念设计再到逻辑设计,到最后的数据库实现,差不多每一步都花费了很多时间去完成.其中需求分析阶段在我看来是最花费时间同时也是最需要引起注意的一步,它不仅在前期需要投入很多的精力去调查研究,而且随着数据库设计的进行阶段,还需要不断的对需求分析得出的表、字典进行更新修改。最后的数据库实现阶段一定是最有成就感的,因为经过了前期那么多的努力终于把数据库建好同时一些简单的功能也都可以实现了。总体来说通过这学期这门课程的学习,自己能够更好的把理论上学到的东西用在实际的项目中,在整个过程中锻炼了自己快速查阅信息和快速学习的能力。
十二、对本实验过程及方法、手段的改进建议:
在本次实验中设置触发器那一步需要用到一些SQL语句,有很多都是没有学过的,常常有想法但是不知道怎么用SQL语言实现。所以建议老师以后在上数据库理论课的时候适当加一些SQL语言编程的部分。报告评分: 指导教师签字:
附件一(T-SQL语句建数据库):
create database jx_database on primary(name=jinx, filename='D:jx_databasejinx.mdf', size=1024mb, maxsize=2048mb, filegrowth=50mb)log on(name=jinx_log, filename='D:jx_databasejinx_log.ldf', size=512mb, maxsize=1024mb, filegrowth=50mb)附件二(T-SQL语句建表): use carsale go create table 汽车经销商
(汽车经销商号 char(10)primary key check(汽车经销商号 like'cs[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 汽车经销商名称 nchar(50)not null, 汽车经销商联系电话 char(11)not null check(汽车经销商联系电话 like'1[3-6][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 汽车经销商地址 nchar(100)not null)go
use carsale go create table 客户(客户号
char(10)
primary
key
check(客
户
号
like'cst[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 客户姓名 nchar(8)not null, 性别 nchar(2)check(性别='男' or 性别='女')default '男', 年龄 int not null check(年龄>0 and 年龄<100), 客户地址 nchar(100), 客户联系电话 char(11)not null check(客户联系电话 like'1[3-6][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'))go
use carsale go create table 车辆
(发动机编号 char(17)primary key, 车辆名称 nchar(50)not null, 车辆售价 float not null check(车辆售价>0 and 车辆售价<100000000), 车辆类型 nchar(20)not null)go
use carsale go create table 供应商(供应商号
char(10)
primary
key
check(供
应
商
号
like'sp[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 供应商名称 nchar(50)not null, 供应商联系电话 char(11)not null check(供应商联系电话 like'1[3-6][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 供应商地址 nchar(100)not null, 货源信息 text not null)go
use carsale go create table 市场专员
(市场专员编号 char(5)primary key check(市场专员编号 like's[0-9][0-9][0-9][0-9]'), 市场专员联系电话 char(11)not null check(市场专员联系电话 like'1[3-6][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'))go
use carsale go create table 采购员
(采购员编号 char(5)primary key check(采购员编号 like'b[0-9][0-9][0-9][0-9]'), 采购员联系电话 char(11)not null check(采购员联系电话 like'1[3-6][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'))go
use carsale go create table 销售顾问
(销售顾问编号 char(5)primary key check(销售顾问编号 like'sc[0-9][0-9][0-9]'), 销售顾问联系电话 char(11)not null check(销售顾问联系电话 like'1[3-6][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'))
use carsale go create table 出纳员
(出纳员编号 char(5)primary key check(出纳员编号 like'c[0-9][0-9][0-9][0-9]'), 出纳员联系电话 char(11)not null check(出纳员联系电话 like'1[3-6][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'))
use carsale go create table 会计员
(会计员编号 char(5)primary key check(会计员编号 like'a[0-9][0-9][0-9][0-9]'), 会计员联系电话 char(11)not null check(会计员联系电话 like'1[3-6][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'))go
use carsale go create table 库存管理员
(库存管理员编号 char(5)primary key check(库存管理员编号 like'wh2[0-9][0-9]'), 库存管理员联系电话 char(11)not null check(库存管理员联系电话 like'1[3-6][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'))go
use carsale go create table 出入库管理员
(出入库管理员编号 char(5)primary key check(出入库管理员编号 like'wh2[0-9][0-9]'), 出入库管理员联系电话 char(11)not null check(出入库管理员联系电话 like'1[3-6][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'))go
use carsale go create table 售后员
(售后员编号 char(5)primary key check(售后员编号 like'asc[0-9][0-9]'), 售后员联系电话 char(11)not null check(售后员联系电话 like'1[3-6][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'))go
use carsale go create table 仓库(仓库号
char(10)
primary
key
check(仓
库
号
like'wh[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 仓库存货信息 text)go
use carsale go create table 采购数据单
(采购数据单号 char(10)primary key check(采购数据单号 like'pc[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 采购数据单日期 smalldatetime not null, 采购数据单内容 text)go
use carsale go create table 库存预警单
(库存预警单号 char(10)primary key check(库存预警单号 like'sw[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 库存预警单日期 smalldatetime, 库存预警单内容 text)go
use carsale go create table 车辆订购单(车辆订购
单
号
char(10)
check(车
辆
订
购
单like'od[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 采购员编号 char(5)check(采购员编号 like'b[0-9][0-9][0-9][0-9]'), 供应商号
char(10)
check(供
应
商like'sp[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 订购日期 smalldatetime, 订购车型 nchar(50)not null, 订购车辆数 smallint check(订购车辆数 between 0 and 32767), 订购金额 float check(订购金额 between 0.0 and 100000000.0), primary key(车辆订购单号), foreign key(采购员编号)references 采购员(采购员编号), foreign key(供应商号)references 供应商(供应商号))go
use carsale go create table 货物清单(货物清单
号
char(10)
check(货
物
清
单like'gl[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 供应商号
char(10)
check(供
应
商like'sp[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 汽车经销商
号
char(10)
check
(汽
车
经
销
商like'cs[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 发货日期 smalldatetime, 发货车型 nchar(50)not null,号
号
号
号
号 发货车辆数 smallint check(发货车辆数 between 0 and 32767)primary key(货物清单号), foreign key(供应商号)references 供应商(供应商号), foreign key(汽车经销商号)references 汽车经销商(汽车经销商号))go
use carsale go create table 入库单(入库单
号
char(10)
check(入
库
单
号
like'iw[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 仓库号 char(10)check(仓库号 like'wh[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 入库单日期 smalldatetime, 入库车型 nchar(50)not null, 入库车辆数 smallint check(入库车辆数 between 0 and 32767), primary key(入库单号), foreign key(仓库号)references 仓库(仓库号))go
use carsale go create table 出库单(出库单
号
char(10)
check(出
库
单
号
like'ow[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 仓库号 char(10)check(仓库号 like'wh[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 客户号 char(10)check(客户号 like'cst[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 出库单日期 smalldatetime, 出库车型 nchar(50)not null, 出库车辆数 smallint check(出库车辆数 between 0 and 32767), primary key(出库单号), foreign key(仓库号)references 仓库(仓库号), foreign key(客户号)references 客户(客户号))go
use carsale go create table 支付通知单(支付通知
单
号
char(10)
check(支
付
通
知
单like'pi[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 供应商号
char(10)
check(供
应
商like'sp[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 汽车经销商
号
char(10)
check(汽
车
经
销
商like'cs[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 支付通知单明细 text, 支付订单金额 float check(支付订单金额 between 0.0 and 100000000.0), primary key(支付通知单号), foreign key(供应商号)references 供应商(供应商号), foreign key(汽车经销商号)references 汽车经销商(汽车经销商号))go
use carsale go create table 合同(合同
号
char(10)
check(合同like'sl[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 客户号 char(10)check(客户号 like'cst[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 销售顾问编号 char(5)check(销售顾问编号 like's[0-9][0-9][0-9][0-9]'), 销售日期 smalldatetime not null, 发动机编号 char(17)not null, 销售车型 nchar(50)not null,号号号号
销售车辆数 smallint check(销售车辆数 between 0 and 32767), 销售金额 float check(销售金额 between 0.0 and 100000000.0), primary key(合同号), foreign key(客户号)references 客户(客户号), foreign key(销售顾问编号)references 销售顾问(销售顾问编号), foreign key(发动机编号)references 车辆(发动机编号))go
use carsale go create table 客户评价单
(客户评价单号 char(10)primary key check(客户评价单号 like'el[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 客户满意度 smallint not null check(客户满意度 between 0 and 100), 客户建议 text)go
use carsale go create table 发票(发票号
char(10)
primary
key
check(发
票
号
like'rcp[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 发票日期 smalldatetime not null, 汽车经销商
号
char(10)
check
(汽
车
经
销
商
号
like'cs[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 客户号 char(10)check(客户号 like'cst[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 发票内容 text not null, foreign key(汽车经销商号)references 汽车经销商(汽车经销商号), foreign key(客户号)references 客户(客户号))go
use carsale go create table 收据(收据号
char(10)
primary
key
check(收
据
号
like'acq[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 收据日期 smalldatetime not null, 供应商号
char(10)
check(供
应
商
号
like'sp[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 汽车经销商
号
char(10)
check
(汽
车
经
销
商
号
like'cs[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 收据内容 text not null, foreign key(供应商号)references 供应商(供应商号), foreign key(汽车经销商号)references 汽车经销商(汽车经销商号))go
/*use carsale go create table 库存检查
(库存预警单号 char(10)primary key check(库存预警单号 like'sw[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 库存管理员编号 char(5)not null check(库存管理员编号 like'wg[0-9][0-9][0-9]'))go
use carsale go create table 市场分析
(市场专员编号 char(5)primary key check(市场专员编号 like'b[0-9][0-9][0-9][0-9]'), 采购数据单号 char(10)not null check(采购数据单号 like'pc[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'))go */
use carsale go create table 汇总整理(库存预警
单
号
char(10)
check(库
存
预
警
单
号
like'sw[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 采购数据单
号
char(10)
check(采
购
数
据
单
号
like'pc[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 车辆订购单
号
char(10)
check(车
辆
订
购
单
号
like'od[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), primary key(库存预警单号,采购数据单号,车辆订购单号))go
use carsale go create table 车辆订购
(车辆订购单号 char(10)not null check(车辆订购单号 like'od[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 供应商号
char(10)
not
null
check(供
应
商
号
like'sp[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 采购员编号 char(5)not null check(采购员编号 like'b[0-9][0-9][0-9][0-9]'), 发动机编号 char(17)not null, primary key(车辆订购单号,供应商号,采购员编号,发动机编号))go
use carsale go create table 订单交付
(发动机编号 char(17)not null, 货物清单
号
char(10)
check(货
物
清
单
号
like'gl[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 供应商号
char(10)
not
null
check(供
应
商
号
like'sp[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), primary key(发动机编号,货物清单号), foreign key(供应商号)references 供应商(供应商号))go
use carsale go create table 订货信息复核(入库单号
char(10)
primary
key
check(入
库
单
号
like'iw[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 货物清单号
char(10)
not
null
check(货
物
清
单
号
like'gl[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 出入库管理员编号 char(5)not null check(出入库管理员编号 like'wh2[0-9][0-9]'), foreign key(货物清单号)references 货物清单(货物清单号), foreign key(出入库管理员编号)references 出入库管理员(出入库管理员编号))go
use carsale go create table 车辆入库(入库单
号
char(10)
check(入
库
单
号
like'iw[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 仓库号 char(10)check(仓库号 like'wh[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 出入库管理员编号 char(5)not null check(出入库管理员编号 like'wh2[0-9][0-9]'), primary key(入库单号,仓库号), foreign key(出入库管理员编号)references 出入库管理员(出入库管理员编号))go
use carsale go create table 订单结算
(支付通知单号 char(10)primary key check(支付通知单号 like'pi[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 供应商号
char(10)
not
null
check(供
应
商
号
like'sp[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 出纳员编号 char(5)not null check(出纳员编号 like'c[0-9][0-9][0-9][0-9]'), foreign key(供应商号)references 供应商(供应商号), foreign key(出纳员编号)references 出纳员(出纳员编号))go
use carsale go create table 客户汽车订购
(客户号 char(10)check(客户号 like'cst[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 客户汽车订
单
号
char(10)
check(客
户
汽
车
订
单
号
like'od[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 销售顾问编号 char(5)check(销售顾问编号 like's[0-9][0-9][0-9][0-9]'), primary key(客户号,客户汽车订单号), foreign key(销售顾问编号)references 销售顾问(销售顾问编号))go
use carsale go create table 组成
(发动机编号 char(17)primary key, 客户汽车订单号 char(12)check(客户汽车订单号
like'cstod[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), foreign key(客户汽车订单号)references 客户汽车订单(客户汽车订单号))go
use carsale go create table 库存检查(发动机编号 char(17), 取货单号
char(10)
not
null
check(取
货
单
号
like'pu[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 客户汽车订
单
号
char(12)
check(客
户
汽
车
订
单
号
like'cstod[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), foreign key(取货单号)references 取货单(取货单号), foreign key(客户汽车订单号)references 客户汽车订单(客户汽车订单号))go
use carsale go create table 签订合同(合同号
char(10)
primary
key
check(合同
号
like'sl[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 客户号
char(10)
not
null
check(客
户
号
like'cst[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 销售顾问编号 char(5)not null check(销售顾问编号 like's[0-9][0-9][0-9][0-9]'), 客户汽车订
单
号
char(12)
check(客
户
汽
车
订
单
号
like'cstod[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), foreign key(客户号)references 客户(客户号), foreign key(销售顾问编号)references 销售顾问(销售顾问编号), foreign key(客户汽车订单号)references 客户汽车订单(客户汽车订单号))go
use carsale go create table 销售结算
(会计员编号 char(5)primary key check(会计员编号 like'a[0-9][0-9][0-9][0-9]'), 取货单号
char(10)
not
null
check(取
货
单
号
like'pu[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), foreign key(取货单号)references 取货单(取货单号))go
use carsale go create table 取货(取货单编号
char(10)primary key check(取货单编号
like'pu[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 客户号
char(10)
not
null
check(客
户
号
like'cst[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 出入库管理员编号 char(5)not null check(出入库管理员编号 like'wh2[0-9][0-9]'), foreign key(客户号)references 客户(客户号), foreign key(出入库管理员编号)references 出入库管理员(出入库管理员编号))go
use carsale go create table 客户评价(客户号
char(10)
primary
key
check(客
户
号
like'cst[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 客户评价单号 char(10)not null check(客户评价单号 like'el[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 售后员编号 char(5)not null check(售后员编号 like'asc[0-9][0-9]'), foreign key(客户评价单号)references 客户评价单(客户评价单号), foreign key(售后员编号)references 售后员(售后员编号))go
附件三(T-SQL语句建立触发器):
USE [carsale] GO /****** Object: Trigger [dbo].[i_w] Script Date: 06/04/2017 20:15:45 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER TRIGGER [dbo].[i_w] on [dbo].[入库单] for insert as if update(入库单号)print '入库成功!!' begin declare @wh char(10)declare @name nchar(50)declare @num int select @wh=仓库号,@name=入库车辆名称,@num=入库车辆数 from Inserted if exists(select * from 仓库存货信息,Inserted where 仓库存货信息.车辆名称=Inserted.入库车辆名称 and Inserted.仓库号 in(仓库存货信息.仓库号))update 仓库存货信息
set 仓库存货信息.仓库号=Inserted.仓库号,仓库存货信息.车辆名称=Inserted.入库车辆名称,仓库存货信息.库存数量=仓库存货信息.库存数量+Inserted.入库车辆数 from 仓库存货信息,Inserted where 仓库存货信息.仓库号=Inserted.仓库号 else insert into 仓库存货信息
values(@wh,'4',@name,@num)end