第一篇:数据库课程设计——库存销售管理系统
数据库课程设计
实验报告
姓名:黄世增
班级:计算机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 项目背景:.......................................................................................................................2 1.3系统使用对象:................................................................................................................3 1.4 功能需求:.......................................................................................................................3 1.4.1 业务流程图:.......................................................................................................3 1.4.2 功能模块图:.......................................................................................................4 1.4.3 功能介绍:...........................................................................................................4 1.4.4问题域描述:........................................................................................................5 1.5 性能要求:.......................................................................................................................5 1.6 运行环境:.......................................................................................................................6
二、系统详细设计...........................................................................................................................6 2.1系统总体设计....................................................................................................................6 2.1.1 运行环境...............................................................................................................6 2.1.2 系统流程...............................................................................................................6 2.1.3 系统结构...............................................................................................................7 2.2系统接口的概要设计........................................................................................................8 2.2.1 用户接口...............................................................................................................8 2.3 数据库概要设计...............................................................................................................9 2.3.1 物理结构设计.......................................................................................................9
三、系统实现.................................................................................................................................10 3.1 系统开发环境.................................................................................................................10 3.2 系统实现.........................................................................................................................11 3.2.1 客户端系统实现.................................................................................................11
一、需求分析
1.1 编写目的:
库存管理工作如由人工完成,主要依靠个人经验和厚重的资料簿,查询工作繁琐而且质量不高,容易出错。如果利用计算机的高速计算能力和广泛的普及应用,则能利用判断条件,更快地找出所要查询的库存产品。库存管理系统是一套对货品入库、出库、库存进行全面管理的系统。
1.2 项目背景:
由于市场竞争的需要,如何吸引和留住人才,激发员工的创造行、工作责任感和工作热情已经成为关系企业兴衰的重要因素,人才已成为企业最重要的资产之一。“公正、公平、合理”的企业管理理念和企业管理水平的提高,是社会对库存管理系统有了更高的需求;同时由于个人电脑的普及,数据库技术、客户/服务器技术,特别是Internet/Intranet技术的发展,使的三代库存管理系统的出现才成为必然。库存管理系统的特点是从物品管理的角度出发,用集中的数据库将几乎所有与物品相关的数据统一管理起来,形成了集成的信息源。有好的用户界面,强有力的报表生成工具、分析工具和信息的共享使得物品管理人员得以摆脱繁重的日常工作,集中精力从战略的角度来考虑企业物品规划和政策。
企业的库存物资管理往往是很复杂、很繁琐的。由于所掌握的物资种类众多,订货、管理、发放的渠道各有差异,各个企业之间的管理体制不尽相同,各类统计报表繁多,因此仓库的库存管理必须编制一套库存管理信息系统,实现计算机化操作,而且必须根据企业的具体情况制定相应的方案。
1.3系统使用对象:
本软件提供了完备的销售业务管理功能,包括销售管理(销售订单、销售出货、销售退货、收款登记)、基本信息(公司基本资料、客户资料、货品资料、员工档案、其他基础设置)、单据查询(订货单查询、收货单查询、付款单查询)、系统维护(操作权限、数据备份及恢复、数据压缩、数据清理)等功能。
1.4 功能需求:
1.4.1 业务流程图:
1.4.2 功能模块图:
1.4.3 功能介绍: 库存管理:包括货品信息管理、货品库存管理、短线货品管理、超储货品管理。
入库管理:包括入库登记管理、货品入库期间统计、供货单位期间供货统计和供货单位期间供货金额统计。
出库管理:包括出库登记管理、货品期间出库统计、收货单位期间收货统计和收货单位期间收货金额统计。
盘存管理:包括盘存数据录入和盘存表。综合管理:包括货品出入库期间汇总等。
附项分类:包括经办人员管理、供货单位管理、仓库信息管理及数据处理记录。
历史数据管理:包括历史库存管理、历史入库管理和历史出库管理等。1.4.4问题域描述:
货物是否能被管理员找到,货物必要有唯一的货号;仓库对应唯一管理员,管理员必要有唯一工号,性别,姓名等属性;每个入库货物对应一张入库单,入库单号码必须与货号唯一对应;每个出库货物对应一张出库单,出库单号码必须与货号唯一对应;管理人员存放货物根据存放规则在仓库内存放货物;管理人员根据提货规则从仓库内提取货物。
1.5 性能要求:
全局特征:
系统可用性是:全天候可用、可靠性:除了不可计错误,一般不会崩溃。安全性和保密性:只有专业的工作人员才能运行,可以设置权限。
1.6 运行环境:
硬件环境:PentiumⅡ 或同档次以上微机; 32MB以上内存或更高;4.2G以上硬盘;1.44M
光驱;24速以上光驱;
针打或激光打印机一台
软件环境:中文 WINDOWS95 /
二、系统详细设计
2.1系统总体设计
2.1.1 运行环境 操作系统:Windows All 安装MySQL Tomcat MyEclipse 2.1.2 系统流程 本课题的系统流程图如下
/WE/ 2000操作系统。
2.1.3 系统结构
本课题的功能模块设计图如下
2.2系统接口的概要设计
2.2.1 用户接口 首页(用户登录界面)
用户操作界面(如图)头部和其他部位的内容一样
左侧部分为当用户登录成功后将显示用户操作的功能菜单 右侧部分则根据用户选择的操作显示相应内容
2.3 数据库概要设计
2.3.1 物理结构设计
本课题目前为数据库建立了9 个表 Category:id,name,description;
Goods:id,name,description,inprice,outprice,category_id,supplier;Instock:id,quantity,intime,price,description,goods_id,uear_id;Outstock:id,quantity,outtime,description,price,user_id,goods_id;Privilege:id,name,description Stock:goods_id,quantity,outprice,inprice Supplier:id,name,linkman,cellphone,description User:id,username,password User_privilege:user_id,privilege_id
三、系统实现
3.1 系统开发环境
系统:Microsoft Windows 7 编程环境:MyEclipse 开发语言:Java 数据库:MySQL
3.2 系统实现
3.2.1 客户端系统实现 登录界面(如下图)
库存管理成果信息页面(如图)
用户管理
权限管理
供应商管理
类别管理
商品管理
入库管理
库存管理
出库管理
第三篇:数据库课程设计 图书管理系统(精选)
课 程 设 计
软件工程与数据库 课程设计 任务书
学院名称:
数学与计算机学院
课程代码:_6014419_ 专
业:
年
级:
一、设计题目
图书管理系统
二、主要内容
一个简单的图书管理系统包括图书馆内书籍的信息、学校在校学生的信息以及学生的借阅信息。此系统功能分为面向学生和面向管理员两部分,其中学生可以进行借阅、续借、归还和查询书籍等操作,管理员可以完成书籍和学生的增加,删除和修改以及对学生,借阅、续借、归还的确认。如:
图书室有各种图书一万多册。
每种图书都有书名、书号(ISBN)、一名或多名作者(译者)、出版社、定价和内容简介。
借书证记录有借阅者的姓名、所在单位、职业等。
凭借书证借书,每次最多能借8本书。借书期限最长为30天。实现新进图书的数据录入。
实现对所有购进图书的分类查询和分类统计。能够按书名、作者等分类查询现有图书的数量。
记录借阅者的个人资料和所借图书的书名、书号数据等。
三、具体要求
1、完成系统的需求分析
通过需求分析确定系统需要处理的数据的需求,要求使用数据库的辅助设计工具(PowerDesigner等),建立业务处理模型。
课 程 设 计
2、完成系统概念结构设计 概念数据模型(CDM)用于完成数据库的设计,与人和数据库平台和具体数据存储结构和工具无关。首先选择局部应用画出分E-R图,最终形成系统的E-R图
3、完成系统逻辑结构设计
按照E-R图转换成关系模式的规则,将CDM转换成逻辑数据模型,并为每个关系模式设计主键、外键。分析关系模式中的依赖关系,对关系模式规范化处理
4、完成系统物理结构设计
为每个关系分配存储长度,建立数据库的索引和视图,定义关系中的主码和外码,写出关系创建和查询的SQL语句。
5、编码 选择你自己熟悉的开发工具完成一个DBS系统的编码工作。源代码格式规范,注释不少于三分之一
四、主要技术路线提示
1.仔细阅读设计指导书内容,认真掌握任务要求2.需求分析 3.概念结构设计 4.逻辑结构设计5.物理结构设计6.编码.2.后台推荐采用SQL server或Oracle;前台开发环境不限制。可采用ADO,ODBC,OLE DB或JDBC连接数据库,并调用系统存储过程、自定义存储过程、函数等。
五、进度安排
第1周: 数据库系统概念模型、数据模型设计,创建数据库以及相关对象; 第2周: 前台程序开发,撰写报告,接受检查。
六、完成后应上交的材料
1. 源程序一份(包含数据库)
2. 课程设计报告一份
七、推荐参考资料
1.王珊.数据库系统概论(第四版).高等教育出版社 2.闪四清.数据库系统原理与应用教程.清华大学出版社
课 程 设 计
3.周龙骧.数据库管理系统实现技术.中国地质大学出版社 4.张海藩.软件工程概论.清华大学出版社 5.陈明 编著.实用软件工程基础.清华大学出版社
6.成先海.数据库基础与应用-SQL SERVER2000.机械工业出版社出版
指导教师 签名日期 年 月 日 系 主 任 审核日期 年 月 日
第四篇:数据库课程设计学籍管理系统
学籍管理系统
本次数据库课程设计是以Access数据库作为后台以VB作为前台的应用型设计课程。
综合我们所学的两大课程创建应用型的数据库系统,大大的提高了我们学生的动手能力,作到了理论与实践相结合。一.题目说明:
学生学藉管理系统是典型的学藉管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。
本系统主要完成对学生情况和学生成绩的管理,包括数据库中表的添加、删除等。系统还可以完成对各类信息的浏览、添加、删除、等功能。
系统的核心是数据库中各个表联系,每一个表的修改都将联动的影响其它的表,当完成对数据的操作时系统会自动地完成数据库的修改。查询功能也是系统的核心之一,在系统中即有单条件查询和多条件查询,也有精确查询和模糊查询,系统不仅有静态的条件查询,也有动态生成的条件查询,其目的都是为了方便用户使用。系统有完整的用户添加、删除和密码修改功能,并具备报表打印功能。关键字:窗体、数据库、vb6.0、access2000。
学生学籍管理系统被广泛应用于各类学校的学生学籍管理工作中,要求其具有实用性强、使用方便、效率高和安全可靠等特点。本管理系统正是围绕以上几个方面进行开发的,在开发过程中充分考虑到本系统的应用特点,并进行了大量的检验,证明其的确达到了设计的要求,是一个已具备了实际应用能力的软件。本文主要论述学生学籍管理系统的开发过程,在涉及到VB及Access中的部分知识以举例的方式进行讲解 二.总体设计:
我的总体设计如下:
(1).利用Access建立数据库,并在该数据库下创建五张表格,分别是学生表、课程表、选课表、学生选课表以及口令表。
(2)利用VB来建立界面并对它进行设计和修改,大体框架如下: FORM1 用于首界面
FORM2 用于登陆此系统的登录界面
FORM3 是主窗体,在这上面建立相应的菜单 如:文件——退出、添加用户(FORM4)数据信息——管理使用(FORM5)
基本操作——学生操作、选课操作、课程操作(FORM6、FORM7、FORM8)(3)对以上的界面进行设计以及对所要操作的部件进行编程。
三.常用控件的说明: 所有的Windows应用程序窗口或对话框,都是由诸如文本框、列表框、命令按扭、滚动条、命令菜单等组成的。VB通过控件工具箱提供了它们与用户进行交
互的可视化部件,即控件。程序开发人员只需要通过简单的操作,在窗体上安排所需要的控件,完成应用程序的用户界面设计即可。序号
名称
功能 Label标签
用于说明 Textbox文本框
用于文本输入或显示 3 Frame框架
用于组合控件 Commandbutton命令按扭
单击执行命令 5 Timer计时期
用于定时 Data数据控件
用于访问数据库
三.详细说明:
1.数据库的建立与设计:
数据库是有结构的数据集合,它与一般的数据文件不同,(其中的数据是无结构的)是一串文字或数字流。数据库中的数据可以是文字、图象、声音等。
Access数据库由六种对象组成,它们是表、查询、窗体、报表、宏和模块。
(1).表(Table)——表是数据库的基本对象,是创建其他5种对象的基础。表由记录组成,记录由字段组成,表用来存贮数据库的数据,故又称数据表。
(2).查询(Query)——查询可以按索引快速查找到需要的记录,按要求筛选记录并能连接若干个表的字段组成新表。
(3).窗体(Form)——窗体提供了一种方便的浏览、输入及更改数据的窗口。还可以创建子窗体显示相关联的表的内容。窗体也称表单。
(4).报表(Report)——报表的功能是将数据库中的数据分类汇总,然后打印出来,以便分析。
(5).宏(Macro)——宏相当于DOS中的批处理,用来自动执行一系列操作。Access列出了一些常用的操作供用户选择,使用起来十分方便。
(6).模块(Module)——模块的功能与宏类似,但它定义的操作比宏更精细和复杂,用户可以根据自己的需要编写程序。模块使用Visual Basic编程。
我们利用Access来建立数据库,我们的库中有五张表格,其分别是学生表、课程表、选课表、学生选课表以及口令表。
我们就以学生表为例做一个简单的说明:
我们使用设计器来创建表的,我的这张表有七个字段,每个字段的名称分别是:学号、班级、姓名、性别、出生年月、民族、地址、电话号码,每个字段有七个数据。我并对其字段的属性进行了重新的修改,以做到不浪费其空间。
我具体的实施步骤是:启动数据库管理器——建立数据库——建立数据表结构——输入记录。
最终产生了这样的一个数据库:(如下)
2.VB界面的建立设计以及程序的编写说明:
VB 是在Windows操作平台下,用于开发和创建具有图形用户界面的应用程序的强有力工具之一。VB为开发Windows应用程序不仅提供了全新的相对简单的方式,而且也引进了新的程序设计方法——面向对象的设计方法(00P)。从传统的面向过程的程序设计,转移到更先进的面向对象的程序设计,无论是对老的程序员,还是初学者,都是一个挑战。而学习VB,则是掌握这一新的程序设计方法的一条捷径。
(1).界面的设计和程序的编写:
设计一个像这样的友好的界面,我考虑到它的颜色的配制,界面的大小,界面所载的内容的多少等,在后台我用定时器给其限定时间让它在一定的时间后自动跳到下一个界面。
这个界面是系统的主界面,用户可以在通过系统登录后直接到我们的主界面上来进行相应的操作,我的主界面采用的是一张苏州市职业大学的图片,在这个图片的上面有三个菜单,分别是文件、数据信息和基本操作。在各自的下面还有与之相对应的子菜单,文件下有退出和添加用户,数据信息下有管理使用,基本操作下有学生操作、选课操作和课程操作。我利用FORMn.SHOW命令连接到相对应的界面上。
我们的界面有好几张我就对其中的一张进行详细的分析:
这是一张学生选课浏览表的界面,这也是对应我的主界面菜单中的数据信息下的管理使用子菜单的一张界面,在这张界面中包含了8个LABEL标签控件、7个 TEXTBOX文本框控件、6个COMMANDBUTTON命令按扭控件、1个FRAME框架控件和1个DATA部件。我利用DATA部件将界面与 ACCESS数据库相连接,具体的操作是利用DATABASENAME与数据库连接,在RECORDSOURCE中找到与之对应的表,再用 DATASOURCE、DATAFIELD与个文本框内容对应,从而实现界面与数据库的连接。下面是程序的编写过程:
显示前一个数据: COMMAND1:
Private Sub Command1_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “没有记录” Else If Data1.Recordset.BOF Then Data1.Recordset.MoveFirst MsgBox “这是第一条记录!” Else Data1.Recordset.MovePrevious If Data1.Recordset.BOF = True Then
Data1.Recordset.MoveFirst MsgBox “这是第一条记录!” End If End If End If End Sub 显示第一个数据: COMMAND2:
Private Sub Command2_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “没有记录” Else Data1.Recordset.MoveFirst End If End Sub 显示最后一个数据: COMMAND4:
Private Sub Command4_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “没有记录” Else Data1.Recordset.MoveLast End If End Sub 显示后一个数据: COMMAND3:
Private Sub Command3_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “没有记录” Else If Data1.Recordset.EOF Then Data1.Recordset.MoveLast MsgBox “这是最后一条记录!” Else Data1.Recordset.MoveNext If Data1.Recordset.EOF = True Then Data1.Recordset.MoveLast MsgBox “这是最后一条记录!” End If End If End If End Sub 添加一个数据:COMMAND6 Private Sub command6_Click()If Command6.Caption = “添加” Then
Command1.Enabled = 0 Command2.Enabled = 0 Command3.Enabled = 0 Command4.Enabled = 0 Command6.Caption = “确定” Command5.Caption = “放弃” If Data1.Recordset.RecordCount > 0 Then Data1.Recordset.MoveLast End If Data1.Recordset.AddNew Text1.SetFocus Else Command1.Enabled =-1 Command2.Enabled =-1 Command3.Enabled =-1 Command4.Enabled =-1 Command6.Caption = “添加” Command5.Caption = “删除” Text2.Enabled = 0 Text5.Enabled = 0 Text3.Enabled = 0 Text4.Enabled = 0 Text6.Enabled = 0 Text7.Enabled = 0 Data1.Recordset.Update Command1.SetFocus End If End Sub 删除一个记录:COMMAND5 Private Sub Command5_Click()If Command5.Caption = “放弃” Then Command4.Enabled =-1 Command5.Enabled =-1 Command6.Enabled =-1 Command3.Enabled =-1 Command1.Caption = “添加” Command2.Caption = “删除” Text2.Enabled = 0 Text5.Enabled = 0 Text6.Enabled = 0 Text7.Enabled = 0 Text1.Enabled = 0
Else If Data1.Recordset.RecordCount = 0 Then MsgBox “没有记录”, 32, “注意” Exit Sub Else str1 = MsgBox(“删除该记录吗?”, 17, “删除”)If str1 = 1 Then Data1.Recordset.Delete Data1.Refresh If Data1.Recordset.RecordCount = 0 Then MsgBox “记录数为零” Data1.Recordset.AddNew End If End If End If End If End Sub
四、在此过程中遇到的问题以及解决方法: 在开始编写程序的时候总是有一些出错,在查找有关书籍和向老师询问后得出了结果。在将界面与数据库相连接的时候,不知道用哪种方法,在老师的帮助下我学会了两种方法:1.DATA、2.ADODC。我最终使用DATA这种方法。
五、心得体会:
在这次的设计过程中,我学到的不仅是知识,我还认识到许多事情。这次设计使我的编程水平提高了一大步,使我充分的认识到合作的可贵。由于这次设计涉及到数据库,我的学到了不少编程工具与数据库连接的知识,对数据库的操作有了进一步的了解。这次设计对我的综合能力是一次很好的锻炼,但是我必须承认自己的能力和知识还很肤浅。所以今后我的学习道路还是很漫长的。最后,在这里我要衷心的感谢我们的指导老师牛丽、程渊,谢谢她的悉心指导和热心帮助。由于我水平有限,加之时间短暂,故学籍管理系统中还有许多不足之处,请老师批评指正,我会在以后的制作中不断改进,不断完善。
第五篇:酒店管理系统 (数据库课程设计)
数据库 酒店管理系统 课程设计(基于 SQL server 2000)
实现过程
1.1 通过查询分析器实现建立数据库、数据表
------------------------------创建数据库和数据表---(1)创建酒店管理系统数据库
CREATE DATABASE 酒店管理系统(2)创建客房信息表
CREATE TABLE 客房
(客房编号 CHAR(8)PRIMARY KEY,客房类型 CHAR(8)NOT NULL,价格 SMALLMONEY NOT NULL,床位数 INT NOT NULL,使用状态 CHAR(8)NOT NULL)
INSERT INTO 客房 VALUES('101','一',100,1,'在使用')INSERT INTO 客房 VALUES('102','二',200,2,'在使用')INSERT INTO 客房 VALUES('103','二',200,1,'在使用')INSERT INTO 客房 VALUES('104','三',300,2,'在使用')INSERT INTO 客房 VALUES('105','三',300,1,'未使用')
(3)创建客户信息表
CREATE TABLE 客户
(客户编号 CHAR(8)PRIMARY KEY, 客户名称 CHAR(10)NOT NULL,身份证号 CHAR(18)NOT NULL,联系地址 CHAR(25),联系电话 CHAR(10))INSERT INTO 客户 VALUES('1001','王一',12234,'江西','3245354')INSERT INTO 客户 VALUES('1002','张三',34234,'江西','2442442')INSERT INTO 客户 VALUES('1003','李四',56465,'江西','5654645')INSERT INTO 客户 VALUES('1004','王钱',65435,'江西','5676577')INSERT INTO 客户 VALUES('1005','孙志',11464,'江西','4234343')
(4)创建入住登记表
CREATE TABLE 入住登记
(客房编号 CHAR(8)FOREIGN KEY REFERENCES 客房(客房编号),客户编号 CHAR(8)FOREIGN KEY REFERENCES 客户(客户编号),预定日期 DATETIME,预定数量 INT, PRIMARY KEY(客房编号,客户编号))
INSERT INTO 入住登记 VALUES('101','1001',2010-10-10,1)INSERT INTO 入住登记 VALUES('102','1002',2010-12-10,1)INSERT INTO 入住登记 VALUES('103','1003',2010-12-26,1)INSERT INTO 入住登记 VALUES('104','1004',2010-12-9,1)--------创建查询视图---------1.2系统功能相应的查询视图:
(1)客户信息查询视图
CREATE VIEW 客户信息查询
AS SELECT * FROM 客户
(2)客房信息查询
CREATE VIEW 客房信息查询
AS SELECT
* FROM 客房
(3)入住信息查询
CREATE VIEW 入住登记信息查询 AS SELECT
* FROM 入住登记
(4)入住信息查询
CREATE VIEW 入住信息查询
AS SELECT入住登记.客房编号,客户名称,入住登记.客户编号,客房.客房类型,价格,使用状态
FROM 客房,客户,入住登记
WHERE 客房.客房编号=入住登记.客房编号 AND 入住登记.客户编号=客户.客户编号
---------------建立索引-----------------------1.3建立索引及数据入库
1.建立客房编号,价格,客户编号,客户名称的索引 创建客房表索引:
CREATE UNIQUE INDEX UKF ON 客房(客房编号,价格)
创建客户表索引:
CREATE UNIQUE INDEX UKH ON 客户(客户编号,客户名称)
创建入住表索引:
CREATE UNIQUE INDEX URZ ON 入住登记(客户编号,客房编号)2.数据入库
方法一 酒店管理系统包括客房信息表,客户信息表,入住登记信息表。采用Excel中录入数据,然后使用SQL Server 2000数据导入、导出功能直接将数据导入到相应的基本表。
方法二 在查询分析器中插入相关数据,用SQL语句插入。
----------创建存储过程----------------------1.4建立存储过程
1.4.1客房信息存储过程
插入客房信息存储过程:
CREATE PROCEDURE 插入客房信息(@KFB CHAR(8), @KFL CHAR(8), @JG SMALLMONEY, @CWS INT, @SYZT CHAR(8))AS INSERT INTO 客房 VALUES(@KFB,@KFL,@JG,@CWS,@SYZT)
修改客房信息存储过程:
CREATE PROCEDURE 修改客房信息(@KFB CHAR(8), @KFL CHAR(8), @JG SMALLMONEY, @CWS INT, @SYZT CHAR(8))AS UPDATE 客房
SET 客房类型=@KFL,价格=@JG,床位数=@CWS,使用状态=@SYZT WHERE 客房编号=@KFB 删除客房信息存储过程:
CREATE PROCEDURE 删除客房信息(@KFB CHAR(8))AS DELETE FROM 客房 WHERE 客房编号=@KFB
1.4.2客户信息存储过程
插入客户信息
CREATE PROCEDURE 插入客户信息(@KHB CHAR(8), @KFM CHAR(10), @SFZ CHAR(18), @LXDZ CHAR(25), @LXDH CHAR(10))AS INSERT INTO 客户 VALUES(@KHB,@KFM,@SFZ,@LXDZ,@LXDH)修改客户信息
CREATE PROCEDURE 修改客户信息(@KHB CHAR(8), @KFM CHAR(10), @SFZ CHAR(18), @LXDZ CHAR(25), @LXDH CHAR(10))AS UPDATE 客户
SET 客户名称=@KFM,身份证号=@SFZ,联系地址=@LXDZ,联系电话=@LXDH WHERE 客户编号=@KHB
删除客户信息
CREATE PROCEDURE 删除客户信息(@KHB CHAR(8))AS DELETE FROM 客户
WHERE 客户编号=@KHB
EXEC 删除客户信息 @KHB='10009'
3.4.3创建入住信息存储过程 插入入住信息
CREATE PROCEDURE 插入入住信息(@KFB CHAR(8), @KHB CHAR(8), @YDRQ DATETIME, @YDSL INT)AS INSERT INTO 入住登记 VALUES(@KFB,@KHB,@YDRQ,@YDSL)
修改入住信息
CREATE PROCEDURE 修改入住信息(@KFB CHAR(8), @KHB CHAR(8), @YDRQ DATETIME, @YDSL INT)AS UPDATE 入住登记
SET 客房编号=@KFB,预定日期=@YDRQ ,预定数量=@YDSL WHERE 客户编号=@KHB
删除入住信息
CREATE PROCEDURE 删除入住信息(@KHB CHAR(8))AS DELETE
FROM 入住登记
WHERE 客户编号=@KHB
1.5查询存储过程的创建
客房编号查询
CREATE PROCEDURE 客房编号查询(@KFB CHAR(8), @KFL CHAR(8)OUTPUT, @JG SMALLMONEY OUTPUT, @CWS INT OUTPUT, @SYZT CHAR(8)OUTPUT)AS SELECT @KFL=客房类型,@JG=价格,@CWS=床位数,@SYZT=使用状态 FROM 客房
WHERE 客房编号=@KFB
客户编号查询
CREATE PROCEDURE 客户编号查询(@KHB CHAR(8), @KFM CHAR(10)OUTPUT , @SFZ CHAR(18)OUTPUT, @LXDZ CHAR(25)OUTPUT, @LXDH CHAR(10)OUTPUT)AS SELECT @KFM=客户名称,@SFZ=身份证号,@LXDZ=联系地址,@LXDH=联系电话 FROM 客户
WHERE 客户编号=@KHB
入住客户编号查询
CREATE PROCEDURE 入住客户编号查询(@KFB CHAR(8)OUTPUT, @KHB CHAR(8), @YDRQ DATETIME OUTPUT, @YDSL INT OUTPUT)AS SELECT @KFB=客房编号,@YDRQ=预定日期,@YDSL=预定数量 FROM 入住登记
WHERE 客户编号=@KHB
--------建立触发器--------------1.6、建立触发器保证数据的一致性
客房使用状态的控制
CREATE TRIGGER 控制触发器
ON 入住登记 FOR INSERT AS
UPDATE 客房
SET 使用状态='使用中' WHERE 客房编号=ANY(SELECT 客房编号 FROM INSERTED)
控制入住信息删除的触发器
CREATE TRIGGER 入住删除触发器
ON 入住登记 FOR DELETE AS BEGIN DELETE FROM 客户 WHERE 客户编号=ANY(SELECT 客户编号 FROM DELETED)
UPDATE 客房
SET 使用状态='未使用' WHERE 客房编号=ANY(SELECT 客房编号 FROM DELETED)END 客户信息删除的控制
CREATE TRIGGER 客户删除触发器
ON 客户
FOR DELETE AS BEGIN DELETE FROM 入住
WHERE 客户编号=ANY(SELECT 客户编号 FROM DELETED)
UPDATE 客房
SET 使用状态='未使用' WHERE 客房编号=ANY(SELECT 客房编号 FROM DELETED)END
客房删除触发器
CREATE TRIGGER 客房删除触发器
ON 客房
FOR DELETE AS
DELETE FROM 入住
WHERE 客户编号=ANY(SELECT 客户编号 FROM DELETED)
酒店管理系统数据库脚本
------------------------数据库初始化------set nocount on set dateformat mdy go
use master
go if exists(select * from sysdatabases where name='酒店管理系统')
/*删除在master中已存*/ /*在的名为酒店管理系统的数据库*/ drop database 酒店管理系统 go--------------------------酒店管理系统的建立-create database 酒店管理系统 on primary /*设定系统主文件*/(name='酒店管理系统_data', filename='d:酒店管理系统.mdf', size=10, maxsize=50, filegrowth=5)
log on
/*创建事务日志文件*/(name='酒店管理系统_log', filename='d:酒店管理系统.ldf', size=5, maxsize=25, filegrowth=5)go
---------(注:删除查询分析器中的以上代码后,运行以下代码)-----------------建立信息表----------use 酒店管理系统
if exists(select * from sysobjects where name='客户')drop table 客户 go print 'drop table 客户' print 'create table 客户' go /*客户信息表*/ CREATE TABLE 客户
/*创建客户信息表*/(客户编号 CHAR(8)PRIMARY KEY, 客户名称 CHAR(10)NOT NULL, 身份证号 CHAR(18)NOT NULL, 联系地址 CHAR(25), 联系电话 CHAR(10))go--------------------------插入客户数据-----------------------INSERT INTO 客户 VALUES('1001','王一',12234,'江西','3245354')INSERT INTO 客户 VALUES('1002','张三',34234,'江西','2442442')INSERT INTO 客户 VALUES('1003','李四',56465,'江西','5654645')INSERT INTO 客户 VALUES('1004','王钱',65435,'江西','5676577')INSERT INTO 客户 VALUES('1005','孙志',11464,'江西','4234343')if exists(select * from sysobjects where name='客房')drop table 客房 go print 'drop table 客房' print 'create table 客房' go /*客房信息表*/ CREATE TABLE 客房
/*创建客房信息表*/(客房编号 CHAR(8)PRIMARY KEY, 客房类型 CHAR(8)NOT NULL, 价格 SMALLMONEY NOT NULL, 床位数 INT NOT NULL, 使用状态 CHAR(8)NOT NULL)go-----------------------插入客房数据----------------------INSERT INTO 客房 VALUES('101','一',100,1,'使用中')INSERT INTO 客房 VALUES('102','二',200,2,'使用中')INSERT INTO 客房 VALUES('103','二',200,1,'使用中')INSERT INTO 客房 VALUES('104','三',300,2,'使用中')INSERT INTO 客房 VALUES('105','三',300,1,'使用中')if exists(select * from sysobjects where name='入住登记')drop table 入住登记 go print 'drop table 入住登记' print 'create table 入住登记' go /*入住登记信息表*/ CREATE TABLE 入住登记
/*创建入住登记信息表*/(客房编号 CHAR(8)FOREIGN KEY REFERENCES 客房(客房编号),客户编号 CHAR(8)FOREIGN KEY REFERENCES 客户(客户编号),预定日期 DATETIME,预定数量 INT, PRIMARY KEY(客房编号,客户编号))go
---------------插入入住登记信息数据----------------------INSERT INTO 入住登记 VALUES('101','1001',2010-10-10,1)INSERT INTO 入住登记 VALUES('102','1002',2010-12-10,1)INSERT INTO 入住登记 VALUES('103','1003',2010-12-26,1)INSERT INTO 入住登记 VALUES('104','1004',2010-12-9,1)go
-----建立索引-------------------
CREATE UNIQUE INDEX UKF ON 客房(客房编号,价格)go CREATE UNIQUE INDEX UKH ON 客户(客户编号,客户名称)go CREATE UNIQUE INDEX URZ ON 入住登记(客户编号,客房编号)go
----建立触发器-------------------------建立控制触发器(保证在客房使用状态的一致性)------if exists(select * from sysobjects where name='控制触发器')drop trigger 控制触发器 GO CREATE TRIGGER 控制触发器
ON 入住登记 FOR INSERT AS
UPDATE 客房
SET 使用状态='使用中' WHERE 客房编号=ANY(SELECT 客房编号 FROM INSERTED)go
--------建立入住删除触发器(保证信息删除的一致性)----------if exists(select * from sysobjects where name='入住删除触发器')drop trigger 入住删除触发器 GO CREATE TRIGGER 入住删除触发器
ON 入住登记 FOR DELETE AS BEGIN DELETE FROM 客户
WHERE 客户编号=ANY(SELECT 客户编号 FROM DELETED)
UPDATE 客房
SET 使用状态='未使用' WHERE 客房编号=ANY(SELECT 客房编号 FROM DELETED)END go-------建立客房删除触发器(保证删除的一致性)---------if exists(select * from sysobjects where name='客房删除触发器')drop trigger 客房删除触发器 GO CREATE TRIGGER 客房删除触发器
ON 客房
FOR DELETE AS
DELETE FROM 入住
WHERE 客户编号=ANY(SELECT 客户编号 FROM DELETED)go---------创建查询视图----------------
CREATE VIEW 入住信息查询
AS SELECT 入住登记.客房编号,客户名称,入住登记.客户编号,客房.客房类型,价格,使用状态
FROM 客房,客户,入住登记
WHERE 客房.客房编号=入住登记.客房编号 AND 入住登记.客户编号=客户.客户编号 go
---------建立存储过程------------------------------客房信息插入存储过程--------------------------CREATE PROCEDURE 插入客房信息(@KFB CHAR(8), @KFL CHAR(8), @JG SMALLMONEY, @CWS INT, @SYZT CHAR(8))AS INSERT INTO 客房 VALUES(@KFB,@KFL,@JG,@CWS,@SYZT)GO
--------------------客房信息修改的存储过程---------------------CREATE PROCEDURE 修改客房信息(@KFB CHAR(8), @KFL CHAR(8), @JG SMALLMONEY, @CWS INT, @SYZT CHAR(8))AS UPDATE 客房
SET 客房类型=@KFL,价格=@JG,床位数=@CWS,使用状态=@SYZT WHERE 客房编号=@KFB go--------------------客房信息删除的存储过程---------------------CREATE PROCEDURE 删除客房信息(@KFB CHAR(8))AS DELETE FROM 客房 WHERE 客房编号=@KFB GO--------------------客户信息插入的存储过程---------------------CREATE PROCEDURE 插入客户信息(@KHB CHAR(8), @KFM CHAR(10), @SFZ CHAR(18), @LXDZ CHAR(25), @LXDH CHAR(10))AS INSERT INTO 客户 VALUES(@KHB,@KFM,@SFZ,@LXDZ,@LXDH)go--------------------客户信息修改的存储过程---------------------CREATE PROCEDURE 修改客户信息(@KHB CHAR(8), @KFM CHAR(10), @SFZ CHAR(18), @LXDZ CHAR(25), @LXDH CHAR(10))AS UPDATE 客户
SET 客户名称=@KFM,身份证号=@SFZ,联系地址=@LXDZ,联系电话=@LXDH WHERE 客户编号=@KHB GO--------------------客户信息删除的存储过程---------------------CREATE PROCEDURE 删除客户信息(@KHB CHAR(8))AS DELETE FROM 客户
WHERE 客户编号=@KHB go--------------------入住信息插入的存储过程---------------------CREATE PROCEDURE 插入入住信息(@KFB CHAR(8), @KHB CHAR(8), @YDRQ DATETIME, @YDSL INT)AS INSERT INTO 入住登记 VALUES(@KFB,@KHB,@YDRQ,@YDSL)go--------------------入住信息修改的存储过程---------------------CREATE PROCEDURE 修改入住信息(@KFB CHAR(8), @KHB CHAR(8), @YDRQ DATETIME, @YDSL INT)AS UPDATE 入住登记
SET 客房编号=@KFB,预定日期=@YDRQ ,预定数量=@YDSL WHERE 客户编号=@KHB go--------------------入住信息删除的存储过程---------------------CREATE PROCEDURE 删除入住信息(@KHB CHAR(8))AS DELETE
FROM 入住登记
WHERE 客户编号=@KHB go--------------------客房编号查询的存储过程-----------------------if exists(select * from sysobjects where name='客房编号查询')drop procedure 客房编号查询 GO CREATE PROCEDURE 客房编号查询(@KFB CHAR(8))AS SELECT 客房类型,价格,床位数,使用状态 FROM 客房
WHERE 客房编号=@KFB go--------------------客户编号查询的存储过程-----------------------if exists(select * from sysobjects where name='客户编号查询')drop procedure 客户编号查询 GO CREATE PROCEDURE 客户编号查询(@KHB CHAR(8))AS SELECT 客户编号,客户名称,身份证号,联系地址,联系电话 FROM 客户
WHERE 客户编号=@KHB go--------------------入住信息查询的存储过程-----------------------if exists(select * from sysobjects where name='入住客户编号查询')drop procedure 入住客户编号查询 GO CREATE PROCEDURE 入住客户编号查询(@KHB CHAR(8))AS SELECT 客户编号,客房编号,预定日期,预定数量 FROM 入住登记
WHERE 客户编号=@KHB