中南财经政法大学信息学院
学生毕业设计(毕业论文)
系 别: 信息学院
专 业: 计算机网络技术
班 级: 03网络551
学 生 姓 名: 肖雷
学 生 学 号: 014405200554
设计(论文)题目: 学籍管理系统的开发
指 导 教 师: 喻晓禾
学籍管理系统的开发
目 录
1摘 要
2引 言
3第一章 系统开发的概述
31选题的背景
32目的与意义
4第二章 数据库应用程序的开发步骤
41 数据库应用程序的基本成组成
41)、Visual Basic 简介
42)、Visual Basic 语言的特点
53)、Visual Basic 的版本
54)、Access的应用
62 数据库应用程序的开发步骤
63 学籍管理系统数据库的设计思想
61)、数据库设计
62)、目的与应用背景分析
73)、设计数据库草稿
74)、数据标准化
8第三章 系统设计
81 模块设计
91)、学生学籍管理
92)、学生档案管理
93)、班级课程表管理
94)、学生成绩管理
105)、系统维护
102 数据库结构设计
101)、画出实体模型(E-R图)
122)、数据库的逻辑结构设计
123)、数据库的物理设计
14第四章 系统实现
141 系统开发工具与环境
142 系统主要界面的实现
141)、登录界面的实现
172)、主界面的实现
173)、学生学籍管理的实现代码
324)、学生档案管理的实现代码
345)、学生课程界面的实现
376)、学生成绩界面的实现
477)、学生奖惩界面的实现
498)、查找界面的实现
54样本实验结果
55结 论
56致 谢
57参考资料
摘 要
学籍管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库;而对于后者则要求应用程序功能完备,容易使用等特点。
本系统主要完成对学生情况和学生成绩的管理,包括数据库中表的添加、修改、删除等。系统还可以完成对各类信息的浏览、查询、添加、删除、修改、报表等功能。
系统的核心是数据库中各个表的联系,每一个表的修改都将联动的影响其它的表,当完成对数据的操作时系统会自动地完成数据库的修改。查询功能也是系统的核心之一,在系统中即有单条件查询和多条件查询,也有精确查询和模糊查询,系统不仅有静态的条件查询,也有动态生成的条件查询,其目的都是为了方便用户使用。系统有完整的用户添加、删除和密码修改功能,并具备报表打印功能。
经过分析,我使用 MICROSOFT公司的 VISUAL BASIC开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成较为满意的可行系统。
关键词:管理信息系统、数据库、、access2000。
引 言
学籍管理是一件复杂而细致的工作,每年都有新生入学、毕业生毕业及升学、学生升级、留级等事件发生;平时还有班级的调整、中途转学、休学、复学以及退学的学生,由于这些工作的杂乱而不确定性,使得学生学籍管理工作变得复杂且不易做到准确无误。因此我的设计力求实现学籍管理工作的自动化和现代化,实现对学生在校期间的全过程管理,从新生入学注册,基本档案信息的录入、档案查询以及信息修改,学生学号的编排,升级、留级调整,班级变动等详细情况的统计、分析均由计算机自动完成;还可以完成如各届学生花名册、学生学籍卡、毕业生升学登记表、学生变动情况表等一系列报表的打印工作,完成班级学生人数、学生自然分布、家庭住址分布、家长详细分布、外单位学生分布等各种信息的统计及报表的打印工作。按工作常规和设计要求,整个软件分为以下模块:入学招生、学生建档、信息浏览查询、期末升级、学生分班、排列学号、学生转/退学、学生休/复学、学生跳级、学生毕业、信息统计、报表打印和基本信息维护等部分。
近年来,随着科学技术特别是计算机数据库技术的不提高,计算机科学日渐成熟,其强大的功能已为人们深深地认识,它已进入人类社会生活的各个领域并发挥越来越重要的作用。利用计算机数据库技术对学籍工作进行管理,具有手工管理所无法比拟的优点。例如:用计算机进行学号编排可以有效地避免重号现象,并能达到高速准确地编排班级,只需几个小时就可将数千人的班编排完毕,极大地提高了工作效率;如果用计算机进行学籍档案统计,具有快速、准确、可靠等特点;用计算机进行学生档案查询、检索迅速方便;用计算机进行学生升级处理工作,可以提高其精确度。因此,开发一套学生学籍管理信息系统软件是很有必要,也是势在必行的。它有以下几个好处:
1、可使学生学籍管理工作准确高效。
2、克服了手工管理中的许多困难,提高了速度,节省了大量时间。
3、可快速查询有关学生学籍的各种所需信息。
4、只需一到两名管理人员即可操作系统,节省了大量的人力。
5、软件系统可根据不同的需要随时进行升级,从而延长了软件的使用寿命。
6、数据库具有存储量大,保密性好、运行成本低等特点。
此外,为将来学校建立校园网考虑,我的设计还采用客户机/服务器体系结构设计,以后学生学籍管理信息系统接入网络时,数据库可直接进行移植,勿需作大量的修改工作。
第一章 系统开发的概述
1选题的背景
现在的社会日新月异,发展的非常快。学校的发展也是非常的快了,而且每年都有不同的要求。学生的量也非常的大,资料可能经常性的发生更换,原来手工的管理模式就显得不怎么的合适了。而且手工的数据是存放在多处的,没有使用统一管理的模式,数据整理非常的麻烦,统计也困难,很多的情况下,老师都是在重复一些相同的工作。做一些相似的报表,这样不但降低了工作效率,而且非常的容易出错。在这种条件下,使用微机管理就显得非常的合适了。只要你正确的录入,统计,报表输出一点问题都没有的。
学生作为学校的最主要的管理对象,学生学籍管理系统就成了学校信息化管理系统中不可缺少的部分,它的内容对于学校的管理者说都至关重要。但一直以来人们使用传统人工的方式进行学生的档案管理,这种管理方式存在着许多缺点,如:效率低,容易出错,格式不规范。另外时间一长,不容易进行统计和分析。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生档案进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、寿命长、成本低等。这些优点能够极大地提高学校学生档案管理的效率。因此,开发这样一套管理软件成为很有必要的事情。而且只要软件的设计合理,可以为学校提供合理的管理模式。
2目的与意义
本系统是针对学校教务和教学活动进行系统管理的平台,本系统需要担负整个教学管理系统正常运行的重责,因此对系统的安全性要求较高,可通过系统管理员给不同用户分配相应的管理及操作权限来维护系统的安全。它包括用户管理、学生档案管理、学生课程管理、学生成绩管理、学生奖惩管理、学生查询等七个功能模块;不同的用户具有不同的安全级别,只能进行系统允许的操作。
本学生学籍管理系统设计要求具有友好的用户界面、操作简单方便,不熟悉计算机的用户亦能自如的操作,按所需要求对各类信息进行修改、查询、统计与状态显示。要求系统具有良好的安全性和保密措施,可以脱离开发环境运行,同时系统还应该具备通用性与可扩充性。
第二章 数据库应用程序的开发步骤
1 数据库应用程序的基本成组成
简单地说,数据库应用程序的主要作用是存放数据、从数据中检索和统计数据,以得到各种各样的信息(报表和图表等)。一个完整的数据库应用程序应按照功能可分为4部分内容:数据库;应用程序窗体;查询和统计;报表和图表。
目前主要使用Visual Basic 及Microsoft Access进行数据库的开发,下面对Visual Basic 及Microsoft Access进行简要介绍。
1)、Visual Basic 简介
无论用户是一个Windows 编程新手,还是已经具有丰富的Windows程序设计经验的专业程序开发人员,利用Visual Basic 提供的良好开发环境,均可以使你快速地完成所需设计任务。所谓Visual ,中文的意思是“可视化”,它提供了一种创建图形用户界面(GUI)的方法,利用这种方法,用户可不必书写复杂的描述界面元素外观和位置的程序代码,而只需将系统提供的对象放到屏幕上的适当位置,并通过属性窗口进行适当的设置或调整,就可以设计出一个优秀的应用程序界面。此外,用户除了可以使用单独的Visual Basic 程序设计环境进行程序设计外。Visual Basic 程序设计系统还被包括在Excel Access 等众多Windows功能应用软件中,以供用户进行二次开发。目前在编制网页上使用较多的VBScript 脚本语言实际上是Visual Basic 语言的子集。因此,无论从哪方面讲,用Visual Basic 系统开发软件都是一件非常合算的投资。
2)、Visual Basic 语言的特点
不管你是编制一个小的应用程序,还是开发一套大型的专业系统软件,甚至是开发一个跨越Internet 的分布式应用系统软件,Visual Basic 都为用户提供了合适的工具。利用Visual Basic 的数据访问特性,用户可创建数据库、前端应用程序、适用于大多数流行数据库格式的服务器组件等。利用ActiveX技术允许用户使用其他应用程序提供的功能,如Microsoft Word、Microsoft Excel,甚至可直接使用由Visual Basic 专业版和企业版创建的应用程序和对象。Visual Basic 的Internet 功能允许用户使用程序方便地通过Internet 访问文档和应用程序,甚至创建Internet应用程序。用Visual Basic 用户创建的是一个真正的EXE文件,该文件可直接运行于操作系统(Windows98/2000/XP或Windows NT系统),完全脱离Visual Basic系统环境。并且,该文件可以自由发布,安装到单机或网络服务器上。
此外,Visual Basic 还增加了一些新的功能:具体如下:
①增加了ADO数据对象,该数据访问技术是一个简单的数据模型,可更好地与其它Microsoft和非Microsoft技术集成。它还是一个通用接口,可用于访问本地或远程数据、连续和离散记录集、用户可访问的数据绑定接口和分层记录集。
②提供了数据环境设计器,其中提供了一种创建ADO对象的交互设计环境,数据环境可作为窗体或报表中所有要求数据对象的数据源,或者通过数据环境的方法和属性由等程序访问,数据环境设计器具有用户连接设计器的全部功能和附加特性,如拖放、分层、分组和合计等。
③数据报表,允许用户使用拖放方法利用任何记录集合快速创建报表。
④数据源,创建可绑定任何控件的数据源用户定义控件和类。
⑤SQL编辑器,允许用户增加新的存储过程至SQL服务器程序和Oracle数据库中,用户还可以使用编辑器编写触发器。
⑥增强的数据窗体向导,现在用户不仅可以构造不绑定至数据控件的代码窗体,而且可以使用ADO代码,该向导已经集成到应用程序向导、Chart向导和FlexGrid向导中。
⑦文件系统对象,Visual Basic 提供了改进的在文件系统中移动的程序集,并可创建文本文件和目录。
⑧DataGrid控件,该控件可帮助用户快速构造观察和编辑记录的程序,它也支持新的ADO数据控件。
⑨可视化数据库工具集成(企业版)。在Visual Basic 中用户可以可视地创建数据库和查询、SQL服务器程序、Oracle数据库表、使用拖放方法创建视图,以及自动改变列数据类型。
3)、Visual Basic 的版本
目前Visual Basic 有三种版本,各自满足不同的开发需要。其中:
①Visual Basic 学习版使编程人员可轻松学习和设计一些基本的应用程序。该版本包括所有的内部控件,连同Grid、Tab和Data_Bound控件。
②Visual Basic 专业版为专业编程人员提供了一套进行开发的功能完备的工具。该版本包括学习版的全部功能连同ActiveX控件,还包括Internet Application Designer(Internet报务器应用程序设计器)、Integrated Visual Database Tools(集成可视化数据库工具)、Data Environment (数据环境)、ActiveX污染Data Objects(数据对象,简称ADO)和Dynamic HTML Page Designer (动态HTML页面设计器)。
③Visual Basic 企业版使得专业编程人员能够开发功能强大的组内分布式应用程序。该版本包括专业版的全部功能连同Back Office 工具,如SQL Server Microsoft Transaction Server 、Internet Information 、Visual SourceSafe、SNA Server。
4)、Access的应用
Access是Microsoft公司的一个成功的数据库管理系统产品。其核心是Microsoft Jet数据库引擎。早期的Access 在办公自动化中获得了广泛的应用,后续版本的功能得到了不断提高,它与Microsoft Office 套件紧密结合,使之得到越来越广泛的应用。Access 本身是一个可视化的数据库管理系统,它提供了很多非常实用的向导,初学者很容易学会如何用Access建立数据库的各种对象,如创建表、查询和报表,也可创建数据窗体等。Access使用内嵌Visual Basic语言作为开发工具,完全面向对象编程,可以可视化地独创数据库应用于程序。Access的数据库和传统的桌面数据库几乎没有什么不同,但它支持网络环境的应用,如管理应用组和安全性等,所以是一种特殊的桌面数据库管理系统,很多人将其列入客户机/服务器前端,其核心是Microsoft Jet理论系统RDBMS的范畴。Microsoft Access是当前最流行的关系数据库管理系统之一,它与Visual Basic数据库一样,基本的核心是Microsoft Jet数据库引擎,数据库的访问和编程与Visual Basic中访问数据库一样。它操作方便、简单易学,Access能满足小型企业客户/服务器解决方案的要求来组建客户/服务器的数据库应用系统,是一个功能较完备的数据库管理系统,它几乎包含了数据库领域的所有技术和内容,对于初学者学习数据库知识非常有帮助。正因为这些特点,在利用Visual Basic开发数据库应用系统程序时,比较适合采用Access作为后台数据库管理系统。在一个Access数据库应用程序中,用一系列表的集合来存放各种经提取的原始数据。通过表的视图可以直接操作数据,但是为了能够使用户方便又安全地操作数据,应用程序一般不让用户通过表来直接操作数据,而是用通过窗体对象来访问表,这样可以对用户的行为作较好的指导和限制,数据操作外的其他功能则是用窗体来完成的。
2 数据库应用程序的开发步骤
一个实际的数据库应用程序的开发一般需要经过如下几个步骤,而且有的步骤可能要反复几次。
通常的数据库开发步骤如下:
①、应用程序应用背景和需求分析
②、组建开发组
③、数据库设计
④、编写应用程序
⑤、测试和优化应用程序
⑥、发行数据库和应用程序
第2步一般是开发大型数据库时要考虑的,所以本数据库的开发可以省略这步。
3 学籍管理系统数据库的设计思想
1)、数据库设计
数据库规划是创建数据库非常重要的一个环节。数据库规划的好坏,不仅是影响开发过程,而且直接影响数据库的使用。在学籍管理系统中,由于管理的任务仅限于学生档案,因此,建立一个数据库就可以了。
2)、目的与应用背景分析
本数据库是针对学校教务和教学活动进行系统管理的平台,设计要求具有友好的用户界面、操作简单方便,同时还要担负整个教学管理系统正常运行的重责,因此对系统的安全性要求较高,可通过系统管理员给不同用户分配相应的管理及操作权限来维护系统的安全,不同的用户具有不同的安全级别,只能进行系统允许的操作。最后本数据库系统还该具备通用性与可扩充性。
3)、设计数据库草稿
首先要进行的工作就是将数据库进行分类和量化,使数据库便于计算机处理。然后列出每一个表所要包含的数据字段,并初步确定每个字段的数据类型和字段的大小。学籍管理系统中应建立一个保存基本信息的数据库,另外,还要建立几个用于保存学生变动情况和有关学籍统计情况的数据表。
4)、数据标准化
经过草稿设计后,就可以建立数据了。数据库的标准化就是对数据表进行分析,采用关系数据库折方法,使每个表都不重复数据,从而以最少的维护,提供最多的信息。
第三章 系统设计
1 模块设计
本系统实现的主要功能有:
1.对学生档案进行管理,能实现对档案的添加、删除、查询、修改功能。
2.对课程进行管理,能实现对课程的添加、删除、查询、修改功能。
3.对成绩进行管理,能对成绩进行添加、删除、查询、修改功能。
4.对学生奖惩管理,能对学生的奖惩情况进行添加、删除、查询、修改。
5.对用户进行管理,能对用户和密码进行添加、修改。
6.系统维护包括:课程代码维护、数据库编码表维护等。
7.对于不同的操作员分配不同的权限,如学生只能查询其成绩等,系统管理员具有全部的权限。学生学籍管理系统的系统功能结构及模块如图3-1所示:
从上图可看出,本系统划分以下几个模块:
(1)学生学籍管理:制作全校各班档案空表、表中姓名来自学生档案表,班级课程名来自班级课程表。教师录入成绩后可按班级、个人查询成绩。
(2)学生档案管理:计算机自动在学生档案中找出学生档案,教师录入学号、姓名可以查询、修改、增加、删除。
(3)班级课程表管理:可由用户对班级课程进行录入、查询与打印处理。
(4)学生成绩管理:可由用户对班级成绩进行录入、查询与打印处理。
(5)学生奖惩管理:学生可以查询自己奖惩情况,但不可以修改,教师可以根据学生情况进行修改、增加、删除等录入。
(6)系统维护:对课程代码表或各类数据编码表中的记录进行录入、查询与修改等操作。
(7)帮助模块:用于方便用户的使用,为用户提供帮助信息,也提供一些帮助服务。
下面对各模块项目进行设计:
1)、学生学籍管理
每个学生的学籍信息包括:姓名、学号、性别、已取得学分和四级英语成绩。
从键盘输入数据,建立数据文件,数据将分别反映一到四年级若干学生,然后完成如下处理: ①、对四年级学生进行查询,确定是否能毕业,是否能取得学位。显示并存入文件(毕业条件:学分满60分能毕业;取得学位的条件:毕业且通过四级英语考试能取得学位)。 ②、对所有二年级学生,按四级英语成绩高低排成链表。
2)、学生档案管理
从键盘输入数据,数据将分别反映一到四年级若干学生,然后完成如下处理:
①、学生信息录入,包括记录的追加和插入; ②、学生信息删除; ③、学生信息修改; ④、学生信息排序和查询; ⑤、学生信息的保存和装入; ⑥、简单的帮助。
3)、班级课程表管理
课程表管理包括:班级、节次、星期、课程、教师,同时也要跟学生成绩管理配合,简化成绩的输入流程。
4)、学生成绩管理
本模块主要是对学生成绩进行管理。
数据库组成:
数据表3个: 学生表:Student (5个字段:编号,学号,姓名,班级名称),其中有两个班各5名学生的记录; 课程表:Text(3个字段:编号,班级名称,课程名称),其中有4门课的记录; 成绩表:Grade(5个字段:编号,学号,姓名,课程名称,成绩),其中有12条学生成绩的记录。
②、查询组成:查询学生、按班级查询成绩、按课程查询成绩。
③、表单组成:主界面表单、退出表单、学生表单、课程表单、成绩表单(按学好分类和安课程分
类)、查询学生表单、查询成绩表单、总浏览表单、浏览学生表单、浏览成绩表单、系统信息表单、
设置口令表单集、修改表单界面。
④、菜单组成:主菜单由系统、基本信息、视图、窗口、帮助和退出组成。
⑤、程序组成:主程序、统计全体学生概况、按班级统计学生概况、统计全体成绩概况、按班级统
计各门课成绩、按课程统计各班学生的成绩。
5)、系统维护
①、升级处理
每学年结束后,学生的年级都增加一级,但是数据库中所记录的年级和班级信息仍然是上一级,用此功能可自动完成学生升级处理。操作方法很简单,启动升级处理窗口,选择年级后单击【升级】按钮就可完成。在操作时一定要注意,执行升级处理前一定要将毕业生记录存档,否则不能做升级处理,另外要在每学年学生放假后再执行升级功能。
②、数据库备份
为了防止因计算机故障或其它原因破坏数据库,经常需要对数据库进行备份保存工作,因此特设计了保存功能窗口,操作方法是先单击【打开】按钮系统自动打开文件对话框,选择相应的位置找到“学籍管理.mdb”,单击【打开】返回,接着单【保存】按钮出现保存对话框,选择要保存的位置,单击【保存】按钮即可完成数据库保存工作。在所有操作过程中,如有失误可点击【取消】按钮取消当前操作。
③、毕业生学籍存档
用于每学年将毕业生学籍档案保存到历史库中。启动该窗口,请先选择毕业班年级,再单击【存档】按钮就可完成保存工作。
④、历史记录删除
当毕业生的记录存档工作已经,就可用此项功能将毕业生记录信息从原学籍管理库中删除,在操作时请先选择毕业年级而后单击【删除】按钮就可完成删除任务,你可浏览历史库记录,如果已经删除了则不许再行删除。
2 数据库结构设计
现在一般把数据库的设计分为数据库的逻辑设计和数据库的物理设计两个步骤。
1)、画出实体模型(E-R图)
本系统中共有学生、课程、学习、奖惩和学生-课程等几个实体联系 E-R图,如下图所示:
2)、数据库的逻辑结构设计
需求分析阶段已给出了系统的概念模型即E-R图,根据E-R图即可进行数据库的逻辑设计。数据库的逻辑设计即把得到的满足第三范式的关系转化为特定的数据库管理系统下的数据表,根据前面得到的各个关系,线把它们转化为数据表。
数据库逻辑结构设计如下:
学生档案表(学号、姓名、性别、年龄、系别);
学生课程表(课程号、课程名、学时、学期、任课教师);
学生成绩表(学号、课程号、课程名、成绩);
学生奖惩表(学号、学期、奖惩类别、奖惩内容、备注)。
3)、数据库的物理设计
在完成数据库的抗击设计后,即可进行数据库的物理设计。基于以上数据库的逻辑设计,考虑程序设计的简易性,同时考虑作为毕业设计的题目及时间,本系统的数据库决定采用Microsoft Access 2000。
根据逻辑结构设计,将其转换为实际的物理存储模式,部分表结构如图所示:
表3-1 学生档案表的结构
字段名
数据类型
字段长度与格式
是否为空
sno
数字
10
否
sname
文本
10
否
sex
文本
5
否
sage
数字
10
否
xb
文本
5
否
表3-2 学生课程表的结构
字段名
数据类型
字段长度与格式
是否为空
kch
数字
10
否
kcm
文本
10
否
xs
数字
4
否
xq
文本
4
否
rkjs
文本
10
否
表3-3 学生成绩表的结构
字段名
数据类型
字段长度与格式
是否为空
sno
数字
10
否
kch
数字
10
否
kcm
文本
20
否
cj
数字
5
否
表3-4 学生奖惩表的结构
字段名
数据类型
字段长度与格式
是否为空
sno
文本
10
否
xq
文本
10
否
jclb
文本
20
否
jcnr
文本
10
否
bz
文本
20
否
第四章 系统实现
1 系统开发工具与环境
本系统采用Visual Basic 作为前台开发工具,Access2000生成后台数据库(也可以采用SQL Server2000 数据库)。系统硬件环境为CPU主频266以上,内存128M以上;软件环境为WINDOWS2000/XP PROFESSIONAL。
本系统基于两种硬件系统平台运行:单PC机系统、计算机网络系统(PC工作站)。所有PC机采用IBM PC兼容机型,基本要求:Intel Pentium Ⅲ CPU、64M DRAM、20GB Free HDD、VGA显示器、 FDD、CD-ROM。系统运行软件平台:网络操作系统Windows NT Server 2000、工作站操作系统Windows98/2000/NT 中文版,采用客户机/服务器体系结构。考虑到目前尚无建立局域网,系统只能在单机上运行,用户安装完统计软件后,必须先建立单机下的ODBC数据源方可运行程序,否则系统无法正常工作。
2 系统主要界面的实现
1)、登录界面的实现
在窗体上布置一个组合框、一个文本框、两个标签、三个按钮、一个图象框和一个Adodc1控件,分别设置他们的属性:窗体的标题为“登录系统”,按钮的标题分别为“确定”、“注册新用户”、“退出系统”,设置后的界面如图所示:
登录窗体,如下图所示:
图 4-1 登录界面图
登录程序流程图,如下图所示:
主要事件代码:
//确定按钮的点击事件代码
Private Sub Command1_Click()
If = "管理员" And Trim() = "123456" Then
OK = True
Else
If = "系统操作员" And = "1111" Then
OK = True
Else
If = "查询员" And = "1111" Then
OK = True
Else
If = "学生" And = "654321" Then
OK = True
= False
= False
Else
MsgBox "密码错误,再试一次!", , "登录"
End If
End If
End If
End If
End Sub
//取消按钮的事件代码
Private Sub Command2_Click()
OK = False
End Sub
//窗体装入的事件代码
Private Sub Form_Load()
"管理员"
"系统操作员"
"查询员"
"学生"
End Sub
//输入口令文本框KEYPRESS的事件
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Call Command1_Click
End If
End Sub
2)、主界面的实现
主界面如下所示:
图4-3 系统主界面图
3)、学生学籍管理的实现代码
----------------------------- #define MAX 100 #define MIN 0 struct student { int number; char name[10]; int g[4]; }; #define LEN sizeof(struct student) int file_read(student* s,char* filename,int* n); void input(student*,int* n); void stat(student*s,int n); void search(student* s,int* n); void save(student* s,int n); void print(student*,int); int func(); void delet(student* s,int m,int* n); void modify(student* s,int* n,int m); int file_create(char* filename); int file_write(student* s,char* filename,int n); void file(student* s,int* n); void new_sort(student* s,int n); --------------- #include<> #include<> #include<> #include <sys\> #include <> #include <> #include <> #include "" int main() { int i; char ch; int n; n=0; student s[200]; while(1) { printf("\n\n\n"); printf("\t** 学生成绩管理模拟系统 **\n"); printf("\t* 0.从文件读入记录 *\n"); printf("\t* 1.读入学生成绩 *\n"); printf("\t* 2.成绩排序 *\n"); printf("\t* 3.查询某个学生成绩 *\n"); printf("\t* 4.成绩统计 *\n"); printf("\t* 5.保存数据 *\n"); printf("\t* 6.打印记录 *\n"); printf("\t* 7.退出 *\n"); printf("\t请选择功能:\n\n"); ch=getch(); i=ch-'0'; switch(i) { case 0: file(s,&n); break; case 1: input(s,&n); break; case 2: new_sort(s,n); break; case 3: search(s,&n); break; case 4: stat(s,n); break; case 5: save(s,n); break; case 6: printf("\n学生记录:\n"); print(s,n);break; case 7: printf("\n欢迎使用!多多指教!\n"); printf("\n制作者:xxx\n"); printf("\n请按任意键退出!"); getchar(); exit(1); default:printf("\n输入错误!!!请输入数字(0~7)!\n"); } } print(s,n); return 0; } void input(student* s,int* n) { int temp=1; int num,g; int i; while(temp==1) { printf("\n输入学生学号:\n"); scanf("%d",&num); for(i=0;i<*n;i++) { if((s+i)->number==num) { printf("该学号信息已存在,主码不允许重复!!!"); break; } } if(i==*n) { temp=0; (s+*n)->number=num; } } printf("输入学生姓名:\n"); scanf("%s",&(s+*n)->name); printf("输入语文成绩:\n"); scanf("%d",&g); if(g<MIN) g=0; if(g>MAX) g=100; (s+*n)->g[0]=g; printf("输入数学成绩:\n"); scanf("%d",&g); if(g<MIN) g=0; if(g>MAX) g=100; (s+*n)->g[1]=g; printf("输入英语成绩:\n"); scanf("%d",&g); if(g<MIN) g=0; if(g>MAX) g=100; (s+*n)->g[2]=g; g=0; for(i=0;i<=2;i++) { g+=(s+*n)->g[i]; } (s+*n)->g[3]=g/3; (*n)++; } void print(student* s,int n) { int i; if(n==0) { printf("无学生记录!"); } else { for(i=0;i<n;i++) { printf("\t%3d %-10s 语文:%3d 数学:%3d 英语:%3d 平均分:%3d\n",(s+i)->number,(s+i)->name,(s+i)->g[0],(s+i)->g[1],(s+i)->g[2],(s+i)->g[3]); } } } int func() { int i; char ch; printf("\n\n"); printf("\n\t**请选择操作:**\t"); printf("\n\t* 1.修改信息 *\t"); printf("\n\t* 2.删除记录 *\t"); printf("\n\t* 3.退出 *\t"); ch=getch(); i=ch-'0'; return i; } void search(student* s,int* n) { int temp,i,flag; flag=1; printf("\n请输入要查询的学生学号:"); scanf("%d",&temp); for(i=0;i<*n;i++) { if((s+i)->number==temp) { printf("\n该学生信息:\n"); printf("\t%3d %-10s 语文:%3d 数学:%3d 英语:%3d 平均分:%3d\n",(s+i)->number,(s+i)->name,(s+i)->g[0],(s+i)->g[1],(s+i)->g[2],(s+i)->g[3]); while(flag==1) { switch(func()) { case 1: modify(s,n,i); flag=0;break; case 2: delet(s,i,n); flag=0;break; case 3: flag=0;break; default: printf("输入错误!!!");break; } } break; } } if(i==*n) { printf("查无该学生!!!"); } } void stat(student*s,int n) { int i; int A,B,C,D; A=B=C=D=0; for(i=0;i<n;i++) { switch(s[i].g[0]/10) { case 10: A++;break; case 9: A++;break; case 8: B++;break; case 7: B++;break; case 6: C++;break; default: D++;break; } } printf("\n总人数:%3d\n",n); printf("\n语文成绩在90~100的人数:%3d",A); printf("\n语文成绩在70~89的人数:%3d",B); printf("\n语文成绩在60~69的人数:%3d",C); printf("\n语文不及格的人数:%3d",D); printf("\n优秀率:%3d%%",A*100/n); printf("\n不及格率:%3d%%%",D*100/n); printf("\n\n"); A=B=C=D=0; for(i=0;i<n;i++) { switch(s[i].g[1]/10) { case 10: A++;break; case 9: A++;break; case 8: B++;break; case 7: B++;break; case 6: C++;break; default: D++;break; } } printf("\n数学成绩在90~100的人数:%3d",A); printf("\n数学成绩在70~89的人数:%3d",B); printf("\n数学成绩在60~69的人数:%3d",C); printf("\n数学不及格的人数:%3d",D); printf("\n优秀率:%3d%%",A*100/n); printf("\n不及格率:%3d%%%",D*100/n); printf("\n\n"); A=B=C=D=0; for(i=0;i<n;i++) { switch(s[i].g[2]/10) { case 10: A++;break; case 9: A++;break; case 8: B++;break; case 7: B++;break; case 6: C++;break; default: D++;break; } } printf("\n英语成绩在90~100的人数:%3d",A); printf("\n英语成绩在70~89的人数:%3d",B); printf("\n英语成绩在60~69的人数:%3d",C); printf("\n英语不及格的人数:%3d",D); printf("\n优秀率:%3d%%",A*100/n); printf("\n不及格率:%3d%%%",D*100/n); } void delet(student* s,int m,int* n) { int i; for(i=m;i<*n;i++) { s[i]=s[i+1]; } (*n)--; } void modify(student* s,int* n,int m) { int temp=1; int num,g; int i; while(temp==1) { (s+m)->number=-1; printf("\n输入学生学号:\n"); scanf("%d",&num); for(i=0;i<*n;i++) { if((s+i)->number==num) { printf("该学号信息已存在,主码不允许重复!!!"); break; } } if(i==*n) { temp=0; (s+m)->number=num; } } printf("输入学生姓名:\n"); scanf("%s",&(s+m)->name); printf("输入语文成绩:\n"); scanf("%d",&g); if(g<MIN) g=0; if(g>MAX) g=100; (s+m)->g[0]=g; printf("输入数学成绩:\n"); scanf("%d",&g); if(g<MIN) g=0; if(g>MAX) g=100; (s+m)->g[1]=g; printf("输入英语成绩:\n"); scanf("%d",&g); if(g<MIN) g=0; if(g>MAX) g=100; (s+m)->g[2]=g; g=0; for(i=0;i<=2;i++) { g+=(s+m)->g[i]; } (s+m)->g[3]=g/3; } int file_create(char* filename) { int handle; char fname_bmp[128]; sprintf(fname_bmp,"%",filename); _fmode = O_BINARY; handle = creat(fname_bmp, S_IREAD | S_IWRITE); close(handle); return 0; } int file_write(student* s,char* filename,int n) { FILE *fp; char fname[128]; sprintf(fname,"%",filename); if((fp = fopen(fname,"wb")) == NULL) return -1; fwrite(&n,sizeof(int),1,fp); fwrite(s,LEN,n,fp); fclose(fp); return 0; } int file_read(student* s,char* filename,int* n) { int i,j; int m; student *buf; FILE *fp; char fname[128]; sprintf(fname,"%",filename); if((fp = fopen(fname,"rb")) == NULL) return -1; fread(&m,sizeof(int),1,fp); buf = (student *)malloc(m); *n=m; fread(buf,sizeof(student),m,fp); fclose(fp); for(i=0;i<m;i++) { printf("\t%3d %-10s 语文:%3d 数学:%3d 英语:%3d 平均分:%3d\n",(buf+i)->number,(buf+i)->name,(buf+i)->g[0],(buf+i)->g[1],(buf+i)->g[2],(buf+i)->g[3]); } for(i=0;i<m;i++) { (s+i)->number=(buf+i)->number; for(j=0;j<10;j++) { (s+i)->name[j]=(buf+i)->name[j]; } for(j=0;j<=4;j++) { (s+i)->g[j]=(buf+i)->g[j]; } } return 0; } void save(student* s,int n) { char filename[30]; printf("\n输入要保存的文件名:\n"); scanf("%s",filename); file_create(filename); file_write(s,filename,n); printf("\n恭喜!文件保存成功!!!"); } void file(student* s,int* n) { char filename[30]; printf("\n输入数据文件名:\n"); scanf("%s",filename); file_read(s,filename,n); printf("\n文件已成功读入!!!\n"); } void new_sort(student* s,int n) { int i,j; int change; student temp; change=0; while(!change) { change=1; for(j=n;j>0;j--) { for(i=0;i<j-1;i++) { if(s[i].g[3] < s[i+1].g[3]) { temp=s[i+1]; s[i+1]=s[i]; s[i]=temp; change=0; printf("\n 目前排序结果:\n"); for(i=0;i<n;i++) { printf("\t%3d %-10s 语文:%3d 数学:%3d 英语:%3d 平均分:%3d\n",s[i].number,s[i].name,s[i].g[0],s[i].g[1],s[i].g[2],s[i].g[3]); } } } } } printf("\n 排序成功!\n"); }
4)、学生档案管理的实现代码
学生档案管理的主要功能是完成对学生档案表的添加、删除、修改、查询。根据具体步骤,完成相应的学生档案管理模块。
学生档案管理窗体,如下图所示:
图4-4 学生档案管理界面图
主要事件代码实现:
//增加按钮的点击事件代码
Private Sub Command1_Click()
= " "
= " "
= " "
= "男"
= " "
End Sub
//删除按钮的点击事件代码
Private Sub Command2_Click()
If MsgBox("你确信要删除这条记录吗?", 36, "警告") = vbYes Then
If Then
End If
End If
End Sub
//退出按钮的点击事件代码
Private Sub Command3_Click()
Unload Me
End Sub
//保存按钮的点击事件代码
Private Sub Command4_Click()
End Sub
//取消按钮的点击事件代码
Private Sub Command5_Click()
End Sub
//上一条按钮的点击事件代码
Private Sub Command6_Click()
If Then
MsgBox "已达到第一条"
End If
End Sub
//下一条按钮的点击事件代码
Private Sub Command7_Click()
If Then
MsgBox "已达到最后一条"
End If
End Sub
//查询按钮的点击事件代码
Private Sub Command8_Click()
1
End Sub
//窗体装入的事件代码
Private Sub Form_Load()
"男"
"女"
End Sub
5)、学生课程界面的实现
学生课程管理的主要功能是完成对课程管理表的添加、删除、修改、查询。根据具体步骤,完成相应的课程管理模块。
课程界面如下所示:
图4-5 课程界面图
主要事件代码:
//增加按钮的点击事件代码
Private Sub Command1_Click()
= " "
= " "
= " "
= " "
= " "
End Sub
//删除按钮的点击事件代码
Private Sub Command2_Click()
If MsgBox("你确信要删除这条记录吗?", 36, "警告") = vbYes Then
If Then
End If
End If
End Sub
//退出按钮的点击事件代码
Private Sub Command3_Click()
Unload Me
End Sub
//保存按钮的点击事件代码
Private Sub Command4_Click()
End Sub
//取消按钮的点击事件代码
Private Sub Command5_Click()
End Sub
//上一条按钮的点击事件代码
Private Sub Command6_Click()
If Then
MsgBox "已达到第一条"
End If
End Sub
//下一条按钮的点击事件代码
Private Sub Command7_Click()
If Then
MsgBox "已达到最后一条"
End If
End Sub
//查询按钮的点击事件代码
Private Sub Command8_Click()
1
End Sub
6)、学生成绩界面的实现
学生成绩管理的主要功能是完成对学生成绩管理表的添加、删除、修改、查询。据具体步骤,完成相应的学生成绩管理模块。
成绩窗体,如下图所示:
图4-6 成绩界面图
主要事件代码实现:
#include<> #include<> #include<> struct stud { long num; char name[20]; double score; }; typedef struct stucode { struct stud student ; struct stucode *next; }L; void menu(); void createlist(struct stucode **r); void out(struct stucode *r); void search1(struct stucode *r); void search2(struct stucode *r); void del(struct stucode **r); void insert(struct stucode **r); void sort(struct stucode **r); void main() { char choose; int flag=1; struct stucode *r=NULL; while(flag) { system("cls"); menu(); choose=getchar(); switch(choose) { case '1': createlist(&r); out(r); printf("Testing function 1\nPress any key to continue\n"); getchar(); getchar(); break; case '2': search1(r); printf("Testing function 1\nPress any key to continue\n"); getchar(); getchar(); break; case '3': search2(r); printf("Testing function 1\nPress any key to continue\n"); getchar(); getchar(); break; case '4': del(&r); out(r); printf("Testing function 1\nPress any key to continue\n"); getchar(); getchar(); break; case '5': insert(&r); out(r); printf("Testing function 1\nPress any key to continue\n"); getchar(); getchar(); break; case '6': sort(&r); out(r); printf("Testing function 1\nPress any key to continue\n"); getchar(); getchar(); break; case '7': out(r); printf("Testing function 7\nPress any key to continue\n"); getchar(); getchar(); break; case '0': flag=0; printf("The end.\n"); break; default: printf("\nWrong Selection!(选择错误,请重选!)\n");getchar();getchar(); } } } void createlist(struct stucode **r) { struct stucode *p,*t; long n; char a[20]; double s; if(*r) *r=NULL; printf(" \n请输入:\n 学号(请按学号升序排列) 姓名 分数 (若要结束请输入三个为零)\n"); scanf("%ld%s%lf",&n,a,&s); if(n==0) return; p=(L *)malloc(sizeof(L)); p->=n; strcpy(p->,a); p->=s; p->next=NULL; *r=p; scanf("%ld%s%lf",&n,a,&s); while(n) { t=p; p=(L *)malloc(sizeof(L)); p->=n; strcpy(p->,a); p->=s; p->next=NULL; t->next=p; scanf("%ld%s%lf",&n,a,&s); } } void search1(struct stucode *r) { long x; if(!r) { printf("没有学生信息可查询!\n"); return ; } printf(" 请输入要查询的学生信息的学生学号:\n"); scanf("%ld",&x); while(r&&r->!=x) r=r->next; if(r==NULL) printf("Error! No such student !\n"); else printf("%ld %s %.2lf\n",r->,r->,r->); } void search2(struct stucode *r) { char m[20]; if(!r) { printf("没有学生信息可查询!\n"); return ; } printf(" 请输入要查询的学生信息的学生姓名:\n"); scanf("%s",m); while(r&&strcmp(r->,m)) r=r->next; if(r==NULL) printf("Error! No such student !\n"); else printf("%ld %s %.2lf\n",r->,r->,r->); } void del(struct stucode **r) { long k; struct stucode *p=*r,*t; if(!(*r)) { printf("没有学生信息可删除 !\n"); return ; } printf(" 请输入要删除的学生信息的学生学号:\n"); scanf("%ld",&k); if(p->==k) *r=(*r)->next,free(p); else { while(p->next&&p->next->!=k) p=p->next; if(p->next==NULL) printf("Error! No such student !\n"); else { t=p->next; p->next=p->next->next; free(t); } } } void insert(struct stucode **r) { long n; char a[20]; double s; L *p,*t,*k; printf(" 请输入要插入的学生信息的学生学号 姓名 分数:\n"); scanf("%ld%s%lf",&n,a,&s); p=(L *)malloc(sizeof(L)); p->=n; p->=s; strcpy(p->,a); if(!(*r)) { *r=p; (*r)->next=NULL; return ; } if(p-><(*r)->) p->next=(*r),(*r)=p; else { t=*r; k=t; while(t->next&&t->next-><=p->) t=t->next; p->next=t->next; t->next=p; *r=k; } } void sort(struct stucode **r) { struct stucode *t,*p,*q,*z; if(!r) { printf("没有学生信息可排序!\n"); return ; } if(!(*r)||!(*r)->next) return; t=*r; p=t->next; t->next=NULL; while(p) { q=p->next; if(p->>t->) { p->next=t; t=p; } else { z=t; while(z->next&&z->next->>=p->) z=z->next; p->next=z->next; z->next=p; } p=q; } *r=t; } void out(struct stucode *r) { printf("\n\n"); if(!r) { printf("没有学生信息可输出!\n"); return ; } while(r) { printf("%ld %s %.2lf\n",r->,r->,r->); r=r->next; } printf("\n\n"); } void menu() { printf("\n 学生信息管理系统\n"); printf("\n 菜单\n\n"); printf("\n 1建立链表并显示\n"); printf("\n 2查找某学号的学生信息\n"); printf("\n 3查找某姓名的学生信息\n"); printf("\n 4删除某学号的学生信息\n"); printf("\n 5插入新的学生信息\n"); printf("\n 6按分数降序排列输出\n"); printf("\n 7输出\n"); printf("\n 0退出\n"); printf("\n 请选择您要执行的选项:\n"); }
7)、学生奖惩界面的实现
学生奖惩管理的主要功能是完成对学生奖惩管理表的添加、删除、修改、查询。根据具体步骤,完成相应的奖惩管理模块。
奖惩窗体,如下图所示:
图4-7 奖惩界面图
主要事件代码的实现:
//增加按钮的点击事件代码
Private Sub Command1_Click()
= " "
= " "
= " "
= " "
= " "
End Sub
//删除按钮的点击事件代码
Private Sub Command2_Click()
If MsgBox("你确信要删除这条记录吗?", 36, "警告") = vbYes Then
If Then
End If
End If
End Sub
//退出按钮的点击事件代码
Private Sub Command3_Click()
Unload Me
End Sub
//保存按钮的点击事件代码
Private Sub Command4_Click()
End Sub
//取消按钮的点击事件代码
Private Sub Command5_Click()
End Sub
//上一条按钮的点击事件代码
Private Sub Command6_Click()
If Then
MsgBox "已达到第一条"
End If
End Sub
//下一条按钮的点击事件代码
Private Sub Command7_Click()
If Then
MsgBox "已达到最后一条"
End If
End Sub
//查询按钮的点击事件代码
Private Sub Command8_Click()
1
End Sub
8)、查找界面的实现
查询界面,如下图所示:
图4-8 查询界面图
查询程序流程图,如下图所示:
主要事件代码实现:
//用于选择查询字段的组合框Combo1的LostFocus()事件代码
Private Sub Combo1_LostFocus()
Select Case
Case "课程名称": findfield = "kcmc"
Case "学年": findfield = "xn"
Case "学期": findfield = "xq"
Case "班级": findfield = "bj"
End Select
End Sub
//用于选择操作符的组合框Combo2的LostFocus()事件代码
Private Sub Combo2_LostFocus()
findoperator =
If findoperator = "等于" Then
findoperator = "="
Else
findoperator = "LIKE"
End If
End Sub
//查询按钮的点击事件代码
Private Sub Command1_Click(Index As Integer)
If Len(findfield) = 0 Or Len(findoperator) = 0 Or Len(findstring) = 0 Then
MsgBox "输入信息不全!"
Exit Sub
End If
Dim i As Integer
Dim CQS As Integer
Dim SSQL As String
SSQL = "SELECT kcmc,xn,xq,bj,xsrs,xss from teach where "
stmp = findfield & " " & findoperator & " " & "'" & findstring & "'"
' STMP
SSQL = SSQL & stmp
= SSQL
If Then
MsgBox "记录不存在"
Exit Sub
Else
'FILL IN TEXT2 AND Text3
(0).Caption = "课程名称"
(1).Caption = "学年"
(2).Caption = "学期"
(3).Caption = "班级"
(4).Caption = "学生人数"
(5).Caption = "学时数"
= True
Command1(0).Enabled = True
End If
End Sub
//清除按钮的点击事件代码
Private Sub Command2_Click(Index As Integer)
= ""
= ""
= ""
= False
Command1(0).Enabled = True
End Sub
//退出按钮的点击事件代码
Private Sub Command3_Click(Index As Integer)
Unload Me
End Sub
//窗体装入的事件代码
Private Sub Form_Load()
'FILL THE SEARCH COMBO
"课程名称"
"学年"
"学期"
"班级"
= "课程名称"
findfield = "kcmc"
'FILL THE SEARCH OPERATOR
"等于"
"包含"
= "等于"
findoperator = "="
= False
End Sub
//输入查询内容文本框Text1的GotFocus()事件
Private Sub Text1_GotFocus()
findstring =
End Sub
//输入查询内容文本框Text1的LostFocus()事件
Private Sub Text1_LostFocus()
If findoperator = "=" Then
findstring = Trim()
Else
findstring = "%" & Trim() & "%"
End If
End Sub
样本实验结果
利用我班同学的数据建立了一个数据库,进行实验以验证本数据库系统的实用性,取得的一些结果如下:
修改/删除学生信息
首先根据学生学号查找出学生的信息,查询界面:
对查询到的学生信息进行修改与删除界面:
查询学生信息,可根据学生学号、姓名及班级进行查询,界面如下:
③、打印学生信息,界面如下:
从实验可以看出我的这个学生学籍管理系统设计已基本满足了要求。
结 论
经过八周的设计和开发,我不仅掌握了有关Visual Basic语言的基本语法和用VB组件来开发应用程序的方法,更重要的是了解了开发实用软件系统的基本过程和规律。我了解到学生学籍管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。经过实践和练习,我熟悉了软件开发过程中基本文档的编写,例如系统分析文档、数据流程图、业务流程图、E-R图、系统设计报告和(系统)程序流程图的编写。系统采用Microsoft Office中Access 2000来设计数据库,并使用当前优秀的开发工具—VB ,它有着最为灵活的数据库结构,对数据库应用有着良好的支持。同时,对Access2000数据库的使用也有了进一步的了解。
在系统设计中,我发现系统的规划与分析、数据库和用户界面的设计比较重要。当然,在系统开发中也出现了一些问题,比如语句中的小错误,设计的窗体无法运行,经过老师的指点和自己的修改,基本上解决了所出现的问题,较好的完成了此次系统开发。由于时间短暂,设计的内容比较简单,我个人开发的学籍管理系统仍有很多不足之处,我会不断改进和完善,但对于熟悉和了解软件开发的基本过程与方法,我受益匪浅,希望能够在以后的学习中加强这方面的锻炼,能更好的运用Visual Basic 软件做出新的设计。
致 谢
在本次毕业设计中,我从指导老师喻晓和老师身上学到了很多东西。喻老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。另外,在系统开发过程中殷老师也给予我很大的帮助,帮助解决了不少的难点,使得系统能及时开发完成,还有同组的同学同样给与我不少帮助,在这里一并表示感谢。
参考资料
【1】李晴. 用C++开发学籍管理系统[J]. 电脑知识与技术, 2004,(29)
【2】力毛措,索南当周. 信息管理系统的安全性设计[J]西北民族大学学报(自然科学版), 2004,(04)
【3】陈齐荣. 基于Visual C++的学生成绩管理系统的设计与实现[J]. 福建电脑, 2007,(07)
【4】冯祖琴. 高校学生成绩管理探索 [J]中国林业教育, 2006,(01)
【5】Visual Basic数据库应用. 武洪萍等.北京:电力出版社,2006
【6】张海潘.软件工程导论 (第三版).北京:清华大学出版社,2001
【7】薛成华.管理信息系统,清华大学出版社,1999
【8】张宏生,沈 可.基于数据仓库的科研信息系统研究初探 [J].数理医药学,2005,3(18):283
【9】王玉莲.基于ASP技术的学生信息管理系统的研究与开发 [J].计算机工程与应用,2004(11)
【10】苏世芬.信息化时代高校档案管理前瞻 [J].潍坊教育学院学报,2005,(2)
【11】赵玉莹.《高校办公自动化势在必行》[J].《科技与管理》.2001,(2):71-72
【12】孙淑扬等.《计算机网络技术在档案馆中的应用》.《档案学通讯》.1 9 9 8年 03期
【13】 夏骄雄等.《基于Intranet的管理信息系统》.[J]小型微型计算机系统,20O1,22(4):497-500
【14】VB与VBA技术手册. Paul Lomax.北京:电力出版社,2002
【15】赵淑平, 李志惠, 韩洁萍. 学生成绩管理系统[J]. 北京工商大学学报(自然科学版), 1993,(02)
【16】柴振荣. 信息系统的管理问题[J]. 管理科学文摘, 1995,(03)
【17】数据库及其应用. 陈维默.北京:电力出版社,2005
【18】张益星,罗敬. 高校学生成绩管理系统的设计与实现[J]. 信息技术, 2006,(04)
【19】陶文娣 ,陶文华. 网络安全技术措施[J]电脑开发与应用, 2004,(06)
【20】杨联启. 走出计算机系统维护的误区[J]. 电脑爱好者, 1996,(04)
【21】薛华成.管理信息系统(第三版).北京:清华大学出版社,2001
【22】唐学忠.Visual Basic程序设计.北京:电力出版社,2003
PAGE