学生学籍信息管理系统毕业设计.doc
学生学籍信息管理系统 专 业: 考籍号: 考生姓名: 指导老师: 通信地址: 邮政编码: 联系电话: 完成时间: 年 月目 录摘要21 问题描述31.1 背景31.2 数据分析32 解决方案42.1 E-R 模型设计42.2 数据表43 系统实现63.1 开发环境63.2 系统流程图63.3 程序主要功能界83.3.1 输入设计83.3.2 屏幕格式设计83.3.3 输出设计93.4 程序调试情况103.5 结论11结束语11参考文献12摘 要随着学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息也成倍增长。面对庞大的信息量,有必要开发学生学籍信息管理系统来提高学生管理工作的效率。通过这样的系统,可以做到信息的规范管理、科学统计和快速查询,从而减少管理方面的工作量。本学生学籍信息管理系统包括系统管理、查看和修改、信息录入、查询、打印报表五大模块本系统采用Visual Basic 6.0为开发工具,后台数据库采用Assecc 2000,操作系统为Windows XP。关键词:学生信息、管理系统、VB、ADO 1 问题描述学籍管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学籍管理系统应该能够为用户提供充足的信息和快捷的查询手段。1.1 背景 随着社会的发展,基本上所有的具有一定数量数据的企事业单位或机关部门都开始使用计算机数据库来做管理。当然几乎所有学校也都已经在使用计算机管理数据的机制,大大减少了学校学籍管理的工作量。该课程设计要求设计一个学籍管理的数据库系统,数据库中要求包含学生的基本信息,学校所有专业信息,学校教师信息以及课程设置的信息。同时还要设计它们之间的关系,如学生与课程关系和学生的成绩等,最后还要对一些数据进行查询,如查询学生成绩的各种集合等。我们通过该课程设计,应该达到的目的是把数据库理论知识更加的巩固加深,加强动手能力与实践能力,学以致用,与现实生活中的应用充分的结合起来。本系统主要包括学生信息查询、教务信息维护和学生选课三部分 1.2 数据需求 需求分析阶段的基本任务是要准确的定义新系统的目标,为了满足用户需要,回答系统必须“做什么”的问题。本阶段要进行以下几方面的工作:(1)问题识别。双方确定问题的综合需求,这些需求包括:功能需求、性能需求、环境需求、用户界面需求,还有可靠性、安全性、可维护性等方面的需求。(2)分析与综合,导出软件的逻辑模型。分析人员对获取的需求,进行一致性的分析检查,在分析、综合中逐步细化软件功能,划分成各个子功能。这里也包括对数据域进行分解,并分配到各个子功能上,以确定系统的构成及主要成份,并用图文结合的形式,建立起新系统的逻辑模型。(3)编写文档。编写“需求规格说明书”、编写初步用户使用手册、编写确认测试计划、修改完善软件开发计划。 2 解决方案 ( 或数据库系统设计 ) 2.1 E-R 模型设计 E-R图是一种数据模型,是按照用户的观点对数据建立的模型,它描述了从用户角度看到的数据,它反映了用户的现实环境,而与在软件系统中的实现方法无关。数据模型中包含3种相互关联的信息:数据对象、数据对象的属性及数据对象彼此间相互连接的关系。本系统各实体间的E-R图,如图2.1学生课程教师学号班级名字性别出生年月民族专业学课程号课程名称授课老师教姓名教授科目成绩 图2.1 E-R图2.2 数据表 用户信息表:超级用户表里存储了超级用户的信息包括:用户编号、用户名、密码,如表2.2.1字段名称数据类型UseID自动编号Password文本UseName文本表2.2.1 超级用户信息表学籍模块:该模块主要完成学生基本信息的录入、删除、更新等功能。在此模块中定义了十三个域名来进行学生的信息存储。如果用户修改某一记录中的某一项,可单击添加按钮进行学生记录的编辑。学生基本信息表:学生基本信息表里存储了学生的档案包括:学号、姓名、性别、班级、出生年月等信息,如表2.2.2列名数据类型长度允许空学号文本 班级文本 名字文本 性别文本 出生年月 日期/时间 民族文本 父母姓名文本 地址文本 邮政编码文本 电话号码文本 院系文本专业文本附注文本表2.2.2 学生基本信息表课程模块:该模块主要完成存储课程的所有信息及录入、删除、更新等功能。此模块主要有三个域名来进行学生课程信息的存储。课程信息表:课程信息表存储了课程的信息:课程号、课程名称、授课老师。如表2.2.3:列名数据类型长度允许空课程号 文本 课程名称 文本 授课老师 文本 表2.2.3课程信息表学生与课程表:成绩信息表里存储了学生的成绩包括:课程号、课程名称、学号、成绩及备注,如表2.2.4:列名数据类型长度允许空课程号 文本 课程名称 文本 学号 文本 备注 文本成绩 数字表2.2.4 学生与课程表3 系统实现 3.1 开发环境 编程又称程序,按照详细设计阶段产生的程序设计说明书,用选定的程序设计语言书写源程序。所以编写代码其实就是编写各窗口及控件的脚本。通过对各种实施环境和工具的比较,本系统采用的是Visual Basic 6.0软件开发工具。3.2 系统流程图 系统的组织结构图和系统流程图如图3.2.1和图3.2.2:学籍管理系统系统管理查看和修改信息录入查询打印报表修改密码添加用户添加成绩添加课程基本信息录入查询成绩查询基本信息学生自然情况学生各科成绩补考学生重新登陆 图3.2.1 系统的层次方框图教 师用 户数据库打印报表 查询成绩学生基本信息录入 打印机 维护统计班级注册成绩查询结果 成绩和学生档案打印 成绩录入 成绩维护 图3.2.2 系统的数据流程图 3.3 程序主要功能界面3.3.1 输入设计输入设计的目标是在保证输入信息正确性和满足需要的前提下,应做到输入方法简单、经济和方便使用者。为了保障系统的安全性,防止对系统资源非法使用和对信息和对信息资源的非法存取,本系统采用安全措施主要是确认与检验用户身份。登录界面如图3.1.1所示:图3.1.1用户登录窗口示意图用户通过身份验证后即可进入到主窗口。系统应用程序的主要功能都是在主窗口及其下打开的众多窗口中完成的。主窗口中显求本系统的主要功能。当用户通过鼠标进行选择后,系统在相应的窗口中继续选择相应的功能。3.3.2 屏幕格式设计本系统主要采用的是菜单、命令按钮和静态文本控件,点击按扭打开各个窗口。系统基本上满足了输入量保持在能满足处理要求的最低限度和尽早对输入数据进行检查以便使错误及时得到改正的要求。界面友好易于操作。下面以“查看和修改”窗口为例进行说明。(1)在进入主窗口后,点击“查看和修改”菜单,出现如图3.2所示界面:图3.2信息录入界面(2)在图中输入学生的基本信息、课程信息、学生成绩信息,然后单击添加按钮,将数据添加到数据库当中。3.3.3 输出设计输出设计的主要职责和目标是由计算机对输入的原始信息进行加工处理,形成数据输出可分为屏幕输出和打印输出。根据用户的要求,本系统设计了符合用户要求的输出界面,使用户在使用时能够得心应手,不会产生不适应性。并与打印机相连,可将信息打印输出。为打印数据源与打印输出格式,如图3.3 所示:图3.3打印界面3.4程序调试情况 系统测试是管理信息系统开发周期中一个十分重要而漫长的阶段。其重要性体现在它是保证系统质量与可靠性的最后关口,是对整个系统开发过程包括系统分析、系统设计和系统实施的最后审查。系统测试工作一般包括以下四个步骤:单元测试、组装测试、系统测试和验收测试。对软件进行测试的主要方法为人工测试和机器测试,前者又包括个人复查、走查和会审,而后者又包括黑盒测试和白盒测试。在本系统中,首先为各个数据库输入测试数据,然后对各部分,如表、窗口、控件等一起进行程序调试及功能测试,如发现错误后立即改正,直到正确通过后,将相关的部分连接起来,进行综合测试,逐步组合,直到整个系统调试成功 3.5 结论 对本系统作一个全面的评价:包括有何特点、存在的问题、改进意见等。 结束语 一、系统特色与创新(1)友好性。由于使用者为非计算机专业人员,故在设计中充分考虑这一点,采用图形界面,用户界面直观,简单易懂,便于操作,只需经过简单培训就能掌握。(2)系统的容错功能。在数据库系统的设计中有一个需要注意的问题,那就是系统的容错功能。一个好的系统要有准备应付不同的用户,因为用户在使用中是不可以能完全按照设计者的思路来进行操作的,刻板地要求用户按照设计者的思路来进行操作是不现实的。设计的系统要考虑适应不同的使用者,能够在用户错误的时后给以提示就本系统中的密码验证设置而言:用户登录对话框,输入了错误的密码。解决方式是:当检测到用户输入的密码与表中对应的密码字段不符时,显示一条错误信息,根据用户的选择,做出继续输入密码或退出系统的响应。二、系统局限与展望(1)由于时间紧促,系统的界面完成的比较粗糙,不是太美观。(2)网络功能欠缺,本系统只能在单片机上运行,不能实现网络连接,对分布于各地的管理人员和工作人员来说,其使用也有一定的局限性。希望在今后对系统不断完善,能支持网络数据的传输,实现资源共享。三、实施中遇到的挫折在整个管理信息系统的开发过程中,最令我困扰的是数据库查询功能的实现。数据库的连接就费了很大的周折,后经查阅资料和朋友的帮助,得以解决。四、体会与致谢通过这次学籍管理系统的设计,使我深深的了解到了设计管理信息系统以及任何一种类型系统所必须的设计思想和技巧,并掌握了Visual Basic的使用。通过实际的操作,对管理信息系统的开发、数据库的设计方面的知识有了一个整体的深刻的认识。参考文献1软件工程 张海藩 清华大学出版社 2005年2软件工程 王宜贵 机械工业出版社 2005年 3实用软件工程(英) (澳)Leszek A.Maciaszek 机械工业出版社 2005年 4软件工程(英) (英)Ian Sommerville 机械工业出版社 2005年 6VB 6.0信息系统设计与开发实例 黄明 机械工业出版社 2005年 7可视化编程应用-VB 6.0 杜秋华 康慧芳 人民邮电出版社 2004年 8数据库原理与技术(Access) 丁倩 中国电力出版社 2006年9Access数据库应用教程 申莉莉 机械工业出版社 2005年10Access 2002 专家(英)(美)Virginia Andersen 机械工业出版社 2002年 11Access 2003宝典(英) (美)Cary N.Prague 电子工业出版社 2004年附录:部分源代码清单 Dim rs As ADODB.RecordsetDim SD As BooleanPrivate Function checkclass() As Boolean '检测添加的课程是否重复On Error GoTo errh ' Adodc2.ConnectionString = "DRIVER=Microsoft Access Driver (*.mdb);" & _ "DBQ=db5.MDB;" & _ "DefaultDir=" & CheckPath(App.path) & "" & _ "UID=;PWD=;" Set rs = cn.Execute("SELECT 课程号 FROM 课程 WHERE 课程号='" & Trim(Text1.Text) & "'") ' Adodc2.RecordSource = "select * from 课程 where 课程号='" & Trim(Text1.Text) & "' and 课程名称='" & Trim(Text2.Text) & "' " If rs.EOF Then rs.Close checkclass = True Exit Function End If checkclass = False rs.Close Exit Functionerrh: rs.Close MsgBox Err.DescriptionEnd FunctionPrivate Sub Command1_Click()On Error GoTo errh If Text1.Text <> "" Then If Text2.Text <> "" Then If Text3.Text <> "" Then If checkclass Then Adodc1.Recordset.AddNew Adodc1.Recordset.Fields("课程号").Value = Text1.Text Adodc1.Recordset.Fields("课程名称").Value = Text2.Text Adodc1.Recordset.Fields("授课老师").Value = Text3.Text Adodc1.Recordset.Update Text1.Text = "" Text2.Text = "" Text3.Text = "" Text1.SetFocus MsgBox "添加成功!" 'Adodc1.Refresh Else MsgBox "课程重复,请另外输入一门课程!" Text1.SetFocus End If Else MsgBox "该项不能为空,请输入授课老师姓名!" End If Else MsgBox "该项不能为空,请输入课程名称!" End If Else MsgBox "该项不能为空,请输入课程号!" End If 'MsgBox("你的操作将关系到所有选这门课的学生,所有这门课的纪录将被删除,你确信吗?", vbOKCancel, "警告") = vbOK Then 'Adodc1.Recordset.Delete adAffectAllChapters ' 'Adodc1.Recordset.UpdateBatch adAffectAllChapters 'DataGrid1.ReBind Exit Suberrh: MsgBox Err.DescriptionEnd SubPrivate Sub Command15_Click() Unload MeEnd SubPrivate Sub Command2_Click()On Error GoTo errh If MsgBox("你的操作将会删除当前的纪录,你确信吗?", vbOKCancel, "警告") = vbOK Then If Text1.Text <> "" Then Set rs = New ADODB.Recordset rs.Open "SELECT * FROM 课程 WHERE 课程号='" & Trim(Text1.Text) & "' ", cn, adOpenDynamic, adLockOptimistic, adCmdText If rs.EOF Then rs.Close MsgBox "没有该课程,无法删除!", vbOKOnly + vbExclamation, "警告" Text1.Text = "" Exit Sub End If rs.Delete rs.Update rs.Close Text1.Text = "" Text2.Text = "" Text3.Text = "" Text1.SetFocus MsgBox "删除成功!" Else MsgBox "该项不能为空,请输入课程号!" End If End IfExit Suberrh: rs.Close MsgBox Err.DescriptionEnd SubPrivate Sub Form_Load()On Error GoTo errh MakeCenter DlgCourse 'Text1.SetFocus ' Adodc1.ConnectionString = "DRIVER=Microsoft Access Driver (*.mdb);" & _ "DBQ=学籍.MDB;" & _ "DefaultDir=" & CheckPath(App.path) & "" & _ "UID=;PWD=;" & _ "PASSWORD=197967yh" ' Adodc1.RecordSource = "SELECT * FROM 课程" ' Adodc1.Refresh ' DataGrid1.ReBind Exit Suberrh: MsgBox Err.DescriptionEnd Sub'Private Sub Form_Unload(Cancel As Integer)'On Error Resume Next ' Adodc1.Recordset.Close'End SubOption ExplicitPublic LoginSucceeded As BooleanPrivate Sub cmdCancel_Click() 'set the global var to false 'to denote a failed login LoginSucceeded = False Unload MeEnd SubPrivate Sub cmdOK_Click()On Error GoTo errh: Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset Set rs = cn.Execute("SELECT UserName , Password FROM 超级用户 ") If rs.EOF Then rs.Close Set rs = Nothing Unload Me Load FrmMain Exit Sub End If rs.MoveFirst '将指标移到第一笔记录。 Dim i As Integer '校验是否为超级用户 Do If rs.Fields("UserName") = txtUserName.Text Then If rs.Fields("Password") = txtPassword.Text Then UserType = True LoginSucceeded = True rs.Close If txtPassword.Text = "Admin" Then IsAdmin = True Unload Me Load FrmMain Exit Sub Exit Do End If End If rs.MoveNext '将指标移到下一笔记录。 Loop Until rs.EOF '校验是否为普通用户 Set rs = cn.Execute("SELECT 学号 FROM 学生 WHERE 学号 =" & "'" & txtPassword.Text & "'") If rs.EOF Then MsgBox "无效密码或用户名请重试!", , "Login" txtPassword.SetFocus SendKeys "Home+End" 'txtPassword获得焦点,并将txt控件中的文本内容全部选中 Else rs.Close UserType = False LoginSucceeded = True Unload Me Load FrmMain End If Exit Suberrh: MsgBox Err.DescriptionEnd SubPrivate Sub Form_Load() Dim s As String MakeCenter DlgLogin s = MakeConnection() '创建全局ADO连接 If s <> "OK" Then MsgBox s, , "错误!" Unload Me LoginSucceeded = False End IfEnd SubPrivate Sub Form_Unload(Cancel As Integer) If Not LoginSucceeded Then '如果登陆失败 cn.Close '释放连接 Set cn = Nothing End IfEnd SubPrivate Sub 学籍管理系统_Click()End SubOption ExplicitPublic addnewstate As BooleanPublic upok As BooleanPrivate Sub CancelButton_Click() Me.Hide upok = FalseEnd SubPrivate Sub Form_Paint() Text1.Text = "" Text2.Text = "" Text3.Text = "" End SubPrivate Sub OKButton_Click()On Error GoTo errh Dim rs As New Recordset 'If addnewstate Then If Text1.Text <> "" Then If Text2.Text <> "" Then If Text3.Text = Text2.Text Then rs.LockType = adLockOptimistic '开放式记录锁定(逐条)。提供者使用开放式锁定,只在调用 Update 方法时锁定记录。 rs.CursorType = adOpenKeyset '游标类型为键集游标,仅可查看其它用户更改的数据 rs.Open "超级用户", cn, , , adCmdTable 'adCmdTable 指示 ADO 生成 SQL 查询以便从在 Source 中命名的表中返回所有行。 rs.AddNew rs.Fields("Password").Value = Text2.Text rs.Fields("UserName").Value = Text1.Text rs.Update rs.Close Me.Hide upok = True MsgBox "添加成功" Else MsgBox "密码错误,请重新输入!" End If Else MsgBox "密码不能为空,请输入密码!" End If Else MsgBox "用户名不能为空" End If ' End If Exit Suberrh: MsgBox Err.DescriptionEnd SubPrivate Sub cmdOK_Click() Unload MeEnd SubPrivate Sub Form_Load() MakeCenter frmAboutEnd SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Label2(1).ForeColor = vbBlackEnd SubPrivate Sub Label2_Click(Index As Integer) Dim p As String p = "mailto:fuli830802" '文件名 Call ShellExecute(Me.hwnd, "open", p, 0, 0, SW_SHOWNORMAL) 'me.hwnd 是指窗体的句柄,在VB中可以直接用此语句取得窗体的句柄End SubPrivate Sub Label2_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) Label2(1).ForeColor = vbBlueEnd SubOption ExplicitDim rs As New ADODB.RecordsetPrivate Sub Command1_Click()On Error GoTo errhIf Combo1.Text <> "" Then If Combo2.Text <> "" Then If Text2.Text <> "" Then If Text3.Text <> "" Then If Combo3.Text <> "" Then If checkclass Then If checkcourse Then If match = True Then Adodc1.Recordset.AddNew Adodc1.Recordset.Fields("课程号").Value = Combo1.Text Adodc1.Recordset.Fields("学号").Value = Text2.Text Adodc1.Recordset.Fields("成绩").Value = Text3.Text Adodc1.Recordset.Fields("课程名称").Value = Combo2.Text Adodc1.Recordset.Fields("备注").Value = Combo3.Text Adodc1.Recordset.Update MsgBox "添加成功!" Combo1.Text = "" Combo2.Text = "" Combo3.Text = "" Text2.Text = "" Text3.Text = "" Else MsgBox "成绩和备注不匹配,请核对!" End If Else MsgBox "没有这个课程,不能添加!" Combo3.Text = "" Text2.Text = "" Text3.Text = "" Combo1.Text = "" Combo2.Text = "" Combo1.SetFocus End If Else MsgBox "这个成绩已经有了,不能再添加!"