ImageVerifierCode 换一换
格式:DOCX , 页数:35 ,大小:3.66MB ,
资源ID:9132508      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9132508.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(VB课程设计报告学生信息管理系统.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

VB课程设计报告学生信息管理系统.docx

1、VB课程设计报告学生信息管理系统Visual Basic课程设计报告 一、 题目简介 1二、设计思路与总体方案 6三、设计过程遇到的主要问题及解决方法 21四、设计中尚存的不足分析 22五、心得体会 25六、参考文献 26一、 题目简介 学生进入学校后,每个人有很多信息,例如:学号,姓名,出生年月,专业,所在院系,个人爱好等等,这些信息很杂乱,也很难一一理,清查询起来也很难,用学生信息管理对这些信息进行管理。本题目旨在设计与一个可对学生信息进行管理和查询统计的程序,维护学生的学号通过此程序的设计,可以加深我们对上学期的vb基础知识的印象,使理论升华为实际操作,同时也有助于我们培养合理化意识,用

2、电子记录的形式取代从前的手写记录,使得信息更加精准,不易丢失。题目的难度系数相对不高,但牵涉到众多的知识点,作为典型的多模块设计类型的题目,本程序涉及两个模块,主窗体和查询窗体。复习了上学期 我们所学的vb知识,自定义数据类型和动态数组,更加熟练的掌握了这两方面知识。在这一程序中,还要学会两个新控件MSFlexGird表格控件和DTPicker日期选择器的使用。MSFlexGrid却是这个程序编辑过程中最主要的控件,所以需要自学,还是有点难度的。 MSFlexGrid控件具有很强的数据组织能力和显示能力,但是其本身并无编辑数据的功能。本程序使用了文本框、DTPicker日期选择器控件和下拉式组

3、合框三个控件来协助数据编辑。如何协调三个编辑控件的显示和隐藏是本题目的难点。 题目提供了四个文本文件:“名族.txt”、“院系.txt”、“专业.txt”和“省份.txt”,其中的信息可供程序在显示编辑组合框时使用。每个名族。院系。专业和省份都有一个代号,为了缩减data.dat文件的大小,该文件中并未保存具体的名称,而是一个代号。程序要求实现如下功能(主要根据窗口由易到难的顺序来) (1)学生进入系统,进入登陆界面,系统要求学生输入学号和密码。(自加窗体)系统要求学生的密码和学号相同,若不相同,则显示以下界面系统要求学生的学号为纯数字,不得包含字母等,且学号为十位数,若不满足条件,则显示以下

4、界面学生输入正确的学号和密码后,系统会跳入主界面,如图所示(2)学生信息保存在随机访问文件data.dat文件中,该文件与可执行文件位于同一文件夹中。运行程序,显示图1所示界面,自动列出数据文件data.dat中保存的所有学生信息,每个学生占一行。程序使用了MSFlexGrid表格控件进行信息的组织和显示。用户一旦修改添加了学生信息会保存到data.txt文件中。 如果启动时程序为在当前目录中找到data.dat文件,则显示没有数据行的空表,允许用户添加学生信息并保存为data.dat文件。 (2)使用鼠标单击表格的某一单元格,则该格会突出显示,所在行为当前行。单击工具栏上的“插入”按钮在当前

5、行位置上插入一个新空行,单击“追加”按钮会在表格最后添加一个空行。使用“删除”按钮合一删除当前空行。 如下图所示: (3)无论是空格还是已有数据的格,都可以对其中的数据进行直接编辑,对于学号、姓名和高考分数三列数据使用文本框进行编辑;对于出生日期使用DTPicker控件进行编辑;对于性别、民族、院系、专业和省份等五列数据使用组合框控件编辑。 例如,下图所示:对数据进行编辑之后,单击“保存”按钮将编辑后的结果保存到data.dat 文件中。(4)选择“查询”按钮,弹出图所示的“查询”对话框。在“查询”对话框中可以组合多种文件夹来查询感兴的数据。如图所示,选择“性别”和“院系”并在性别中选择“男”

6、在院系中选择“机械工程学院”,表示查找所有机械工程学院男学生的信息。按“确定”按钮返回主窗口,所有满足条件的数据行一红色背景显示。 (5)在“查询”对话框中如图所示未选中的数据列表示该数据不加限制,该项后面用于输入详细信息的文本框和组合框是无效的。“学号”和“姓名”中可以输入完整的学号和姓名,也可以输入部分的学号和姓名。连续使用“查询”功能时,后一次的查询不会清除前一次查询的结果,二者会同时突出显示。如果在查询对话框中不指定任何条件会选择所有的数据行,如果单击了查询对话框中的“取消”按钮会取消所有数据行的突出显示。(6)如果用户对数据进行了修改,关闭程序是弹出如图所示的消息框加以提示.二、设计

7、思路与总体方案2.1标准模块Module1一、因为在整个过程中都涉及到学生信息的编辑,所以对于学生信息定义成全局级的自定义数据类型。同时民族、院系、专业、省份都是需要读入的,所以定义为动态数组。Public Type StudentInfo number As String * 8 Name As String * 8 Sex As Boolean Birth As Date Nation As Byte faculty As Byte subject As Byte Province As Byte Score As SingleEnd TypePublic num As IntegerPu

8、blic student() As StudentInfoPublic Modified As BooleanPublic EditMode As BooleanPublic faculty() As StringPublic Province() As StringPublic Nation() As StringPublic subject() As StringPublic conArr(9) As Control 另外由于保存过程中涉及到文件是否被修改,所以应该定义一个逻辑型变量Modified来标榜数据是否被修改,同时根据要求过程涉及到是否可以编辑,所以定义全局的逻辑型变量EditM

9、ode来标榜是否可以编辑。定义了一系列的动态数组,需要将其重新定义,将文件中的民族,专业、院系、省份的具体内容读入动态数组中,同时在启动程序时需要加载数据,表格要显示学生信息,而关闭时需要保存数据,所以编写了OpenData、SaveData两个全局过程方便调用。并且采用读随机文件的方式进行文件的读写,根据上学期所学知识,随机文件的特点使得使用自定义类型对其进行操作是非常方便的。Public Sub OpenData() Dim i As Integer Dim stu As StudentInfo num = 0 Erase student If Dir(App.Path & data.da

10、t) = Then Exit Sub End If Open App.Path & data.dat For Random As 1 Len = Len(stu) num = LOF(1) / Len(stu) For i = 1 To num ReDim Preserve student(i) Get #1, , student(i) Next Close #1 Modified = FalseEnd SubPublic Sub SaveData() Dim i As Integer Dim stu As StudentInfo If Dir(App.Path & data.dat) The

11、n Kill App.Path & data.dat End If Open App.Path & data.dat For Random As 1 Len = Len(stu) For i = 1 To num Put #1, , student(i) Next Close #1 Modified = FalseEnd SubPublic Sub OpenInfo() Dim i As Integer Dim n As Integer If Dir(App.Path & 院系.txt) Then i = 0 Open App.Path & 院系.txt For Input As 1 Do W

12、hile Not EOF(1) i = i + 1 ReDim Preserve faculty(i) Input #1, n, faculty(i) Loop Close End If If Dir(App.Path & 民族.txt) Then i = 0 Open App.Path & 民族.txt For Input As 1 Do While Not EOF(1) i = i + 1 ReDim Preserve Nation(i) Input #1, n, Nation(i) Loop Close End If If Dir(App.Path & 省份.txt) Then i =

13、0 Open App.Path & 省份.txt For Input As 1 Do While Not EOF(1) i = i + 1 ReDim Preserve Province(i) Input #1, n, Province(i) Loop Close End If If Dir(App.Path & 专业.txt) Then i = 0 Open App.Path & 专业.txt For Input As 1 Do While Not EOF(1) i = i + 1 ReDim Preserve subject(i) Input #1, n, subject(i) Loop

14、Close End IfEnd Sub2.2窗体模块frmlogin 由于本窗体为自加窗体,visuai basic 程序中添加窗体中选择登陆窗体,microsoft已提供部分代码Option ExplicitPublic LoginSucceeded As BooleanPrivate Sub cmdCancel_Click() LoginSucceeded = False Me.HideEnd SubPrivate Sub cmdOK_Click() If IsNumeric(txtUserName.Text) = True And Len(txtUserName.Text) = 10 T

15、hen If txtPassword = txtUserName.Text Then LoginSucceeded = True Me.Hide frmstudent.Show Else MsgBox 无效的密码,请重试!, , 登录 txtPassword.SetFocus SendKeys Home+End End If Else MsgBox 对不起,你不是本校学生!, 33, 错误End IfEnd Sub2.3 窗体主模块frmstudent一该窗体模块是本程序的主体,最上方是5个命令按钮控件,中间是MSFlexGrid控件,最下方是协助编辑的三个文本框控件,一个DTPicker控件

16、,5个下拉式组合框控件(根据提供的效果图进行设计)。下面是编辑窗体中除了5个命令按钮控件以外的主要程序的编写思路:1打开数据文件2加载显示信息的表格(包括设定表格的位置大小)3用表格显示数据文件中的信息4为各编辑控件赋值,同时因为控件较多,为了方便在各事件过程中对其进行编辑,使用对象型数组得到相应的控件5因为MSFlexGrid控件只能显示数据,并不支持用户直接进行编辑,编辑控件要编程才能实现。根据课程设计中介绍的方法,编辑MSFlexGrid控件的EnterCell和LeaveCell事件,使用户可以对表格中数据进行编辑。6由于一些事件过程不仅在一个事件中需要用到,在命令按钮控件等所表示的功

17、能中也会用到所以对其进行单独编写,方便调用。另外因为一些功能需要编写的代码太长,对其单独编写,然后调用,我认为可以使程序更有调理,结构更优。 所以我对ShowAll、UpdateCell、ClearEdit、GetNew(分别用于展示信息,将编辑控件中的内容赋给单元格、清除所编辑的内容,再添加和插入过程中使用编辑控件得到新的值)7. 对窗体关闭时的事件进行编辑8在结束时涉及到当表格里的数据被更改时需不需要保存的问题,所以对于编辑控件的change事件中,要加入modified值的判断9以下是我编写的代码的展示:Private Sub cbosex_Click() Modified = True

18、End SubPrivate Sub cbonation_Click() Modified = TrueEnd SubPrivate Sub cbofaculty_Click() Modified = TrueEnd SubPrivate Sub cbosubject_Click() Modified = TrueEnd SubPrivate Sub cboprovince_Click() Modified = TrueEnd SubPrivate Sub DTPbirth_Change() Modified = TrueEnd SubPrivate Sub Form_Load() Dim i

19、 As Integer Call OpenData Call OpenInfo MSFstudent.Rows = num + 1 Call ShowAll EditMode = True If MSFstudent.Rows 1 And MSFstudent.Cols 1 Then txtnumber.Text = MSFstudent.TextMatrix(1, 1) End If Set conArr(1) = txtnumber Set conArr(2) = txtname Set conArr(9) = txtscore Set conArr(3) = DTPbirth Set c

20、onArr(4) = cbosex Set conArr(5) = cbonation Set conArr(6) = cbofaculty Set conArr(7) = cbosubject Set conArr(8) = cboprovince conArr(4).AddItem 男 conArr(4).AddItem 女 For i = 1 To UBound(Nation) conArr(5).AddItem Nation(i) Next For i = 1 To UBound(faculty) conArr(6).AddItem faculty(i) Next For i = 1

21、To UBound(subject) conArr(7).AddItem subject(i) Next For i = 1 To UBound(Province) conArr(8).AddItem Province(i) Next Modified = FalseEnd SubPrivate Sub from_Resize() MSFstudent.Height = Me.ScaleHeight - MSFstudent.Top MSFstudent.Width = Me.ScaleWidthEnd SubPrivate Sub form_Unload(Cancel As Integer)

22、 Dim i As Integer If Modified Then i = MsgBox(数据已被编辑,退出前是否保存?, vbExclamation + vbYesNoCancel) Select Case i Case vbYes Call SaveData Case vbCancel Cancel = 1 End Select End IfEnd SubPrivate Sub MSFstudent_EnterCell() Dim i As Integer If Not EditMode Then Exit Sub If MSFstudent.MouseCol = 0 Or MSFstu

23、dent.MouseRow = 0 Then Exit Sub End If Select Case MSFstudent.col Case 4 To 8 With conArr(MSFstudent.col) .Top = MSFstudent.Top + MSFstudent.CellTop .Left = MSFstudent.Left + MSFstudent.CellLeft .Width = MSFstudent.CellWidth .Visible = True .SetFocus Select Case MSFstudent.col Case 4 If student(MSFs

24、tudent.row).Sex Then .ListIndex = 0 Else .ListIndex = 1 End If If Trim(MSFstudent.TextMatrix(MSFstudent.row, MSFstudent.col) = Then .ListIndex = -1 Case 5 .ListIndex = student(MSFstudent.row).Nation - 1 Case 6 .ListIndex = student(MSFstudent.row).faculty - 1 Case 7 .ListIndex = student(MSFstudent.ro

25、w).subject - 1 Case 8 .ListIndex = student(MSFstudent.row).Province - 1 End Select End With Case 3 With conArr(3) .Top = MSFstudent.Top + MSFstudent.CellTop .Left = MSFstudent.Left + MSFstudent.CellLeft .Width = MSFstudent.CellWidth .Height = MSFstudent.CellHeight If student(MSFstudent.row).Birth =

26、#12:00:00 AM# Then .Value = Date Else .Value = student(MSFstudent.row).Birth End If .Visible = True .SetFocus End With Case 1, 2, 9 With conArr(MSFstudent.col) .Top = MSFstudent.Top + MSFstudent.CellTop .Left = MSFstudent.Left + MSFstudent.CellLeft .Width = MSFstudent.CellWidth .Height = MSFstudent.

27、CellHeight .Text = MSFstudent.Text .Visible = True .SetFocus End With End SelectEnd SubPrivate Sub MSFstudent_LeaveCell() If Not EditMode Then Exit Sub Call UpdateCell(MSFstudent.row, MSFstudent.col) Call ClearEdit End SubPrivate Sub ShowAll() Dim i As Integer For i = 1 To num MSFstudent.TextMatrix(

28、i, 0) = i MSFstudent.TextMatrix(i, 1) = student(i).number MSFstudent.TextMatrix(i, 2) = student(i).Name If student(i).Birth = #12:00:00 AM# Then MSFstudent.TextMatrix(i, 3) = Else MSFstudent.TextMatrix(i, 3) = student(i).Birth End If If student(i).Sex Then MSFstudent.TextMatrix(i, 4) = 男 Else MSFstu

29、dent.TextMatrix(i, 4) = 女 End If If student(i).Nation 0 Then MSFstudent.TextMatrix(i, 5) = Nation(student(i).Nation) Else MSFstudent.TextMatrix(i, 5) = End If If student(i).faculty 0 Then MSFstudent.TextMatrix(i, 6) = faculty(student(i).faculty) Else MSFstudent.TextMatrix(i, 6) = End If If student(i

30、).subject 0 Then MSFstudent.TextMatrix(i, 7) = subject(student(i).subject) Else MSFstudent.TextMatrix(i, 7) = End If If student(i).Province 0 Then MSFstudent.TextMatrix(i, 8) = Province(student(i).Province) Else MSFstudent.TextMatrix(i, 8) = End If MSFstudent.TextMatrix(i, 9) = student(i).Score NextEnd SubPrivate Sub ExitEdit() EditMode = False Call UpdateCell(MSFstud

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1