欢迎光临
我们一直在努力

国开《VisualBasic程序设计》形考任务五【标准答案】

可做奥鹏国开全部院校作业论文!答案请添加qq:599792888 或 微信:1095258436

请同学选择课程【第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 物资入库表结构

字段名国开形考答案请进:opzy.net或请联系微信:1095258436

 

类型

 

长度

 

备注

 

物资编码

 

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

 

赞(0)
未经允许不得转载:奥鹏作业网 » 国开《VisualBasic程序设计》形考任务五【标准答案】

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址