1、vb课程设计 学生管理系统长江大学工程技术学院 VB语言程序设计课程设计报告(2011-2012学年 第二学期) 系 (部)机械系 专业班级模具61001班学生姓名罗 健学号/序号201062378 / 22指导教师肖雪(助教)/刘刚(助教)完成时间2012年6月17日学生成绩管理系统一、功能描述学生成绩管理系统是一个学校必须需要的,这个系统对学校的管理有着重要的作用。单一的用人工手抄不但麻烦且对于查询、更新来讲也是很困难的。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。所以学生成绩管理系统可以通过计算机来实现,这
2、个学生管理系统主要有权限登录、编辑、查询功能。在编辑里可以进行添加、修改、删除等功能。其核心是数据库,系统设计以提高数据共享程度。很大程度的改善了用人工手工记录的不足,效率高,查询准确。二、概要设计 1、系统功能模块框图图1 系统流程图2、数据库设计2.1学生成绩管理系统数据库设计由于考虑到本系统的应用环境,只建立起一个数据库,在此数据库基础上建立如下三个基本表:学生表(表(1) :学号(idx_)、姓名、性别课程表(表(2):课程号(idx_)、课程名称、学时、学分成绩表(表(3) :学号、姓名、课程号、成绩2.2数据库逻辑结构设计(1)学生表结构:表(1)字段名字段类型字段长度学 号Tex
3、t9姓 名Text10性 别Boolean1(2)课程表结构:表(2)字段名字段类型字段长度课 程 号Text9课程名称Text10学 时Integer2学 分Integer2(3)成绩表结构表(3)字段名字段类型字段长度学 号Text9姓 名Text10课程号Text10成 绩Integer2三、 详细设计1.主界面(MDI)主界面为一个MDI窗口,有编辑菜单分别是“登录、编辑、查询、退出”当程序运行时主界面最先弹出,菜单中“登录”和“退出”是可用的,只有点击“登陆”登录后其余两个才可用。这个窗口还设置了MDI图片作为背景。(1) 窗体截图(如图1)图1(2) 功能实现(部分代码)Priva
4、te Sub DL_Click() land.ShowEnd SubPrivate Sub BJ_Click()edit.ShowDL.Enabled = FalseEnd SubPrivate Sub CX_Click()chaxun.ShowDL.Enabled = FalseEnd SubMDIForm1.ShowCX.Enabled = FalseBJ.Enabled = FalseEnd Sub2.登录界面(Land) 登录界面有两个按钮一个“确定”一个“取消”主要是实现进入编辑与查询界面。在text1中输入正确的账号“2010”输入正确的密码“12345”才能进入,否则提示“用户名
5、或密码错误”。(1)窗体截图(图2)图2(2)功能实现(部分代码)Private Sub Command1_Click() If Text1.Text = 2010 And Text2.Text = 12345 Then Load land MDIForm1.Show DIForm1.DL.Enabled = False MDIForm1.BJ.Enabled = True MDIForm1.CX.Enabled = True Unload landElse MsgBox 用户名或密码错误, 1, 密码错误 End IfEnd Sub3.编辑界面(Edit)编辑窗体里面有一个SSTab控件主要
6、实现3个信息的转换。有3个Data控件分别是Dataxues、Datakc、Datacj且分别与数据库里面的学生表、课程表、成绩表连接。窗体上面的text也相应的与数据库里面对应的信息连接从而实现运行是有学生成绩等信息的显示。上面还有7个按钮对学生的信息进行修改、添加、删除等。对学生成绩信息的更新起到了关键的作用。(1) 窗体的截图(图3(部分) 说明:这是未运行是的截图,在运行是Dtata控件是不可见的。图3 (2)功能实现(部分代码和部分属性截图)添加的代码:Private Sub Cmdtj_Click()Select Case Cmdtj.CaptionCase 添加Select Ca
7、se SSTab1.TabCase 0Dataxues.Recordset.AddNewCase 1Datakc.Recordset.AddNewCase 2Datacj.Recordset.AddNewEnd SelectSSTab1.TabEnabled(0) = FalseSSTab1.TabEnabled(1) = FalseSSTab1.TabEnabled(2) = FalseCmdtj.Caption = 确定Cmdxg.Enabled = FalseCmdsc.Enabled = FalseCmdsjl.Enabled = FalseCmdsyt.Enabled = False
8、Cmdxyt.Enabled = Falsecmdwjl.Enabled = FalseCase 确定Select Case SSTab1.TabCase 0Datakc.UpdateRecordCase 1Datacj.UpdateRecordCase 2Dataxues.UpdateRecordEnd Select SSTab1.TabEnabled(0) = True SSTab1.TabEnabled(1) = True SSTab1.TabEnabled(2) = True Cmdtj.Caption = 添加 Cmdxg.Enabled = True Cmdsc.Enabled =
9、 True Cmdsjl.Enabled = True Cmdsyt.Enabled = True Cmdxyt.Enabled = True cmdwjl.Enabled = True End SelectEnd Sub数据库的连接:Private Sub Form_Load()If Right(App.Path, 1) = ThenDataxues.DatabaseName = App.Path + mydb.mdbElseDataxues.DatabaseName = App.Path + mydb.mdbEnd IfDataxues.RecordSource = 学生表Dataxues
10、.RefreshOption1.Value = Dataxues.Recordset.Fields(性别).ValueDatakc.DatabaseName = Dataxues.DatabaseNameDatakc.RecordSource = 课程表Datakc.RefreshTextkch.DataField = 课程号Textkcm.DataField = 课程名称Textxshi.DataField = 学时Textxf.DataField = 学分Datacj.DatabaseName = Dataxues.DatabaseNameDatacj.RecordSource = 成绩表
11、Datacj.RefreshTextxh2.DataField = 学号Textkch2.DataField = 课程号Textxm2.DataField = 姓名Textcj.DataField = 成绩SSTab1.Tab = 0End Sub部分属性截图:其他Data与Text的属性类似。4.查询界面(chaxun) 查询界面主要实现学生系统的信息查询工作。有按照课程号和学号两种查询方式。其中用到了两个很关键的控件一个是DataGrid与Adodc。Adodc控件是与数据库连接信息在DataGrid中显示。窗体和具体属性见下图所示。窗 体Adodc属性截图:说明:代码见源代码。四、调试中
12、存在的问题及解决方法在调试工程中运行编辑这张表时学生信息的性别不会发生变化原因的分析:在查询中执行上一条和下一条时表中的数据性别是没有跟着一起变化的。解决办法:在上一条和下一条的代码中间加入这样的代码Private Sub cmdsyt_Click()- Option1.Value = Dataxues.Recordset.Fields(性别).ValueIf Option1.Value = False Then Option2.Value = True-使之和其他数据一样变化下去,最终达到正常。五、心得体会通过为期一星期的vb课程设计使我对vb这门课程在实际生活中的运用有了很深入的了解,感受
13、到数据库的强大功能使现实的有些工作变得更方便。在设计过程中,因为是大一学习的课程对有些知识有些陌生刚开始就觉得这个设计可能难度有些大还有些畏惧。但在老师的提醒回忆中有了希望。在设计中遇到过一些困难,要是以前一遇到困难肯定是第一时间问老师,这次不同这次遇到困难后写自己找办法解决除非是正的解决不了了才找老师,在这个寻知的过程中自己将问题解决了感觉十分舒爽。本系统的不足是在用户登录的权限方面有待改进,应该对编辑用户和查询用户进行权限,这样可能会更好。六、参考文献【1】罗朝盛.Visual Basic 6.0程序设计教程(第3版) M. 人民邮电出版社, 20092【2】邵洁.Visual Basic
14、 6.0程序设计(第4版)M.东南大学出版社,2009.1【3】 邵洁. Visual Basic 6.0 实验与测试(第4版).东南大学出版社,2008.2七、附录(源代码)1.主界面(MDI)Private Sub DL_Click()land.Showland.Height = 5500land.Width = 7150MDIForm1.Height = 6315MDIForm1.Width = 8340End SubPrivate Sub BJ_Click()edit.ShowDL.Enabled = FalseMDIForm1.Height = 6315MDIForm1.Width
15、= 8340End SubPrivate Sub CX_Click()chaxun.ShowDL.Enabled = FalseEnd SubPrivate Sub Form_Load()MDIForm1.ShowCX.Enabled = FalseBJ.Enabled = FalseEnd SubPrivate Sub MDIForm_Load()CX.Enabled = FalseBJ.Enabled = FalseEnd SubPrivate Sub TC_Click()EndEnd Sub 2.登录:Private Sub Command1_Click()If Text1.Text =
16、 2010 And Text2.Text = 12345 ThenLoad landMDIForm1.ShowMDIForm1.Height = 6315MDIForm1.Width = 8340MDIForm1.DL.Enabled = FalseMDIForm1.BJ.Enabled = TrueMDIForm1.CX.Enabled = TrueUnload landElseMsgBox 用户名或密码错误, 1, 密码错误End IfEnd SubPrivate Sub Command2_Click()EndEnd Sub3.编辑:删除:Private Sub Cmdsc_Click()
17、Dim i As Integeri = MsgBox(确定要删除此记录?, vbYesNo + vbExclamation + vbDefaultButton1, 编辑)If i = vbYes ThenSelect Case SSTab1.TabCase 0Dataxues.Recordset.DeleteDataxues.RefreshCase 1Datakc.Recordset.DeleteDatakc.RefreshCase 2Datacj.Recordset.DeleteDatacj.RefreshEnd SelectEnd IfEnd Sub首记录:Private Sub cmds
18、jl_Click()Select Case SSTab1.TabCase 0Dataxues.Recordset.MoveFirstCase 1Datakc.Recordset.MoveFirstCase 2Datacj.Recordset.MoveFirstEnd SelectCmdsjl.Enabled = FalseCmdsyt.Enabled = Falsecmdwjl.Enabled = TrueCmdxyt.Enabled = TrueEnd Sub下一条:Private Sub cmdsyt_Click()Select Case SSTab1.TabCase 0Dataxues.
19、Recordset.MovePreviousOption1.Value = Dataxues.Recordset.Fields(性别).ValueIf Option1.Value = False Then Option2.Value = TrueIf Dataxues.Recordset.BOF ThenDataxues.Recordset.MoveFirstCmdsjl.Enabled = FalseCmdsyt.Enabled = FalseCmdxyt.Enabled = Truecmdwjl.Enabled = TrueEnd IfCase 1Datakc.Recordset.Move
20、PreviousIf datkc.Recordset.BOF Thendatkc.Recordset.MoveFirstCmdsjl.Enabled = FalseCmdsyt.Enabled = FalseCmdxyt.Enabled = Truecmdwjl.Enabled = TrueEnd IfCase 2Datacj.Recordset.MovePreviousIf Datacj.Recordset.BOF ThenDatacj.Recordset.MoveFirstcmdyjl.Enabled = FalseCmdsyt.Enabled = FalseCmdxyt.Enabled
21、= Truecmdwjl.Enabled = TrueEnd IfEnd SelectEnd Sub添加:Private Sub Cmdtj_Click()Select Case Cmdtj.CaptionCase 添加Select Case SSTab1.TabCase 0Dataxues.Recordset.AddNewCase 1Datakc.Recordset.AddNewCase 2Datacj.Recordset.AddNewEnd SelectSSTab1.TabEnabled(0) = FalseSSTab1.TabEnabled(1) = FalseSSTab1.TabEna
22、bled(2) = FalseCmdtj.Caption = 确定Cmdxg.Enabled = FalseCmdsc.Enabled = FalseCmdsjl.Enabled = FalseCmdsyt.Enabled = FalseCmdxyt.Enabled = Falsecmdwjl.Enabled = FalseCase 确定Select Case SSTab1.TabCase 0Datakc.UpdateRecordCase 1Datacj.UpdateRecordCase 2Dataxues.UpdateRecordEnd SelectSSTab1.TabEnabled(0)
23、= TrueSSTab1.TabEnabled(1) = TrueSSTab1.TabEnabled(2) = TrueCmdtj.Caption = 添加Cmdxg.Enabled = TrueCmdsc.Enabled = TrueCmdsjl.Enabled = TrueCmdsyt.Enabled = TrueCmdxyt.Enabled = Truecmdwjl.Enabled = TrueEnd SelectEnd Sub尾记录:Private Sub cmdwjl_Click()Select Case SSTab1.TabCase 0Dataxues.Recordset.Move
24、LastCase 1Datakc.Recordset.MoveLastCase 2Datacj.Recordset.MoveLastEnd SelectCmdsjl.Enabled = TrueCmdsyt.Enabled = Truecmdwjl.Enabled = FalseCmdxyt.Enabled = FalseEnd Sub修改:Private Sub Cmdxg_Click()Select Case Cmdxg.CaptionCase 修改Select Case SSTab1.TabCase 0Dataxues.Recordset.editCase 1Datakc.Records
25、et.editCase 2Datacj.Recordset.editEnd SelectSSTab1.TabEnabled(0) = FalseSSTab1.TabEnabled(1) = FalseSSTab1.TabEnabled(2) = FalseCmdxg.Caption = 确定Cmdtj.Enabled = FalseCmdsc.Enabled = FalseCmdsjl.Enabled = FalseCmdsyt.Enabled = FalseCmdxyt.Enabled = Falsecmdwjl.Enabled = FalseCase 确定Select Case SSTab
26、1.TabCase 0Dataxues.UpdateRecordCase 1Datakc.UpdateRecordCase 2Datacj.UpdateRecordEnd SelectSSTab1.TabEnabled(0) = TrueSSTab1.TabEnabled(1) = TrueSSTab1.TabEnabled(2) = TrueCmdxg.Caption = 修改Cmdtj.Enabled = TrueCmdsc.Enabled = TrueCmdsjl.Enabled = TrueCmdsyt.Enabled = TrueCmdxyt.Enabled = Truecmdwjl
27、.Enabled = TrueEnd SelectEnd Sub下一条:Private Sub cmdxyt_Click()Select Case SSTab1.TabCase 0Dataxues.Recordset.MoveNextOption1.Value = Dataxues.Recordset.Fields(性别).ValueIf Option1.Value = False Then Option2.Value = TrueIf Dataxues.Recordset.EOF ThenDataxues.Recordset.MoveLastCmdsjl.Enabled = TrueCmds
28、yt.Enabled = TrueCmdxyt.Enabled = Falsecmdwjl.Enabled = FalseEnd IfCase 1Datakc.Recordset.MoveNextIf Datakc.Recordset.EOF ThenDatakc.Recordset.MoveLastCmdsjl.Enabled = TrueCmdsyt.Enabled = TrueCmdxyt.Enabled = Falsecmdwjl.Enabled = FalseEnd IfCase 2Datacj.Recordset.MoveNextIf Datacj.Recordset.EOF Th
29、enDatacj.Recordset.MoveLastCmdsjl.Enabled = TrueCmdsyt.Enabled = TrueCmdxyt.Enabled = Falsecmdwjl.Enabled = FalseEnd IfEnd SelectEnd Sub数据库连接:Private Sub Form_Load()If Right(App.Path, 1) = ThenDataxues.DatabaseName = App.Path + mydb.mdbElseDataxues.DatabaseName = App.Path + mydb.mdbEnd IfDataxues.RecordSource = 学生表Dataxues.RefreshOption1.Value = Dataxues.Recordset.Fields(性别).ValueDa
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1