课程设计题目选择系统.docx
- 文档编号:3623551
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:39
- 大小:1.73MB
课程设计题目选择系统.docx
《课程设计题目选择系统.docx》由会员分享,可在线阅读,更多相关《课程设计题目选择系统.docx(39页珍藏版)》请在冰豆网上搜索。
课程设计题目选择系统
沈阳航空航天大学
课程设计
学号2012040601075
班级24060102
姓名涂键圣
指导教师徐晗
2013年9月22日
沈阳航空航天大学
课程设计任务书
学院:
机电工程学院专业:
机械设计方向班级:
24060102
学号:
2012040601075题目:
课程设计题目选择系统
一、课程设计时间
2013年9月16日~22日(第4周),共计20学时。
二、课程设计内容
Access数据库表中存储了A、B、C三类课程设计题目,其中A类最难,B类次之,C类最简单,如果学生选择了A类题目,最高可以得到优秀的成绩;如果选择了B类题目,最高可以得到中等成绩;如果选择的是C类题目,最高得及格成绩。
学生和题目信息自拟,学生人数不少于10人,各类题目不少于5个,系统的具体功能如下:
1.选题为每一个学生选择一道题目,每个学生只可以选择一道题目,每道题只能有一个学生选择,选择时既可以指定类型和题号选题,也可以指定类型后随机选题;
2.查询和改选可以查询所有未选的题目和已选的题目;可以查询某班级所有学生的选题情况,并将此信息保存到文本文件中;可以查询某名学生的选题情况,可以改选。
三、课程设计要求
程序质量:
✧贯彻事件驱动的程序设计思想。
✧用户界面友好,功能明确,操作方便;可以增加其它功能或修饰。
✧用户界面中的菜单至少应包括“查阅单词”、“词典维护”、“退出”3项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
✧课设结束后,上交课程设计说明书和源程序。
课程设计说明书的内容参见提供的模板。
四、指导教师和学生签字
指导教师:
徐晗学生签名:
涂键圣
五、成绩
六、教师评语
一.需求分析
Access数据库表中存储了A、B、C三类课程设计题目,其中A类最难,B类次之,C类最简单,如果学生选择了A类题目,最高可以得到优秀的成绩;如果选择了B类题目,最高可以得到中等成绩;如果选择的是C类题目,最高得及格成绩。
学生和题目信息自拟,学生人数不少于10人,各类题目不少于5个,系统的具体功能如下:
1.选题为每一个学生选择一道题目,每个学生只可以选择一道题目,每道题只能有一个学生选择,选择时既可以指定类型和题号选题,也可以指定类型后随机选题;
2.查询和改选可以查询所有未选的题目和已选的题目;可以查询某班级所有学生的选题情况,并将此信息保存到文本文件中;可以查询某名学生的选题情况,可以改选。
二.设计分析
(1)基本原理:
使用Adodc控件和Adodb模型对数据库进行访问与修改,建立长须设计对access数据库进行读写修改,把信息显示在文本框、list等中
(2)总体设计:
(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'定义一个ADODB连接
Publicrst2AsADODB.Recordset'定义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
Form2:
PrivateSubCommand1_Click()
Form2.Hide
Form1.Show
EndSub
点击command1,进入系统
PrivateSubCommand2_Click()
End
EndSub
点击command2,结束程序
主窗体
图2
Form1:
PrivateSubCommand1_Click()
Form1.Hide
FormXT.Show
EndSub
PrivateSubCommand2_Click()
Form1.Hide
FormCX.Show
EndSub
点击command1按钮,进入选题窗体,如图3
点击command2按键,进入查询窗体,如图4
图4
PrivateSubForm_Load()
Form2.Show
Form1.Hide
EndSub
系统运行时自动载入图1所示的窗体
图3
Formxt:
PrivateSubCommand1_Click()
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!
内容
rst.Close
SQL="UPDATE题目SET已选择='1'WHERE编号="&XuanZ'将题目表中选定的题目变为已选状态
cnn.ExecuteSQL'返回更新查询到结果集
SQL="UPDATE学生SET题目编号='"&XuanZ&"'WHERE姓名='"&StuName&"'"'学生表中该学生添加选择的题号,更新数据库
cnn.ExecuteSQL
cnn.Close
Fori=0ToList2.ListCount-1'将选过的题目从表中删掉
IfList2.List(i)=ContaThenList2.RemoveItem(i):
ExitFor
Nexti
Else'不进行随机选择
IfList2.ListIndex<0ThenMsgBox"请选择一个题目内容":
ExitSub'如果没有在2表中选择题目,则不继续进行,如图8所示
图8
SQL="SELECT*FROM题目WHERE内容='"&List2.List(List2.ListIndex)&"'"'根据题目的内容,查出题目的编号
cnn.Open
rst.OpenSQL,cnn,adOpenForwardOnly,adLockReadOnly,adCmdUnknown
rst.MoveFirst
XuanZ=rst!
编号
rst.Close
SQL="UPDATE题目SET已选择='1'WHERE编号="&XuanZ'将题目表中选定的题目变为已选状态
cnn.ExecuteSQL
SQL="UPDATE学生SET题目编号='"&XuanZ&"'WHERE姓名='"&StuName&"'"'学生表中该学生添加选择的题号
cnn.ExecuteSQL
cnn.Close
List2.RemoveItem(List2.ListIndex)
EndIf
Else
rst.Close
cnn.Close
MsgBox"该学生已选择题目!
"
如果该学生已经选择过题目,再次选择是会出现如图9的界面
图9
EndIf
ExitSub
ERR1:
MsgBox"数据库出错,请检查程序":
cnn.Close
EndSub
PrivateSubCommand2_Click()
cnn.Open
SQL="UPDATE题目SET已选择='0'"
cnn.ExecuteSQL
SQL="UPDATE学生SET题目编号='0'"
cnn.ExecuteSQL
cnn.Close
MsgBox"已清空所有选题记录"
EndSub
如果单机command2按钮,系统会清空所有的学生选课信息,数据库同时回到初始状态,即题目表中的“已选择”复位变成0,学生表中的题目编号再次变为0
PrivateSubCommand3_Click()
FormXT.Hide
Form1.Show
EndSub
按command3,退出选课界面,回到主界面
PrivateSubForm_Load()
系统运行时自动加载连接数据库
Setcnn=NewADODB.Connection
Setrst=NewADODB.Recordset
rst.CursorLocation=adUseClient'返回游标引擎的位置,防止错位
mpath=App.Path'获取程序所在的路径
IfRight(mpath,1)<>"\"Thenmpath=mpath+"\"'判断是否为子目录
mlink="Provider=Microsoft.Jet.OLEDB.4.0;"'指定提供者
mlink=mlink+"DataSource="+mpath+"tm.mdb"'在数据库文件名前插入路径
cnn.ConnectionString=mlink
cnn.ConnectionTimeout=30
List1.Clear'清空list1的内容
'向姓名表中增加所有姓名
SQL="SELECT*FROM学生"
cnn.Open
rst.OpenSQL,cnn,adOpenForwardOnly,adLockReadOnly,adCmdUnknown
rst.MoveFirst
DoWhileNotrst.EOF'光标下移直到最后一行
List1.AddItemrst!
姓名
rst.MoveNext
Loop
rst.Close
cnn.Close
EndSub
PrivateSubForm_Unload(CancelAsInteger)
Form1.Show
EndSub
PrivateSubList1_Click()
StuName=List1.List(List1.ListIndex)
EndSub
PrivateSubOption1_Click(IndexAsInteger)
OnErrorGoToERR2'当代码出错后转到标签为err2的那一行
List2.Clear
SelectCaseIndex
选择选课的题目的等级
Case0
Level="A"
SQL="SELECT*FROM题目WHERE等级='A'"
Case1
SQL="SELECT*FROM题目WHERE等级='B'"
Level="B"
Case2
SQL="SELECT*FROM题目WHERE等级='C'"
Level="C"
EndSelect
cnn.Open
rst.OpenSQL,cnn,adOpenForwardOnly,adLockReadOnly,adCmdUnknown
rst.MoveFirst
DoWhileNotrst.EOF'光标下移直到最后一行
Ifrst!
已选择="0"ThenList2.AddItemrst!
内容'加载该等级题目,只显示未选择的题目
rst.MoveNext
Loop
rst.Close
cnn.Close
formcx:
以下进入查询窗体,如图4所示
DimTextTempAsString
DimTMBHAsInteger
DimNameTempAsString
PrivateSubCommand1_Click()
TextTemp="查询到的结果"&vbCrLf&vbCrLf
NameTemp=Text1.Text
SQL="SELECT*FROM学生WHERE姓名='"&Text1.Text&"'"
cnn.Open
rst.OpenSQL,cnn,adOpenForwardOnly,adLockReadOnly,adCmdUnknown
IfNot(rst.EOFAndrst.BOF)Then'检查结果是否为空
反复赋值给texttemp这个变量,是为了出现如图10所示的结果
图10
TextTemp=TextTemp&"姓名:
"&rst!
姓名&vbCrLf
TextTemp=TextTemp&"学号:
"&rst!
学号&vbCrLf
TextTemp=TextTemp&"班级:
"&rst!
班级&vbCrLf
TextTemp=TextTemp&"选择的题目:
"&vbCrLf
TMBH=rst!
题目编号
IfTMBH=0Then
TextTemp=TextTemp&"没有选择题目"
如果TMBH为0,说明该学生没有选择题目,则出现图11的窗口
图11
Else
rst.Close
SQL="SELECT*FROM题目WHERE编号="&TMBH
rst.OpenSQL,cnn,adOpenForwardOnly,adLockReadOnly,adCmdUnknown
TextTemp=TextTemp&"#"&TMBH&rst!
内容&vbCrLf
TextTemp=TextTemp&"题目等级:
"&rst!
等级
EndIf
Else
TextTemp=TextTemp&"无记录"
EndIf
rst.Close
cnn.Close
Text2.Text=TextTemp
EndSub
PrivateSubCommand2_Click()
Command2为查询班级选课情况的按钮,使用的SQL查询语句跟用姓名查找大同小异,command3、4、5亦同。
NameTemp=""
TextTemp="未选题目列表"&vbCrLf&vbCrLf
SQL="SELECT*FROM题目WHERE已选择='0'"
cnn.Open
rst.OpenSQL,cnn,adOpenForwardOnly,adLockReadOnly,adCmdUnknown
IfNot(rst.EOFAndrst.BOF)Then'检查结果是否为空
rst.MoveFirst
DoWhileNotrst.EOF'光标下移直到最后一行
TextTemp=TextTemp&"#"&rst!
编号&vbTab&rst!
内容&vbCrLf
rst.MoveNext
Loop
Else
TextTemp=TextTemp&"无记录"
EndIf
rst.Close
cnn.Close
Text2=TextTemp
EndSub
PrivateSubCommand3_Click()
NameTemp=""
TextTemp="已选题目列表"&vbCrLf&vbCrLf
SQL="SELECT*FROM题目WHERE已选择='1'"
cnn.Open
rst.OpenSQL,cnn,adOpenForwardOnly,adLockReadOnly,adCmdUnknown
IfNot(rst.EOFAndrst.BOF)Then'检查结果是否为空
rst.MoveFirst
DoWhileNotrst.EOF'光标下移直到最后一行
TextTemp=TextTemp&"#"&rst!
编号&vbTab&rst!
内容&vbCrLf
rst.MoveNext
Loop
Else
TextTemp=TextTemp&"无记录"
EndIf
rst.Close
cnn.Close
Text2=TextTemp
EndSub
PrivateSubCommand4_Click()
NameTemp=""
TextTemp="未选题学生"&vbCrLf&vbCrLf
TextTemp=TextTemp&"学号"&vbTab&vbTab&vbTab&"姓名"&vbCrLf&vbCrLf
SQL="SELECT*FROM学生WHERE题目编号='0'"
cnn.Open
rst.OpenSQL,cnn,adOpenForwardOnly,adLockReadOnly,adCmdUnknown
IfNot(rst.EOFAndrst.BOF)Then'检查结果是否为空
rst.MoveFirst
DoWhileNotrst.EOF'光标下移直到最后一行
TextTemp=TextTemp&rst!
学号&vbTab&rst!
姓名&vbCrLf
rst.MoveNext
Loop
Else
TextTemp=TextTemp&"无记录"
EndIf
rst.Close
cnn.Close
Text2=TextTemp
EndSub
PrivateSubCommand5_Click()
TextTemp="查询到的结果"&vbCrLf&vbCrLf
NameTemp=""
SQL="SELECT*FROM学生WHERE班级='"&Text1.Text&"'"
cnn.Open
rst.OpenSQL,cnn,adOpenForwardOnly,adLockReadOnly,adCmdUnknown
IfNot(rst.EOFAndrst.BOF)Then'检查结果是否为空
rst.MoveFirst
DoWhileNotrst.EOF'光标下移直到最后一行
TextTemp=TextTemp&"姓名:
"&rst!
姓名&vbCrLf
TextTemp=TextTemp&"学号:
"&rst!
学号&vbCrLf
TextTemp=TextTemp&"班级:
"&rst!
班级&vbCrLf
TextTemp=TextTemp&"选择的题目:
"&vbCrLf
TMBH=rst!
题目编号
IfTMBH=0Then
TextTemp=TextTemp&"没有选择题目"&vbCrLf&vbCrLf
Else
cnn2.Open
SQL="SELECT*FROM题目WHERE编号="&TMBH
rst2.OpenSQL,cnn2,adOpenForwardOnly,adLockReadOnly,adCmdUnknown
TextTemp=TextTemp&"#"&TMBH&rst2!
内容&vbCrLf
TextTemp=TextTemp&"题目等级:
"&rst2!
等级&vbCrLf&vbCrLf
cnn2.Close
EndIf
rst.MoveNext
Loop
Else
TextTemp=TextTemp&"无记录"
EndIf
rst.Close
cnn.Close
Text2.Text=TextTemp
EndSub
PrivateSubCommand6_Click()
CommonDialog1.DefaultExt="txt"'默认保存的数据类型为文本txt型
CommonDialog1.Action=2'使用通用对话框2,打开另存为
IfCommonDial
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 题目 选择 系统