VB学生成绩管理系统课程设计报告
- 格式:doc
- 大小:2.59 MB
- 文档页数:28
长江大学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。
一.课程设计题目学生成绩管理系统二.功能描述系统主要由四部分组成:系统用户的管理、学生成绩的管理、学生信息的管理、,学生成绩信息的统计,其中还包括登录界面等模块。
各模块的主要功能如下:(1).系统用户的管理:实现用户的添加、删除和密码的修改(3).学生成绩的管理:实现学生成绩的录入,查询,删除和修改。
(4).学生成绩信息的统计:实现学生男女生人数以及不及格人数的统计。
(2).学生信息的管理:实现学生学籍信息的添加,查询、删除和修改。
三.概要设计对上述各项功能进行集中、分块,按照结构化层序设计的要求,得到如图1所示的系统功能模块图。
图1系统功能模块图四.数据库设计数据库在本成绩管理系统中占有非常重要的地位,数据库结构的好坏将直接对应用系统的效率以及实现的效率产生影响。
合理的数据库及结构设计可以提高数据存储的效率,保证数据的完整和一致。
同时合理的数据库结构也将有利于程序的实现。
设计本系统的数据库应该充分满足用户的需求。
针对一般学生管理系统的需求,通过对学生学习过程的内容的分析,设计如下面所示的数据项和数据结构。
(1)基本信息表:包括的字段有:学号,姓名,性别,年龄,联系电话,家庭住址。
表1 基本信息表(2)成绩表:包括的字段有:学号,姓名,性别,班级,高数成绩,英语成绩,计算机成绩。
表2 成绩表(表3密码表(4)教师密码表:包括的字段有:用户名,密码。
五.详细设计系统主要由五部分组成:系统用户的管理、学生成绩的管理、学生信息的管理、信息的查询,其中还包括登录界面以及成绩的统计模块。
各模块的主要功能如下:1.系统用户的管理:实现用户的添加、删除和密码的修改。
通过.Hide对象方法隐藏原有窗体界面,通过.Show对象方法显示所要用到的窗体界面。
2.学生信息的管理:通过创建数据库,连接数据库,调用数据库及Data控件Adodc 控件,MSHFlexGrid控件的使用来实现学生信息的添加,查询,删除和修改。
学生综合测评成绩管理设计报告一、设计思路1.要达到的目的⏹ 培养综合利用VB 语言进行程序设计的能力,主要是培养对基本控件、菜单和对控件属性的设置以及文件的操作。
利用菜单和基本控件完成设计。
⏹ 完成的程序界面要美观,能够完成管理的整个过程。
2.关键问题的解决1.文件数据的读取以及把数据存入数组2.对数组的升降排序二、程序流成图Form1Private Sub cjdr_Click()Label1.Visible = FalseCombo1.Visible = FalseOpen App.Path + "\xscj.txt" For Input As #1Text1.Text = Text1.Text & "学号" & Space(5) & "姓名" & Space(5) & "英语" & Space(5) & "数学" & Space(4) & "计算机" & Space(3) & "历史" & Space(3) & "体育" & vbCrLfFor i = 1 To 30Input #1, xuehao(i), xingming(i), yy(i), sx(i), jsj(i), ls(i), ty(i) “将数据读入对应数组”Text1.Text = Text1.Text & xuehao(i) & Space(5) & xingming(i) & Space(5) & yy(i) & Space(7) & sx(i) & Space(6) & jsj(i) & Space(6) & ls(i) & Space(5) & ty(i) & vbCrLfNext i窗口COMBO 控件 菜单控件2 菜单控件3 菜单控件4菜单1 工程Close #1 “关闭文件”End SubPrivate Sub Combo1_Click()If Combo1.Text = "英语" ThenText1.Text = ""Text1.Text = Text1.Text & "学号" & Space(5) & "姓名" & Space(7) & "英语" & vbCrLf “显示加入的学生信息”For i = 1 To 30Text1.Text = Text1.Text & xuehao(i) & Space(5) & xingming(i) & Space(8) & yy(i) & vbCrLfNext iEnd IfIf Combo1.Text = "数学" Then “按数学成绩降序排列”Text1.Text = ""Text1.Text = Text1.Text & "学号" & Space(5) & "姓名" & Space(7) & "数学" & vbCrLfFor i = 1 To 30Text1.Text = Text1.Text & xuehao(i) & Space(5) & xingming(i) & Space(8) & sx(i) & vbCrLfNext iEnd IfIf Combo1.Text = "计算机" ThenText1.Text = ""Text1.Text = Text1.Text & "学号" & Space(5) & "姓名" & Space(7) & "计算机" & vbCrLfFor i = 1 To 30Text1.Text = Text1.Text & xuehao(i) & Space(5) & xingming(i) & Space(8) & yy(i) & vbCrLfNext iEnd IfIf Combo1.Text = "历史" ThenText1.Text = ""Text1.Text = Text1.Text & "学号" & Space(5) & "姓名" & Space(7) & "历史" & vbCrLfFor i = 1 To 30Text1.Text = Text1.Text & xuehao(i) & Space(5) & xingming(i) & Space(8) & yy(i) & vbCrLfNext iEnd IfIf Combo1.Text = "体育" ThenText1.Text = ""Text1.Text = Text1.Text & "学号" & Space(5) & "姓名" & Space(7) & "体育" & vbCrLfFor i = 1 To 30Text1.Text = Text1.Text & xuehao(i) & Space(5) & xingming(i) & Space(8) & yy(i) & vbCrLfNext iEnd IfEnd SubPrivate Sub Command1_Click()Text1.Text = ""For i = 1 To 30Text1.Text = Text1.Text & xuehao(i) & Space(5) & yy(i) & vbCrLfNext iEnd SubPrivate Sub CX_Click()Dim x As StringText1.Text = ""x = InputBox("请输入要查询的学生学号")For i = 1 To 30If x = xuehao(i) ThenText1.Text = Text1.Text & xuehao(i) & Space(5) & xingming(i) & Space(8) & yy(i)End IfNext iEnd SubPrivate Sub DKPX_Click()'MsgBox "请先导入数据,求各科总成绩和后才能按总成绩排序"For i = 1 To 29For j = i + 1 To 30If sumcj(i) < sumcj(j) Thent = sumcj(i)sumcj(i) = sumcj(j)sumcj(j) = tEnd IfNext jNext iText1.Text = ""Text1.Text = Text1.Text & "学号" & Space(5) & "姓名" & Space(7) & "各科总成绩" & vbCrLf For i = 1 To 30Text1.Text = Text1.Text & xuehao(i) & Space(5) & xingming(i) & Space(8) & sumcj(i) & vbCrLfNext iEnd SubPrivate Sub FJF_Click()Dim biliOpen App.Path + "\fjf.txt" For Input As #2Text1.Text = ""Text1.Text = Text1.Text & "学号" & Space(5) & "姓名" & Space(7) & "附加分数" & vbCrLf For i = 1 To 30Input #2, fujiafen(i)Text1.Text = Text1.Text & xuehao(i) & Space(5) & xingming(i) & Space(8) & fujiafen(i) & vbCrLfNext iCloseEnd SubPrivate Sub Form_Load()Text1.Text = ""Combo1.AddItem "英语"Combo1.AddItem "数学"Combo1.AddItem "计算机"Combo1.AddItem "历史"Combo1.AddItem "体育"End SubPrivate Sub XS_Click()'MsgBox "必须先导入数据,再从组合框的列表中选择科目"Label1.Visible = TrueCombo1.Visible = TrueEnd SubPrivate Sub ZCJ_Click()Text1.Text = ""Text1.Text = Text1.Text & "学号" & Space(5) & "姓名" & Space(7) & "各科总成绩" & vbCrLf For i = 1 To 30sumcj(i) = yy(i) + sx(i) + jsj(i) + ty(i) + ls(i)Text1.Text = Text1.Text & xuehao(i) & Space(5) & xingming(i) & Space(8) & sumcj(i) & vbCrLfNext iEnd SubPrivate Sub ZDF_Click()MsgBox "请先导入数据,求各科总成绩和后才能求总成绩中最低分"Min = sumcj(1)For i = 2 To 30If Min > sumcj(i) ThenMin = sumcj(i)End IfNext iText1.Text = ""Text1 = "总成绩最低分" & MinEnd SubPrivate Sub ZGF_Click()MsgBox "请先导入数据,求各科总成绩和后才能求总成绩中最高分"Max = sumcj(1)For i = 2 To 30If Max < sumcj(i) ThenMax = sumcj(i)End IfNext iText1.Text = ""Text1 = "总成绩最高分" & MaxEnd SubPrivate Sub ZHCJ_Click()Text1.Text = ""Text1.Text = Text1.Text & "学号" & Space(5) & "姓名" & Space(7) & "各科总成绩" & vbCrLfMsgBox "设定加分比例"bili = InputBox("输入所占比例数,例如:20")For i = 1 To 30zonghecj(i) = sumcj(i) / 5 * (100 - bili) / 100 + fujiafen(i)Text1.Text = Text1.Text & xuehao(i) & Space(5) & xingming(i) & Space(7) & zonghecj(i) & vbCrLfNext iEnd SubPrivate Sub ZHPX_Click()For i = 1 To 29For j = i + 1 To 30If zonghecj(i) < zonghecj(j) Thent = zonghecj(i)zonghecj(i) = zonghecj(j)zonghecj(j) = tEnd IfNext jNext iText1.Text = ""Text1.Text = Text1.Text & "学号" & Space(5) & "姓名" & Space(7) & "各科总成绩" & vbCrLf For i = 1 To 30Text1.Text = Text1.Text & xuehao(i) & Space(5) & xingming(i) & Space(8) & zonghecj(i) & vbCrLfNext iEnd Sub四、设计方案的完善及目前存在的问题1.设计方案要完善的地方1.按综合测评排序,并显示。
计算机软件技术基础综合作业学院班级学号姓名成绩一、题目:学生信息管理系统二、系统功能的描述登录本系统后,首先打开文件score.txt,对成绩进行分析和统计,可以分析平均分,最优成绩与最差成绩;根据姓名查询成绩;对平均分进行升序和降序排序三、软件设计1.系统结构学生信息管理系统文件分析查找按平均分排序说明打开文件清除数据退出升序排列降序排列平均成绩各科平均成绩/总平均成绩优秀生信息成绩最好与最差2.功能列表1).分析各科平均成绩和总平均成绩计算各科的平均分和总平均成绩,用textbox显示。
2).分析优秀学生信息查找优秀学生的基本信息,用textbox显示。
3).分析成绩最好的学生与成绩最差的学生的信息统计平均分最高的学生,平均分最低的学生,用textbox显示。
4).查询通过姓名查询成绩的信息。
5).排序以平均分的升序降序重新排列,显示在textbox中。
6).说明显示帮助信息。
7).登录打开系统首先看见登录模块,用户输入账号密码,满足预设账号密码,打开下一个窗体,在“登录”按钮的点击事件里写验证代码。
8).打开文件Commondialog对象,选择要打开的文件,将文件中的内容写到数组里,再循环写入textbox中显示出来。
9).清除数据清除textbox内容,清除数据。
10).退出关闭当前窗体。
退出程序。
11).分析平均分计算每个人的平均分,显示在textbox中。
四、程序源代码和注释1.登录:Dim times As Integer '定义登录次数Rem 关闭,退出程序Private Sub close_Click()Unload MeEnd SubPrivate Sub Command1_Click()Text1.Text = "151590"Text2.Text = "151590"End SubRem 登录按钮事件Private Sub login_Click()Rem 定义变量Dim id, psw As StringRem 获取用户输入的 id 和 pswid = Me.Text1.Textpsw = Me.Text2.TextIf id = "151590" And psw = "151590" Then '登陆成功,隐藏登录窗体,打开主窗体Form1.HideForm2.ShowElseIf times < 2 ThenMe.Text1.Text = ""Me.Text2.Text = ""times = times + 1MsgBox "账号或密码错误,还剩" & 3 - times & "次机会!请你重新输入"ElseMsgBox "禁止登录"Me.Text1.Enabled = False '使输入框和按钮不能使用Me.Text2.Enabled = FalseMe.login.Enabled = FalseEnd IfEnd IfEnd Sub2.帮助模块Private Sub helps_Click()MsgBox "排序前必须统计平均分", vbOKOnly, "帮助"End Sub3.文件操作Dim sname(40), math(40), english(40), vb(40), scorearg(40) '定义数组Rem 清除数据,菜单不使能Private Sub dataclear_Click()Text1.Text = ""selectaverage.Enabled = Falseselectaveragesum.Enabled = Falseselectgood.Enabled = Falseselectgoodbad.Enabled = Falselook.Enabled = Falseorderasc.Enabled = Falseorderdesc.Enabled = FalseEnd SubRem 退出当前窗口返回上一窗口Private Sub dataexit_Click()Form2.HideForm1.ShowEnd SubRem 读入数据Private Sub dataread_Click()CommonDialog1.InitDir = App.Path 'commondialog控件,打开对话框,选择文件CommonDialog1.ShowOpenOpen CommonDialog1.FileName For Input As #1 '打开文件Text1.Text = Text1.Text & "姓名" & Space(5) & "数学" & Space(5) & "英语" & Space(5) & "vb程序设计" & vbCrLf '在文本框中显示For i = 1 To 40Input #1, sname(i), math(i), english(i), vb(i)Text1.Text = Text1.Text & sname(i) & Space(5) & math(i) & Space(7) & english(i) & Space(9) & vb(i) & vbCrLf '在文本框中显示Next iClose #1Rem 读入数据之后,菜单功能可用selectaverage.Enabled = Trueselectaveragesum.Enabled = Trueselectgood.Enabled = Trueselectgoodbad.Enabled = Truelook.Enabled = TrueEnd Sub4.分析Rem 计算平均分并显示Private Sub selectaverage_Click()orderasc.Enabled = Trueorderdesc.Enabled = TrueDim personaverageText1.Text = ""Text1.Text = Text1.Text & "姓名" & Space(5) & "数学" & Space(5) & "英语" & Space(5) & "vb程序设计" & Space(5) & "平均分" & vbCrLfFor i = 1 To 40personaverage = (math(i) + english(i) + vb(i)) / 3scorearg(i) = personaverageText1.Text = Text1.Text & sname(i) & Space(5) & math(i) & Space(7) & english(i)& Space(9) & vb(i) & Space(11) & VBA.Format(personaverage, "0.00") & vbCrLf Next iEnd SubRem 计算各科平均分和总平均分,并显示Private Sub selectaveragesum_Click()Dim mathaverage, englishaverage, vbaverage, sumaverageFor i = 1 To 40mathaverage = mathaverage + math(i)englishaverage = englishaverage + english(i)vbaverage = vbaverage + vb(i)Next imathaverage = mathaverage / 40englishaverage = englishaverage / 40vbaverage = vbaverage / 40sumaverage = (mathaverage + englishaverage + vbaverage) / 3Text2.Text = "数学平均成绩:" & mathaverage & vbCrLf & "英语平均成绩:" & englishaverage & vbCrLf & "vb程序设计平均成绩:" & vbaverage & vbCrLf & "总平均成绩:" & VBA.Format(sumaverage, "0.00")End SubPrivate Sub selectgood_Click()Dim mathaverage, englishaverage, vbaverage, sumaverage, personaverageDim good As StringDim count As IntegerFor i = 1 To 40mathaverage = mathaverage + math(i)englishaverage = englishaverage + english(i)vbaverage = vbaverage + vb(i)Next imathaverage = mathaverage / 40englishaverage = englishaverage / 40vbaverage = vbaverage / 40sumaverage = (mathaverage + englishaverage + vbaverage) / 3good = good & Space(1) & "姓名" & Space(5) & "数学" & Space(5) & "英语" & Space(5) & "vb程序设计" & Space(5) & "平均分" & vbCrLfFor i = 1 To 40personaverage = (math(i) + english(i) + vb(i)) / 3If personaverage >= sumaverage And math(i) >= mathaverage And english(i) >= englishaverage And vb(i) >= vbaverage Thencount = count + 1good = good & sname(i) & Space(5) & math(i) & Space(8) & english(i) & Space(11) & vb(i) & Space(8) & VBA.Format(personaverage, "0.00") & vbCrLfEnd IfNext igood = "优秀生人数为:" & count & vbCrLf & "信息如下:" & vbCrLf & good Text2.Text = goodEnd SubPrivate Sub selectgoodbad_Click()Dim personaverage, max, minDim good, bad As Stringmax = (math(1) + english(1) + vb(1)) / 3min = (math(1) + english(1) + vb(1)) / 3good = sname(1) & Space(5) & math(1) & Space(8) & english(1) & Space(11) & vb(1)& Space(8) & VBA.Format(max, "0.00") & vbCrLfbad = sname(1) & Space(5) & math(1) & Space(8) & english(1) & Space(11) & vb(1) & Space(8) & VBA.Format(min, "0.00") & vbCrLfFor i = 2 To 40personaverage = (math(i) + english(i) + vb(i)) / 3If personaverage > max Thengood = sname(i) & Space(5) & math(i) & Space(8) & english(i) & Space(11) & vb(i) & Space(8) & VBA.Format(personaverage, "0.00") & vbCrLfEnd IfIf personaverage < min Thenbad = sname(i) & Space(5) & math(i) & Space(8) & english(i) & Space(11) & vb(i) & Space(8) & VBA.Format(personaverage, "0.00") & vbCrLfEnd IfNext igood = Space(1) & "姓名" & Space(5) & "数学" & Space(5) & "英语" & Space(5) & "vb程序设计" & Space(5) & "平均分" & vbCrLf & goodbad = Space(1) & "姓名" & Space(5) & "数学" & Space(5) & "英语" & Space(5) & "vb程序设计" & Space(5) & "平均分" & vbCrLf & badText2.Text = "成绩最好的学生的信息:" & vbCrLf & good & vbCrLf & " 成绩最差的学生的信息: " & vbCrLf & badEnd Sub5.排序模块Private Sub orderasc_Click()For i = 1 To 39For j = i + 1 To 40If scorearg(i) > scorearg(j) Thent = scorearg(i)scorearg(i) = scorearg(j)scorearg(j) = ta = sname(i)sname(i) = sname(j)sname(j) = ab = math(i)math(i) = math(j)math(j) = bc = english(i)english(i) = english(j)english(j) = cd = vb(i)vb(i) = vb(j)vb(j) = dEnd IfNext jNext iText2.Text = ""Text2.Text = Text2.Text & "姓名" & Space(5) & "数学" & Space(5) & "英语" & Space(5) & "vb程序设计" & Space(5) & "平均分" & vbCrLfFor i = 1 To 40Text2.Text = Text2.Text & sname(i) & Space(5) & math(i) & Space(7) & english(i) & Space(9) & vb(i) & Space(11) & VBA.Format(scorearg(i), "0.00") & vbCrLf Next iEnd SubPrivate Sub orderdesc_Click()For i = 1 To 39For j = i + 1 To 40If scorearg(i) < scorearg(j) Thent = scorearg(i)scorearg(i) = scorearg(j)scorearg(j) = ta = sname(i)sname(i) = sname(j)sname(j) = ab = math(i)math(i) = math(j)math(j) = bc = english(i)english(i) = english(j)english(j) = cd = vb(i)vb(i) = vb(j)vb(j) = dEnd IfNext jNext iText2.Text = ""Text2.Text = Text2.Text & "姓名" & Space(5) & "数学" & Space(5) & "英语" & Space(5) & "vb程序设计" & Space(5) & "平均分" & vbCrLfFor i = 1 To 40Text2.Text = Text2.Text & sname(i) & Space(5) & math(i) & Space(7) & english(i) & Space(9) & vb(i) & Space(11) & VBA.Format(scorearg(i), "0.00") & vbCrLf Next iEnd Sub6.查询模块Private Sub look_Click()Dim personaverageDim name As StringDim person As Stringname = InputBox("请输入姓名查询", 查询)If name <> "" ThenFor i = 1 To 40If sname(i) = name Thenpersonaverage = (math(i) + english(i) + vb(i)) / 3person = person & sname(i) & Space(5) & math(i) & Space(8) & english(i) & Space(11)& vb(i) & Space(8) & VBA.Format(personaverage, "0.00") & vbCrLfEnd IfNext iperson = Space(1) & "姓名" & Space(5) & "数学" & Space(5) & "英语" & Space(5)& "vb程序设计" & Space(5) & "平均分" & vbCrLf & personText2.Text = "查询结果:" & vbCrLf & personEnd IfEnd Sub五、收获体会1、通过本次设计,我学会了commondialog控件和对象的使用,在查资料的过程中,也学到的其他控件的用法,打开文件,写入数组等操作。
学生成绩查询系统一、实习任务 (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环境下功能强大、图形界面丰富的应用软件系统。
河南工业大学计算机上机实习报告**:***序号:11学号:************班级:食工 1004班指导老师: 任老师张老师日期:2011-03-05目录一:系统名称:学生成绩管理系统的设计与实现二:设计目的三:程序摘要四:系统设计流程五:相关数据列表六:小结七:程序代码(1)模块代码(2)窗体代码一.系统名称:学生成绩管理系统的设计与实现二.设计目的1. 熟悉VB 6.0的开发环境,掌握基本的编程方法,熟悉用VB语言完成一个应用程序的设计过程,掌握有关编辑和调试程序的方法和技巧;2. 主要掌握VB语言中的结构体﹑指针及文件操作等内容3. 了解开发简单应用程序的全过程,包括:分析﹑设计﹑编程﹑调试和编写报告.三.程序摘要先在记事本中创建2个文本文档,分别输入本班24名学生在本学期的5门考试课的成绩和课程名及其学分.在主函数中读入两个原始数据文件的内容,保存在对应的结构体数组中,计算出每个学生5门课的加权平均分,并按平均分排列名次.然后显示菜单,调用各个函数,完成以下功能:1.用VB语言创建一个数据文件,文件名为:“VB课程设计”,用来存放班级的成绩表.2.分别统计全班每门课的平均分和标准差,并计算各分数段(90分以上;80~90;70~79;60~69;60分以下)的学生数3.用VB语言创建一个数据文件,文件名为:“VB课程设计”,用来存放编号,课程名称,课程平均分,标准差,优秀,良好,中等,及格,不及格.4.打印每名学生成绩条,结果存放到用VB语言创建的一个数据文件中,成绩条格式为名次,学号,姓名,英语,数学,VB语言,物理,化学5.屏幕显示所有存在不及格课程的学生的名单(含学号,不及格课程名称,课程的学分及成绩)6.屏幕显示优等生名单(含学号,N门课成绩,平均分,名次),优等生条件:a) 平均分>=90分b) 名次在本班位于前三名c) 平均分>=85分,并且至少有一门课的成绩>=95四、系统设计流程五.相关数据列表1、原始成绩表2、课程及学分3、计算加权平均分4、按平均分排名次5、打印每位同学的成绩条6、打印不及格的人7、打印优等生情况8、每门课的平均分9、各分数段人数六.小结在这次上机实习过程中,我了解了程序在Visual VB 6.0中调试并运的方法,并上机实践解决了一些平时没有机会解决和一些曾经被自己忽视的问题,如程序的排序对结果显示影响,标点符号对程序结果的影响,并养成了仔细检查程序的好习惯,加强了自己动手的能力。
期末成绩处理设计报告一、设计思路1.要达到的目的①培养学生综合利用VB语言进行程序设计的能力,主要是通过使用VB的标准控件,加深对控件的多个属性的认识及如何使用属性进行程序设计2.关键问题的解决①设计一个具有两个窗口的期末成绩统计的小程序②其中第一个窗口完成:学生人数和4门课成绩的录入,4门课的名称及学生人数由用户输入。
每录入完一个学生成绩后,将各门课成绩写入Excel表格中。
打开Excel表格查看写入的数据是否②第二个窗口用来绘制描述各科目平均成绩的柱形图,界面中还应包含坐标系、图表名称、各科成绩的平均分值、课程名称及色块③对窗口1的4个文本框要求:在输入成绩之前,焦点要在第一个文本框中,且文本为可编辑状态;当第一个文本框中输入2位数据后,焦点自动移入下一个文本框中,且文本状态和第一个相同文本框中只允许输入数字0、1、2、3、4、5、6、7、8、9及小数点“.”;文本框中文本的位数最大为2位输入学生成绩时窗口上要提示输入的是第几个学生成绩,并要求输入最后一个学生成绩后“写入数组”控件隐藏④全部学生成绩输入完成后,单击“写入Excel文件”控件,把学生成绩全部放在Excel表格中,要求有字段名内容。
⑤单击“打开Excel文件”控件,将打开刚刚生成的Excel表。
⑥单击“绘制柱形图”控件,打开第二个窗口,并显示以课程平均分为依据的柱状图。
⑦要想结束程序,应单击“退出”按钮。
三、部分程序关键源代码及注释Private Sub Command2_Click()'★创建EXCEL对象Set XlApp = CreateObject("Excel.Application")'★打开已经存在的EXCEL工件簿文件Set XlBook = XlApp.Workbooks.Open(App.Path & "\book.xls")'★设置EXCEL对象可见(或不可见)'XlApp.Visible = True'★设置活动工作表, sheet1表示表名,可以使用字符型变量代替。
《数据库技术》课程设计题目数据库课程设计学号姓名班级指导老师2010 年 6月 28日—2010 年 7 月 2 日目录:一、引言二、系统分析2.1 选择开发工具…………………………………2.2 系统规划………………………………………三、系统设计3.1 系统数据库设计………………………………3.2 系统的主要功能………………………………四、概述4.1目的与要求…………………………………..4.2设计环境……………………………………..五、数据库的实现与维护六、实例演示七、收获与心得体会一、引言主要是讨论如何解决根据学生成绩评估教学质量的信息化问题。
针对该问题,利用VB语言做了一个学生成绩评估系统,该系统能简化根据学生的成绩来对教学质量进行评估的过程,使老师的教学成果、学生的成绩变化都一目了然。
为达到所定的目的。
本系统主要使用了VB语言,SQL Server 2000系统,数据库等工具。
学生的成绩数据主要储存于SQL数据库,因此需要首先对数据库进行操作、处理。
本文首先概述了信息化教育的发展情况,讲明了开发学生成绩评估系统的必要性,接着阐述了学生成绩评估系统的基本设计思想及实现方法。
并以该系统为应用实例,介绍了用VB语言进行绘制图表以及使用SQL Server 2000及操作数据库的一些要注意的地方。
二、系统分析2.1 选择开发工具SQL Server 2000,VB。
2.2 系统规划学生成绩管理系统,主要涉及学生信息、课程信息、成绩信息等数据库表。
为简单起见,成绩可不考虑五级记分制的字符型分值,如优、良、中、及格、不及格等,只考虑数字型的分值,如 95,90,55等。
三、系统设计3.1 系统数据库设计数据项是数据库关系中不可再分的数据单位,下表分别列出了数据的名称、数据类型、长度、取值能否为空。
利用关系型数据库的特征,将学生成绩管理设计为1个数据库,包含3个数据库表。
(1)学生信息表:从成绩的角度,学生信息表包括学生学号、姓名、系别三个字段就够了,但考虑其它用处,还可将学生家庭联系信息 (如,邮政编码,通讯地址,收信人,电话等)也包括在学生信息表中。
学生成绩处理设计报告一、设计思路1.要达到的目的学习VB程序设计的方法,充分体会VB在程序设计方面的强大功能和特点,培养运用VB解决实际问题的能力。
通过本次课程设计,使学生进一步巩固课堂上学到的知识,能利用VB中的基本控件和数组编写一个小的应用软件—学生成绩处理。
2.关键问题的解决①设计程序界面②选取ProgressBar 控件③添加TXT文件二、模块之间的调用关系,或程序流程图三、部分程序关键源代码及注释Dim data(100, 3) As StringDim num As IntegerPrivate Sub Command1_Click(Index As Integer)Close #1Select Case IndexCase 0Open "d:\成绩.txt" For Append As #1Dim flag As BooleanFor i = 0 To 3If Text1(i) = "" ThenMsgBox "请确认学号,姓名,分数都已输入", vbOKOnly, "提示"flag = TrueNextIf Not flag ThenWrite #1, Text1(0).Text; Text1(1).Text; Val(Text1(2).Text); Val(Text1(3).Text) MsgBox "添加成功"End IfCase 1Picture1.ClsDim StrLine As String, a() As StringDim x As Integer, b As IntegerOpen "D:\成绩.txt" For Input As #1i = 0Do While Not EOF(1)Line Input #1, StrLineIf StrLine <> "" Thena() = Split(StrLine, ",")For j = 0 To 3data(i, j) = a(j)NextEnd Ifi = i + 1Loopnum = iFor x = 0 To numFor j = 0 To 3Picture1.Print data(x, j) + " ";NextPicture1.PrintNextCase 2Picture2.ClsOpen "d:\成绩.txt" For Input As #1While Not EOF(1)Line Input #1, StrLiness = ss + StrLine + vbCrLfWendPicture2.Print ssEnd SelectClose #1End SubPrivate Sub Form_Load()Open "D:\成绩.txt" For Append As #1Private Sub Form_Unload(Cancel As Integer)Close #1End Sub四、设计方案的完善及目前存在的问题1.设计方案要完善的地方①添加1个图片框和一个命令按钮控件,将命令按钮的caption属性设为“按平均分排序”。
课程题目学生成绩管理(五星)0摘要在数据化的今天,一个好的系统可以解决很多不必要的麻烦,而学生的成绩管理的任务繁杂有易错。
在本系统中有十分人性化的设计,可以解决一些比较繁重的文字输入、用户的一般操作错误,同时对信息的保存有比较独特的处理。
1 功能1.1 基本功能运行程序后,首先会显示登录界面,要求在输入数据库文件的正确密码后才能登录,登录密码输入错误时,就会显示如图消息框提示重新输入,清除原输错的密码,若没有正确地密码,无论怎样都无法打开数据库。
(2)通过密检后,进入到主窗口,窗口中以表格的形式显示数据库中所有学生的姓名、院系、专业、年级、和四门课的课程成绩(数据多时会添加滚动条),但是对个人信息等不可以修改。
修改成绩时,同时修改时只能输入0~100的分数,输入其他符号或者分数超界是分别会出现相应的提示,并还原成绩。
在工具栏上点击“添加”时,会弹出添加窗体(下左),可其中相应位置输入学生的基本信息,但在若信息未输入完全时,又会弹出提示框。
在基本完全输入后,点击确定,数据被添加到主表格中,然后可以在表格中输入各科成绩。
(4)点击“查询”按钮,弹出查询窗体(如上右),这时选择想要查询的信息,点击“确定”回到主窗体,此时表格上显示的即为符合条件的学生信息。
在查询中,三个信息可以指定也不指定,若均不指定即为查取所有学生信息,若三个信息条目未全选择的话,可以“深入查询”,即在已经显示的信息中进一步查询。
若不想继续查询,可以点击“返回主页”返回到信息总表以进行下一步操作(亮点部分将介绍到)。
(5)单击“删除”可以删除光标所处的单元格横向信息(下右),或者通过鼠标拖动选定一连串的几行信息,再点击删除键进行多项删除。
(6)单击工具栏上的“图表”,弹出图表窗体,默认为二维条形图,可以通过选择右下角的选项框来选择用二维圆饼图或者三维条形图来显示表格中的学生各科成绩分布情况。
(7) 单击“更改密码”按钮,弹出改密码窗体,要求在输入正确的密码后才能输入新密码,否则弹出消息框,并清除旧密码框的输入。
VB程序设计课程设计报告班级:资工10902 班姓名:何睦序号:05指导老师:刘少华邵燕林王庆陈君华朱小龙目录1、课设的目的 (3)2、界面设计和功能设计 (3)3、系统功能实施 (12)4、系统功能设计 (19)5、总结和体会 (28)一、课设的目的1.通过本次课程设计,提高实践动手能力;2.通过本次课程设计,进一步理解计算机程序设计的思路与方法;3.通过本次课程设计,进一步熟练运用VB的语言元素和流程控制语句;4.通过本次课程设计,达到能熟练使用各种常见的VB控件,理解面向对象的思想;5.通过本次课程设计,熟悉用户界面的设计;6.通过本次课程设计,熟悉数据访问控件ADO及相关对象的使用,能基于ADO控件实现Access的数据访问与操纵;二、界面设计和功能设计1、下面的界面为用户登陆界面:用户名和密码均已设定,用户名为zg,密码为10902,只有输入正确,然后点击“登陆“按钮才能进入主界面。
如果用户名或密码三次输入错误,则系统自动退出。
当你点击“退出“按钮时,弹出一个对话窗,界面如下:在对话框上点击“是”按钮,则退出系统,如果点击“否”,则该界面不变。
2、当用户名和密码均输入正确,点击“登陆”按钮,进入主界面——“学生成绩管理系统”界面,该界面是其他子界面的入口,界面如下:3、进入主界面后,点击“学生管理(删除\添加)”,进入学生管理界面,界面如下:该界面上有一个ADO控件,用于连接数据库,当用户在六个文本框中输入数据时,点击“添加“按钮,可以将数据录入到数据库中,如果此时点击”删除“按钮,则刚才输入的数据就会被删除,点击”保存“按钮时,输入的数据就会自动保存在数据库里,点击”返回主窗体“按钮,该窗体消失,主窗体出现。
4、在主界面点击“各科成绩查询“按钮,出现如下界面:该界面有一个ADO控件,用来连接数据库,还有一个DataGrid控件,用来显示学生成绩的查询结果,当用户选择了要查询的科目和条件后,点击“查询“按钮,在DataGrid控件上就会显示出所查询的结果。
下面为输入条件后查询的结果——5、在主界面点击“姓名查询“按钮后,会出现如下界面:控件上显示所要查询的结果。
下面为输入条件后查询的结果——5、在主界面点击“班级查询“按钮后,会出现如下界面:在文版框中输入所要查询的班级,DataGrid控件上就会显示所要查询的结果。
下面为输入条件后查询的结果——6、在主界面上点击“各科成绩段查询“按钮后,会出现如下界面:点击“计算分数段统计“按钮后,就会出现所要查询的结果。
下面为查询的结果——7、在主界面点击“排名“按钮后,出现如下界面:在该界面上点击“排名“按钮后,在DataGrid控件上会显示出按成绩高低排名的结果,点击”清除排名“按钮后,刚才结果消失,显示原来结果。
下面为所现实的结果——8、在主界面点击“统计直方图“按钮后,出现如下界面:在该界面点击各个按钮后,就会出现与之相关科目的成绩统计直方图,下面为查询的结果——9、在主界面点击“优等生“按钮后,出现如下界面:点击按钮查询后,结果就会在界面上显示出来。
下面为所查询的结果——三、系统功能实施以上展示的是系统的所有界面,怎样才能让这所有的功能实现呢?数据库和ADO控件的使用便是其中的关键。
1、建立如下数据库(学号、姓名、班级、英语、数学、VB、总分、排名)2、建立如下图的所有界面:3、ADO 控件和DataGrid 控件以及数据库的连接步骤:(这一步在设计界面的同时完成)(1)、如何加载ADO 控件: 步骤1:步骤2:步骤3:各个界面的ADO控件如何连接数据库(分两步):步骤1:如下面界面中的5个步骤选中ADO控件Adodc1,点击鼠标右键选择属性,然后界面设置如下:控件绑定数据库的字段操作说明:属性设置说明:下面以学号为例,姓名、班级等都可参考此。
将学号对应的文本框Text1连接Adodc1显示数据库中的学号,需要设置DataSource和DataField两个属性,首先选中Text1文本框,并进行下面的两步操作,即可绑定数据库的学号字段。
设置DataSource:设置DataField:(2)、如何加载DataGrid控件控件DataGrid,可以实现数据的批量处理,该控件在控件库Microsoft DataGrid Control 6.0中。
说明:DataGrid控件属性设置四、系统功能设计系统功能的设计,其核心就是程序代码的编写过程,如何让让系统更加完善、界面更加友好呢,这就得益于代码的编写。
以下为各个界面所对应的代码——该界面代码如下:Private Sub Command1_Click()If Text1.Text = "zg" And Text2.Text = "10902" Thenmainfrm.Showdlfrm.HideElseMsgBox "用户名或密码错误,请重新输入", vbMsgBoxSetForeground, "系统提示!!" End IfStatic t As Integert = t + 1If t >= 3 Then EndEnd SubPrivate Sub Command2_Click()a = MsgBox("确定要退出本系统吗?", 3 + 32 + 256, "系统提示!!")If a = 6 ThenUnload MeEnd IfEnd Sub该界面代码如下:Private Sub Command1_Click()xsglfrm.ShowEnd SubPrivate Sub Command10_Click()ydsfrm.ShowEnd SubPrivate Sub Command3_Click()jszffrm.ShowEnd SubPrivate Sub Command4_Click()pmfrm.ShowEnd SubPrivate Sub Command5_Click()zftjtfrm.ShowEnd SubPrivate Sub Command6_Click()cjcxfrm.ShowEnd SubPrivate Sub Command7_Click()xmcxfrm.ShowEnd SubPrivate Sub Command8_Click()bjcxfrm.ShowEnd SubPrivate Sub Command9_Click()gkcjfrm.ShowEnd Sub该界面代码如下:Private Sub Command1_Click()Me.Adodc1.Recordset.AddNewEnd SubPrivate Sub Command2_Click()If Me.Adodc1.Recordset.RecordCount = 0 Or Me.Adodc1.Recordset.EOF Then Exit SubEnd IfMe.Adodc1.Recordset.DeleteMe.Adodc1.Recordset.MoveNextIf Me.Adodc1.Recordset.RecordCount = 0 ThenExit SubEnd IfIf Me.Adodc1.Recordset.EOF Then Me.Adodc1.Recordset.MoveLastEnd SubPrivate Sub Command4_Click()Me.Adodc1.Recordset.SaveEnd SubPrivate Sub Command5_Click()Unload Memainfrm.ShowEnd Sub该界面代码如下:Dim kc_条件As StringDim kc As StringPrivate Sub Command1_Click()kc_条件= Me.Text1Me.Adodc1.RecordSource = "select * from stu where " + kc + " " + kc_条件Me.Adodc1.RefreshEnd SubPrivate Sub Form_Load()kc_条件= ">=92"kc = "vb"End SubPrivate Sub Option1_Click()kc = "VB"End SubPrivate Sub Option2_Click()kc = "math"End SubPrivate Sub Option3_Click()kc = "English"End Sub该界面代码如下:Dim kc_条件As StringDim kc As StringPrivate Sub Command1_Click()kc_条件= Me.Text1Me.Adodc1.RecordSource = "select * from stu where " + kc + "='" + kc_条件+ "'" Me.Adodc1.RefreshEnd SubPrivate Sub Form_Load()kc = "name"End Sub该界面代码如下:Dim kc_条件As StringDim kc As StringPrivate Sub Command1_Click()kc_条件= Me.Text1Me.Adodc1.RecordSource = "select * from stu where " + kc + "='" + kc_条件+ "'" Me.Adodc1.RefreshEnd SubPrivate Sub Form_Load()kc = "class"End Sub该界面代码如下:Private Sub Command1_Click()Dim vb_A As IntegerDim vb_B As IntegerDim vb_C As IntegerDim vb_D As IntegerDim vb_E As IntegerDim Math_A As IntegerDim Math_B As IntegerDim Math_C As IntegerDim Math_D As IntegerDim Math_E As IntegerDim English_A As IntegerDim English_B As IntegerDim English_C As IntegerDim English_D As IntegerDim English_E As IntegerMe.Adodc1.RecordSource = "select * from stu where vb>=90"Me.Adodc1.Refreshvb_A = Me.Adodc1.Recordset.RecordCountMe.Text1 = vb_AMe.Adodc1.RecordSource = "select * from stu where vb>=80 and vb<90"Me.Adodc1.Refreshvb_B = Me.Adodc1.Recordset.RecordCountMe.Text2 = vb_BMe.Adodc1.RecordSource = "select * from stu where vb>=70 and vb<80"Me.Adodc1.Refreshvb_C = Me.Adodc1.Recordset.RecordCountMe.Text3 = vb_CMe.Adodc1.RecordSource = "select * from stu where vb>=60"Me.Adodc1.Refreshvb_D = Me.Adodc1.Recordset.RecordCountMe.Text4 = vb_DMe.Adodc1.RecordSource = "select * from stu where vb<60"Me.Adodc1.Refreshvb_B = Me.Adodc1.Recordset.RecordCountMe.Text5 = vb_EMe.Adodc1.RecordSource = "select * from stu where math>=90"Me.Adodc1.RefreshMath_A = Me.Adodc1.Recordset.RecordCountMe.Text6 = Math_AMe.Adodc1.RecordSource = "select * from stu where math>=80 and math<90" Me.Adodc1.RefreshMath_B = Me.Adodc1.Recordset.RecordCountMe.Text7 = Math_BMe.Adodc1.RecordSource = "select * from stu where math>=70 and math<80" Me.Adodc1.RefreshMath_C = Me.Adodc1.Recordset.RecordCountMe.Text8 = Math_CMe.Adodc1.RecordSource = "select * from stu where math>=60 "Me.Adodc1.RefreshMath_D = Me.Adodc1.Recordset.RecordCountMe.Text9 = Math_DMe.Adodc1.RecordSource = "select * from stu where math<60"Me.Adodc1.RefreshMath_E = Me.Adodc1.Recordset.RecordCountMe.Text10 = Math_EMe.Adodc1.RecordSource = "select * from stu where english>=90"Me.Adodc1.RefreshEnglish_A = Me.Adodc1.Recordset.RecordCountMe.Text11 = English_AMe.Adodc1.RecordSource = "select * from stu where english>=80 and english<90" Me.Adodc1.RefreshEnglish_B = Me.Adodc1.Recordset.RecordCountMe.Text12 = English_BMe.Adodc1.RecordSource = "select * from stu where english>=70 and english<80" Me.Adodc1.RefreshEnglish_C = Me.Adodc1.Recordset.RecordCountMe.Text13 = English_CMe.Adodc1.RecordSource = "select * from stu where english>=60"Me.Adodc1.RefreshEnglish_D = Me.Adodc1.Recordset.RecordCountMe.Text14 = English_DMe.Adodc1.RecordSource = "select * from stu where english<60"Me.Adodc1.RefreshEnglish_E = Me.Adodc1.Recordset.RecordCountMe.Text15 = English_EEnd SubPrivate Sub Form_Load()Text1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = ""Text5.Text = ""Text6.Text = ""Text7.Text = ""Text8.Text = ""Text10.Text = ""Text11.Text = ""Text12.Text = ""Text13.Text = ""Text14.Text = ""Text15.Text = ""End Sub该界面代码如下:Private Sub Command1_Click()Me.Adodc1.RecordSource = "select * from stu order by total desc" Me.Adodc1.RefreshMe.Adodc1.Recordset.MoveFirstFor i = 1 To Me.Adodc1.Recordset.RecordCountMe.Adodc1.Recordset.Fields("mc").Value = iMe.Adodc1.Recordset.UpdateMe.Adodc1.Recordset.MoveNextNext iEnd SubPrivate Sub Command2_Click()Me.Adodc1.Recordset.MoveFirstFor i = 1 To Me.Adodc1.Recordset.RecordCountMe.Adodc1.Recordset.Fields("mc").Value = NullMe.Adodc1.Recordset.UpdateMe.Adodc1.Recordset.MoveNextNext iEnd Sub该界面代码如下:Private Sub Command1_Click()Me.Adodc1.Refresh'填充表格数据MSChart1.RowCount = 1MSChart1.ColumnCount = Me.Adodc1.Recordset.RecordCountMe.Adodc1.Recordset.MoveFirstFor lngI = 1 To Me.Adodc1.Recordset.RecordCountMSChart1.Column = lngI'用Data属性向MSChart数据网格填充数据MSChart1.Data = Val(Adodc1.Recordset.Fields("vb").Value)MSChart1.ColumnLabel = Adodc1.Recordset.Fields("name").ValueAdodc1.Recordset.MoveNextNext lngIMSChart1.RowLabel = "VB成绩直方图"End SubPrivate Sub Command2_Click()Me.Adodc1.Refresh'填充表格数据MSChart1.RowCount = 1MSChart1.ColumnCount = Me.Adodc1.Recordset.RecordCountMe.Adodc1.Recordset.MoveFirstFor lngI = 1 To Me.Adodc1.Recordset.RecordCountMSChart1.Column = lngI'用Data属性向MSChart数据网格填充数据MSChart1.Data = Val(Adodc1.Recordset.Fields("math").Value)MSChart1.ColumnLabel = Adodc1.Recordset.Fields("name").ValueAdodc1.Recordset.MoveNextNext lngIMSChart1.RowLabel = "Math成绩直方图"End Sub该界面代码如下Private Sub Command1_Click()Dim vb As IntegerDim math As IntegerDim english As IntegerMe.Adodc1.RecordSource = "select * from stu where ((math+english+vb)/3>=90) or((math+english+vb)/3>=85 and (math=100 or english=100 or vb=100 ))or((vb+english+math)/3>=85 and ((vb>=95 and english >=95)or (english>=95 and math>=95)or ( math>=95 and vb>=95 )))and (mc<=3) and (vb>=60 and english>=60 and math>=60)"Me.Adodc1.RefreshEnd Sub五、总结和体会想来,当时那会儿听说要搞vb课程设计的时候,我可是相当激动啊,心想,学的东西终于可以用一用了。