毕业设计说明书范例(学生学籍管理系统论文)(共39页)_第1页
毕业设计说明书范例(学生学籍管理系统论文)(共39页)_第2页
毕业设计说明书范例(学生学籍管理系统论文)(共39页)_第3页
毕业设计说明书范例(学生学籍管理系统论文)(共39页)_第4页
毕业设计说明书范例(学生学籍管理系统论文)(共39页)_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PAGE PAGE 47XX职业技术(jsh)学院 毕业论文(b y ln wn)(设计)系 别专 业班 级姓 名学 号课 题指导教师【摘 要】学生学籍管理系统是典型的信息管理系统(MIS),其开发(kif)主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。经过分析,我使用 MICROSOFT公司的 VISUAL BASIC开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行

2、需求(xqi)迭代,不断修正和改进,直到形成用户满意的可行系统。【关键字:】控件 窗体 域 ABSTRACTThe system of managing student file is a typical application of managing information system (know as MIS),which mainly includes building up data-base of back-end and developing the application interface of front-end. The former required consisten

3、cy and integrality and security of data. The later should make the application powerful and easily used. By looking up lots of datum, I selected Visual Basic presented by Microsoft because of its objective tools in Win32. VB offered a series of ActiveX operating a database. It can give you a short c

4、ut to build up a prototype of system application. The prototype could be modified and developed till users are satisfied with it. Keywords:ActiveX Form Field 目 录1、前言 62、 系统(xtng)概述 711 开发(kif)背景712 学籍(xuj)管理系统概述713 开发环境及开发工具介绍7131开发环境 8132 开发工具93、 设计总体规划1121 数据库设计1122 设计流程图1123设计功能分析134、 设计具体实现 1431

5、 准备工作 1532 模块设计 1733 用户界面的实现 18331 登陆(dng l)界面(frmlogin) 19332 MDI主窗体(frmmain)20333 用户(yngh)管理窗体(frmmanage)18334 修改(xigi)密码窗体(frmchgPWD)24335 浏览学生信息窗体(frmstu)36336添加/修改学生信息窗体(frmAddstu)37337学生学籍管理模块 38338 报表功能模块39主要参考文献43 1、前 言学生学籍管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生学籍管理系统应该能够为用户提供充足的信息和快

6、捷的查询手段。但一直以来人们使用传统人工的方式管理文件学籍,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分,使用计算机对学生学籍信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生学籍管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。 因此(ync),开发

7、这样一套管理软件成为很有必要的事情,在下面的各章中将以开发一套学生学籍管理系统为例,谈谈其开发过程和所涉及到的问题及解决方法。2系统(xtng)概述21 开发(kif)背景211 当前(dngqin)趋势该学籍管理系统采用多层架构的系统,是真正适应教育信息化发展三大趋势的校园网络应用系统,全面支持Internet功能、远程访问功能,全部采用最先进的B/S(浏览器/服务器) 模式来开发,基本目标是在学校内部和外部建立起顺畅的信息通道,提高学校的管理水平和效率(xio l),以便克服了目前大部分学校的校园网建设只起到宣传作用的通病。212 用计算机管理学生学籍的意义 现在我国的中小学校中学籍的管理

8、水平还停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。作为一个计算机应用的本科生,希望可以在这方面有所贡献。改革的总设计师邓小平同志说过“科学技术是第一生产力”,我希望能用我多年的所学编制出一个实用的程序来帮助中小学进行更有效的学籍管理。归纳起来,好处大约有以下几点:1.可以存储历届的学生学籍,安全、高效;2.只需一到二名学籍录入员即可操作系统,节省大量人力;3.可以迅速查到所需信息。 22 学籍管理系统概述221 开展该系统的原因由于现今的学籍管理非常繁琐,行政人员付出大量的工作时间,得到的效

9、率很低。因此为提高工作效率,减轻校方人员的工作负担,决定开发学籍管理系统软件。 222 该工程的基本目标开发此学籍管理系统软件,以供教学人员及操作者进行学籍管理,方便操作者随时添加、查询、修改等。为了我们提高软件开发的能力,学习汉语编程的技巧,提高工作设计思想,通过本次的工程开发,开发小组成员与辅助老师,公司的技师交流,能从中学习知识吸取经验,再技术和软件思想上同时得到锻炼和提高,从而使总体水升到一个新的高度。23 开发环境以及开发工具介绍该软件是在Windows xp + Visual Basic 6.0 + SQL Server 2000的环境下完成的。下面就对这些(zhxi)开发工具进行

10、介绍:3 设计(shj)整体规划31数据库的设计(shj)在系统设计过程中,首先要建立的就是数据库。本数据库采用SQL Server 2000来构造,共使用了7个表,它们分别是用户信息表(UserInfo)、学生信息表(StuInfo)、班级信息表(Class)、专业信息表(Major)、学院信息表(Depart)、课程信息表(Lesson)、学生成绩表(Result)。用户信息表(UserInfo):字段名数据类型说明是否为空是否为关键字UserID文本用户名Not NullPrimary KeyUserPWD文本用户密码Not NullUserName文本姓名Not NullUserPow

11、er文本使用权限Not Null学生信息表(StuInfo):字段名数据类型说明是否为空是否为关键字SID文本学号Not NullPrimary KeySName文本姓名Not NullSGender文本性别Not NullSPlace文本籍贯Not NullSBirthday日期/时间出生日期Not NullSMinzu文本民族Not NullSZhengzhi文本政治面貌Not NullSDormitory文本寝室号码Not NullSAddress文本家庭住址Not NullSCode文本邮政编码Not NullSTel文本联系电话Not NullSRemark备注备注Not Null班

12、级信息表(Class):字段名数据类型说明是否为空是否为关键字ID文本班级代码Not NullPrimary Key专业(zhuny)信息表(Major):字段名数据类型说明是否为空是否为关键字ID文本专业代号Not NullPrimary KeyName文本专业名称Not Null学院(xuyun)信息表(Depart):字段名数据类型说明是否为空是否为关键字ID文本学院代号Not NullPrimary KeyName文本学院名称Not Null6课程(kchng)信息表(Lesson):字段名数据类型说明是否为空是否为关键字ID文本课程代号Not NullPrimary KeyName文

13、本课程名称Not NullTime文本课时Not NullMark 文本学分Not Null7学生成绩表(Result):字段名数据类型说明是否为空是否为关键字ID文本学生学号Not NullPrimary KeyName文本课程名称Not NullPrimary KeyScore文本分数Not NullRemark文本备注Not Null32设计流程图登陆表单(管理员或者普通用户身份登陆)Splash表单MDI主窗口(系统主窗口)管理学生学籍信息(学生基本信息管理,课程管理,专业/学院管理和考试成绩管理管理系统用户(添加,删除)对学生信息进行查找(按学号或姓名)返回查询信息管理员登陆重新登陆

14、 图2.1 系统(xtng)流程图33 设计(shj)功能分析系统开发的目标是实现学生学籍(xuj)管理的系统化、规范化和自动化,这是在用户要求的基础上提出来的,功能要求如下: (一)学生信息管理:能对学生信息进行添加、修改、删除。(二)课程管理:对课程进行添加、修改、删除操作。(三)专业/学院设置:(三)考试成绩管理:(四)查询学生信息:根据学号或姓名对学生信息进行精确/模糊查询(五)用户管理:定义使用本系统的用户名称及密码 4 设计具体实现经过需求分析、功能模块设计之后要进入详细设计阶段,本阶段将按系统的主要模块进行论述,重在阐述具体的某项功能的实现方法或运用到的相关技术。41 准备工作添

15、加引用:单击工程菜单中的引用选项,添加Microsoft ActiveX Data Objects 2.6 Library和Microsoft Excel 9.0 Object Library两个引用。添加部件:单击工程菜单中的部件选项,添加Microsoft ADO Data Control 6.0(OLEDB)、Microsoft Common Dialog Control 6.0(SP3) 、Microsoft FlexGrid Control 6.0、Microsoft Windows Common Controls 6.0(SP4)和Microsoft Windows Common

16、Controls-2 6.0五项。42 设计步骤421 登陆界面(frmlogin)因为(yn wi)本系统是按学籍管理的思想设计的,故而登陆部分主要完成密码校验、确定管理员等功能,对于密码本系统采用的是MD5算法。这里附上本程序的登陆界面,见图3.1。图3.1 用户(yngh)登陆界面在代码(di m)窗口的“通用”部分,定义一个模块级的公共变量loginno用来记录当前密码输入错误的次数Dim loginno As Integer在Form的Load事件中,将txtuser设置为焦点,初始化loginno。Private Sub Form_Load() loginno = 0 Me.Sho

17、w txtuser.SetFocusEnd Sub这里将“确定”和“取消”两个按钮作为一个按钮数组cmdOkCancel:确定按钮的index属性为0,取消按钮的index属性为1。利用SQL语句,在数据库中查询,如果查到相应的记录,则调用Case 0事件,用户的登陆获得通过,此时可以退出登陆窗口,并进入MDI主窗口,同时将用户类型和用户名分别传递到MDI主窗口和frmmanage中;如果没有相应的记录,则给出提示错误信息,同时将用户输入错误密码次数增加1,如果错误超过3次,则退出整个系统;若次数还没有超过3次,则提示用户重新输入。根据以上的设计,cmdOkCancel的Click事件的代码如

18、下:Private Sub cmdOkCancel_Click(Index As Integer) Select Case Index Case 0 Userid = Trim(txtuser.Text) Userpwd = MD5(Trim(txtPassword.Text) sqlstr = select * from UserInfo where UserID= & Userid & rs.Open sqlstr, con, 1, 1 If Not rs.EOF Then If rs(UserPWD) Userpwd Then 密码(m m)错误时 MsgBox 您输入(shr)的密码不

19、正确!, vbQuestion Me.Caption = 请输入(shr)用户名和密码: loginno = loginno + 1 当错误的密码次数达到3次时,不能登陆,退出! If loginno = 3 Then MsgBox 对不起,您不能使用该系统!请与管理员联系。, vbInformation Unload Me Exit Sub End If Else LoginUser = Userid 保存当前登陆用户名 LoginPower = rs.Fields(3) 将当前登陆用户的权限保存到LoginPower中 Unload Me frmflash.Show End If Else

20、 MsgBox 没有您输入的用户名!, 32 End If rs.Close: Set rs = Nothing Case 1 退出整个(zhngg)程序 Unload Me End SelectEnd Sub422 MDI主窗口(chungku)(frmmain)本系统采取多文档界面(MultiDocument Interface)。多文档界面是一种Windows用户界面标准。它有一个父窗口(chungku),在典型情况下,父窗口用来显示程序菜单以及包含子窗口。在工程中添加一个MDI窗口,取名为“frmmain.frm”,并为MDI窗体进行菜单和代码的设计,其运行界面如图3.2:图3.2 主

21、界面4221 菜单设计MDI主窗体是整个系统的容器,为了方便用户的使用,应设计相应的菜单和代码。4222 窗体代码设计1在代码窗口的通用部分,声明(shngmng)一个API函数用于打开帮助文件和调用Outlook发送邮件。Private Declare Function ShellExecute& Lib shell32.dll Alias ShellExecuteA (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpD

22、irectory As String, ByVal nShowCmd As Long)2判断(pndun)用户权限如果登陆的为普通用户(yngh)类型的用户,则用户不能使用“用户管理”这一功能,而对于管理员类型的用户,则没有此限制。所以在MDIForm的Load事件中需要判断用户类型。Private Sub MDIForm_Load() StatusBar.Panels(2).Text = 当前操作员: & LoginUser & & LoginPower & If LoginPower = 普通用户 Then filemenu11.Enabled = False Toolbar1.Butto

23、ns.Item(5).Enabled = False End IfEnd Sub3Form的QueryUnload事件当用户要退出MDI窗体时,需要在QueryUnload事件中询问用户是否真的要退出本系统;如果用户不要退出,则将Cancel置为1,取消整个退出过程。Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer) If MsgBox(确定要退出学生档案管理系统吗?是/否,vbYesNo+vbQuestion+ vbDefaultButton1) = vbNo Then Cancel = 1 En

24、d IfEnd SubQueryUnload和Unload事件当一个子窗体或一个Form对象关闭时,在那个窗体中的QueryUnload事件先于该窗体的Unload事件发生,Unload事件在Terminate事件之前发生。当一个应用程序关闭时,可使用QueryUnload或Unload事件过程将Cancel属性设置为True来阻止关闭过程。但是,QueryUnload事件是在任一个卸载之前在所有窗体中发生,而Unload是在每个窗体卸载时发生。在这两个事件中,均可将Cancel设置为任何(rnh)非零的值来防止窗体被删除。但Unload不能阻止其他事件,诸如从Microsoft Window

25、s操作环境中退出等;而QueryUnload事件则可以阻止从Windows中的退出。有介于此,通常来说都是在QueryUnload中询问用户是否要退出当前窗体。4“重新(chngxn)登陆”子菜单(ci dn)的代码当单击了“重新登陆”或者按下了“F2”键时,将会给出提示,如果用户在提示框中按下了“确定”按钮,则退出整个MDI主窗体,并显示登陆窗体。Private Sub filemenu15_Click()If MsgBox(若重新登陆,所有窗体都将关闭!是否重新登陆?, vbYesNo + vbQuestion, 重新登陆) = vbYes Then Unload Me Frmlogin.

26、Show End IfEnd Sub5“帮助主题”子菜单的代码调用Windows API函数,打开help.chm帮助文件。Private Sub filemenu21_Click() ShellExecute 0, open, App.Path & help.chm, , , 1End Sub6“给我发邮件”子菜单的代码如果用户单击了“给我发邮件”子菜单,则会调用API函数,调用Outlook。Private Sub filemenu22_Click() ShellExecute Me.hwnd, open, mailto:datou158, , App.Path, 1End Sub7当用户

27、单击查询学生资料菜单项或者按下F3键时,将会出现“查找学生”窗体,供用户查找满足特定要求的学生信息。Private Sub filemenu45_Click() 查找学生 frmstusearch.Show 1End Sub333 用户管理窗体(frmmanage)向项目中添加窗体,并命名为frmmanage.frm。窗体的控件设计如图3.3所示 图3.3 用户管理(gunl)界面如果登陆的用户类型是管理(gunl)员,用户管理一项是可用的,当单击该子菜单时,将会出现用户管理窗口,管理员可以对系统用户进行添加和删除操作。3331 窗体代码(di m)设计1定义一个整型变量DelNO用来存储当前

28、系统用户的数目,当DelNO=1时提示用户不能再删除用户。在该窗体的通用部分写如下代码: Dim DelNO As Integer2窗体加载时,初始化Listview用以显示系统用户列表,代码如下Private Sub Form_Load()初始化ListViewDim clmX As ColumnHeaderSet clmX = ListView.ColumnHeaders.Add(, , 用户名, ListView.Width / 3)Set clmX = ListView.ColumnHeaders.Add(, , 密码, ListView.Width / 6, 2)Set clmX =

29、 ListView.ColumnHeaders.Add(, , 姓名, ListView.Width / 4, 2)Set clmX = ListView.ColumnHeaders.Add(, , 用户权限, ListView.Width / 4, 2)Combo1.ClearCombo1.AddItem 普通用户Combo1.AddItem 超级用户Combo1.ListIndex = 0LoadOperatorEnd Sub其中(qzhng)调用了LoadOperator函数,该函数用来显示和刷新Listview中的数据Private Sub LoadOperator() On Erro

30、r Resume NextDim Listit As ListItemListView.ListItems.ClearListView.LabelEdit = lvwAutoListView.View = 3Dim ef As New ADODB.Recordsetsqlstr = select * from UserInfoef.Open sqlstr, con, 1, 1DelNO = ef.RecordCount Do While Not ef.EOF Set Listit = ListView.ListItems.Add(, , ef.Fields(UserID) Listit.Sub

31、Items(1) = * 隐藏用户的密码(m m),用*来替代。 Listit.SubItems(2) = ef(UserName) Listit.SubItems(3) = ef(UserPower) ef.MoveNext LoopSet ef = NothingEnd Sub3添加(tin ji)用户在Textbox中输入了相应的数据以后,按添加按钮则调用该按钮的Click事件,代码如下当单击“添加”按钮时,首先检查输入的用户名和密码是否为空,代码如下:Private Sub Command4_Click() If Trim(Text1.Text) = Then MsgBox 登陆(dn

32、g l)用户名不允许为空!, vbOKOnly + 48, 提示: Text1.SetFocus Exit SubEnd IfIf InStr(1, Trim(Text1.Text), , vbTextCompare) Then MsgBox 用户(yngh)姓名中有特殊字符 + ,请删除。, vbOKOnly + 48, 提示: Text1.SetFocus Exit SubEnd IfIf Trim(Text2.Text) = Then MsgBox 密码(m m)不能为空,请输入密码!, vbOKOnly + 48, 提示: Text2.Text = Text3.Text = Text2

33、.SetFocus Exit SubEnd IfEnd Sub如果不为空,则检查用户名是否有重复,需要打开系统信息表,Private Sub Command4_Click() sqlstr = select * from UserInfo where UserID= & Text1.Text & rs.Open sqlstr, con, 1, 1 End Sub如果当前记录不为空,则逐条记录检查是否有重复Private Sub Command4_Click()Userid = Trim(Text1.Text)Userpwd = MD5(Trim(Text2.Text)Username = Tr

34、im(Text4.Text)Userpower = Trim(Combo1.Text) DelNO = rs.RecordCount Do While Not rs.EOF rs.MoveNextLoop End Sub如果有重复,则提示已存在这个用户,然后将焦点设置给Text1,并将所有(suyu)的文本框清空。Private Sub Command4_Click() Do While Not rs.EOF If Text1.Text = rs.Fields(UserID) Then MsgBox 已经存在用户(yngh)名为 & Userid & 的用户帐号, vbInformation

35、Text1.SetFocus Exit Sub End If rs.MoveNextLooprs.Close: Set rs = NothingEnd Sub如果没有重复(chngf),再检查两次输入的密码是否一致,如果不一致,则提示“两次密码不一致”。Private Sub Command4_Click()If Trim(Text3.Text) Trim(Text2.Text) Then MsgBox 两次密码不相同,请重输入!, vbOKOnly + 48, 提示: Text2.Text = Text3.Text = Text2.SetFocus Exit SubEnd IfEnd Sub

36、如果以上全部正确无误的设置好了,则将新用户的信息添加(tin ji)到数据表中,并提示“添加(tin ji)新用户成功”。Private Sub Command4_Click()sqlstr = insert into UserInfo(UserID,UserPWD,UserName,UserPower) sqlstr = sqlstr & values( & Userid & , & Userpwd & , sqlstr = sqlstr & & Username & , &Userpower & )con.Execute sqlstr MsgBox 添加用户 & Text1.Text &

37、成功(chnggng), vbOKOnly, 添加系统用户 Text1.Text = Text2.Text = Text3.Text = Text4.Text = 更新列表 LoadOperatorEnd Sub4删除系统用户当用户双击ListView中的数据时,则会调用DeleteRecord()函数,如果系统用户只剩一个,则提示用户不能再删除;反之要求输入您想要删除的用户的密码,密码正确时才可以将该用户删除,密码错误时则不采取任何措施;最后调用LoadOperator显示并刷新Listview中的数据。根据以上的设计,DeleteRecord()的代码如下:Private Sub Dele

38、teRecord()删除用户操作On Error Resume NextIf ListView.SelectedItem.Selected Then If DelNO = 1 Then MsgBox 只剩下一个用户帐号,不允许再删除!, vbInformation ElseIf MsgBox(确定要删除用户名为& ListView.SelectedItem.Text & 的用户帐号吗?, vbYesNo + 32 + vbDefaultButton2) = vbYes Then sqlstr = select * from UserInfo where UserID= & ListView.S

39、electedItem.Text & rs.Open sqlstr, con, 1, 1 If MD5(InputBox(请输入(shr)该用户的密码:) = rs.Fields(UserPWD) Then sqlstr = delete from UserInfo where UserID= & ListView.SelectedItem.Text & con.Execute sqlstr Else MsgBox 对不起!您输入(shr)的密码不正确,删除该用户失败!, vbInformation End If LoadOperator End IfEnd Ifrs.Close: Set r

40、s = NothingEnd Sub5菜单(ci dn)设计在Listview中单击鼠标右键会调用ListView的MouseUp事件,出现右键菜单menuOpertor,具体实现如下:Private Sub ListView_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)If Button = 2 Then PopupMenu menuOperatorEnd IfEnd Sub实现该右键菜单各项功能的代码如下:Private Sub menuAdd_Click() 添加(tin ji)用户 Text

41、1.SetFocusEnd SubPrivate Sub menuDel_Click() 删除(shnch)用户 DeleteRecordEnd Sub334 修改(xigi)密码窗体(frmchgPWD)当用户要更改密码时,单击“系统选项/修改个人密码”菜单,弹出如图3.4所示窗体。在MDI主窗体编辑窗口中,单击“系统选项/修改个人密码”,添加如下代码:Private Sub filemenu12_Click() 修改密码界面 Frmchgpwd.Show 1End Sub图3.4 修改用户密码当用户输入完毕时,单击“确定”按钮,引发Click事件。这时,先检查两次输入的密码是否一致,如果不

42、一致,则提示用户,将焦点设置到第二个Text2控件,后面两个文本框清空,代码如下:Private Sub Command1_Click() Dim Oldpwd As String, pwd As String, confirmpwd As StringOldpwd = Trim(Text1.Text)pwd = Trim(Text2.Text)confirmpwd = Trim(Text3.Text)If Trim(pwd) Trim(confirmpwd) Then MsgBox 两次输入的密码不相同!, vbInformation Text2.Text = Text3.Text = Te

43、xt2.SetFocus Exit SubEnd IfEnd Sub如果密码一致,则判断输入的原密码是否正确,如果正确则将新密码写入数据库,这时需要一个字符串变量表达SQL语句,一个Recordset对象变量打开系统信息数据表。然后打开数据库,并将新密码写入,提示用户密码修改(xigi)成功。Private Sub Command1_Click()sqlstr = select UserPWD from UserInfo where UserID= & LoginUser & rs.Open sqlstr, con, 1, 1If Not rs.EOF Then If rs(UserPWD)

44、Oldpwd Then MsgBox 你输入(shr)的原密码不对!, vbInformation Text1.Text = Text2.Text = Text3.Text = Text1.SetFocus Exit Sub Else sqlstr = update UserInfo set UserPWD= & pwd & where UserID= & LoginUser & con.Execute sqlstr MsgBox 您的密码更新成功(chnggng),请牢记你的密码!, vbInformation Unload Me End IfElse MsgBox 异常错误!, vbInf

45、ormationEnd Ifrs.Close: Set rs = NothingEnd Sub修改(xigi)完毕后,单击“取消(qxio)”退出(tuch)此窗体。Private Sub Command2_Click() Unload MeEnd Sub335 浏览学生信息窗体(frmstu)在工程中添加一个窗体,命名为frmstu.frm,这里将使用frmstu窗体,来实现浏览学生信息的功能,该界面运行时如图3.5所示图3.5 浏览学生信息窗体在该窗体中,用户可以查看/修改学生的信息,还可以添加/删除学生信息,所以用一个Treeview和一个Listview分别显示班级列表和该班级下面的学

46、生列表,用Image和PictureBox来调整控件的大小。具体设置如表3.1所示 对象属性设置FormNameFrmstuCaption学生档案管理BorderStyle2-SizableMDIChildTrueWindowState2-MaximizedTreeviewStyletvwTreelinesPlusMinusPictureTextListviewFullRowSelectTrueGridLinesTrueMultiSelectFalseToolTipText双击显示详细资料ImageNameimgSplitPictureboxNameSliptBar表3.1 FrmStu中部分

47、(b fen)控件的属性当窗体启动时,需要在Treeview中加载班级列表(li bio),并初始化Listview中的标题。Private Sub Form_Load() Call TreeviewLoad Dim clmX As ColumnHeader Set clmX = ListView.ColumnHeaders.Add(, , 学 号, ListView.Width / 7) End Sub在Form_Load事件(shjin)中调用了TreeviewLoad函数,由于篇幅省略该函数的代码,具体实现见源程序。当窗体大小发生变化时,调用Form_Resize,调整Frmstu中控件

48、的大小。Private Sub Form_Resize()If WindowState 1 Then If Me.Height 3000 Then Me.Height = 3000 If Me.Width 3000 Then Me.Width = 3000 SizeControls imgSplit.LeftEnd IfListView.Width = Me.WidthListView.ListItems(0).Width = 5000End SubSub SizeControls(X As Single) On Error Resume Next 设置 Width 属性 If X (Me.W

49、idth - 1500) Then X = Me.Width - 1500 TreeView.Width = X imgSplit.Left = X ListView.Left = X + 50 ListView.Width = Me.Width - (TreeView.Width + 100) TreeView.Height = Me.ScaleHeight - 50 ListView.Top = TreeView.Top ListView.Height = TreeView.Height imgSplit.Top = TreeView.Top imgSplit.Height = TreeV

50、iew.HeightEnd Sub单击Treeview中的班级(bnj)号码则调用TreeView_NodeClick事件(shjin)和ListviewLoad事件在Listview中显示(xinsh)该班级下面学生的信息列表。Private Sub TreeView_NodeClick(ByVal Node As MSComctlLib.Node)正在导入数据,提示用户等待 Me.MousePointer = 11If Node.Tag = classid Then 开始在ListView中显示数据 classid = Left(Node.Text, 6) Call ListviewLoa

51、d(classid)ElseIf Node.Key = S Then Call SqlListview(SqlSearch)Else ListView.ListItems.ClearEnd IfEnd SubPublic Sub ListviewLoad(ByVal classid As String)Dim Listit As ListItemListView.ListItems.ClearListView.LabelEdit = lvwManualListView.View = 3Dim ef As New ADODB.Recordsetclassid = Left(classid, 6)

52、sqlstr = select * from StuInfo where SID like & classid & _ order by SIDef.Open sqlstr, con, 1, 1 Do While Not ef.EOF Set Listit = ListView.ListItems.Add(, , ef.Fields(SID) Listit.SubItems(1) = ef.Fields(SName) Listit.SubItems(2) = ef.Fields(SGender) Listit.SubItems(3) = ef.Fields(SMinzu) Listit.Sub

53、Items(4) = ef.Fields(SZhengzhi) Listit.SubItems(5) = ef.Fields(SDormitory) Listit.SubItems(6) = ef.Fields(SAddress) ef.MoveNext Loopef.Close: Set ef = NothingListView.SetFocusEnd Sub在显示该班级下面所有学生信息(xnx)的同时,用户可以对记录进行管理:添加新记录、编辑或者删除当前记录,为此在Listview中创建右键菜单,用来对记录进行操作。在本系统中,在系统默认情况下,班级编号(bin ho)作为学号的前面六位。

54、为了体现这一关系,需要将班级编号赋给显示学号的文本框。“添加(tin ji)”子菜单的Click事件的设计思路:用户单击“添加”子菜单时,调用frmmain中的“添加学生信息”子菜单显示FrmAddStu窗体,同时将Command1的Caption属性设置为“确定(&O)”。Private Sub pop3_Click() 添加学生资料 Call Frmstu.AddStuEnd SubPublic Sub AddStu()Call FrmAddStu.LoadStu(00000000)End Sub修改学生资料的Click事件的设计思路(sl)和添加学生资料的设计思路类似,但是由于只是对记录

55、进行修改,不需要调用AddNew操作,只要对数据进行Update操作即可。Private Sub pop4_Click() 修改(xigi)学生资料 Call Frmstu.ModifyStuEnd SubPublic Sub ModifyStu()显示(xinsh)窗口Dim EditNum As StringIf ListView.SelectedItem.Selected Then EditNum = CStr(ListView.SelectedItem.Text) Call FrmAddStu.LoadStu(EditNum)Else Exit SubEnd IfEnd Sub删除学生

56、资料的设计思路:在删除记录之前弹出询问框,确认用户是否真的要删除当前记录,如果用户选择了“是”,则删除该条记录,否则就不执行任何操作。在删除记录过程中,使用学生的学号作为关键字,调用Execute方法来删除当前记录。在删除了当前记录以后,需要重新移动当前记录;由于改变了当前记录集的内容,所以需要调用ListviewLoad子过程来刷新Listview中的内容。Private Sub pop5_Click() 删除学生资料 Call Frmstu.DelStuEnd SubPublic Sub DelStu()If ListView.SelectedItem.Selected Then If M

57、sgBox(确定要删除学号为 & ListView.SelectedItem.Text & 的全部资料吗!, vbYesNo + 32 + vbDefaultButton2) = vbYes Then sqlstr = delete from StuInfo where SID= & ListView.SelectedItem.Text & con.Execute sqlstr Call ListviewLoad(classid) End IfEnd IfEnd Sub学生信息包括了学号、姓名、出生日期、性别、家庭住址、联系电话等内容。在Listview中列出了各学籍信息的学号和姓名以供用户进

58、行(jnxng)导航,但是在实际管理中,还需要显示出某一条学生信息的详细列表。为此,设计详细信息框,来罗列用户的各种详细信息。当用户单击“显示(xinsh)该生详细资料”子菜单时,显示(xinsh)frmstuinfo窗体(图3.6),并以学生学号为关键字,将该学生的全部资料赋值给frmstuinfo中的对应文本框。图3.6 学生详细信息Private Sub pop1_Click() 显示详细资料 Call Frmstu.ListView_DblClickEnd SubPublic Sub ListView_DblClick()On Error Resume NextIf ListView.

59、SelectedItem.Selected Then SelectNum = ListView.SelectedItem.Text If SelectNum Then 显示出该生全部信息表单 Call frmstuinfo.LoadStuInfo(SelectNum) Else Exit Sub End IfEnd IfEnd Sub在frmstuinfo的代码窗口中添入以下(yxi)代码用来显示该学生的详细资料。Public Sub LoadStuInfo(StuNum As String)sqlstr = select * from StuInfo where SID= & StuNum

60、& rs.Open sqlstr, con, 1, 1 StuInfo(0).Caption = rs.Fields(SID) StuInfo(1).Caption = rs.Fields(SName) StuInfo(2).Caption = rs.Fields(SGender) StuInfo(3).Caption = rs.Fields(SZhengzhi) StuInfo(4).Caption = rs.Fields(SPlace) StuInfo(5).Caption = rs.Fields(SMinzu) StuInfo(6).Caption = rs.Fields(SBirthd

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论