为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

身份认证系统

2017-09-02 50页 doc 571KB 46阅读

用户头像

is_562397

暂无简介

举报
身份认证系统身份认证系统 学生管理系统对于学校的决策者和管理者来说都至关重要,是一个教育单位不可缺 少的管理工具,能够为用户提供充足的信息和快捷的查询手段。本学生管理系统是基于 VB技术的系统。包括个人情况模块、考勤模块、奖学金模块、等级考试模块、个人成绩 模块、选修成绩模块、个人交费情况模块、用于控制操作级别的用户管理模块。在这些 模块中,除了基本的删除、添加、查询外,有的模块还加了更加详细的查询内容。 :学生管理系统;模块;查询 I Abstract The student management system is vita...
身份认证系统
身份认证系统 学生管理系统对于学校的决策者和管理者来说都至关重要,是一个教育单位不可缺 少的管理工具,能够为用户提供充足的信息和快捷的查询手段。本学生管理系统是基于 VB技术的系统。包括个人情况模块、考勤模块、奖学金模块、等级考试模块、个人成绩 模块、选修成绩模块、个人交费情况模块、用于控制操作级别的用户管理模块。在这些 模块中,除了基本的删除、添加、查询外,有的模块还加了更加详细的查询内容。 :学生管理系统;模块;查询 I Abstract The student management system is vital for decision-makers and managers of schools. It is an indispensable management tool which can provide sufficient information and quick query measure for them. This student management system is based on VB technology, includes the individual situation module the checking attendance modulethe scholarship modulethe rank test modulethe individual performance module the choose course result modulethe individual paying-fee situation modulethe user management module. Basic functions such as delete, add and query are realized in these modulesand more detailed query contents are added in some of the modules. Keywords:The Sudent Mnagement System; Module; Query II 目 录 .....................................................1 1.1 菜单栏的设计....................................................2 1.2 工具栏的设计....................................................4 1.3 状态栏的设计....................................................5 ................................................7 2.1 个人情况模块....................................................7 2.2 考勤模块 ......................................................18 2.3 奖学金模块 . ....................................................25 2.4 等级考试模块 个人成绩模块 选修成绩模块 ....................29 2.5 个人交费情况...................................................37 2.6 用户管理模块...........................................39 2.7 登陆模块.......................................................43 2.8 ADO控件........................................................45 ......................................................46 ...................................................................47...............................................................48 第一章 界面设计 学生管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理 者来说都至关重要,所以学生档案管理系统应该能够为用户提供充足的信息和快捷的查 询手段。一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺 点:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新 和维护都带来了不少的困难。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识, 它已进入人类社会的各个领域并发挥着越来越重要的作用。使用计算机对学生档案信息 进行管理,具有手工管理无法比拟的优点。如:检索迅速、查找方便、可靠性高、存储 量大、保密性好、寿命长、成本低等,这些优点能够极大地提高学生档案管理的效率。 本学生管理系统包括个人情况模块、考勤模块、奖学金模块、等级考试模块、个人 成绩模块、选修成绩模块、个人交费情况模块、用于控制操作级别的用户管理模块。在 这些模块中,除了基本的删除、添加、查询外,有的模块还加了更加详细的查询内容。 1 1.1 菜单栏的设计 在窗体的标题栏下显示的是菜单栏,它包含一个或多个菜单标题。在程序运行时, 当用户选择某个菜单标题时会下拉出一个菜单,菜单中的菜单项可以是命令、选项、分 隔条或子菜单标题。每个菜单项都是一个控件,与其他控件一样也有自己的属性和事件。 菜单项的每个属性都能设置和查看,如name(名称)和caption(标题)属性等。每个菜单项只能响应一个事件,即Click事件。具体步骤如下: (1)在设计状态,选择工具“菜单下的菜单编辑器(Ctrl+E)”命令,会出现菜单编辑器窗口。 (2)在菜单设计窗口中,按下表对每一个菜单项输入标题、控制名称和相应的快捷 键。如表1-1菜单项的设计。 表1-1 菜单项的设置 菜单项 名称 快捷键 „系统管理 Xitong „添加用户 Useradd Ctrl+A „修改密码 Usermodi Ctrl+B „重新登陆 denglu2 Ctrl+F1 „_ e14 „退出 Exit Ctrl+A 考勤管理 Kaoqingguanli „考勤情况输入 Kaoqintianjia „考勤情况查询 Kaoqinchaxun „考勤记录删除 Kaoqinshanchu 学生档案管理 Dangan „档案浏览 Studentliulan Ctrl+G „档案删除 Studendelete „档案添加 Studentadd Ctrl+F „档案查询 Studentfind Ctrl+H 2 学生交费管理 Jiaofei „_ Ee „学生交费浏览 Jiaofeibrowse Ctrl+M „学生交费添加 Jiaofeiadd Ctrl+N „学生交费查询 Jiaofeifind Ctrl+O 选修课管理 Xuanxiukeguanli „选修成绩添加 xuanxiuchengjitianjia Ctrl+P „选修成绩删除 xuanxiuchengjishanchu „选修成绩查询 xuanxiuchengjichaxun 成绩与奖学金管理 Cjjxjguanli „奖学金管理 Jiangxuejin „„奖学金结果输入 Jxjtianjia „„奖学金结果删除 Jxjshanchu „„奖学金情况查询 Jxjchuxun „成绩管理 Cjguanli „„成绩删除 Chengjishanchu Ctrl+R „„成绩添加 Cjadd Ctrl+S „„成绩查询 Cjfind Ctrl+U 等级考试管理 Djksgl „等级考试查询 Djkschaxun „等级考试添加 Djkstianjia „等级考试删除 Djksshanchu 当完成所有输入工作后,选择“确定”命令按钮,就完成了整个菜单的建立工作, 然后给各个菜单的Click事件中写入代码。 3 1.2 工具栏的设计 工具栏是为用户提供了应用程序中最常用的菜单命令的快速访问,进一步增强 应用程序的菜单界面,工具栏制作的方法是将ToolBar、ImageList组合使用。创建工具栏的步骤是: (1)在ImageList控件中添加所需的图像。 ImageList控件不单独使用,专门为其他控件提供图像库,是一个图像容器控件。 在窗体上增加ImageList控件后,选中该控件,单击右键,从弹出的快捷菜单中选择“属 性”,然后在“属性页”对话框选择“图像”标签,在图像框中插入图像,每个图像的 属性见表1-2。 表1-2 控件属性的设置 ImageList控件属性 ToolBar控件按钮属性 索引关键字索引 样式(Style) 图像(Image) (Index) (Key) (Index) 1 tianjia 4 0 tianjia 2 chaxun 2 0 chaxun 3 sanchu 6 0 sanchu 5 jisuan 10 0 jisuan 6 guanbi 12 0 guanbi (2)在ToolBar控件中创建Button对象。 ToolBar控件中的每个按钮的图像都来自ImageList对象中插入的图像。 ?为工具栏连接图像 在窗体上增加ToolBar控件后,打开“属性页”对话框,选择“通用”标签,对其 各项进行设置,一般取默认值。 ?为工具栏增加按钮 在“属性页”对话框中选择“按钮”标签,单击“插入按钮”可以在工具栏增加按 钮,然后对各属性进行设置。 (3)在ButtonClick事件中用Select Case语句对各按钮进行相应的编程。 4 1.3 状态栏的设计 状态栏用来显示系统信息和对用户的提示。创建状态栏的步骤是: (1)建立状态栏 设计时,在窗体上增加Statusbar控件后,打开其“属性面”对话框,选择“窗格” 标签,设置5个窗格,各窗格属性设置如表1-3。 表1-3 Statusbar控件属性设置 索引 样式文本 说明 (Index) (Style) (Text) 1 sbrtext 学生管理系统 显示学生管理系统 2 sbrtext 显示当前操作员 显示当前用户是管理员还是普通 3 sbrtext 用户 4 sbrtext 显示开发该软件的组成人员 5 sbrtext 空白 (2)运行时改变状态栏 运行时,能重新设置窗格Panel对象以反映不同的功能,除第一个窗格外其它的窗 格都通过编 程来实现。 5 第二章 模块设计 本学生管理系统结构图,如图2-1所示: 等学 学 选 奖 成 用级考 生 生 修 学 绩 户考勤 交 档 课 金 管 管试管费 案 管 管 理 理管理 管 管 理 理 理 理理 图2-1 学生管理系统结构图 6 2.1 个人情况模块 个人情况模块有三个小的模块组成:修改与添加,删除,查询。 2.1.1 个人基本情况添加 界面如图2-2所示: 图2-2 个人信息添加 个人基本情况添加模块的设计思想是首先看输入的内容,即个人信息是不是空的。 如果是空的,则不允许添加;如果不是空的,那么在个人情况表与个人详细情况表中加 入界面上所输入的信息。 它的添加功能是用下面的代码实现的: If Trim(Text1) = "" Or Trim(Text2) = "" Or Trim(Text3) = "" Or Trim(Text4) = "" Or Trim(Text5) = "" Or Trim(Text6) = "" Or Trim(Text7) = "" Or Trim(Text9) = "" Or Trim(Text10) = "" Or Trim(Text11) = "" Then MsgBox "所有信息都不能为空!" Exit Sub End If Adodc1.RecordSource = "select * from jibenqingkuang" Adodc1.Refresh 7 Adodc1.Recordset.AddNew Adodc1.Recordset.Fields("学号") = Trim(Text1) Adodc1.Recordset.Fields("姓名") = Trim(Text2) Adodc1.Recordset.Fields("性别") = Trim(Text3) Adodc1.Recordset.Fields("班级") = Trim(Text4) Adodc1.Recordset.Fields("专业") = Trim(Text5) Adodc1.Recordset.Fields("年龄") = Val(Trim(Text6)) Adodc1.Recordset.Fields("出生日期") = Trim(Text7) Adodc1.Recordset.Fields("政治面貌") = Trim(Combo1.Text) Adodc1.Recordset.Update Adodc1.Recordset.Close Adodc1.RecordSource = "select * from xiangxiqingkuang" Adodc1.Refresh Adodc1.Recordset.AddNew Adodc1.Recordset.Fields("姓名") = Trim(Text2) Adodc1.Recordset.Fields("身份证号") = Trim(Text9) Adodc1.Recordset.Fields("生源所在地") = Trim(Text10) Adodc1.Recordset.Fields("家庭所在地") = Trim(Text11) Adodc1.Recordset.Update MsgBox "个人基本情况和详细情况的记录添加成功!" 8 2.1.2 个人基本情况的查询 界面如图2-3所示: 图2-3 基本情况查询 设计思想是先在条件中输入要查找的条件,然后按所输入的条件用SQL语言的 SELECT语句进行查询。在查询之前,要看看输入的条件是不是为空,如果为空,出现提 示,“没有输入条件,请输入!”然后,在根据姓名条件的精确或是模糊进行查询。查询 到的个人信息,放到具体的文本框中。它的四个按钮用来控制得到的记录集的上下移动。 中间自己定义了一个过程move1,用来更新文本框的数据。部分代码如下: 查询代码: Dim sql As String sql = "1" If Trim(Text1) = "" And Trim(Text2) = "" And Trim(Text3) = "" And Trim(Text4) = "" And Trim(Combo1.Text) = "忽略" And Trim(Combo2.Text) = "忽略" Then MsgBox "没有输入条件,请输入!" Exit Sub End If If Trim(Text1) <> "" Then If Option1.Value Then 9 sql = sql + " and 姓名='" & Text1 & "'" Else sql = sql + " and 姓名 like '%" & Text1 & "%'" End If End If If Trim(Text2) <> "" Then sql = sql + " and 年龄" & Trim(Combo3.Text) & Text2 & "" If Trim(Text3) <> "" Then sql = sql + " and 学号" & Trim(Combo4.Text) & "'" & Text3 & "'" If Trim(Text4) <> "" Then sql = sql + " and 班级='" & Text4 & "'" If Trim(Combo1.Text) <> "忽略" Then sql = sql + " and 专业='" & Trim(Combo1.Text) & "'" If Trim(Combo2.Text) <> "忽略" Then sql = sql + " and 性别='" & Trim(Combo2.Text) & "'" Adodc1.RecordSource = "select * from jibenqingkuang where " & sql Adodc1.Refresh If Adodc1.Recordset.EOF Then MsgBox "jibenqingkuang表,没有满足条件的记录!" Command3.Enabled = False Command4.Enabled = False Command5.Enabled = False Command6.Enabled = False Else Command3.Enabled = False Command4.Enabled = False Command5.Enabled = True Command6.Enabled = True move1 End If If Adodc1.Recordset.BOF Then 10 Command3.Enabled = False Command4.Enabled = False Else Command3.Enabled = True Command4.Enabled = True End If Command5.Enabled = True Command6.Enabled = True Adodc1.Recordset.MovePrevious move1 move1的代码如下: Text6.Text = Adodc1.Recordset.Fields("学号") Text7.Text = Adodc1.Recordset.Fields("姓名") Text8.Text = Adodc1.Recordset.Fields("性别") Text9.Text = Adodc1.Recordset.Fields("班级") Text10.Text = Adodc1.Recordset.Fields("年龄") Text11.Text = Adodc1.Recordset.Fields("专业") Text12.Text = Adodc1.Recordset.Fields("政治面貌") Text13.Text = Adodc1.Recordset.Fields("出生日期") Adodc2.RecordSource = "select * from xiangxiqingkuang where 姓名='" & Trim(Text7.Text) & "'" Adodc2.Refresh If Adodc2.Recordset.EOF = True Then MsgBox "xiangxiqingkuang表,没有满足条件的记录!" Exit Sub Else Text5.Text = Adodc2.Recordset.Fields("奖惩") Text14.Text = Adodc2.Recordset.Fields("身份证号") Text15.Text = Adodc2.Recordset.Fields("生源所在地") Text16.Text = Adodc2.Recordset.Fields("家庭所在地") 11 End If 另外,界面中还有一个修改按钮,是用来对数据库中的数据进行更正。如果不点这 个按钮,就不能对文本中的数据进行修改,修改之后还需点保存按钮,写到数据库中。 否则不能写到数据库中。 修改按钮代码如下: If gly = False Then MsgBox "你不是管理员,此按钮你不能使用!" Exit Sub End If If Command7.Caption = "修改" Then Text5.Locked = False Text8.Locked = False Text9.Locked = False Text10.Locked = False Text11.Locked = False Text12.Locked = False Text13.Locked = False Text14.Locked = False Text15.Locked = False Text16.Locked = False Command7.Caption = "保存" Else Text5.Locked = True Text8.Locked = True Text9.Locked = True Text10.Locked = True Text11.Locked = True Text12.Locked = True Text13.Locked = True Text14.Locked = True 12 Text15.Locked = True Text16.Locked = True Command7.Caption = "修改" Adodc1.Recordset.Fields("学号") = Text6.Text Adodc1.Recordset.Fields("姓名") = Text7.Text Adodc1.Recordset.Fields("性别") = Text8.Text Adodc1.Recordset.Fields("班级") = Text9.Text Adodc1.Recordset.Fields("年龄") = Text10.Text Adodc1.Recordset.Fields("专业") = Text11.Text Adodc1.Recordset.Fields("政治面貌") = Text12.Text Adodc1.Recordset.Fields("出生日期") = Text13.Text Adodc2.Recordset.Fields("奖惩") = Text5.Text Adodc2.Recordset.Fields("身份证号") = Text14.Text Adodc2.Recordset.Fields("生源所在地") = Text15.Text Adodc2.Recordset.Fields("家庭所在地") = Text16.Text Adodc1.Recordset.Update Adodc2.Recordset.Update End If 在浏览表中单击,浏览之后,就可以看到个人情况的所有资料。用上一条、下一条、 首条、末条四个按钮,就可以完成浏览操作。 删除个人情况的设计思想是,首先根据用户输入的查询条件(姓名可以是姓氏,也 可以是名字,也就是说可以进行精确的查询,也可以进行模糊的查询。学号也是,可以 根据是等于学号,还是一个范围来找一个人,还是一批人的信息。),找到要删除的人的 信息,然后询问用户是否真的要删除。用户回答是,就把用户有关的所有满足条件的记 录都删除。用户回答否之后,不进行任何操作。 13 2.1.3 个人情况删除 界面如图2-4所示: 图2-4个人情况删除 删除按钮的代码如下; Dim sql As String Text1 = Trim(Text1) Text2 = Trim(Text2) Text3 = Trim(Text3) Text4 = Trim(Text4) If Text1 = "" And Text2 = "" And Text3 = "" And Text4 = "" Then MsgBox "请输入条件! " Exit Sub End If sql = "1" If Trim(Text1) <> "" Then If Combo1.Text = "精确" Then sql = sql + " and 姓名='" & Text1 & "'" Else sql = sql + " and 姓名 like '%" & Text1 & "%'" End If 14 End If If Option1.Value Then If Text2 <> "" Then sql = sql + " and 学号='" & Text2 & "'" Else If Text3 <> "" Then sql = sql + " and 学号>='" & Text3 & "'" If Text4 <> "" Then sql = sql + " and 学号<='" & Text4 & "'" End If Adodc1.RecordSource = "select * from jibenqingkuang where " & sql Adodc1.Refresh If Adodc1.Recordset.EOF Then MsgBox "没有找到要找的信息!" Exit Sub End If n = MsgBox("如果要删除此人的基本情况,我们将把与此人有关的所有信息全部删除!", 36, "确定吗?") If n = vbYes Then Do While Not Adodc1.Recordset.EOF xm = Adodc1.Recordset.Fields("姓名") xh = Adodc1.Recordset.Fields("学号") Adodc1.Recordset.Delete Adodc1.Recordset.Update Adodc2.RecordSource = "select * from xiangxiqingkuang where 姓名='" & xm & "'" Adodc2.Refresh Do While Not Adodc2.Recordset.EOF Adodc2.Recordset.Delete Adodc2.Recordset.Update Adodc2.Recordset.MoveNext If Adodc2.Recordset.EOF Then Exit Do Loop 15 Adodc2.RecordSource = "select * from jianxuejin where 学号='" & xh & "'" Adodc2.Refresh Do While Not Adodc2.Recordset.EOF Adodc2.Recordset.Delete Adodc2.Recordset.Update Adodc2.Recordset.MoveNext If Adodc2.Recordset.EOF Then Exit Do Loop Adodc2.RecordSource = "select * from denjikaoshi where 学号='" & xh & "'" Adodc2.Refresh Do While Not Adodc2.Recordset.EOF Adodc2.Recordset.Delete Adodc2.Recordset.Update Adodc2.Recordset.MoveNext If Adodc2.Recordset.EOF Then Exit Do Loop Adodc2.RecordSource = "select * from kaoqinbiao where 学号='" & xh & "'" Adodc2.Refresh Do While Not Adodc2.Recordset.EOF Adodc2.Recordset.Delete Adodc2.Recordset.Update Adodc2.Recordset.MoveNext If Adodc2.Recordset.EOF Then Exit Do Loop Adodc2.RecordSource = "select * from xuanxiuchengji where 学号='" & xh & "'" Adodc2.Refresh 16 Do While Not Adodc2.Recordset.EOF Adodc2.Recordset.Delete Adodc2.Recordset.Update Adodc2.Recordset.MoveNext If Adodc2.Recordset.EOF Then Exit Do Loop Adodc2.RecordSource = "select * from xuefeiqingkuang where 学号='" & xh & "'" Adodc2.Refresh Do While Not Adodc2.Recordset.EOF Adodc2.Recordset.Delete Adodc2.Recordset.Update Adodc2.Recordset.MoveNext If Adodc2.Recordset.EOF Then Exit Do Loop Adodc2.RecordSource = "select * from xuexichengji where 学号='" & xh & "'" Adodc2.Refresh Do While Not Adodc2.Recordset.EOF Adodc2.Recordset.Delete Adodc2.Recordset.Update Adodc2.Recordset.MoveNext If Adodc2.Recordset.EOF Then Exit Do Loop Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then Exit Do Loop End If 17 2.2 考勤模块 考勤模块有三个小的模块组成分别为:添加、删除、查询与修改。 2.2.1考勤表的添加 界面如图2-5所示: 图2-5 考勤表添加 考勤表添加的设计思想是:首先要看看它的数据是不是完整,如果没有输入条件就 给出提示。第二步,看看添加的这个人,他是不是现在的在校学生;如果是,才能添加; 如果不是,就提示基本情况表中不存在此人,不能添加,并且退出此程序。第三步,看 是不是已经添加过了,如果添加过了的话,数据将会出现冗余。如果没有添加过,就可 [4]以进行添加了。添加成功之后,会出现一个提示:“‘学号’添加成功!”。 考勤表的添加按钮的代码如下: If Trim(Text1) = "" Or Trim(Text2) = "" Or Trim(Text3) = "" Then MsgBox " 请输入内容!": Exit Sub Adodc1.RecordSource = "select * from jibenqingkuang where 学号='" & Trim(Text1) & "'" Adodc1.Refresh If Adodc1.Recordset.EOF Then MsgBox "不能添加,在基本情况表中没有此人的 基本信息!": Exit Sub Adodc1.RecordSource = "select * from kaoqinbiao where 学号='" & 18 Trim(Text1) & "' and 第n周='" & Trim(Combo1.Text) & "' and 星期几='" & Trim(Combo3.Text) & "'" Adodc1.Refresh If Not Adodc1.Recordset.EOF Then MsgBox "考勤表中存在此学生此日的考勤情况,请重输入或在查询中修改!" Exit Sub End If Adodc1.RecordSource = "select * from kaoqinbiao " Adodc1.Refresh Adodc1.Recordset.AddNew Adodc1.Recordset.Fields("学号") = Trim(Text1) If Len(Trim(Combo1.Text)) > 3 Then Adodc1.Recordset.Fields("第n周") = Mid(Trim(Combo1.Text), 2, 2) Else Adodc1.Recordset.Fields("第n周") = Mid(Trim(Combo1.Text), 2, 1) End If Adodc1.Recordset.Fields("节次") = Trim(Combo2.Text) Adodc1.Recordset.Fields("星期几") = Trim(Combo3.Text) Adodc1.Recordset.Fields("总节数") = Trim(Text2.Text) Adodc1.Recordset.Fields("缺课事由") = Trim(Text3.Text) Adodc1.Recordset.Update MsgBox "学号:" & Trim(Text1) & " 添加成功!" 这个界面中的浏览按钮用来让用户查看添加之后的所有表中的信息。它可以把表单放 大,代码如下: Adodc1.RecordSource = "select * from kaoqinbiao " Adodc1.Refresh If Command3.Caption = "浏览" Then Form5.Height = 6030 Command3.Caption = "返回" Else 19 Form5.Height = 3165 Command3.Caption = "浏览" End If 2.2.2 删除模块 删除的设计思想和上一个模块的设计思想一样,都是先找到符合条件的记录。然后, 再进行删除。不过有一点不同的是,这个删除条件之间的关系,可以是并且的关系,也 可以是或者的关系。它用两个单选按钮来实现。 界面如图2-6所示: 图2-6 考勤表删除 核心代码如下: Dim sql As String If Option2.Value Then sql = " 1" If Trim(Text1) <> "" Then sql = sql + " and 学号='" & Trim(Text1) & "'" If Trim(Text2) <> "" Then sql = sql + " and 总节次='" & Trim(Text2) & "'" If Trim(Text3) <> "" Then sql = sql + " and 缺课事由='" & Trim(Text3) & "'" If Combo1.Text <> "忽略" Then If Len(Trim(Combo1.Text)) > 3 Then sql = sql + " and 第n周='" & Mid(Trim(Combo1.Text), 2, 2) & "'" Else sql = sql + " and 第n周='" & Mid(Trim(Combo1.Text), 2, 1) & "'" End If End If If Combo2.Text <> "忽略" Then sql = sql + " and 节次='" & Trim(Combo2.Text) 20 & "'" If Combo3.Text <> "忽略" Then sql = sql + " and 总节数=" & Trim(Combo3.Text) Else sql = " 0" If Trim(Text1) <> "" Then sql = sql + " or 学号='" & Trim(Text1) & "'" If Trim(Text2) <> "" Then sql = sql + " or 总节次='" & Trim(Text2) & "'" If Trim(Text3) <> "" Then sql = sql + " or 缺课事由='" & Trim(Text3) & "'" If Combo1.Text <> "忽略" Then If Len(Trim(Combo1.Text)) > 3 Then sql = sql + " or 第n周='" & Mid(Trim(Combo1.Text), 2, 2) & "'" Else sql = sql + " or 第n周='" & Mid(Trim(Combo1.Text), 2, 1) & "'" End If End If If Combo2.Text <> "忽略" Then sql = sql + " or 节次='" & Trim(Combo2.Text) & "'" If Combo3.Text <> "忽略" Then sql = sql + " or 总节数=" & Trim(Combo3.Text) End If Adodc1.RecordSource = "select * from kaoqinbiao where " & sql Adodc1.Refresh If Adodc1.Recordset.EOF Then MsgBox "没有满足条件的记录!请重输入。" Exit Sub Else Form7.Height = 5040 End If n = MsgBox("显示的为满足条件的记录,是否真的要全部删除!", 36, "删 除吗?") If n = vbYes Then Do While Not Adodc1.Recordset.EOF 21 Adodc1.Recordset.Delete Adodc1.Recordset.Update Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then Exit Do Loop MsgBox "成功删除!" End If 2.2.3 考勤表的查询 界面如图2-7所示: 图2-7 考勤表查询 考勤表的查询和个人情况表的查询设计思想是一样的。有一点不同的是,它也可以 进行模糊的查询与精确的查询。可以在表单界面的条件的关系框中进行选择。条件之间 的关系是同时,还是或者的关系。同样,再输入查询条件的时候,在文本框中,要不输 入数据的规范格式,要不然就不输入数据。不输入数据的话,就不按此项查询,只有输 入了,才按输入的数据进行查找。 查询的代码如下: Dim sql As String If Option2.Value Then sql = " 1" If Trim(Text1) <> "" Then sql = sql + " and 学号='" & Trim(Text1) & "'" If Trim(Text2) <> "" Then sql = sql + " and 总节次=" & Trim(Text2) If Trim(Text3) <> "" Then sql = sql + " and 缺课事由='" & Trim(Text3) & "'" If Combo1.Text <> "忽略" Then sql = sql + " and 第n周='" & Trim(Mid(Combo1.Text, 2, 2)) & "'" 22 If Combo2.Text <> "忽略" Then sql = sql + " and 节次='" & Trim(Combo2.Text) & "'" If Combo3.Text <> "忽略" Then sql = sql + " and 星期几='" & Trim(Combo3.Text) & "'" Else sql = " 0" If Trim(Text1) <> "" Then sql = sql + " or 学号='" & Trim(Text1) & "'" If Trim(Text2) <> "" Then sql = sql + " or 总节次=" & Trim(Text2) If Trim(Text3) <> "" Then sql = sql + " or 缺课事由='" & Trim(Text3) & "'" If Combo1.Text <> "忽略" Then sql = sql + " or 第n周='" & Trim(Mid(Combo1.Text, 2, 2)) & "'" If Combo2.Text <> "忽略" Then sql = sql + " or 节次='" & Trim(Combo2.Text) & "'" If Combo3.Text <> "忽略" Then sql = sql + " or 星期几='" & Trim(Combo3.Text) & "'" End If Adodc1.RecordSource = "select * from kaoqinbiao where " & sql Adodc1.Refresh If Adodc1.Recordset.EOF Then MsgBox "没有满足条件的记录!请重输入。" Exit Sub Else Command3.Enabled = True End If 进行查询之后,才可以进行“修改”工作。(必须单击修改按钮之后,才可以进行 修改。)在单击了修改按钮之后,还要看他是不是管理员,是管理员才能继续使用,不 是的话,出现提示,"你不是管理员,不能使用此项功能!"在单击了修改按钮的同时,它的名字就变为保存。修改完之后,再次单击,就可以把数据存入数据库,并且按钮的 名字变为修改。代码如下: If gly = False Then 23 MsgBox "你不是管理员,不能使用此项功能!" End End If If Command3.Caption = "修改" Then DataGrid1.AllowUpdate = True Command1.Enabled = False Command2.Enabled = False Command3.Caption = "保存" Else Adodc1.Recordset.Update DataGrid1.AllowUpdate = False Command1.Enabled = True Command2.Enabled = True Command3.Caption = "修改" End If 24 2.3 奖学金模块 2.3.1 查询模块 界面如图2-8所示: 图2-8 奖学金查询 奖学金查询模块的设计思想和考勤查询模块的设计思想是一样的。这里就不加详细 说明了,只把它的代码给出。如下所示: Dim sql As String If Option2.Value Then sql = " 1" If Trim(Text1) <> "" Then sql = sql + " and 学号='" & Trim(Text1) & "'" If Trim(Text2) <> "" Then sql = sql + " and 综合评定='" & Trim(Text2) & "'" If Trim(Text3) <> "" Then sql = sql + " and 成绩评定='" & Trim(Text3) & "'" If Trim(Text4) <> "" Then sql = sql + " and 奖学金=" & Trim(Text4) If Trim(Combo1.Text) <> "忽略" Then sql = sql + " and 学年='" & Trim(Combo1.Text) & "'" If Trim(Combo2.Text) <> "忽略" Then sql = sql + " and 学期='" & Trim(Combo2.Text) & "'" 25 Else sql = " 0" If Trim(Text1) <> "" Then sql = sql + " or 学号='" & Trim(Text1) & "'" If Trim(Text2) <> "" Then sql = sql + " or 综合评定='" & Trim(Text2) & "'" If Trim(Text3) <> "" Then sql = sql + " or 成绩评定='" & Trim(Text3) & "'" If Trim(Text4) <> "" Then sql = sql + " or 奖学金=" & Trim(Text4) If Trim(Combo1.Text) <> "忽略" Then sql = sql + " or 学年='" & Trim(Combo1.Text) & "'" If Trim(Combo2.Text) <> "忽略" Then sql = sql + " or 学期='" & Trim(Combo2.Text) & "'" End If Adodc1.RecordSource = "select * from jianxuejin where " & sql Adodc1.Refresh If Adodc1.Recordset.EOF Then MsgBox "没有符合条件的记录!请重新输入!" Exit Sub Else Command3.Enabled = True End if 下面要说的是奖学金查询模块加载时的特别之处。在这个界面中,有一个学年项, 此项是根据现在的时间,动态添加的。当前年份减去三,或二,或一来得到在校生的学 年情况。具体代码如下: Combo1.AddItem Trim(str(Year(Date) - 3)) & "-" & Trim(str(Year(Date) - 2)) Combo1.AddItem Trim(str(Year(Date) - 2)) & "-" & Trim(str(Year(Date) - 1)) Combo1.AddItem Trim(str(Year(Date) - 1)) & "-" & Trim(str(Year(Date))) Combo1.Text = Trim(str(Year(Date) - 3)) & "-" & Trim(str(Year(Date) - 2)) 26 2.3.2 奖学金的添加模块 奖学金添加模块的设计思想这里不再叙述,同考勤添加模块。 大家在界面中一定看到了浏览按钮。这个浏览按钮的意思是可以查看原来添加或是 刚才添加的数据。它可以把表单放大来实现。代码如下: Adodc1.RecordSource = "select * from jianxuejin " Adodc1.Refresh If Command3.Caption = "浏览" Then Form8.Height = 5220 Command3.Caption = "返回" Else Form8.Height = 2490 Command3.Caption = "浏览" End If 界面如图2-9: 图2-9 奖学金添加 27 2.3.3 奖学金删除模块 界面如图2-10所示: 图2-10 奖学金删除 奖学金删除模块的特别之处,是在看了删除的结果之后,不管删除不删除,都可以 把这个界面变小,不占用那么大的界面空间。实际上,它的代码很简单,只有一句如下: Form9.Height = 2760 这个模块的学年项,也是用动态代码来实现的。此处不再详细说明。 28 2.4 等级考试模块 个人成绩模块 选修成绩模块 2.4.1模块的查询 等级考试的界面如图2-11所示: 图2-11 等级考试查询 个人成绩的界面如图2-12所示: 图2-12 学习成绩查询 29 选修成绩的界面如图2-13所示: 图2-13 选修成绩查询 这三个模块在查询界面中都可以修改数据,并且设计思想是一样的。这里只说和别 的模块不一样的地方。在看界面2-12时一定发现个人成绩查询表单上的成绩排名与分 数段两个按钮。 2.4.1.1 成绩排名 界面如图2-14所示: 图2-14成绩排名表单 在这个表单中可以按学年查询某个课程的成绩排名情况。并且还可以对三年级要毕 业的同学的成绩来一个总的排名(只要选择第二个按钮就可以),点击查询按钮,就可 以把结果显示在右边的DATAGRID框中。查询三年总成绩的结果放在一个临时表中,在 退出的时候,把这个临时表删除。用的是ADODB来实现的。它的查询代码如下: Dim sql As String sql = "1" 30 If Option4.Value Then Adodc1.RecordSource = "select distinct 学号 from xuexichengji where 学 年='" & Trim(str(Year(Date) - 1)) & "-" & Trim(str(Year(Date))) & "'" Adodc1.Refresh If Adodc1.Recordset.EOF = False Then Adodc3.RecordSource = "select * from linshibiao" Adodc3.Refresh DataGrid1.Caption = "三年总成绩排名" Do While Not Adodc1.Recordset.EOF xh = Adodc1.Recordset.Fields("学号") Adodc2.RecordSource = "select sum(成绩) as 总成绩 from xuexichengji where 学号='" & xh & "'" Adodc2.Refresh Adodc3.Recordset.AddNew Adodc3.Recordset.Fields("学号") = xh Adodc3.Recordset.Fields("总成绩") = Adodc2.Recordset.Fields("总成绩 ") Adodc3.Recordset.Update Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then Exit Do Loop Adodc3.Refresh Adodc3.RecordSource = "select * from linshibiao order by 总成绩 desc" Adodc3.Refresh Exit Sub End If End If If Option3.Value Then If Trim(Combo3.Text) <> "忽略" Then sql = sql + " and 学年='" & Trim(Combo3.Text) & "'" 31 sql = sql + " and 考试科目='" & Trim(Combo4.Text) & "'" End If Adodc3.RecordSource = "select 学号,成绩 from xuexichengji where " & sql & " order by 成绩 desc" Adodc3.Refresh DataGrid1.Caption = Combo4.Text & "成绩排名" If Adodc3.Recordset.EOF Then MsgBox "没有符合条件的记录!请重新输入。" 它在退出时删除临时表且的代码如下: Dim mycon As ADODB.Connection Dim rs As ADODB.Recordset Set mycon = New ADODB.Connection Set rs = New ADODB.Recordset mycon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\xueshengguanli.mdb;Persist Security Info=False" mycon.Open rs.Open "delete from linshibiao ", mycon, 3, 3 MsgBox "成功删除!" chengjichaxun.Show Unload Me 32 2.4.1.2 分数段查询 界面如图2-15所示: 图2-15 分数段查询 分数段查询的设计思想是,根据输入的条件,就是学年与课程,还有分数来找到满 足条件的记录。如果没有找到满足条件的记录,就出现提示"没有要找的分数段!"。它 的代码如下: Dim sql As String sql = "1" sql = sql + " and 学年='" & Combo3.Text & "'" sql = sql + " and 考试科目='" & Combo2.Text & "'" If Text1 = "" Then MsgBox "请输入分数!": Exit Sub sql = sql + " and 成绩" & Combo1.Text & Trim(Text1) Adodc1.RecordSource = "select 学号,学期,成绩 from xuexichengji where " & sql & " order by 成绩" Adodc1.Refresh If Adodc1.Recordset.EOF Then MsgBox "没有要找的分数段!" 33 2.4.2 等级考试模块、个人成绩模块、选修成绩删除模块 2.4.2. 1 删除模块的界面 等级考试删除界面如图2-16所示: 图2-16 等级考试记录的删除 个人学习成绩删除的界面如图2-17所示: 图2-17 学习成绩删除 34 选修成绩删除的界面如图2-18所示: 图2-18 选修成绩删除 这三个表单的删除模块没有什么特别之后,也是用ADO来实现的。设计思想参照考 勤表的删除模块。此处不再详细说明。 2.4.3 等级考试模块、个人成绩模块、选修成绩添加模块 2.4.3.添加模块的界面 等级考试添加界面如图2-19所示: 图2-19 等级考试记录的添加 35 个人学习成绩添加和选修成绩添加的界面如图2-20所示: 图2-20 a) 学习成绩添加 图2-20 b) 选修成绩添加 设计思想是:在添加时,第一步,先看看是不是输入了完整无缺的数据,如果不是 的话,就出现提示,然后退出程序。第二步,查询一下是不是已经添加过了,如果没有 添加过,就进行第三步添加,如果添加过了,就告诉查询者此项数据已经添加过。下面 以个人学习成绩为例来说明,它的代码如下: If Trim(Text1) = "" Or Trim(Text2) = "" Or Trim(Text3) = "" Then MsgBox "学号,考试课程,成绩都不能为空!" Exit Sub End If Adodc1.RecordSource = "select * from jibenqingkuang where 学号='" & Trim(Text1) & "'" Adodc1.Refresh If Adodc1.Recordset.EOF Then MsgBox "基本情况表中不存在此学号,请重输入!" Exit Sub End If Adodc1.RecordSource = "select * from xuexichengji where 学号='" & Trim(Text1) & "' and 考试科目='" & Trim(Text2) & "'" Adodc1.Refresh If Not Adodc1.Recordset.EOF Then MsgBox "学习成绩表中存在此学号的考试科目成绩,请重输入或在查询中修改! " Exit Sub End If 36 Adodc1.Recordset.Close Adodc1.RecordSource = "select * from xuexichengji" Adodc1.Refresh Adodc1.Recordset.AddNew Adodc1.Recordset.Fields(0) = Trim(Text1) Adodc1.Recordset.Fields(1) = Trim(Combo1) Adodc1.Recordset.Fields(2) = Trim(Combo2) Adodc1.Recordset.Fields(3) = Trim(Text2) Adodc1.Recordset.Fields(4) = Trim(Text3) Adodc1.Recordset.Update MsgBox "记录添加成功!" Text1 = "000110" Text2 = "" Text3 = "" 在添加完一项之后,我们把文本框1、2、3清空,方便下次的输入。 2.5 个人交费情况 2.5.1 添加模块 界面如图2-21所示: 图2-21 交费管理添加 37 2.5.2 浏览模块 界面如图2-22所示: 图2-22 交费浏览 TreeView控件显示Node对象的分层列表,每个Node对象均由一个标签和一个可 选的位图组成。TreeView一般用于显示文档标题、索引入口、磁盘上的文件和目录或能 被有效地分层显示的其它各种信息。类似于Win95的资源管理器的界面就可以用该控件 来实现。 在设计时可以通过TreeView控件的属性页来指定控件的部分属性。在TreeView控件的属性中,比较重要的有如下属性: Add方法,该方法在TreeView控件的Nodes集合中添加一个Node对象,语法如下: TreeView1.Add(relative,relationship,key,text, image,selectedimage) 38 2.6 用户管理模块 需要说明一点的就是,用户管理这块,只有是管理员,才能进行这项操作。 2.6.1 添加模块 界面如图2-23所示: 图2-23 新用户添加 用户管理模块添加的设计思想是,先看看它输入的数据是不是完整,如果不完整, 给出提示。接着看两次输入的密码是不是一致,不一样的话,同样给出提示。如果这些 都满足,才向数据库中写入,并且写入的时候对密码进行加密。它的代码如下: Dim str As String If Trim(Text1) = "" Or Trim(Text2) = "" Or Trim(Text3) = "" Then MsgBox " 用户名与密码都不能缺少!": Exit Sub If Text2 <> Text3 Then MsgBox "两次输入的密码不一样!请重新输入。": Exit Sub i = 1 code = "" length = Len(Text2) Do While (i <= length) str = Mid$(Text2, i, 1) If (str >= "A" And str <= "Z") Then iasc = Asc(str) + 5 39 If iasc > Asc("Z") Then iasc = iasc - 26 code = Left$(code, i - 1) + Chr$(iasc) ElseIf (str >= "a" And str <= "z") Then iasc = Asc(str) + 5 If iasc > Asc("z") Then iasc = iasc - 26 code = Left$(code, i - 1) + Chr$(iasc) Else code = Left(code, i - 1) + str End If i = i + 1 Loop Adodc1.RecordSource = "select * from user1 " Adodc1.Refresh Adodc1.Recordset.AddNew Adodc1.Recordset.Fields("UserName") = Trim(Text1) Adodc1.Recordset.Fields("Password") = Trim(code) Adodc1.Recordset.Update MsgBox "已经添加成功!" 2.6.2 修改模块 界面如图2-24所示: 图2-24 修改密码 修改模块的设计思想是:首先输入旧密码,与两次新的密码。点了确定之后,按现 在登陆的管理员的名字和刚才输入的旧密码进行查询(查询时也要对密码进行加密), 40 如果找到了这个用户,就可以进行修改密码。没有找到的话,就视为非法用户,是不能 进行修改的。修改之后写入数据库时,还是要进行加密的。它的代码如下: Dim str As String If Trim(Text1) = "" Or Trim(Text2) = "" Or Trim(Text3) = "" Then MsgBox "密码都不能缺少!" Exit Sub End if i = 1 code = "" length = Len(Text1) Do While (i <= length) str = Mid$(Text1, i, 1) If (str >= "A" And str <= "Z") Then iasc = Asc(str) + 5 If iasc > Asc("Z") Then iasc = iasc - 26 code = Left$(code, i - 1) + Chr$(iasc) ElseIf (str >= "a" And str <= "z") Then iasc = Asc(str) + 5 If iasc > Asc("z") Then iasc = iasc - 26 code = Left$(code, i - 1) + Chr$(iasc) Else code = Left(code, i - 1) + str End If i = i + 1 Loop Adodc1.RecordSource = "select * from user1 where username='" & usename & "'" Adodc1.Refresh If Adodc1.Recordset.EOF Then MsgBox "你的旧密码不对!": Exit Sub If Text2 <> Text3 Then MsgBox "两次输入的密码不一样!请重新输入。": Exit 41 Sub i = 1 code = "" length = Len(Text2) Do While (i <= length) str = Mid$(Text2, i, 1) If (str >= "A" And str <= "Z") Then iasc = Asc(str) + 5 If iasc > Asc("Z") Then iasc = iasc - 26 code = Left$(code, i - 1) + Chr$(iasc) ElseIf (str >= "a" And str <= "z") Then iasc = Asc(str) + 5 If iasc > Asc("z") Then iasc = iasc - 26 code = Left$(code, i - 1) + Chr$(iasc) Else code = Left(code, i - 1) + str End If i = i + 1 Loop Adodc1.Recordset.Fields("Password") = Trim(code) Adodc1.Recordset.Update MsgBox "您已经修改成功!" 42 2.7 登陆模块 登陆模块的设计思想是先看登陆者的身份,是管理员还是学生。如果是学生的话, 不用输入任何信息就可以进行,不过就是操作受限制。如果你选择的是管理员的身份进 入,那么就要输入用户名与密码。两项都输入了之后,就可以进行登陆了,这时就要和 数据库连接看输入的是不是正确。你输入的用户名不存在,就会出现提示。如果输入密 码错误的次数过了三次,也是不能进入的。在和数据库连接查询时,也要对密码进行加 密。这样才能和数据库中的数据一致,密码才会正确。密码正确时,用户就可以以管理 员的身份进入,并且可以进行任何操作。用变量gly与usename来记录用户的身份与姓 名。 界面如图2-25所示: 图2-25 欢迎进入系统 它的代码如下: Dim str As String Static num As Integer If Option2.Value = True Then gly = False usename = "学生" MDIForm1.Show Unload Me Else If Trim(Text1) = "" Or Trim(Text2) = "" Then MsgBox "您是管理员,请输入用户名与 43 密码!": Exit Sub Adodc1.RecordSource = "select * from user1 where username='" & Trim(Text1) & "'" Adodc1.Refresh If Adodc1.Recordset.EOF Then MsgBox "对不起,用户名不存在呀!" Text1 = "" Text2 = "" Text1.SetFocus Exit Sub End If i = 1 code = "" length = Len(Text2) Do While (i <= length) str = Mid$(Text2, i, 1) If (str >= "A" And str <= "Z") Then iasc = Asc(str) + 5 If iasc > Asc("Z") Then iasc = iasc - 26 code = Left$(code, i - 1) + Chr$(iasc) ElseIf (str >= "a" And str <= "z") Then iasc = Asc(str) + 5 If iasc > Asc("z") Then iasc = iasc - 26 code = Left$(code, i - 1) + Chr$(iasc) Else code = Left(code, i - 1) + str End If i = i + 1 Loop Adodc1.RecordSource = "select * from user1 where username='" & 44 Trim(Text1) & "' and " & "password='" & Trim(code) & "'" Adodc1.Refresh If Adodc1.Recordset.EOF Then If num < 2 Then MsgBox "密码不对,请重新输入!这是您的第" & num + 1 & "次" Text2 = "" Text2.SetFocus num = num + 1 Exit Sub Else MsgBox "您的记性好像不是太好!请检查你的密码!" End End If End If gly = True usename = Trim(Text1) MDIForm1.Show Unload Me End If 2.8 ADO控件 这个学生管理系统最主要的组成部分就是ADO控件。用它和数据库连接来实现所有 与数据库有关的操作。并且不管这个学生管理系统拷贝到什么目录下,都能运行。具体 用下面的代码来实现: Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\xueshengguanli.mdb;Persist Security Info=False" Adodc1.RecordSource = "select * from 表名 45 结束语 经过两个多月的设计和开发,学生信息管理系统基本开发完毕。其功能符合学校信 息管理的基本需求及各类相关报表的打印,并提供系统维护功能,使用户能方便进行数 据备份和恢复、数据删除,对于数据的一致性的问题也通过程序进行了有效的解决。本 文所介绍的基于vb技术的学生管理系统已经全部完成,也进行了相当多的测试工作, 各种要实现的功能已全部实现。 本学生管理系统,随着科学的发展以及应用领域的不断深化和扩大,必将对它提出 新的和挑战,我们将利用一切新技术新方法使学生管理系统更完善。 46 致 谢 此次毕业的撰写过程中,非常感谢毕业论文指导刘正老师对我的精心指导和大 力帮助。从课题的选择到论文的最终完成,老师给我提供了许多宝贵的建议,也给予我 极大的启示,在此谨向老师致以诚挚的谢意和崇高的敬意,再次感谢老师? 47 参考文献 [1] 黄德才.数据库原理及其应用教程[M].北京:北京科学出版社,2002. [2] 宏才.数据库原理与应用设计[M].成都:西南交通大学出版社,2001. [3] 王道荣,林信成.Visual Basic 6数据库处理[M].北京:中国铁道出版社,2004. [4] 李春葆,张植民.Visual Basic 数据库系统设计与开发[M].北京:清华大学出版社,1999. [5] Craig Eddy,Timothy Buchanan.中文Access 2000 24学时教程[M].北京:机械工业出版社,2003. [6] 罗朝盛. Visual Basic 6.0 程序设计实践指导[M].杭州:浙江科学技术出版社,2003. [7] (美)Microsoft公司.Visual Basic 6.0控件参考手册[M].北京:希望电子出版社,2002. [8] (美)Hector Carcia-Molina,Jeffrey D.Ullman,Jennifer Widom.数据库系统全书[M]. 北京:机械工业出版社,2000. [9] Bob Reselman,Richard Peasley,Wayne Pruchniak.Visual Basic 6.0 使用指南[M]. 北京:电子工业出版社,1998. [10] (美)Don Vilen,周立柱,建华,小峰,朝晖.Server数据库原理——设计与实现[M].北 京:清华大学出版社,2004. [11] 汪洋,钱贵平,王一宾.高校学生信息管理系统的设计与实现[J].电脑学习,2006,(01). [12] 贺钧,郑彦平.学生成绩管理系统的设计与实现[J].现代电子技术,2005,(17). 48
/
本文档为【身份认证系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索