APP下载

甘肃特色果品区块链溯源智慧云平台开发

2022-12-13李鸿杰周璐琼

林业科技情报 2022年4期
关键词:果品控件序号

张 超 李鸿杰 王 琴 米 莹 周璐琼

(甘肃林业职业技术学院,甘肃 天水 741020)

1 开发工具

经过调查、对比、分析,甘肃特色果品溯源智慧云平台的开发采用面向对象的VB.NET程序设计语言和面向大中型企业的数据库管理系统作为开发工具,具体信息如下:

开发工具:Microsoft Visual Studio 2010

数据库管理系统:SQL Server 2008

运行环境:Microsoft .NET Framework 4.0

2 功能实现

甘肃特色果品区块链溯源智慧云平台主要包括溯源信息采集功能和果品质量安全追溯功能,即溯源信息的输入和输出两个方面。溯源信息的输入主要由特色果品种植主体、加工主体、质检主体和销售主体实时完成;而溯源信息的输出主要由特色果品消费者检索查询获取。具体信息流如图1所示:

图1 溯源平台信息流图

3 系统编码

使用VB.NET编程语言和SQL Server数据库管理系统对甘肃特色果品质量安全信息进行全流程管理,主要包括质量安全因子的增、删、改、查等操作。22个质量管理环节和全流程信息均可以通过各自的管理模块进行采集和追踪,而果品编码则是贯穿整个数据采集、管理的唯一标识,果品编码模块核心代码如下:

Private Subguopinbianma_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

bd = False

Dimselectstr As String

selectstr = "select (select count(果品编码) from [guopinbianma] as [guopinbianma2] where [guopinbianma2].ID<=[guopinbianma].ID) as 序号,果园标识,果品类别,果品名称,果品等级,果品编码,查询次数,果品状态,备注,ID from [guopinbianma] order by 序号"

sqladapter = New SqlDataAdapter(selectstr, sqlconn)

Dim guopinbianmatmp1 As NewDataTable

If ds.Tables("guopinbianmatmp1") IsNot Nothing Then

ds.Tables("guopinbianmatmp1").Clear()

End If

sqladapter.Fill(ds, "guopinbianmatmp1")

DataGridView1.DataSource =ds.Tables("guopinbianmatmp1")

Fori As Int32 = 0 To DataGridView1.Columns.Count - 1

DataGridView1.Columns(i).SortMode = DataGridViewColumnSortMode.NotSortable

Next

DataGridView1.Columns("ID").Visible = False

Ifds.Tables("guopinbianmatmp1").Rows.Count > 0 Then

Select Case flag

Case "add"

DataGridView1.CurrentCell = DataGridView1.Rows(DataGridView1.Rows.Count - 1).Cells("序号").value

DataGridView1.Rows(DataGridView1.Rows.Count - 1).Selected = True

Case "modify"

DataGridView1.CurrentCell = DataGridView1.Rows(rec).Cells("序号").value

DataGridView1.Rows(rec).Selected = True

Case "delete"

If rec = DataGridView1.Rows.Count Then

DataGridView1.CurrentCell = DataGridView1.Rows(rec - 1).Cells("序号").value

DataGridView1.Rows(rec - 1).Selected = True

Else

DataGridView1.CurrentCell = DataGridView1.Rows(rec).Cells("序号").value

DataGridView1.Rows(rec).Selected = True

End If

Case Else

DataGridView1.CurrentCell = DataGridView1.Rows(rec).Cells("序号").value

End Select

End If

flag = ""

check = False

lockcontrol()

IfLogin.usertype = "系统管理员" Then

Button1.Enabled = True

Button2.Enabled = True

Else

Button1.Enabled = False

Button2.Enabled = False

Button4.Enabled = False

End If

bd = True

End Sub

以上代码为果品编码模块的Load事件过程,主要进行模块的初始化操作,包括在DataGridView控件中加载果品编码信息,初始化界面中的所有数据绑定控件和按钮控件等。

Private SubButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

n =InputBox("请输入要进行果品编码的数量:", "编码数量", 1)

If Int(n) > 0 Then

If DataGridView1.Rows.Count > 0 Then

rec = DataGridView1.CurrentCell.RowIndex

End If

flag = "add"

Button1.Enabled = False

Button2.Enabled = False

lockcontrol()

TextBox1.clear()

ComboBox1.clear()

ComboBox2.clear()

ComboBox3.clear()

ComboBox4.clear()

TextBox2.clear()

TextBox3.Text = "0"

ComboBox5.clear()

TextBox4.clear()

ComboBox1.Focus()

Me.AcceptButton = Button3

Me.CancelButton = Button5

End If

End Sub

以上代码为果品编码模块上Button1的Click事件过程,主要完成用户单击事件发生时,添加记录的初始化操作。

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

If DataGridView1.RowCount > 0 Then

rec = DataGridView1.CurrentRow.Index

flag = "modify"

Button1.Enabled = False

Button2.Enabled = False

lockcontrol()

ComboBox1.Focus()

Me.AcceptButton = Button3

Me.CancelButton = Button5

Else

MsgBox("表中无数据!", , "信息提示")

End If

End Sub

以上代码为果品编码模块上Button2的Click事件过程,主要完成用户单击事件发生时,修改记录的初始化操作。

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

checkdata()

If check = True Then

Select Case flag

Case "add"

Try

DimMyRnd As New Random

Dim a, b, c As Integer

Ifsqlconn.State = ConnectionState.Closed Then

sqlconn.Open()

End If

Fori As Integer = 1 To n

a =MyRnd.Next

b =MyRnd.Next

c =MyRnd.Next

Dim cod As String = TextBox1.Text & Format(Now, "YYYYMMDDHHmmssSSS") & a & b & c

sqladapter.InsertCommand = New SqlCommand("insert into [guopinbianma](果园标识,果品类别,果品名称,果品等级,果品编码,查询次数,果品状态,备注) values('" & ComboBox1.Text & "','" & ComboBox2.Text & "','" & ComboBox3.Text & "','" & ComboBox4.Text & "','" & cod & "','" & TextBox3.Text & "','" & ComboBox5.Text & "','" & TextBox4.Text & "')", sqlconn)

sqladapter.InsertCommand.ExecuteNonQuery()

Next

MsgBox("果品编码添加成功!", MsgBoxStyle.Information, "成功提示")

CatchsqlExceptionErr As SqlClient.SqlException

MessageBox.Show(sqlExceptionErr.Message)

Finally

sqlconn.Close()

End Try

guopinbianma_Load(Sender, e)

guopinbianma_Activated(Sender, e)

Case "modify"

Try

sqladapter.UpdateCommand = New SqlCommand("update [guopinbianma] set 果园标识='" & ComboBox1.Text & "',果品类别='" & ComboBox2.Text & "',果品名称='" & ComboBox3.Text & "',果品等级='" & ComboBox4.Text & "',果品编码='" & TextBox2.Text & "',查询次数='" & TextBox3.Text & "',果品状态='" & ComboBox5.Text & "',备注='" & TextBox4.Text & "' where ID='" & DataGridView1.CurrentRow.Cells("ID").Value & "'", sqlconn)

Ifsqlconn.State = ConnectionState.Closed Then

sqlconn.Open()

End If

sqladapter.UpdateCommand.ExecuteNonQuery()

MsgBox("果品编码信息修改成功!", MsgBoxStyle.Information, "成功提示")

Catch ex As Exception

Finally

sqlconn.Close()

End Try

guopinbianma_Load(Sender, e)

End Select

End If

End Sub

以上代码为果品编码模块上Button3的Click事件过程,主要是对用户添加或修改的果品编码信息进行保存,并初始化界面上各控件的状态。

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

Ifds.Tables("guopinbianmatmp1").Rows.Count > 0 Then

rec = DataGridView1.CurrentCell.RowIndex

IfMsgBox("确定删除记录吗?", vbInformation + vbOKCancel + vbDefaultButton2, "删除提示") = vbOK Then

Try

Dimdeletestr As String = "delete from [guopinbianma] where ID='" & DataGridView1.CurrentRow.Cells("ID").Value & "'"

sqladapter.DeleteCommand = New SqlCommand(deletestr, sqlconn)

Ifsqlconn.State = ConnectionState.Closed Then

sqlconn.Open()

End If

sqladapter.DeleteCommand.ExecuteNonQuery()

MsgBox("果品编号删除成功!", vbInformation, "成功提示")

flag = "delete"

guopinbianma_Load(Sender, e)

guopinbianma_Activated(sender, e)

Catch ex As Exception

Finally

sqlconn.Close()

End Try

End If

End If

End Sub

以上代码为果品编码模块上Button4的Click事件过程,主要完成选定记录的删除操作,并初始化界面上控件的状态。

4 调试运行

4.1 测试方法

系统测试,是检验各模块按照功能设计要求正常运行,保证系统安全、可靠、持续运行的必要手段,主要包括单元测试、集成测试、系统测试、验收测试和回归测试等。采用各种测试方法和技术对系统进行测绘的过程中,对发现的各种错误和Bug即时进行修改、完善,最终使各溯源模块能够稳定运行,实现其溯源管理功能,如图2所示。

图2 系统测试流程图

4.2 运行界面

系统界面包括登录界面、主操作平台界面,以及各溯源管理模块界面等。其中,用户登录界面和主操作平台界面如下图所示。

(1)用户登录界面

甘肃特色果品溯源智慧云平台为分布式管理系统,允许不同空间的用户实时进行数据采集、处理。为保证溯源环节信息的安全和责任可究,平台的用户登录界面可对用户身份的合法性进行验证,阻止非法用户登录,允许合法用户进入并使用相应的溯源模块管理信息。系统的用户类型包括栽培企业、加工部门、质检机构、收购企业、零售企业、消费者、系统管理员等,用户通过手机号码作为用户名登录,界面如图3。

图3 用户登录界面

(2)主操作平台界面

22个质量环节和管理信息模块通过主操作平台界面进行整合,并提供统一的操作入口,实现效果如图4。

图4 溯源平台主界面

5 小结

针对甘肃特色果品质量安全控制技术薄弱、生产规范程度较差、溯源体系不健全等现状,按照“市场需要、政府支持、产教融合”的行业发展需要,基于区块链数据难以篡改和去中心化的优点,通过溯源数据上链以实现甘肃特色果品生产过程、加工过程、质量检测、流程销售等质量安全关键环节全程可追溯,并打造甘肃特色果品的质量安全品牌形象。

猜你喜欢

果品控件序号
专家传授“美颜术” 果品销售不再愁
惟妙惟肖——中国古代器物之粉彩像生瓷果品盘
夏令果品入古诗
流翔高钙功能性果品 深受浦江桃农欢迎
关于.net控件数组的探讨
技术指标选股
技术指标选股
技术指标选股
技术指标选股
ASP.NET服务器端验证控件的使用