沈阳航空航天大学vb 课设选择系统Word文件下载.docx
《沈阳航空航天大学vb 课设选择系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《沈阳航空航天大学vb 课设选择系统Word文件下载.docx(39页珍藏版)》请在冰豆网上搜索。
![沈阳航空航天大学vb 课设选择系统Word文件下载.docx](https://file1.bdocx.com/fileroot1/2023-1/3/0e8ef8b0-8d16-4c57-9e43-29207b223ef9/0e8ef8b0-8d16-4c57-9e43-29207b223ef91.gif)
可以增加其它功能或修饰。
✧用户界面中的菜单至少应包括“查阅单词”、“词典维护”、“退出”3项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
✧课设结束后,上交课程设计说明书和源程序。
课程设计说明书的内容参见提供的模板。
四、指导教师和学生签字
指导教师:
徐晗学生签名:
涂键圣
五、成绩
六、教师评语
目录
需求分析4
设计分析4
关键技术5
总结7
完整的源程序10
参考文献18
一.需求分析
二.设计分析
(1)基本原理:
使用Adodc控件和Adodb模型对数据库进行访问与修改,建立长须设计对access数据库进行读写修改,把信息显示在文本框、list等中
(2)总体设计:
(3)详细设计:
三.关键技术
1ADO与ADODB
ADO(ACTIVEXDATAOBJECTS)是应用层的数据访问接口。
ADODB是一个数据模型,是封装ADO的VB数据控件,使用的是microsoft.jet.oledb.4.0的数据库引擎
2建立与数据库的连接代码如下
Publicmpath$,mlink$
PubliccnnAsNewADODB.Connection'
定义一个ADODB连接
PublicrstAsADODB.Recordset'
定义Recordset对象
Publiccnn2AsNewADODB.Connection'
Publicrst2AsADODB.Recordset'
PublicSQL$
ADODB
Setcnn=NewADODB.Connection
Setrst=NewADODB.Recordset
rst.CursorType=adOpenKeyset'
rst.LockType=adLockOptimistic'
mpath=App.Path
'
获取程序所在的路径
IfRight(mpath,1)<
>
"
\"
Thenmpath=mpath+"
判断是否为子目录
mlink="
Provider=Microsoft.Jet.OLEDB.4.0;
"
'
指定提供者
mlink=mlink+"
DataSource="
+mpath+"
DIC\db2.mdb"
在数据库文件名前插入路径
cnn.ConnectionString=mlink
cnn.ConnectionTimeout=30
cnn.Open
3程序详解
程序运行,出现主窗体,如图1所示
图1
Form2:
PrivateSubCommand1_Click()
Form2.Hide
Form1.Show
EndSub
点击command1,进入系统
PrivateSubCommand2_Click()
End
点击command2,结束程序
主窗体
图2
Form1:
Form1.Hide
FormXT.Show
FormCX.Show
点击command1按钮,进入选题窗体,如图3
点击command2按键,进入查询窗体,如图4
图4
PrivateSubForm_Load()
Form2.Show
系统运行时自动载入图1所示的窗体
图3
Formxt:
SQL="
SELECT*FROM学生WHERE姓名='
&
StuName&
从学生表中查询学生信息,学生信息正如下图所示
OnErrorGoToERR1'
当代码出错后转到标签为err1的那一行
cnn.Open'
打开数据集的连接
rst.OpenSQL,cnn,adOpenForwardOnly,adLockReadOnly,adCmdUnknown
rst.MoveFirst'
把数据库指针移到第一条信息
Ifrst!
题目编号="
0"
Then'
判断该学生是否已经选题
判断是否选题的依据是数据库中的题目表中的“已选择”是0或者是1,如果是0,则该题目未被选定,如果“已选择”的值为1,说明该题目已经被选择,数据库中的题目表如图6所示
图6
rst.Close
cnn.Close
IfCheck1.ValueThen'
若进行随机选择,即复选框已经勾起来,如图7
图7
SQL="
SELECT*FROM题目WHERE已选择='
0'
AND等级='
Level&
构建SQL语句,对数据库的查询,修改,添加,删除都需要使用SQL语句
List2中列出相应等级的未被学生选择的题目
cnn.Open
rst.OpenSQL,cnn,adOpenForwardOnly,adLockReadOnly,adCmdUnknown'
调出你选择的学生的信息
rst.MoveFirst
XuanZ=rst!
编号
Conta=rst!
内容
UPDATE题目SET已选择='
1'
WHERE编号="
XuanZ'
将题目表中选定的题目变为已选状态
cnn.ExecuteSQL'
返回更新查询到结果集
UPDATE学生SET题目编号='
XuanZ&
WHERE姓名='
学生表中该学生添加选择的题号,更新数据库
cnn.ExecuteSQL
Fori=0ToList2.ListCount-1'
将选过的题目从表中删掉
IfList2.List(i)=ContaThenList2.RemoveItem(i):
ExitFor
Nexti
Else'
不进行随机选择
IfList2.ListIndex<
0ThenMsgBox"
请选择一个题目内容"
:
ExitSub'
如果没有在2表中选择题目,则不继续进行,如图8所示
图8
SELECT*FROM题目WHERE内容='
List2.List(List2.ListIndex)&
根据题目的内容,查出题目的编号
rst.OpenSQL,cnn,adOpenForwardOnly,adLockReadOnly,adCmdUnknown
UPDATE题目SET已选择='
学生表中该学生添加选择的题号
List2.RemoveItem(List2.ListIndex)
EndIf
Else
MsgBox"
该学生已选择题目!
如果该学生已经选择过题目,再次选择是会出现如图9的界面
图9
EndIf
ExitSub
ERR1:
MsgBox"
数据库出错,请检查程序"
cnn.Close
已清空所有选题记录"
如果单机command2按钮,系统会清空所有的学生选课信息,数据库同时回到初始状态,即题目表中的“已选择”复位变成0,学生表中的题目编号再次变为0
PrivateSubCommand3_Click()
FormXT.Hide
按command3,退出选课界面,回到主界面
系统运行时自动加载连接数据库
rst.CursorLocation=adUseClient'
返回游标引擎的位置,防止错位
mpath=App.Path'
tm.mdb"
List1.Clear'
清空list1的内容
向姓名表中增加所有姓名
SELECT*FROM学生"
rst.MoveFirst
DoWhileNotrst.EOF'
光标下移直到最后一行
List1.AddItemrst!
姓名
rst.MoveNext
Loop
rst.Close
PrivateSubForm_Unload(CancelAsInteger)
PrivateSubList1_Click()
StuName=List1.List(List1.ListIndex)
PrivateSubOption1_Click(IndexAsInteger)
OnErrorGoToERR2'
当代码出错后转到标签为err2的那一行
List2.Clear
SelectCaseIndex
选择选课的题目的等级
Case0
Level="
A"
SELECT*FROM题目WHERE等级='
A'
Case1
B'
B"
Case2
C'
C"
EndSelect
Ifrst!
已选择="
ThenList2.AddItemrst!
内容'
加载该等级题目,只显示未选择的题目
formcx:
以下进入查询窗体,如图4所示
DimTextTempAsString
DimTMBHAsInteger
DimNameTempAsString
TextTemp="
查询到的结果"
vbCrLf&
vbCrLf
NameTemp=Text1.Text
Text1.Text&
IfNot(rst.EOFAndrst.BOF)Then'
检查结果是否为空
反复赋值给texttemp这个变量,是为了出现如图10所示的结果
图10
TextTemp=TextTemp&
姓名:
rst!
姓名&
学号&
班级:
班级&
选择的题目:
TMBH=rst!
题目编号
IfTMBH=0Then
没有选择题目"
如果TMBH为0,说明该学生没有选择题目,则出现图11的窗口
图11
Else
SELECT*FROM题目WHERE编号="
TMBH
#"
TMBH&
内容&
题目等级:
等级
无记录"
Text2.Text=TextTemp
Command2为查询班级选课情况的按钮,使用的SQL查询语句跟用姓名查找大同小异,command3、4、5亦同。
NameTemp="
未选题目列表"
DoWhileNotrst.EOF'
编号&
vbTab&
Loop
Text2=TextTemp
已选题目列表"
PrivateSubCommand4_Click()
未选题学生"
TextTemp=TextTemp&
学号"
姓名"
SELECT*FROM学生WHERE题目编号='
PrivateSubCommand5_Click()
SELECT*FROM学生WHERE班级='
IfTMBH=0Then
cnn2.Open
rst2.OpenSQL,cnn2,adOpenForwardOnly,adLockReadOnly,adCmdUnknown
rst2!
等级&
cnn2.Close
PrivateSubCommand6_Click()
CommonDialog1.DefaultExt="
txt"
默认保存的数据类型为文本txt型
CommonDialo