2025年VB试题大题及答案_第1页
2025年VB试题大题及答案_第2页
2025年VB试题大题及答案_第3页
2025年VB试题大题及答案_第4页
2025年VB试题大题及答案_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2025年VB试题大题及答案一、编程题(30分)请设计一个VB应用程序,实现“学生社团招新信息管理”功能。具体要求如下:1.界面包含:4个文本框(分别命名为txtName、txtAge、txtMajor、txtPhone,对应姓名、年龄、专业、电话),2个标签(提示输入信息),1个列表框(命名为lstInfo),2个命令按钮(命名为cmdAdd、cmdStat,分别对应“添加信息”和“统计分析”)。2.功能说明:(1)点击“添加信息”按钮时,检查输入是否完整(姓名、年龄、专业、电话均不可为空),年龄需为18-25之间的整数,电话需为11位数字;若验证不通过,弹出消息框提示具体错误(如“年龄超出范围”);验证通过则将信息以“姓名:XXX年龄:XX专业:XXX电话:XXXXXXXXXXX”格式添加到列表框,并将输入框清空。(2)点击“统计分析”按钮时,统计列表框中所有学生的年龄平均值(保留2位小数)、各专业人数(如“计算机:5人”),并将结果以多行文本形式显示在消息框中。答案:界面设计步骤:在窗体中添加4个TextBox控件,Name属性分别设为txtName、txtAge、txtMajor、txtPhone;添加2个Label控件,Caption分别设为“请输入招新信息:”和“姓名年龄专业电话”;添加1个ListBox控件,Name设为lstInfo;添加2个CommandButton控件,Name设为cmdAdd、cmdStat,Caption分别为“添加信息”“统计分析”。代码实现:```vbPrivateSubcmdAdd_Click()DimstrNameAsString,strAgeAsString,strMajorAsString,strPhoneAsStringDimintAgeAsInteger'输入验证strName=Trim(txtName.Text)strAge=Trim(txtAge.Text)strMajor=Trim(txtMajor.Text)strPhone=Trim(txtPhone.Text)IfstrName=""ThenMsgBox"姓名不能为空!",vbExclamation,"输入错误"txtName.SetFocusExitSubEndIfIfstrAge=""ThenMsgBox"年龄不能为空!",vbExclamation,"输入错误"txtAge.SetFocusExitSubEndIfIfNotIsNumeric(strAge)ThenMsgBox"年龄必须为数字!",vbExclamation,"输入错误"txtAge.SetFocustxtAge.Text=""ExitSubEndIfintAge=CInt(strAge)IfintAge<18OrintAge>25ThenMsgBox"年龄需在18-25岁之间!",vbExclamation,"输入错误"txtAge.SetFocustxtAge.Text=""ExitSubEndIfIfstrMajor=""ThenMsgBox"专业不能为空!",vbExclamation,"输入错误"txtMajor.SetFocusExitSubEndIfIfstrPhone=""ThenMsgBox"电话不能为空!",vbExclamation,"输入错误"txtPhone.SetFocusExitSubEndIfIfLen(strPhone)<>11OrNotIsNumeric(strPhone)ThenMsgBox"电话需为11位数字!",vbExclamation,"输入错误"txtPhone.SetFocustxtPhone.Text=""ExitSubEndIf'添加到列表框lstInfo.AddItem"姓名:"&strName&"年龄:"&strAge&"专业:"&strMajor&"电话:"&strPhone'清空输入框txtName.Text=""txtAge.Text=""txtMajor.Text=""txtPhone.Text=""txtName.SetFocusEndSubPrivateSubcmdStat_Click()DimiAsInteger,totalAgeAsInteger,countAsIntegerDimavgAgeAsDoubleDimmajorDictAsObject'使用字典统计专业人数SetmajorDict=CreateObject("Scripting.Dictionary")'计算年龄总和和专业分布Fori=0TolstInfo.ListCount1DiminfoStrAsString,arrInfo()AsStringinfoStr=lstInfo.List(i)'提取年龄和专业信息arrInfo=Split(infoStr,"")DimagePartAsString,majorPartAsStringagePart=arrInfo(1)'格式为“年龄:XX”majorPart=arrInfo(2)'格式为“专业:XXX”DimintAgeAsIntegerintAge=CInt(Mid(agePart,InStr(agePart,":")+1))totalAge=totalAge+intAgecount=count+1DimmajorNameAsStringmajorName=Mid(majorPart,InStr(majorPart,":")+1)IfmajorDict.Exists(majorName)ThenmajorDict(majorName)=majorDict(majorName)+1ElsemajorDict.AddmajorName,1EndIfNexti'计算平均年龄Ifcount=0ThenMsgBox"无数据可统计!",vbInformation,"统计结果"ExitSubEndIfavgAge=totalAge/countavgAge=Format(avgAge,"0.00")'提供统计结果字符串DimstatStrAsStringstatStr="年龄平均值:"&avgAge&vbCrLf&"各专业人数:"&vbCrLfForEachkeyInmajorDict.KeysstatStr=statStr&key&":"&majorDict(key)&"人"&vbCrLfNextkeyMsgBoxstatStr,vbInformation,"统计结果"EndSub```二、文件操作题(25分)某班级需将期中考试数学成绩(保存在D盘“math_scores.txt”文件中,每行1个分数,如“92”“85”)进行统计,要求编写VB程序实现以下功能:1.读取文件中的所有分数,验证是否为0-100之间的整数(忽略无效数据);2.统计有效分数的个数、平均分(保留2位小数)、最高分、最低分;3.将统计结果写入D盘“math_stat.txt”文件,格式示例:有效分数个数:35平均分:87.65最高分:98最低分:62答案:代码实现:```vbPrivateSubForm_Load()'假设通过按钮触发,此处以按钮点击事件为例EndSubPrivateSubcmdProcess_Click()DimfilePathAsString,savePathAsStringfilePath="D:\math_scores.txt"savePath="D:\math_stat.txt"DimfileNoAsInteger,scoreAsStringDimvalidScores()AsInteger,countAsIntegerDimtotalAsDouble,avgAsDouble,maxScoreAsInteger,minScoreAsIntegerDimiAsInteger'读取文件并验证分数fileNo=FreeFileOnErrorGoToErrorHandler'处理文件不存在等异常OpenfilePathForInputAsfileNoDoWhileNotEOF(fileNo)InputfileNo,scoreIfIsNumeric(score)ThenDimintScoreAsIntegerintScore=CInt(score)IfintScore>=0AndintScore<=100Thencount=count+1ReDimPreservevalidScores(count1)validScores(count1)=intScoretotal=total+intScore'初始化或更新最高、最低分Ifcount=1ThenmaxScore=intScoreminScore=intScoreElseIfintScore>maxScoreThenmaxScore=intScoreIfintScore<minScoreThenminScore=intScoreEndIfEndIfEndIfLoopClosefileNo'统计结果Ifcount=0ThenMsgBox"无有效分数!",vbExclamation,"提示"ExitSubEndIfavg=total/countavg=Format(avg,"0.00")'写入统计结果OpensavePathForOutputAsfileNoPrintfileNo,"有效分数个数:"&countPrintfileNo,"平均分:"&avgPrintfileNo,"最高分:"&maxScorePrintfileNo,"最低分:"&minScoreClosefileNoMsgBox"统计完成,结果已保存至D:\math_stat.txt",vbInformation,"完成"ExitSubErrorHandler:IfErr.Number=53Then'文件未找到错误MsgBox"文件math_scores.txt不存在!",vbCritical,"错误"ElseMsgBox"发生错误:"&Err.Description,vbCritical,"错误"EndIfClosefileNo'确保关闭文件EndSub```三、数据库应用题(30分)使用VB连接Access数据库“school.mdb”,其中包含“学生表”(字段:学号(文本,主键)、姓名(文本)、性别(文本)、年龄(数字))和“成绩表”(字段:学号(文本,外键)、课程名(文本)、成绩(数字))。要求设计界面实现以下功能:1.显示所有学生的学号、姓名、性别、年龄,以及“大学英语”课程的成绩(若未选该课程则显示“未选”);2.提供“按性别筛选”功能:选择“男”或“女”后,仅显示对应性别的学生及成绩;3.使用ADO对象连接数据库,数据显示采用DataGrid控件(命名为dgStudent)。答案:界面设计步骤:添加DataGrid控件(需在“部件”中勾选“MicrosoftDataGridControl6.0”),Name设为dgStudent;添加2个OptionButton控件(Caption为“男”“女”),用于性别筛选;添加1个CommandButton(Name为cmdFilter,Caption为“筛选”)。代码实现(假设数据库路径为D:\school.mdb):```vbDimconnAsADODB.ConnectionDimrsAsADODB.RecordsetPrivateSubForm_Load()Setconn=NewADODB.Connectionconn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=D:\school.mdb;PersistSecurityInfo=False"conn.Open'初始加载所有学生及大学英语成绩LoadData""EndSubPrivateSubLoadData(ByValgenderFilterAsString)DimsqlAsStringsql="SELECTs.学号,s.姓名,s.性别,s.年龄,"&_"IIF(IsNull(c.成绩),'未选',c.成绩)AS英语成绩"&_"FROM学生表s"&_"LEFTJOIN(SELECT学号,成绩FROM成绩表WHERE课程名='大学英语')c"&_"ONs.学号=c.学号"IfgenderFilter<>""Thensql=sql&"WHEREs.性别='"&genderFilter&"'"EndIfSetrs=NewADODB.Recordsetrs.Opensql,conn,adOpenKeyset,adLockOptimisticSetdgStudent.DataSource=rsEndSubPrivateSubcmdFilter_Click()DimselectedGenderAsStringIfoptMale.ValueThen'假设男OptionButton的Name为optMaleselectedGender="男"ElseIfoptFemale.ValueThen'女OptionButton的Name为optFemaleselectedGender="女"ElseselectedGender=""EndIfLoadDataselectedGenderEndSubPrivateSubForm_Unload(CancelAsInteger)Ifrs.State=adStateOpenThenrs.CloseIfconn.State=adStateOpenThenconn.CloseSetrs=NothingSetconn=NothingEndSub```四、综合编程题(35分)设计一个“每日单词记忆”VB应用程序,功能要求如下:1.主界面包含:1个文本框(txtWord,输入单词),1个列表框(lstHistory,显示已记忆单词),1个计时器(Timer1,间隔10秒),2个命令按钮(cmdAdd:“添加单词”,cmdTest:“测试记忆”)。2.具体功能:(1)添加单词:输入单词后点击“添加”,若单词非空且未在列表框中存在,则添加到列表框,并提示“添加成功”;若已存在则提示“单词已存在”。(2)记忆测试:点击“测试”后,随机从列表框中选取1个单词,隐藏原界面,弹出测试窗体(frmTest),测试窗体包含:标签显示“请输入刚才看到的单词”,文本框(txtTest),按钮(cmdCheck:“检查”);用户输入后点击“检查”,若正确则提示“正确!”,错误则提示“错误,正确单词是:XXX”。(3)自动提醒:计时器每10秒触发一次,若列表框中单词数≥5,则弹出消息框提示“已记忆5个单词,该复习啦!”。答案:主窗体(Form1)代码:```vbPrivateSubcmdAdd_Click()DimwordAsStringword=Trim(txtWord.Text)Ifword=""ThenMsgBox"单词不能为空!",vbExclamation,"提示"ExitSubEndIf'检查是否已存在DimiAsIntegerFori=0TolstHistory.ListCount1IflstHistory.List(i)=wordThenMsgBox"单词已存在!",vbExclamation,"提示"txtWord.Text=""ExitSubEndIfNextilstHistory.AddItemwordtxtWord.Text=""MsgBox"添加成功!",vbInformation,"提示"EndSubPr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论