百年教育职业培训中心 百年教育学习服务平台
题库试卷

国开学习网电大VisualBasic程序设计形考任务五答案

来源: 更新时间:

报名本机构合作学校,赠送复习资料,复习课程,确保录取。并且可以申请学校奖学金500元~1500元不等!答案:微信搜索【渝粤教育】公众号请同学选择课程【第9章】-【实战演练】“实验9进销存管

报名本机构合作学校,赠送复习资料,复习课程,确保录取。并且可以申请学校奖学金500元~1500元不等!

答案:微信搜索【渝粤教育】公众号

请同学选择课程【第9章】-【实战演练】“实验9 进销存管理信息系统”,在VB集成开发环境中认真完成实验。

实验完成后,将调试好的程序保存在以“姓名+实验名称”命名的文件夹下,并将该文件夹压缩成.rar或者.zip格式进行提交。 本次实验满分40分,提交后需要辅导教师批阅打分。

实验目的

1掌握利用SQL语句,通过ADO数据对象管理数据库的方法。

2理解数据库实用程序的框架体系。

3了解数据报表的制作方法。

实验内容

本实验主要开发一个“进销存”管理系统。要求同学们首先在SQL Server上创建名为“进销存”的数据库,并在该数据库上创建“物资台账”“物资入库”“物资出库”3张表。然后编写一个简单“进销存”数据库管理系统,它具有数据增加(Insert)、删除(Delete)、修改(Update)和查询(Select)功能,并能将查询结果在计算屏幕和打印机上输出。

实验步骤

1创建数据库

在进行本实验之前,请同学们先根据表9.4、表9.5、表9.6在SQL Server上创建“进销存”数据库。如果你不具备SQL Server实验环境,也可以在Access数据库上完成创建工作。无论采用哪种数据库,程序设计过程和代码基本相同。

9.4 物资台账表结构

字段名

类型

长度

备注

物资编码

Char

4

1.主关键字为“物资编码”

2.在主关键字上创建聚集唯一索引

3.“物资编码”由4位组成,其中第1位使用英文字母表示物资类别,后3位使用数字表示流水号。物资类别如下:A表示钢笔类,B表示橡皮类

物资名称

Varchar

10

计量单位

Char

2

单价

Money

8

期初库存

Numeric

9

9.5 物资入库表结构

字段名

类型

长度

备注

物资编码

Char

4

在主关键字“物资编码”上创建聚集不唯一索引

入库时间

Datetime

8

入库数量

Numeric

9

9.6 物资出库表结构

字段名

类型

长度

备注

物资编码

Char

4

在主关键字“物资编码”上创建聚集不唯一索引

出库时间

Datetime

8

出库数量

Numeric

9

同学们既可以利用SQL Server企业管理器,通过图形化界面完成数据库创建工作,也可以直接在SQL Server查询分析器中运行以下语句:

--创建“进销存”数据库容器

CREATE DATABASE 进销存

GO

USE 进销存

GO

--创建物资台账表

CREATE TABLE 物资台账 (

物资编码 char (4) NOT NULL ,

物资名称 varchar (10) NOT NULL ,

计量单位char (2) NOT NULL ,

单价 money NOT NULL ,

期初库存 numeric (18, 0) NOT NULL

) ON [PRIMARY]

GO

--创建物资入库表

CREATE TABLE 物资入库 (

物资编码 char (4) NOT NULL ,

入库时间 datetime NOT NULL ,

入库数量 numeric(18, 0) NOT NULL

) ON [PRIMARY]

GO

--创建物资出库表

CREATE TABLE 物资出库 (

物资编码 char (4) NULL ,

出库时间 datetime NOT NULL ,

出库数量 numeric(18, 0) NOT NULL

) ON [PRIMARY]

GO

2根据业务逻辑书写SQL语句

由于拟开发的应用程序具有对数据表的增加、删除、修改和查询4项基本功能,因此请同学们首先在实验报告上写出相应的SQL语句,比如:

--向物资台账表中新增数据

INSERT INTO 物资台账(物资编码,物资名称,计量单位,单价,期初库存)

VALUES('A001','英雄牌钢笔','只',2.5,50)

--修改物资台账表中现有数据

UPDATE物资台账 SET 单价 = 3 ,期初库存= 60

WHERE 物资编码 = 'A001'

--删除物资台账表中现有数据

DELETEFROM 物资台账

WHERE 物资编码 = 'A001'

--查询物资台账表中现有数据

SELECT * FROM物资台账

WHERE 物资编码 = 'A001'

--(其他略,请同学们自己完成)

3程序界面设计

(1)创建工程。新建一“标准EXE”工程,工程名为“进销存管理信息系统”。通过“工程-部件”或“工程-引用”菜单项添加ADO数据对象、工具条、MSFlexGrid等相关对象或控件,并按以下要求创建窗体,所有窗体的StartUpPosition属性均设置为:2?屏幕中心。

(2)创建主窗体(frmMain)。如图9.33所示,运用菜单技术、工具条技术创建窗体。窗体名frmMain,其他控件保留默认名称。

9.33 主窗体(frmMain)运行界面

(3)创建“物资台账管理”窗体(frm台账)。如图9.34所示,使用图片(PictureBox)、表格(MSFlexGrid)、命令按钮(CommandButton)控件,添加并设计“新增记录”窗体。窗体名为“frm台账”,所有控件保留默认名称。

9.34 “物资台账管理”窗体(frm台账)设计界面

(4)创建“物资台账数据增加”窗体(frmAdd台账)。如图9.35所示,使用标签、文本框、组合框、命令按钮控件,添加并创建“物资台账数据增加”窗体。窗体名为“frmAdd台账”。其中Text1为控件数组,Text1(4)控件的Enable属性为False。另外,在Combo1控件的List属性中输入一些常用的计量单位,比如“台”“个”“只”等,其他控件保留默认名称和设置。

9.35 “物资台账数据增加”窗体(frmAdd台账)设计界面

(5)创建“物资台账数据修改”窗体(frmUpdate台账)。如图9.36所示,使用标签、组合框、命令按钮控件,添加并创建“物资台账数据修改”窗体。窗体名为“frmUpdate修改”。其中Text1为控件数组,Text1(0)和Text1(4)(物资编码和期初金额)控件的Enable属性设置为False,其他控件保留默认名称和设置。

9.36 “物资台账数据修改”窗体(frmUpdate台账)运行界面

(6)创建“物资台账数据查询”窗体(frmQuery台账)。如图9.37所示,使用标签、组合框、命令按钮控件,添加并创建“物资台账数据查询”窗体。窗体名为“frmQuery台账”。其中Text1为控件数组,ComboBox控件的Style属性为2?Dropdown List。

9.37 “物资台账数据查询”窗体(frmQuery台账)设计界面

(7)创建“物资台账报表”窗体(frmReport台账)。通过“工程-添加DataReport”菜单项添加报表窗体,命名为“frmReport台账”。按下列步骤完成设计工作(如图9.38所示):

9.38 “物资台账”报表窗体设计界面

①在报表标头、页标头部分添加rptLabel控件,并修改它们的Caption属性。

②在细节部分添加rptTextBox控件,并修改它们的DataField属性。

③添加rptLine控件。

(8)按上述(3)~(7)步的方法创建“物资入库管理”“物资出库管理”界面。

4代码设计

(1)添加Module模块,编写Main过程:

'声明全局对象变量ADOcn,用于创建与数据库的连接

Public ADOcn As Connection

'声明全局变量strQuery1用于存储查询条件

Pubic strQuery1 As String

Public Sub Main()

'定义数据库连接字符串

Dim strSQLServer As String

'用于连接SQL Server数据库,其中:

'Server为服务器名称

'User ID为登录账号,Password为登录口令

'Database为具体的数据库名

'请根据具体的实验环境修改这些参数

strSQLServer = "Provider=SQLOLEDB;Server=bigdog;Us_

er ID=sa;Password=sa;Database=进销存"

'连接SQL Server数据库

ADOcn.Open strSQLServer

'显示主窗体

frmMain.Show

End Sub

将Main过程设为工程启动对象。

(2)FrmMain窗体主要代码。该窗体的代码主要用于调度其他各窗体,起串接作用。

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.But_ton)

Select Case Button

Case "物资台账管理"

frm台账.Show 1

Case "物资入库管理"

frm入库.Show 1

Case "物资出库管理"

frm出库.Show 1

Case "退出系统"

Unload Me '或者使用End命令

End Select

End Sub

(3)“frm台账”窗体代码。

“通用”部分声明一个Sub过程,用于在MSFlexGrid中显示记录。

Private Sub DisplayGrid()

'声明变量

Dim strGrid As String

Dim i As Integer

Dim ADOrs As New Recordset

ADOrs.ActiveConnection = ADOcn

'打开物资台账

If strQuery1 <> "" Then

ADOrs.Open "Select * From 物资台账 Where " + strQuery1 + " Order By 物资编码"

Else

ADOrs.Open "Select * From 物资台账 order by 物资编码"

End If

'设置MSFlexGrid控件的表头

MSFlexGrid1.Clear

MSFlexGrid1.Rows = 0

MSFlexGrid1.Cols = 6

strGrid = "物资编码" + vbTab + "物资名称" + vbTab + "计量单位" + vbTab

strGrid = strGrid + "单价" + vbTab + "期初库存" + vbTab + "期初金额"

i = 0

'在第i行增加一列

MSFlexGrid1.AddItem strGrid, i

i = i + 1

'通过循环显示表中所有记录

Do While Not ADOrs.EOF

strGrid = ADOrs("物资编码") + vbTab + ADOrs("物资名称") + vbTab + ADOrs("计量单位")

strGrid = strGrid + vbTab + Str(ADOrs("单价")) + vbTab + Str(ADOrs("期初库存"))

strGrid = strGrid + vbTab + Str(ADOrs("单价") * ADOrs("期初库存"))

MSFlexGrid1.AddItem strGrid, i

ADOrs.MoveNext '指针下移一条记录

i = i + 1

Loop

MSFlexGrid1.Rows = i + 1

MSFlexGrid1.FixedRows = 1

MSFlexGrid1.FixedCols = 1

End Sub

Private Sub Form_Load()

'设置查询条件变量的初值

strQuery1 = ""

'显示物资台账记录

DisplayGrid

End Sub

Private Sub Command1_Click()

'调用增加记录窗体

FrmAdd台账.Show 1

DisplayGrid

End Sub

Private Sub Command2_Click()

'删除一条记录

Dim strSQL As String

Dim i As Integer

'取当前光标所在行

i = MSFlexGrid1.Row

'取当前行的第0列单元值,即物资编码列

If MSFlexGrid1.TextMatrix(i, 0) = "" Then

MsgBox "请先选择一个记录!", vbQuestion + vbOKOnly, "信息提示"

Exit Sub

End If

strSQL = "Delete From 物资台账"

strSQL = strSQL + " Where 物资编码='" + MSFlexGrid1.TextMatr _

ix(i, 0) + "'"

If MsgBox("是否要删除?", vbQuestion + vbOKCancel, "信息提示") = vbOK Then

ADOcn.Execute strSQL '执行删除操作

End If

'重新显示

DisplayGrid

End Sub

Private Sub Command3_Click()

'调用修改记录窗体

Dim i As Integer

i = MSFlexGrid1.Row

If MSFlexGrid1.TextMatrix(i, 0) = "" Then

MsgBox "请先选择一个记录!", vbQuestion + vbOKOnly, "信息提示"

Exit Sub

End If

'对frmUpdate台账窗体赋值

With frmUpdate台账

.Text1(0) = MSFlexGrid1.TextMatrix(i, 0)

.Text1(1) = MSFlexGrid1.TextMatrix(i, 1)

.Combo1.Text = MSFlexGrid1.TextMatrix(i, 2)

.Text1(2) = MSFlexGrid1.TextMatrix(i, 3)

.Text1(3) = MSFlexGrid1.TextMatrix(i, 4)

.Show 1

End With

'修改完后重新显示

DisplayGrid

End Sub

Private Sub Command4_Click()

'调用设置查询条件窗体

FrmQuery查询.Show 1

'设置完查询条件后重新显示记录

DisplayGrid

End Sub

Private Sub Command5_Click()

'调用打印报表窗体

Dim ADOrs As New Recordset

ADOrs.ActiveConnection = ADOcn

If strQuery1 <> "" Then

ADOrs.Open "Select * From 物资台账 Where " + strQuery1 +"Order By 物资编码"

Else

ADOrs.Open "Select * From 物资台账 Order By 物资编码"

End If

'设置报表窗体的DataSource和DataMember属性

Set frmReport台账.DataSource = ADOrs.DataSource

FrmReport台账.DataMember = ADOrs.DataMember

FrmReport台账.Show 1

End Sub

Private Sub Command6_Click()

'退出本窗体

Unload Me

End Sub

(4)“frmAdd台账”窗体代码。

Private Sub Command1_Click()

Dim strSQL As String

Dim ADOrs As New Recordset

Set ADOrs.ActiveConnection = ADOcn

'首先查询主关键字“物资编码”是否重复

ADOrs.Open "Select 物资编码 From 物资台账 Where 物资编码='" + Text1(0) + "'"

If Not ADOrs.EOF Then

MsgBox "物资编码已存在,请重新输入", vbQuestion + vbOKOnly, "信息提示"

Exit Sub '退出本过程

End If

'增加一条新记录

strSQL = "Insert Into 物资台账(物资编码,物资名称,计量单位,单价,期初库存) "

strSQL = strSQL + " Values('" + Text1(0) + "','" + Text1(1) + "','" + Combo1.Text + "',"

strSQL = strSQL + Text1(2) + "," + Text1(3) + ")"

ADOcn.Execute strSQL

MsgBox "增加成功,请继续!", vbQuestion + vbOKOnly, "信息提示"

End Sub

Private Sub Command2_Click()

'退出本窗体

Unload Me

End Sub

Private Sub Form_Load()

'赋初值

Text1(0) = ""

Text1(1) = ""

Text1(2) = "0"

Text1(3) = "0"

Combo1.ListIndex = 0

End Sub

Private Sub Text1_Change(Index As Integer)

'当“单价”和“期初库存”值发生变化时,自动计算“期初金额”

If Index = 2 Or Index = 3 Then

Text1(4) = Trim(Str(Val(Text1(2)) * Val(Text1(3))))

End If

End Sub

Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)

'将用户输入的回车键转换为Tab键,使焦点自动下移

If KeyAscii = 13 Then

SendKeys "{Tab}"

End If

'对于“单价”和“期初库存”文本框只允许输入数字、小数点和退格键

If Index = 2 Or Index = 3 Then

If Not ((Chr(KeyAscii) >= "0" And Chr(KeyAscii) <= "9") _Or Chr(KeyAscii) = "." Or KeyAscii = 8) Then

KeyAscii = 0

End If

End If

End Sub

(5)“frmUpdate台账”窗体代码。主要代码是:

Private Sub Command1_Click()

Dim strSQL As String

strSQL = "Update 物资台账 Set 物资名称='" + Text1(1) + "',"

strSQL = strSQL + "计量单位='" + Combo1.Text + "',"

strSQL = strSQL + "单价=" + Text1(2) + ","

strSQL = strSQL + "期初库存=" + Text1(3)

strSQL = strSQL + " Where 物资编码='" + Text1(0) + "'"

ADOcn.Execute strSQL

Unload Me

End Sub

(6)“frmQuery台账”窗体代码。

Private Sub Command1_Click()

'拼写查询条件字符串

Dim str1, str2 As String

str1 = ""

str2 = ""

If Text1(0) <> "" Then

str1 = "物资编码" + Combo1.Text + "'" + Text1(0) + "'"

End If

If Text1(1) <> "" Then

str1 = "物资名称" + Combo2.Text + "'" + Text1(1) + "'"

End If

If str1 = "" And str2 = "" Then

strQuery1 = ""

ElseIf str1 = "" And str2 <> "" Then

strQuery1 = str2

ElseIf str1 <> "" And str2 = "" Then

strQuery1 = str1

Else

strQuery1 = str1 + " And " + str2

End If

Unload Me

End Sub

Private Sub Command2_Click()

'退出本窗体

Unload Me

End Sub

Private Sub Form_Load()

'对窗体对象赋初值

Combo1.Clear

Combo1.AddItem "="

Combo1.AddItem ">="

Combo1.AddItem ">"

Combo1.AddItem "<"

Combo1.AddItem "<="

Combo1.AddItem "<>"

Combo2.Clear

Combo2.AddItem "="

Combo2.AddItem ">="

Combo2.AddItem ">"

Combo2.AddItem "<"

Combo2.AddItem "<="

Combo2.AddItem "<>"

Text1(0).Text = ""

Text1(1).Text = ""

End Sub


报名联系方式

1、报名热线:13662661040(微信),0755-21017149,QQ:2864330758 郭老师

2、报名地址:深圳市龙华新区工业西路68号中顺商务大厦B704


2022年广 东理工学院成人高考招生简章

2022年广 州城建职业学院成人高等教育招生简章

2022年广 东科学技术职业学院招生简章

2022年广 工业大学 成人 高考 招生简章

2022年广 东生态工程职业学院成人高考招生专业

2022年清 远职业技术学院 成人高考 招生专业简介

2022年韶 关学院成人高考招生简章

2022年广 东财经大学成人 高考 高等教育招生简介

2022年广 东理工学院成人高考招生简章

2022年广 东第二师范学院成人高考招生简章

2022年广 东南方职业学院成人高考招生简章

电话咨询