当前位置:编程学习 > VB >>

VB数据库编程,求助VB高手!

首先申明:这道题必须用数据库编出来,不用数据库的我也会编。

题目:1 设计如图界面,建立图上的单词库,按显示词库可以显示出来

2 能够翻译独立的单词

3 能够实现图中的翻译(词库没有的词显示未知)

我VB比较笨拙,还望广大高手不吝赐教!如果对题目有不清楚的可以问我
补充:272965627
答案:
数据库使用ACCESS,表名为word,表结构为 ID--自动增加、Chinese--文本、English--文本。然后在数据库中输入楼主图中显示的数据信息。文件名为data.mdb。在模块里的ConnectString函数中可以自行修改。


工程---引用---选中Microsoft ActiveX Data Objects 2.6 Library---确定。(这里是引用ADO,2.6,2.7,2.8都可以的。)

新建立模块,添加以下内容。此内容为ADO链接数据库通用模块,以后工程都可以继续使用,很方便。

'=-=-=-=-=-=-=-=模块=-=-=-=-=-=-=-=
'传递参数SQL传递查询语句,MsgString传递查询信息。自身以一个数据集对象的形式返回
Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset
Dim Cnn As ADODB.Connection '定义连接
Dim Rst As ADODB.Recordset
Dim sTokens() As String '定义字符串

On Error GoTo ExecuteSQL_Error '异常处理

sTokens = Split(SQL) '用Split函数产生一个包含各个子串的数组

Set Cnn = New ADODB.Connection '创建连接
Cnn.Open ConnectString

If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then '判断字符串中是否含有指定内容
Cnn.Execute SQL '执行查询语句
MsgString = sTokens(0) & "query successful" '返回查询信息
Else
Set Rst = New ADODB.Recordset '闯将数据集对象
Rst.Open Trim$(SQL), Cnn, adOpenKeyset, adLockOptimistic '返回查询结果
Set ExecuteSQL = Rst '返回记录集对象
MsgString = "查询到" & Rst.RecordCount & " 条记录"
End If

ExecuteSQL_Exit:

Set Rst = Nothing '清空数据集对象
Set Cnn = Nothing '中断连接
Exit Function

ExecuteSQL_Error: '判断错误类型

MsgString = "查询错误:" & Err.Description
Resume ExecuteSQL_Exit

End Function

'连接数据库
Public Function ConnectString() As String
'返回一个数据库连接
ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password= ;Data Source=" & App.Path & "\data.mdb"
End Function

在窗体添加如下代码,界面就不说了。和你发的图是一样的。
'=-=-=-=-=-=-=-=窗体=-=-=-=-=-=-=-=
Private Sub Command1_Click()
'显示字库
Dim TxtSQL As String
Dim Mrc As New ADODB.Recordset
Dim MsgText As String

TxtSQL = "select * from word order by id asc"
Set Mrc = ExecuteSQL(TxtSQL, MsgText)

Do While Not Mrc.EOF
Me.List1.AddItem Mrc("Chinese").Value & " " & Mrc("English").Value
Mrc.MoveNext
Loop

Mrc.Close
End Sub

Private Sub Command2_Click()
'翻译
On Error Resume Next

Dim TxtSQL As String
Dim Mrc As New ADODB.Recordset
Dim MsgText As String

Dim StrChinese, Tmp As String

StrChinese = Me.Text1.Text
Tmp = StrChinese

Do While StrChinese <> ""
DoEvents

TxtSQL = "select * from word where Chinese='" & StrChinese & "'"
Set Mrc = ExecuteSQL(TxtSQL, MsgText)
If Not Mrc.BOF And Not Mrc.EOF Then
Me.Text2.Text = Me.Text2.Text & Mrc("English").Value & " "
StrChinese = Right(Tmp, Len(Tmp) - Len(StrChinese))
Tmp = StrChinese
Else
StrChinese = Left(StrChinese, Len(StrChinese) - 1)
End If

If StrChinese = "" Then
StrChinese = Right(Tmp, Len(Tmp) - 1)
Tmp = StrChinese
If StrChinese <> "" Then
Me.Text2.Text = Me.Text2.Text & "未知 "
End If
End If
Mrc.Close
Loop

End Sub

有问题QQ邮箱问我吧。
用DATA控件连接数据库,通过RECORDset语句连接就行了
这个题的难点不在于用不用数据库,关键是汉语转为英语的词法分析的问题,比如计算机是computer,库里还有一个计算calculate,如果词分的不好,就会译为calculate 未知 department
具体设计时可以把数据库里的表设计为两个字段,一个为中文名,一个为对应的英语,转换时找最长的词进行译,如先在“中文名”字段里查“计算机系的学生学习计算机”如果找不到,就减掉一个字“计算机系的学生学习计算”,再找不到就再减一个字,直到找到一个最长的匹配--“计算机”,这时输出“英语”computer,然后在总字符串中去掉已经找到的“计算机”这三个字,继续找“系的学生学习计算机”,如此循环,要说明的一点就是,如果减到0仍找不到,要输出“未知”

当然,如果字符串长时,效率会低,可以考虑一次只取前十个字来判断,滑动进行,具体编程自己写吧,学编程要自己多动手

上一个:vb程序,高手请进 急
下一个:VB载入INI或inf配置文件

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,