ocus
ExitSub
EndIf
DimiAsInteger
Fori=0To8
IfInStr(1,EditStu(i).Text,"'",1)Then
MsgBox"添加的资料有非法字符(不允许输入'号)!",vbInformation
ExitSub
EditStu(i).SetFocus
EndIf
Next
检测数据完毕后,就开始对输入的数据进行操作,如果是添加新资料则判断是否存在该学生的资料,如果该学生信息已经存在则提醒用户该学生资料已经存在,反之则将该学生的资料添加到数据库中;如果是修改学生资料则在数据库中以学号为关键字搜索该学生的资料,然后将该学生的资料更新。
......
错误!未找到图形项目表。IfEditStu(0).EnabledThen
'添加资料
sqlstr="select*fromStuInfowhereSID='"&EditStu(0).Text&"'"
rs.Opensqlstr,con,1,1
IfNotrs.EOFThen
MsgBox"已经存在学号为"&EditStu(0).Text&"的学生资料,请重新输入!",vbInformation
EditStu(0).SetFocus
ExitSub
EndIf
rs.Close:Setrs=Nothing
sqlstr="insertinto
StuInfo(SID,SName,SGender,SPlace,SBirthday,SMinzu,SZhengzhi,SDormitory,SAddress,SCode,STel,SRemark)"
sqlstr=sqlstr&"values('"&EditStu(0).Text&"','"&EditStu(1).Text&"','"&Combo1.Text&"',"
sqlstr=sqlstr&"'"&EditStu(3).Text&"','"&EditStu(2).Text&"','"&Combo3.Text&"','"&Combo2.Text&"','"&EditStu(7).Text&"',"
sqlstr=sqlstr&"'"&EditStu(4).Text&"','"&EditStu(5).Text&"','"&EditStu(6).Text&"','"&EditStu(8).Text&"')"
Else
''修改资料
sqlstr="updateStuInfosetSName='"&EditStu(1).Text&"',SBirthday='"&EditStu(2).Text&"',SGender='"&Combo1.Text&"',"
sqlstr=sqlstr&"SPlace='"&EditStu(3).Text&"',SMinzu='"&Combo3.Text&"',SZhengzhi='"&Combo2.Text&"',SAddress='"&EditStu(4).Text&"',"
sqlstr=sqlstr&"SCode='"&EditStu(5).Text&"',STel='"&EditStu(6).Text&"',SDormitory='"&EditStu(7).Text&"',SRemark='"&EditStu(8).Text&"'"
sqlstr=sqlstr&"whereSID='"&EditStu(0).Text&"'"
EndIf
con.Executesqlstr
......
如果是添加新资料,操作完毕后则提示用户是否继续添加新资料,如果用户选择否则退出该窗体,反之则初始化该窗体,将各文本框的内容清空。
......
IfMsgBox("添加学号为"&EditStu(0).Text&"的学生资料成功!是否继续?",vbYesNo)=vbYesThen
Fori=0To8
EditStu(i).Text=""
Next
EditStu(0).SetFocus
Else
CallFrmstu.ListviewLoad(classid)
UnloadMe
EndIf
......
如果是修改学生资料,则提示用户修改成功,然后退出该窗体,并更新frmstu窗体中Listview的数据。
......
MsgBox"修改学号为"&EditStu(0).Text&"的学生资料成功!",vbInformation
CallFrmstu.ListviewLoad(classid)
UnloadMe
......
3.3.7学籍管理模块
该模块包括班级设置、学院/专业设置、课程设置和学生成绩管理四个功能。
在该模块中,我使用了Adodc控件和MSFlexGrid控件来实现其功能。
Adodc控件连接数据库的过程为先定义该对象的ConnectionString属性,在使用Adodc时再定义其RecordSource属性。
Adodc.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;
DataSource="&App.Path+"\student.mdb"
Adodc.RecordSource="select*fromResultwhereName='"&Text1.Text&"'
Adodc的使用方法:
添加新记录:Adodc.Recordset.AddNew
修改记录:Adodc1.Recordset.Update
删除记录:Adodc1.Recordset.Delete
3.3.8报表功能模块
报表设计在实践应用中很有实用性,同样,它也是一项细致的工作,没有太难的算法;当然要使其统计功能做得强大,还要有统计学的理论知识作指导。
此模块很简单,主要实现的是学生信息的预览、打印等功能。
默认的数据报表设计器包含如下内容:
1.报表标头包含显示在一个报表开始处的文本,例如报表标题、作者或数据库名。如果想把报表标头作为报表的第一页,设置它的ForcePageBreak属性为rptPageBreakAfter。
2.页标头包含在每一页顶部出现的信息,例如报表的标题。
3.分组标头/注脚包含数据报表的一个"重复"部分。每一个分组标头与一个分组注脚相匹配。标头和注脚对与数据环境设计器中的一个单独的command对象相关联。
4.细节包含报表的最内部的"重复"部分(记录)。详细部分与数据环境层次结构中最低层的Command对象相关联。
5.页注脚包含在每一页底部出现的信息,例如页数。
6.报表注脚包含报表结束处出现的文本,例如摘要信息或一个地址或联系人姓名。报表注脚出现在最后一个页标头和页注脚之间。
Microsoft数据报表设计器(MicrosoftDataReportDesigner)是一个多功能的报表生成器,以创建联合分层结构报表的能力为特色。同数据源(如数据环境设计器(DataEnvironmentDesigner)一起使用),可以从几个不同的相关表创建报表。除创建可打印报表之外,也可以将报表导出到HTML或文本文件中。
使用DataReport根据数据库中的记录来生成报表,需要完成以下步骤:
1.置一个数据源,例如Microsoft数据环境,以访问数据库。
2.设定DataReport对象的DataSource属性为数据源。
3.设定DataReport对象的DataMember属性为数据成员。
4.右键单击设计器,并单击"检索结构"。
5.向每个相应的节添加响应的控件。
6.为每一个控件设定DataMember和DataField属性。
7.运行时,使用Show方法显示数据报表。
至此,整个学籍管理系统开发完成,单击VisualBasic6.0程序的"文件-->"生成学籍管理系统.exe",将该数据库程序编译生成可执行程序学籍管理系统.exe。对此执行文件进行测试,然后利用VisualBasic自带的打包向导工具Package&DeploymentWizard来发布该系统,之后即可利用生成的Setup.exe文件进行学籍管理系统程序的安装。
第四章心得体会
在毕业设计中,我们遇到的困难很多,在解决它们的同时我又学到了很多,获益非浅,特别是如何分析、建立、开发一个系统。
在一个系统开发的过程中编码不是重要的,重要的是分析系统、建立起系统模型。在分析一个系统前,分析人员必须要对将要开发的系统所涉及到的各方面知识有一个认识,然后将系统的模型建立起来。而且一个成功的软件要符合用户的需要,要以用户为中心,开发出用户想要的软件,而不能自以为是,想当然。
在程序编写中,我认识到软件要有简便的界面,良好的程序风格,完备的文挡。拥有这些条件,程序的可读性才会好,开发的复杂度才能大大减少,修改代码时更加容易下手。
我认为,所谓良好的界面,就是用户需要的界面,力求简便全面。所以设计一个界面时,开发人员必须要了解用户的想法,从用户的角度去设计,当然,开发不能全听用户的意见,在详细分析了系统后,开发人员可以向用户提出一些修改的意见,在双方多次交流后定出程序所需的功能,以决定界面的实现。
在编码中,良好的编程风格与习惯是提高工作效率的一个重要方面,而且良好的编程风格与习惯也是使软件便于维护的基础。那如何是良好的编程风格与习惯呢?我认为主要是程序的模块化、必要的注释和完备的设计文挡三个方面。所谓模块化就是使程序的功能实现分成多个单独的功能模块,而不能在一大段代码中实现多个功能,如果这样做,别的人是非常难读懂你的程序。必要的注释,显而易见是要在程序的编写中加入对程序的说明,原因就是为了别人能读懂你的程序,再一段时
上一篇:
学生学籍管理系统VB(论文和程序)
下一篇:
试析影响公路路面平整度的因素及应采取的施工措施