VB成绩管理系统报告及代码
VB课程设计-学生成绩处理系统

长江大学Yangtze universityVB课程设计实习报告专业班级﹕储运11001学生学号﹕201007078学生姓名﹕彭壮班级序号﹕16指导老师﹕冯翠丽完成时间﹕2011-12—22一.设计题目学生成绩管理系统二.设计思路从文本中读取文件数据,利用VB的顺序结构,选择结构,循环结构编写程序代码,最终将各代码写入界面设计中的各菜单下.三.程序实现的目标本程序将实现从文本中读取数据,赋值数据,运算数据,实现对学生的加权平均值,名次,全班每门课的分数段,不及格同学名单,优等生名单等运算,并写入文件。
四.程序设计框图五。
运行结果原始成绩课程学分原始成绩和原始课程学分文件读取原始课程文件加权平均分成绩排名每门课程的班级平均分加权平均分分布每门课程及分布成绩条优等生名单不及格学生名单成绩查询系统按姓名查找示例﹕按学号查找示例﹕按名次查找示例﹕六.源程序模块代码:Type xscjbxh As Stringxm As Stringcj(1 To5)AsIntegeraver As SinglemcAs IntegerEndTypeType kechen编号AsInteger课程名As String学分As SingleEnd TypePublic stu() As xscjbPublic ke() AskechenPublicN%, M%,Zxf%Public str As String窗体代码:①Form1:Public Function space1(ByVal sssAs String)Dimx%x =InStr(sss, "")DoWhilex> 0sss=Replace(sss,”", ”")x = InStr(sss," ”)Loopspace1 = sssEndFunctionPrivate Sub ajqfspm_Click()Dim t!, k As SingleForm1.ClsForm1.FontSize= 12Form1。
vb教程编程实例详解

vb教程编程实例详解VB教程编程实例详解VB(Visual Basic)是一种面向对象的编程语言,它可以用于开发Windows应用程序。
在这里,我们将详细解释一些VB 编程实例,以帮助初学者更好地理解和掌握这门语言。
编程实例1:计算器首先,让我们创建一个计算器的VB程序。
我们将使用VB的窗体和按钮来实现这个功能。
首先,我们需要在窗体上添加一些按钮,如"1"、"2"、"+"、"="等。
然后,我们需要用一个文本框来显示计算结果。
在窗体上双击"+"按钮并添加以下代码:```Private Sub ButtonPlus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonPlus.ClickDim num1 As IntegerDim num2 As IntegerDim result As Integernum1 = Integer.Parse(TextBoxNum1.Text)num2 = Integer.Parse(TextBoxNum2.Text)result = num1 + num2TextBoxResult.Text = result.ToString()End Sub```在这个代码中,我们首先定义了三个变量:num1、num2和result,用于存储计算结果。
然后,我们使用Integer.Parse方法将文本框中输入的文本转换为整数类型,并将其赋值给num1和num2。
接下来,我们将num1和num2相加,将结果赋值给result,并使用result.ToString()方法将结果转换为字符串类型并显示在结果文本框中。
编程实例2:学生成绩管理系统接下来,让我们创建一个学生成绩管理系统的VB程序。
巧用ExcelVBA统计学生成绩

巧用ExcelVBA统计学生成绩说明:这是本人刚开始学VBA的时候为学校做的学生成绩统计模板,在末用VBA以前,每次学校考试的成绩统计都是用公式重复操作,非常麻烦,耗时长而且很容易出错,用VBA程序做的成绩统计不仅快而且非常准确,现在把它公布出来,与大家分享。
内容包括计算总分、统计三率、统计语数外三科总和、按年级及班级排名次、生成年级报表、排考场等等。
Option ExplicitSub 成绩统计()'**************************************************变量声明部分**************************************************Dim i As Integer, j As Integer, k As Integer '定义循环变量Dim MFBZ As Integer, ZF As Integer, SZ As Integer '满分标准、总分变量、三总变量Dim Ddbj As Integer, MC As Integer, Dkf As Integer '断点标记、年级名次、单科分总和Dim PJF, JGL, LHL, YXL '三率变量Dim QK As Integer, JGRS As Integer, LHRS As Integer, YXRS As Integer '缺考、及格、良好、优秀人数Dim BJS As Integer, BJRS As Integer '班级数、班级人数Dim YBendrow As Integer, TJBendrow As Integer, BBendrow As Integer '各工作表最大行数Dim endcol As Integer, Shtcount As Integer '各工作表最大列数及工作表总数Dim YB As String, TJB As String, BB As String, S As Variant '定义工作表名变量Dim StateTime As Single, EndTime As Single '程序开始、结束时间Dim M As String '考试次数'************************************************************** *********************************************On Error Resume Next '错误处理Application.ScreenUpdating = False '关闭屏幕刷新'M = InputBox("这是本学期第几次考试:")YB = InputBox("请输入您要进行统计的工作表名:") '取得所要操作的工作表名If YB = "" ThenExit SubEnd IfShtcount = ActiveWorkbook.Sheets.Count '当前工作薄中的工作表总数Sheets(YB).Select '选定工作表TJB = YB & "统计"BB = YB & "报表"StateTime = Timer '开始时间'*****************删除旧工作表*****************Application.DisplayAlerts = False '屏蔽删除对话框For Each S In Sheets '删除旧表,准备统计If = TJB Or = BB ThenS.DeleteEnd IfNext SApplication.DisplayAlerts = True '打开对话框显示YBendrow = ActiveSheet.Range("c65536").End(xlUp).Row '当前工作表最大行数Range(Cells(3, 15), Cells(YBendrow, 19)).ClearContents '删除以前统计结果,为新的统计做准备'*****************计算总分*****************For i = 3 To YBendrow '行循环ZF = 0For j = 6 To 14 '列循环If Cells(i, j).Value <> "" And Cells(i, j).Value <> -1 ThenZF = ZF + Cells(i, j).ValueEnd IfNext jCells(i, 15).Value = ZFNext i'*****************计算三总*****************For i = 3 To YBendrowSZ = 0For j = 7 To 9If Not Cells(i, j) = "" And Not Cells(i, j) = -1 ThenSZ = SZ + Cells(i, j)End IfNext jCells(i, 18) = SZNext i'*****************排年级名次*****************For i = 3 To YBendrowMC = Application.WorksheetFunction.Rank(Cells(i, 15), _Range(Cells(3, 15), Cells(YBendrow, 15)), 0) '调用工作表函数计算当前总分在总分列的位次Cells(i, 16).Value = MC '将位次填入相应的单元格Next i'*****************排班级名次*****************Range("A2").CurrentRegion.Select '选定排序区域Selection.Sort Key1:=Range("B3"), Order1:=xlAscending, Key2:=Range _("O3"), Order2:=xlDescending, Header:=xlGuess,OrderCustom:=1, MatchCase _:=False, Orientation:=xlT opToBottom, SortMethod:=xlPinYin, DataOption1:= _xlSortNormal,DataOption2:=xlSortNormal '按班级升序和总分降序自动排序BJS = Application.WorksheetFunction.Max(Range(Cells(3, 2), Cells(YBendrow, 2))) '计算班级数For i = 3 To YBendrow '开始循环If Cells(i, 2).Value <> Cells(i - 1, 2) Then '设置转换班级时的标记点Ddbj = Cells(i - 1, 2).Row '当班级改变时,定义一个行变量(标记点)End IfIf Cells(i, 2) = Cells(i - 1, 2) ThenIf Cells(i, 15) <> Cells(i - 1, 15) ThenCells(i, 17) = i - Ddbj '行号减标记点即为名次ElseCells(i, 17) = Cells(i - 1, 17) '如果当前总分等于上一个总分,则名次相同End IfElseCells(i, 17) = 1 '各班第一个人的名次为1End IfNext i'*****************排三总名次*****************For i = 3 To YBendrow '开始循环MC = Application.WorksheetFunction.Rank(Cells(i, 18), Range(Cells(3, 18), Cells(YBendrow, 18)), 0) '调用工作表函数Cells(i, 19).Value = MCNext i'**********************************统计三率**********************************Sheets.Add after:=Worksheets(YB) = TJBWorksheets(TJB).Select'设计表头Cells(2, 1) = "班级"Cells(2, 2) = "项目"Cells(2, 3) = "政治"Cells(2, 4) = "语文"Cells(2, 5) = "数学"Cells(2, 6) = "英语"Cells(2, 7) = "物理"Cells(2, 8) = "化学"Cells(2, 9) = "生物"Cells(2, 10) = "历史"Cells(2, 11) = "地理"Range("a1:k1").MergeRange("a1").FormulaR1C1 = YB & "成绩(三率)统计表"Range("A1").Font.Size = 22endcol = Range("A2").End(xlToRight).ColumnFor j = 1 To BJS '行循环Cells(j + 2, 1) = jCells(j + 2, 2) = "平均分"Cells(j + BJS + 2, 1) = jCells(j + BJS + 2, 2) = "及格率(%)"Cells(j + BJS * 2 + 2, 1) = jCells(j + BJS * 2 + 2, 2) = "良好率(%)"Cells(j + BJS * 3 + 2, 1) = jCells(j + BJS * 3 + 2, 2) = "优秀率(%)"For k = 3 To endcol '列循环If k = 3 Then '判断总分MFBZ = 100ElseIf k < 7 ThenMFBZ = 150ElseMFBZ = 100End IfWorksheets(YB).Select '对源表进行统计QK = 0 '设置初始值BJRS = 0Dkf = 0JGRS = 0LHRS = 0YXRS = 0For i = 3 To YBendrow '行循环If Cells(i, 2) = j ThenBJRS = BJRS + 1If Cells(i, k + 3) = -1 Then '统计缺考人数QK = QK + 1ElseDkf = Dkf + Cells(i, k + 3) '计算班级单科总分End IfIf Cells(i, k + 3) >= MFBZ * 0.6 Then '及格人数统计JGRS = JGRS + 1End IfIf Cells(i, k + 3) >= MFBZ * 0.7 Then '良好人数统计LHRS = LHRS + 1End IfIf Cells(i, k + 3) >= MFBZ * 0.85 Then '优秀人数统计YXRS = YXRS + 1End IfEnd IfNext iIf BJRS = 0 Or Dkf = 0 Then '筛选空班级PJF = ""JGL = ""LHL = ""YXL = ""ElsePJF = Dkf / (BJRS - QK) '计算三率JGL = JGRS / (BJRS - QK) * 100LHL = LHRS / (BJRS - QK) * 100YXL = YXRS / (BJRS - QK) * 100End IfWorksheets(TJB).Select '填入目标表相应位置If BJRS = 0 Or Dkf = 0 ThenCells(j + 2, k) = ""Cells(j + BJS + 2, k) = ""Cells(j + BJS * 2 + 2, k) = ""Cells(j + BJS * 3 + 2, k) = ""ElseCells(j + 2, k) = PJFCells(j + 2, k).NumberFormatLocal = "0.00" '设置结果显示格式(保留两位小数)Cells(j + BJS + 2, k) = JGLCells(j + BJS + 2, k).NumberFormatLocal = "0.00"Cells(j + BJS * 2 + 2, k) = LHLCells(j + BJS * 2 + 2, k).NumberFormatLocal = "0.00"Cells(j + BJS * 3 + 2, k) = YXLCells(j + BJS * 3 + 2, k).NumberFormatLocal = "0.00"End IfNext kNext j'删除空班级行Worksheets(TJB).SelectTJBendrow = Range("A65536").End(xlUp).RowFor i = TJBendrow To 3 Step -1If Cells(i, 4).Value = "" ThenCells(i, 4).EntireRow.DeleteEnd IfNext i'设置“统计”表的格式Range("A3").SelectActiveWindow.FreezePanes = True '冻结窗格Cells.HorizontalAlignment = xlCenter '居中对齐Columns("A:A").ColumnWidth = 3.5 '列宽Columns("B:B").ColumnWidth = 8.38 '列宽Columns("C:E").ColumnWidth = 6.88 '列宽Columns("F:K").ColumnWidth = 5.63 '列宽'选中全部单元格,将单元格内部图案改为白色Cells.SelectWith Selection.Interior.ColorIndex = 2.Pattern = xlSolid.PatternColorIndex = xlAutomaticEnd With'设置数据区域外边框为粗线,内部为细线TJBendrow = Range("a65536").End(xlUp).RowRange(Cells(2, 1), Cells(TJBendrow, endcol)).SelectCall 设置边框 '调用“设置边框”子过程Cells(1, 1).Select'********************生成年级报表*********************Sheets.Add after:=Worksheets(TJB) = BBWorksheets(YB).SelectRange("a2").CurrentRegion.CopyWorksheets(BB).SelectRange("a2").PasteSpecialColumns("d:e").Delete shift:=xlT oLeftColumns("a:a").Delete shift:=xlT oLeftBBendrow = Range("a65536").End(xlUp).Row + 1Worksheets(TJB).Selectendcol = Cells(2, 256).End(xlToLeft).ColumnTJBendrow = Cells(2, 1).End(xlDown).RowRange(Cells(3, 1), Cells(TJBendrow, endcol)).Copy Worksheets(BB).Cells(BBendrow, 1) '将统计表中的数据拷到报表中Worksheets(BB).SelectRange("A3").SelectActiveWindow.FreezePanes = True '冻结窗格Cells.HorizontalAlignment = xlCenter '居中对齐Columns("A:A").ColumnWidth = 3.5 '设置列宽Columns("B:B").ColumnWidth = 8.38Columns("C:K").ColumnWidth = 6.88Columns("L:L").ColumnWidth = 3.5Columns("M:N").ColumnWidth = 4.63Columns("O:O").ColumnWidth = 3.5Columns("P:P").ColumnWidth = 4.88Cells.Select '选中全部单元格,将单元格内部图案改为白色With Selection.Interior.ColorIndex = 2.Pattern = xlSolid '设置内部图案.PatternColorIndex = xlAutomatic '内部颜色设为自动End WithBBendrow = Range("A65536").End(xlUp).Rowendcol = Range("IV2").End(xlToLeft).ColumnRange(Cells(2, 1), Cells(BBendrow, endcol)).SelectSelection.Sort Key1:=Cells(3, 13), Order1:=xlAscending, Header:=xlGuess, _MatchCase:=False '对报表按总名次升序排列Range("A1:P1").Merge '合并单元格Range("A1").Font.Size = 22Range("A1").NumberFormatLocal = Left(YB, 2) & "##" & "班期末调研考试成绩报表"ActiveSheet.Spinners.Add(2.25, 1.5, 18.75, 24).Select '添加微调项,控制表头显示格式With Selection.Value = 0.Min = 0.Max = 10.SmallChange = 1.LinkedCell = "$A$1".Display3DShading = True.Placement = xlMoveAndSize.PrintObject = FalseEnd WithBBendrow = Range("a65536").End(xlUp).Rowendcol = Range("IV2").End(xlToLeft).ColumnRange(Cells(2, 1), Cells(BBendrow, endcol)).SelectCall 设置边框 '调用“设置边框”子过程For k = 11 To 3 Step -1 '删除空列If Cells(3, k) = "" ThenCells(3, k).EntireColumn.DeleteEnd IfNext k'************************************************************** *********************************************'恢复统计前顺序Sheets(YB).SelectRange("a2").CurrentRegion.SelectSelection.Sort Key1:=Range("D3"), Order1:=xlAscending, Key2:=Range _("E3"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase _:=False, Orientation:=xlT opToBottom, SortMethod:=xlPinYin, DataOption1:= _xlSortNormal, DataOption2:=xlSortNormal '按考场升序和座号升序排序Cells(1, 1).SelectEndTime = TimerMsgBox "运行程序共用时:" & EndTime - StateTime & "秒"Application.ScreenUpdating = TrueEnd SubSub 编排考场()Dim i As Integer, j As Integer, k As Integer, l As IntegerDim M As StringDim endrow1 As Integer, endrow2 As IntegerSheets("考场编排").Selectendrow2 = Range("b65536").End(xlUp).Rowk = Application.WorksheetFunction.Sum(Range(Cells(2, 2), Cells(endrow2, 2)))M = InputBox("请输入您准备编排考场的工作表名:")If M = "" ThenExit SubElseSheets(M).SelectEnd IfRange("A2").CurrentRegion.Select '选定排序区域Selection.Sort Key1:=Range("O3"), Order1:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase _:=False, Orientation:=xlT opToBottom, SortMethod:=xlPinYin, DataOption1:= _xlSortNormal,DataOption2:=xlSortNormal '按总分降序自动排序endrow1 = Range("c3").End(xlDown).Rowl = Application.WorksheetFunction.CountA(Range(Cells(3, 3), Cells(endrow1, 3)))If l <> k ThenMsgBox "您的考场编排工作表未准备好!" & Chr(13) & Chr(10) & "请编排好后再运行此程序!"Exit SubEnd IfRange(Cells(3, 4), Cells(endrow1, 5)).ClearContentsFor i = 1 To endrow2 - 1For j = 1 To Sheets("考场编排").Cells(i + 1, 2).Value endrow1 = Range("e65536").End(xlUp).Row Cells(endrow1 + 1, 4) = iCells(endrow1 + 1, 5) = jNext jNext iEnd SubSub 设置边框() '子过程With Selection.Borders(xlEdgeLeft) '设置边框.LineStyle = xlContinuous.Weight = xlThick.ColorIndex = 3End WithWith Selection.Borders(xlEdgeT op).LineStyle = xlContinuous.Weight = xlThick.ColorIndex = 3End WithWith Selection.Borders(xlEdgeBottom).LineStyle = xlContinuous.Weight = xlThick.ColorIndex = 3End WithWith Selection.Borders(xlEdgeRight).LineStyle = xlContinuous.Weight = xlThick.ColorIndex = 3End WithWith Selection.Borders(xlInsideVertical).LineStyle = xlContinuous.Weight = xlThin.ColorIndex = 3End WithWith Selection.Borders(xlInsideHorizontal).LineStyle = xlContinuous.Weight = xlThin.ColorIndex = 3End WithCells.Select '选中全部单元格,将单元格内部图案改为白色With Selection.Interior.ColorIndex = 2'.Pattern = xlSolid '设置内部图案'.PatternColorIndex = xlAutomatic '内部颜色设为自动End WithEnd SubSub 删除工作表()Dim i As WorksheetApplication.ScreenUpdating = FalseApplication.DisplayAlerts = FalseFor Each i In SheetsIf <> "高一" ThenIf <> "高二理科" ThenIf <> "高二文科" ThenIf <> "考场编排" ThenIf <> "总分分布统计表" Theni.DeleteEnd IfEnd IfEnd IfEnd IfEnd IfNext iApplication.DisplayAlerts = TrueApplication.ScreenUpdating = TrueEnd Sub想开源文件的朋友请告诉我,我可以发给你。
基于VB的学生成绩管理系统设计

S LSre 在数据挖掘和分析 服务领域 的应用。 Q e r v
V B使用 了可 以简单建立应用程序 的 G I U 系统 ,但是又可 以开发相 当复杂 的程序 。V B的程序是一种基 于窗体 的可视化 组件 安排 的联合 ,并且 增加代 码来 指定 组建 的属性 和方 法 。 因为 默认的属性 和方法 已经 有一部分 定义在 了组件 内 ,所 以 程序 员不用写 多少 代码就可 以完成一个 简单 的程序 。窗体控 件 的增 加和改 变可以用拖放 技术实现 。一个排 列满控 件 的工
Ab t a t h s p p rd v lp t d n c iv me tma a e n y t m,t c i v h t d n n g me ts se t , sr c :T i a e e e o s a su e ta h e e n n g me t s s e o a h e e t e su e tma a e n y t ma i c sa d r iai n a d a t mai n. sma n f n t n i e u e o o ue sfrsu e t c iv me t n g me t t n a dz t n uo t o o I i c i st s fc mp t r t d n h e e n t u o h o a ma a e n . Ke r s t d n c iv me t; n o main ma a e n S se d sg y wo d :S u e ta h e e n If r t n g me t; y t m e in o
种 面向对象 的开发工具 ,尤 其是数据 窗 口这一 能方便 而简 洁 操纵 数据库 的智能化对象 ,首先在短 时间 内建 立 系统 应用原
VB学生成绩查询统计系统实验报告

学生成绩查询系统一、实习任务 (2)二、系统分析 (3)三、系统设计 (4)四、调试、排错、测试、试运行过程 (7)五、源程序完整或主要代码 (10)六、总结与体会 (17)七、参考文献 (18)一、实习任务1实习任务介绍:熟悉软件工程学的基本思想进行软件开发的原则和方法;结构化分析方法和步骤;结构化编程方法;面向对象的思想和程序设计方法。
按照软件开发的一般方法和步骤动手设计一个《学生成绩查询统计系统》。
2基本要求:①登录界面:密码最多尝试3次,连续3次均输入错误系统自动退出。
②具有录入成绩、添加记录、删除记录、修改记录功能。
③具有成绩查询功能,可以按照学号、课程号、课程名、分数段进行查询。
为便于查询,所有的学号和课程号可考虑以下拉列表的形式给出。
④具有全部成绩浏览功能,且能与数据库表最新数据同步。
⑤具有统计功能,能以直方图、饼图、折线图、散点图、立体直方图直观表示各成绩段的分布情况。
⑥具有打印学生成绩报表的功能。
⑦具有菜单和工具条的双重操作功能。
3 实习目的:掌握常用控件的使用,学会使用通用对话框控件进行编程,掌握创建多重窗体程序的有关技术,了解鼠标和键盘事件及事件过程的编写,综合应用了所学知识,加深对VB的理解。
4 选题的背景及意义:VB是Visual Basic的简称,是由美国微软公司于1991年开发的一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发 Windows 环境下的各类应用程序。
它简单易学、效率高,且功能强大可以与 Windows 专业开发工具SDK相媲美。
在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的广泛应用程序接口(API)函数,动态链接库(DLL)、对象的链接与嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发Windows环境下功能强大、图形界面丰富的应用软件系统。
vb学生成绩管理系统{完整版}

目录摘要 (3)关键字: (3)引言 (3)一、系统的理论与技术基础 (4)1.1管理信息系统基础 (4)1.2 软件工程理论的概述 (4)1.3 软件工程理论对本系统的指导 (4)二、系统的需求分析 (5)2.1项目开发的背景分析 (5)2.2 项目开发的目标 (5)2.3项目提出的意义 (6)2.4 国内外研究现状 (6)三、系统的开发工具及编程环境 (9)3.1 开发工具的选择 (9)3.3编程环境的选择 (10)3.5 Visual Basic 系统实现菜单选项 (12)3.5 Visual Basic 系统实现菜单选项 (12)四、系统数据库的使用 (13)4.1 系统数据库的选择 (13)4.2 数据的保存和读取 (13)4.3 数据库文件的易用性 (13)4.4 数据库文件格式 (14)4.5教师管理界面编码设计 (16)五、系统代码及开发过程 (18)5.1系统的开发 (18)5.2功能需求描述 (18)5.3代码及图示 (18)5.3.2.主窗口: (18)5.3.3.管理系统: (19)5.3.4.属性: (20)5.3.5.打开系统显示的界面 (20)5.3.6.窗体的尺寸 (21)结论 (22)致谢 (23)参考文献 (24)学生成绩管理系统摘要学生信息管理系统是典型的信息管理系统,经过分析,我们使用MICROSOFT公司的VISUAL BASIC开发工具,利用其提供的各种面向对象的开发工具,尤其首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。
关键字:数据库,智能化,面向对象ABSTRACT:The abstract student information management system is the typical information management system, the process analysis, We use MICROSOFT Corporation VISUAL the BASIC development kit, uses each kind of object-oriented development kit which it provides, especially first in a short time establishes the system application prototype, then, carries on the demand iteration to the initial prototype system, revises and the improvement unceasingly, until forms user satisfaction the feasible system.Key words:Database,intelligence,object-oriented引言随着学校规模的不断扩大,学生数量急剧增加,有关学生的各科成绩信息量也成倍增长。
用VB开发学生成绩管理系统

、
系统功 能 设 计
( 1 ) 系统 主 要 功 能描 述 。① 用 户 管理 : 用来 管理 系 统 用 户 , 可 数 , 如果 超 出 指定 的次数 , 则 自动 关 闭程 序 。
以添加用户名 、 修改用户密码。 ②学生信息管理: 学生基本情况汇 总与管理 , 主要包括对学生 成绩 的添加 、 修改 、 删除和查 询等操 括对学生成绩的添加 、 修改 、 删除 、 查询和统计等操作 。④课 程管
表 2学生信 息表结构
字 段 名 数 据 类 型 S N o 文 本 S n a me 文 本 S s e x 文 本 S a g a 数 字
S p l a c e 文 本
字 段 大 小 7 1 2 2 整 型
3 2
说 明 学号 , 主键 , 必填 字 段 姓名, 必 填 字段 性别 , 必填 字段 年龄 , 必 填 字 段
子 模 块 的设 计 , 最后 再将 制 作 好 的代 码 打 包为 安 装程 序 等 , 详 细描 述 学生成 绩 管 理 系统 的 开 发过 程 。 关键词: Ⅶ 语言 ; A c c e s s 数据库; 成绩管理; 模块 设 计
在中职学校, 对于学生基本信息和成绩 的管理是学校的一项基
一
不匹配 , 则根据具体情况 弹出相应的警告对话框。为了使系统更
加 安全 , 加 人 一个 窗 口级公 共 对 象 , 用 来 记 录密 码 输 入错 误 的 次 ( 2 ) MDI 窗1 3 r 菜单 栏 设计 。在 系统 中添加 MD I 窗 口作 为系 统 主窗 口 , 为 其 加 入菜 单 栏 。根 据系 统 设 计 中 的各 功 能 模 块 设 计 菜 C l i c k事件 过 程 。当选 择 菜 单命 令 时 , 显 示 相应 的功 能 窗 口或 实 现
VB程序设计案例教程

VB程序设计案例教程VB(Visual Basic)是一种基于事件驱动的编程语言,常用于开发Windows平台下的应用程序。
本文将介绍一个VB程序设计案例教程,帮助读者快速入门并了解VB的基本编程概念和技巧。
这个案例教程将演示如何创建一个简单的学生成绩管理系统。
该系统具有以下功能:添加学生信息、查询学生信息、修改学生成绩和删除学生信息。
首先,我们需要创建一个新的VB项目。
打开VB IDE(集成开发环境),点击"新建项目",选择"Windows应用程序",并命名为"学生成绩管理系统"。
接下来,我们将设计系统界面。
在窗体上添加一些控件,例如标签(Label)、文本框(TextBox)、按钮(Button)和列表框(ListBox),用于显示学生信息和操作按钮。
我们可以使用窗体设计器工具在窗体上拖拽这些控件并设置它们的名称、位置和大小。
然后,我们需要为按钮的点击事件编写相应的代码。
例如,在"添加学生"按钮的Click事件中,我们可以通过获取文本框中的学生信息,将其添加到列表框中。
这需要使用VB的语法和内置的函数、属性和方法来实现。
在查询学生信息的功能中,我们可以通过遍历列表框中的学生信息,根据用户输入的关键字查询匹配的学生并显示在一个新的窗体上。
在修改学生成绩的功能中,我们可以通过选择列表框中的学生,然后弹出一个对话框,让用户输入新的成绩,并更新列表框中学生的成绩。
最后,在删除学生信息的功能中,我们可以通过选择列表框中的学生,然后通过调用删除函数,将选定的学生从列表框中删除。
完成以上功能后,我们可以运行程序,并使用这个简单的学生成绩管理系统来添加、查询、修改和删除学生信息。
通过这个案例教程,读者可以掌握VB程序设计的基本步骤和技巧,了解VB的基本语法和常用控件的使用。
读者还可以进一步扩展和改进这个学生成绩管理系统,增加更多的功能和界面设计,提升学习和应用VB的能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
洛阳理工学院08软件技术课题设计报告课程:Visual Basic程序设计题目:学生成绩查询统计系统学号: Z08050834 姓名:班级:软件8班指导老师:苗专生完成时间:2009年12月30日目录一、课题内容 (1)1.1了解信息 (1)1.2实验目的 (1)1.3选题的背景和意义 (1)1.4软件工具和需要掌握的知识 (1)二、系统分析 (2)2.1系统功能模块示意图 (2)2.2设计思路、算法描述 (2)三、系统设计 (2)3.1主要算法的实现 (2)3.2程序流程图 (2)四、调试、测试、试运行过程 (3)4.1运行记录及调试效果 (4)五、源程序主要代码 (11)5.1密码判断 (11)5.2添加信息 (11)5.3删除信息 (12)5.4修改信息 (13)5.5绘制直方图 (13)5.6绘制饼图 (14)5.7保存文件 (15)5.8按条件查询 (16)5.9打开帮助文件 (16)5.10工具条按钮代码 (16)5.11工具条下拉菜单代码 (17)六、课设总结 (17)七、参考文献 (18)一、课题内容1.了解信息:了解用软件工程学的基本思想进行软件开发的原则和方法;结构化分析方法和步骤。
结构化编程方法;面向对象的思想和程序设计方法。
2.实验目的:掌握数组,函数,过程的定义和使用掌握do、while、for等循环语句的运用掌握了解vb的图形功能,及图形的绘制掌握常用函数的使用(绘图函数:line,circle等)掌握vb文件系统的操作(打开,读写,关闭等)熟练掌握键盘事件,鼠标事件及其事件过程的编程技巧掌握逻辑表达式,单分支,双分支及多分支条件语句的运用掌握vb常用控件的运用(通用对话框,inputbox,combox,工具栏,状态栏等)3.选题的背景和意义:计算机不可避免的成为了当今社会的主流学科,计算机的广泛应用性、高效率以及其强大的计算能力注定了其发展潜力,虽然计算机现在的能力不可想象,但不要忽视了其出世还不足半个世纪,然而在这半个世纪里它带领着世界创造一个个奇迹。
随着计算机的广泛使用,它的灵魂——软件也得到了快速发展,但是人们的需求永远大于现实,各行各业都需求他们自己所最需要的各种软件,导致了社会需要大批的软件编辑者,VB作为几大编程语言之一,其语言易学易用的特点广大初学者学习学习计算机语言的首选,我们经过了半个学期的学习,对VB有了初步的了解,学生成绩管理器这是一个实用性很强,技术要求不太高的应用程序,很适合初学者练习,再者其要求全面,很适合对我们这学期的学习考察,虽然其中有一些书本上没有老师也没有讲过的内容,但通过网络学习也能完成,更能考察学生的自学能力。
4 软件工具和需要掌握的知识:1、软件工具:Visual Basic 6.0英文版、中文版,easy chm,Photoshop2、需要掌握的知识:(1) 视窗(Form)视窗是进行人机交互的界面或接口,也叫窗体。
VB系统的人机交互界面或接口,无论是在设计时或是在运行时,都是Windows 系统的标准视窗。
(2) 对象 (Object)对象是VB系统内部提供给设计者可以直接使用的处理输出的控制工具。
本程序所应用到的对象类型有标签框 (Label Box),文本框 (Text Box),命令按扭 (Command Button),网格 (Data Grid),ADO控件 (Adodc1)等。
当把这些工具放置到用户界面对应的窗体上时,被称为对象或控件。
用户可以通过设置对象的“属性”和“方法”,便于对象适应自己所设计应用程序的输入输出内容,对象的生成过程及结构都被封装起来。
正确使用对象可以减少程序和开发时间,提高程序设计者的工作效率。
(3) 属性 (Properties)属性是VB系统提供的有关对象的参数或数据接口。
用户通过适当地设置或改变对象的属性来确定对象的外观及性能特征,从而有效地使用系统提供的对象。
比如,对象的名称、在屏幕上显示的位置、大小、颜色、接收或容纳的数据内容及数据的表现格式等。
(4) Visual Basic中的事件 (Events)事件是指用户或操作者对计算机进行的某一操作(如击键、单击或移动鼠标等)的行为或系统状态发生的变化。
VB系统常用事件来引导计算机执行一段程序。
程序所用的键盘事件有KeyPress(按键)事件,KeyDown 事件和KeyUp事件;鼠标事件有Click(单击鼠标)事件,DbDlicd(双击鼠标)。
(5) Visual Basic中的方法 (Method)方法主要是指对一个对象使用某种作用的过程。
它是在程序执行的过程中要计算机执行的某种操作。
其程序的方法有Show(显示)方法,Hide(隐藏)方法,Refresh(刷新)方法。
(6) Visual Basic中的过程 (Procedure)过程是指经过定义或说明的,或基于某一对象对应的事件所引发的程序段。
(7) Visual Basic中的模块 (Module)模块是指一些运算量或过程进行声明或定义的一个集合。
系统程序大体可分成四个模块:数据输入、根据查询、数据打印和通讯。
二、系统分析(设计思路、算法描述)1.系统功能模块示意图:2.课题设计的思路、方法:本系统主要包括学生信息查询、信息修改、学生信息保存和帮助四部分。
其功能主要有:⒈有关学生信息的输入,包括输入学生学号、姓名、性别、课程号、和成绩。
⒉学生信息的查询,包括查询学生学号、姓名、课程成绩和成绩的分数段。
⒊学生信息的修改。
三、系统设计:1、主要算法的实现方法主菜单有:1.编辑(增、删、改、退出),2.查询(按姓名、学号、成绩、高于某分、低于某分查找),3.统计绘图(饼图、直方图),4.报表,5.帮助(关于、帮助)五个菜单项。
添加信息主要是使用数据库将记录的增加记录的AddNew方法。
删除主要是调用delete方法。
查询可以通过输入要查询的学号,如果没有要查找的信息,给予提示。
通过姓名、学号和分数查询的代码与通过学号查询的代码类似。
统计绘图通过记录的增删改动态的显示统计图的变化和要显示的记录数。
2.程序流程图:Zhujiemian主界面添加删除姓名查询学号查询直方图饼图报表制作打印预览课程号五、源程序主要代码(加详细注释)(1)密码判断Private Sub Form_Load()i = 3End SubPrivate Sub Command1_Click()If (Text2 <> "wwz314") Or (Text1 <> "wwz314") Theni = i - 1If i = 0 Thena = MsgBox("不要再做无谓的尝试!再见!", , "提示")EndElsea = MsgBox("密码错误,你还有" & i & "次机会", , "提示")End IfElseUnload Form1Form2.ShowEnd IfEnd Sub(2)添加信息mandType = adCmdUnknown 定义命令类型Form2.Adodc1.RecordSource = "select * from filename where 学号='" & Text0 & "' and 课程号='" & Text3 & "'" 从学号和课程号中查找Form2.Adodc1.RefreshIf Not Form2.Adodc1.Recordset.EOF ThenMsgBox "已存在"Exit SubEnd IfForm2.Adodc1.Recordset.AddNew 新增一条空白记录Form2.Adodc1.Recordset.Fields("学号") = Text0Form2.Adodc1.Recordset.Fields("姓名") = Text1Form2.Adodc1.Recordset.Fields("性别") = Text2Form2.Adodc1.Recordset.Fields("课程号") = Text3Form2.Adodc1.Recordset.Fields("课程名") = Text4Form2.Adodc1.Recordset.Fields("成绩") = Text5Form2.Adodc1.Recordset.UpdateForm2.Adodc1.Recordset.MoveFirstMsgBox "记录已成功添加。
"(3)删除信息Private Sub Combo1_Click()Form2.Adodc1.Recordset.MoveFirstst = Combo1.TextForm2.Adodc1.Recordset.find "学号='" & st & "'"If Form2.Adodc1.Recordset.EOF Then 如果记录到达末尾则未查找到Combo1.ListIndex = 0ElseText1 = Form2.Adodc1.Recordset.Fields("姓名") 显示姓名Text2 = Form2.Adodc1.Recordset.Fields("学号") 显示学号End IfEnd SubPrivate Sub Command1_Click()j = Combo1.ListIndexCombo1.RemoveItem jj = j + 1Form2.Adodc1.Recordset.Delete 删除记录Form2.Adodc1.Recordset.MoveNextIf Form2.Adodc1.Recordset.EOF Then Form2.Adodc1.Recordset.MoveLastIf j > Combo1.ListCount - 1 Then j = Combo1.ListCount - 1Combo1.ListIndex = jText1 = Form2.Adodc1.Recordset.Fields("姓名") 显示姓名Text2 = Form2.Adodc1.Recordset.Fields("学号") 显示学号End SubPrivate Sub Command2_Click()i = MsgBox("继续?" & vbCrLf & "—点击确定返回删除界面" & vbCrLf & "—点击取消直接返回主界面", vbOKCancel, "思考中……")If i = 2 Then Unload Me 关闭删除窗体End SubPrivate Sub Command3_Click()Unload Me 关闭删除窗体End SubPrivate Sub Form_Load()mandType = adCmdTable 指定命令类型为adCmdTableForm2.Adodc1.RecordSource = "filename" 数据源为全部数据(filename)Form2.Adodc1.RefreshForm2.Adodc1.Recordset.MoveFirst 移动到第一条记录Do While Not (Form2.Adodc1.Recordset.EOF)Combo1.AddItem Form2.Adodc1.Recordset.Fields("学号") 列表框中添加全部学号Form2.Adodc1.Recordset.MoveNext 记录下移一条LoopForm2.Adodc1.Recordset.MoveFirstCombo1.ListIndex = 0End Sub(4)修改信息Private Sub Command1_Click()s = MsgBox("确定修改此学生信息?", vbOKCancel)If s = vbOK ThenForm2.Adodc1.Recordset.Fields("姓名") = Text1 修改姓名Form2.Adodc1.Recordset.Fields("性别") = Text3 修改性别Form2.Adodc1.Recordset.Fields("课程号") = Text4 修改课程号Form2.Adodc1.Recordset.Fields("课程名") = Text5 修改课程名Form2.Adodc1.Recordset.Fields("成绩") = Text6 修改成绩MsgBox "修改成功!"ElseForm2.Adodc1.Recordset.CancelUpdate 更新记录End IfEnd Sub绘图Public a As Single, b As Single, c As Single, d As Single, e As Single, num As Single (5)绘制直方图Sub Creat()Form6.Scale (-12, -8)-(8, 8) 'Form6.Scale (-6, 8)-(12, -2)Form6.Line (-5, 4)-(8, 4), vbBlueForm6.Line (-5, 4)-(-5, -5), vbRedForm6.CurrentX = 2: Form6.CurrentY = -2a1 = 12 * a / numb1 = 12 * b / numc1 = 12 * c / numd1 = 12 * d / nume1 = 12 * e / numForm6.Line (-4.5, 4)-(-3, -a1 + 4), vbRed, BFForm6.Line (-2.5, 4)-(-1, -b1 + 4), vbGreen, BFForm6.Line (-0.5, 4)-(1, -c1 + 4), vbBlue, BFForm6.Line (1.5, 4)-(3, -d1 + 4), RGB(210, 0, 200), BFForm6.Line (3.5, 4)-(5, -e1 + 4), RGB(170, 180, 0), BFEnd SubSub litizf()Creat ‘调用create函数Dim i%, x1 As Single, y1 As Single, x2 As Single, y2 As Single, x3 As Single Form6.Line (-11, -7)-(-9, -6.5), vbRed, BF 绘制红色矩形Form6.CurrentX = -8.9: Form6.CurrentY = -7: Form6.Print "90-100分"Form6.Line (-11, -6.5)-(-9, -6), vbGreen, BF 绘制绿色矩形Form6.CurrentX = -8.9: Form6.CurrentY = -6.5: Form6.Print "80-89 分"Form6.Line (-11, -6)-(-9, -5.5), vbBlue, BF 绘制蓝色矩形Form6.CurrentX = -8.9: Form6.CurrentY = -6: Form6.Print "70-79 分"Form6.Line (-11, -5.5)-(-9, -5), RGB(210, 0, 200), BF 绘制紫红色矩形Form6.CurrentX = -8.9: Form6.CurrentY = -5.5: Form6.Print "60-69 分"Form6.Line (-11, -5)-(-9, -4.5), RGB(170, 180, 0), BF 绘制草绿色矩形Form6.CurrentX = -8.9: Form6.CurrentY = -5: Form6.Print "00-59 分"End Sub(6)绘制饼图Sub bingtu()Form6.Scale (-12, -8)-(8, 8)Dim Xs As SingleConst Pi = 3.141593Form6.ShowForm6.FillStyle = 0Xs = 2 * Pi / numIf a > 0 ThenForm6.FillColor = vbRedForm6.Circle (0, 0), 6, 0, -2 * Pi, -a * XsEnd If 绘制红色扇形If b > 0 ThenForm6.FillColor = vbGreenForm6.Circle (0, 0), 6, vbGreen, -a * Xs, -(a + b) * XsEnd If 绘制绿色扇形If c > 0 ThenForm6.FillColor = vbBlueForm6.Circle (0, 0), 6, 0, -(a + b) * Xs, -(a + c + b) * XsEnd If 绘制蓝色扇形If d > 0 ThenForm6.FillColor = RGB(210, 0, 200)Form6.Circle (0, 0), 6, 0, -(a + b + c) * Xs, -(a + c + b + d) * XsEnd If 绘制紫红色扇形If e > 0 ThenForm6.FillColor = RGB(170, 180, 0)Form6.Circle (0, 0), 6, 0, -(a + b + c + d) * Xs, -(a + c + b + d + e) * Xs End If 绘制草绿色扇形Form6.Line (-11, -7)-(-9, -6.5), vbRed, BF 绘制红色矩形Form6.CurrentX = -8.9: Form6.CurrentY = -7: Form6.Print "90-100分"Form6.Line (-11, -6.5)-(-9, -6), vbGreen, BF绘制绿色矩形Form6.CurrentX = -8.9: Form6.CurrentY = -6.5: Form6.Print "80-89 分"Form6.Line (-11, -6)-(-9, -5.5), vbBlue, BF绘制蓝色矩形Form6.CurrentX = -8.9: Form6.CurrentY = -6: Form6.Print "70-79 分"Form6.Line (-11, -5.5)-(-9, -5), RGB(210, 0, 200), BF绘制紫红色矩形Form6.CurrentX = -8.9: Form6.CurrentY = -5.5: Form6.Print "60-69 分"Form6.Line (-11, -5)-(-9, -4.5), RGB(170, 180, 0), BF绘制草绿色矩形Form6.CurrentX = -8.9: Form6.CurrentY = -5: Form6.Print "00-59 分"End Sub(7)保存文件Sub baocun()On Error GoTo abcDim stud As xinxifn = App.Path 当前文件所在路径CommonDialog1.InitDir = fn 指定默认路径CommonDialog1.FileName = ""CommonDialog1.Filter = "*.txt|*.txt|*.*|*.*" 打开文本文件和所有文件CommonDialog1.ShowSave 显示保存对话框Open CommonDialog1.FileName For Random As #1 随机打开文件Adodc1.Recordset.MoveFirst 记录位于首记录With studDo While Not Adodc1.Recordset.EOF 判断是否到达末尾.xuehao = Adodc1.Recordset.Fields("学号"): .xingming = Adodc1.Recordset.Fields("姓名").xingbie = Adodc1.Recordset.Fields("性别"): .kch = Adodc1.Recordset.Fields("课程号") 将信息存入变量中.kcm = Adodc1.Recordset.Fields("课程名"): .cj = Adodc1. Recordset. Fields("成绩")Put #1, , stud 写入文件保存变量studAdodc1.Recordset.MoveNextLoopEnd WithClose #1Adodc1.Recordset.MoveFirsta = MsgBox("文件写入成功!", , "提示")abc:End Sub查询信息代码:(8)按学号查询:Private Sub anxh_Click()Dim num$num = InputBox("请输入要查询的学号", "学号查询")If num <> "" ThenmandType = adCmdUnknownAdodc1.RecordSource = "Select * From filename Where 学号 ='" & num & "'" Adodc1.RefreshIf Adodc1.Recordset.EOF Thena = MsgBox("未找到!请确认输入的学号是否正确。