成绩管理系统的设计与实现毕业论文(30页).doc
-成绩管理系统的设计与实现毕业论文-第 24 页毕业论文(设计说明书)论文题目:成绩管理系统的设计与实现学 院:专 业:班 级:姓 名:指导教师:河北联合大学成人教育毕业设计(论文)任务书学院学生姓名指导教师设计(论文)题目成绩管理系统的设计和实现主要研究目标和研究内容本文介绍了成绩管理系统的开发过程,包括需求分析、系统设计、系统实现、开发工具及数据库简介和软件使用说明。说明书(论文)的要求1. 界面美观,操作简单2. 具有实用价值3. 结构清晰,设计合理图纸的要求A4进度安排4周设计的基础数据和主要参考文献1 王瑜,余鹏.Delphi 6程序设计培训教程.第一版.北京:清华大学出版社,20092 张海藩.软件工程导论.第六版.北京:清华大学出版社.20133 厄尔曼著,岳丽华译.数据库系统基础教程.第三版.机械工业出版社,20094 陈豫龙.Delphi6数据库系统开发实例导航.第一版.北京:人民邮电出版社,20095 唐涛.客户/服务器系统入门必读.北京:电子工业出版社,2010 6 清汉计算机工作室.Access 2000 中文版实例.北京:机械工业出版社,20147 微软公司.SQL server 7.0 实现数据库设计.北京:北京希望电子出版社,2012指导教师签字: 系主任签字: 河北联合大学成人教育毕业设计(论文)进程表学 院河北联合大学继续教育学院姓 名曹慧合作者设计(论文)题目成绩管理系统的设计和实现时 间工 作 内 容完 成 情 况2014.11.222014.11.272014.11.272014.12.012014.12.012014.12.102014.12.102014.12.16做一份设计需求说明书和设计思路构建基本框架,完成数据设计系统设计的基本完成进行系统的改进和完善100%本人完成部分论文(说明书)15,580万字 图纸A4指导教师签字: 摘要本文介绍了成绩管理系统的开发过程,包括需求分析、系统设计、系统实现、开发工具及数据库简介和软件使用说明。需求分析介绍了成绩管理信息化的目的和意义,对系统要求作了初步说明。系统设计介绍了系统总体功能设计、数据结构设计和界面设计。系统总体功能包括信息的输入、删除、修改、查询、统计和打印,系统的用户管理及登录;数据结构方面设计了系统信息需要的几个数据表的结构;界面设计介绍了界面设计原则及设计出的界面。系统实现讲述了系统各个功能实现的方法。开发工具使用Delphi 6,数据库使用Access 2000,文中对两者的优点进行了简要描述。最后说明了软件使用的方法。关键词 成绩管理 数据库 数据网格 窗体 ADO目 录1 引言12 编程工具及数据库简介32.1 Delphi6简介32.2 Access2000简介42.3 应用程序与数据库的结合53 需求分析73.1 成绩管理信息化的目的和意义73.2 用户需求73.3 对系统的其他要求84 系统设计94.1 系统总体设计94.2 数据结构设计114.3 界面设计145 系统实现195.1 相关术语的解释195.2 启动封面及主窗体功能的实现195.3 信息编辑功能的实现215.4 查询统计功能的实现245.5 报表的实现265.6 登录及用户管理的实现275.7 数据库连接的实现296 软件使用说明31结论34参考文献35致谢361 引言学生成绩管理系统是一个教育单位不可或缺的重要组成部分,它的内容对于学校的决策者和管理者以及众多的学生来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。在计算机广泛应用于教育单位以前,人们使用传统人工的方式管理学生成绩档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,具有手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低、发布信息迅速等。这些优点能够极大地提高学生成绩管理的效率,也是教育单位的科学化、正规化管理,与世界接轨的重要条件。因此,对于教育单位来说开发这样一套管理软件成为很有必要的事情。 今天,许多学校的管理已经广泛的使用了计算机资源,也开发了相应的学生成绩管理系统。这些系统大都因各个学校的具体情况而略有不同,各有侧重。我开发的是一个通用的成绩管理系统,汲取了成绩管理系统的共同点,提供了成绩管理系统的基本功能。要开发这样一个系统,首先要对成绩管理的流程比较熟悉,成绩管理流程大体上是学校信息的初始化,专业或年级的初始化,考试类型和课程的初始化,学生信息的录入,学生成绩的录入,成绩查询、统计、报表打印等。其中初始化部分是在进行其它工作之前要做的第一项工作,学生信息的录入大多是学生的年级或专业、班级等基本信息,录入方式有手工录入和从文件或数据库导入方式,成绩录入大多是手工录入,成绩查询、统计则是针对提供的某些条件对某一学生或某一班级、年级等进行的成绩信息的查询和统计。在成绩管理中,成绩的报表打印是万万不可缺少的,因为一份精美科学的报表给学校的各个相关部门的管理者、决策者及学生个人提供了了解学生成绩信息的重要甚至是唯一途径。Borland公司的Delphi是一款优秀的应用程序开发工具,提供了比较完善的集成开发环境和丰富的面向对象的组件,使编程变得更为快捷和方便。Access关系型数据库是适用于中小型数据管理的数据库,提供了基本的数据库功能,能够胜任学校的数据存储和处理要求。本文第2章对成绩管理系统的编程工具和数据库作简要介绍,还介绍了ADO连接数据库的技术;第3章进行需求分析,简要介绍了系统的功能;第4章对系统进行总体分析,设计了数据结构和用户界面;第5章介绍了系统实现的过程和方法;第6章说明了系统的使用方法。2 编程工具及数据库简介2.1 Delphi6简介能使用的数据库应用程序开发工具很多,最为常见的是Microsoft Visual Basic、 Sybase Power Builder、Borland Delphi,我选择了Borland 公司的Delphi 6。Borland公司的Delphi 6是Windows应用程序开发工具,是使用广泛、易学易用的面向对象的开发工具。Borland Delphi 6提供了大量的控件,这些控件可用于设计界面和实现各种功能,大大减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性,Borland Delphi 6 提供了带有打印功能的报表制作控件,能方便迅速的制作出科学精美的报表,Borland Delphi 6 提供了多种数据库连接方式,支持多种流行的数据库,如Access、FoxPro、SQL server等,而且,Delphi的编译速度超快。故而,用它来实现本系统是一个相对较好的选择。Delphi 集成开发环境主要分为四个部分:命令菜单及控件、对象查看窗口、设计期窗口和源代码编辑器。菜单用于文件、工程、数据库的管理和操作,控件包括28类控上百个控件。对象查看窗口用于查看管理对象属性和事件,其顶部是对象选单,左边是对象名称,右边是其类的名称。对象监视器窗口具有两个标签页:Properties(属性)和Events(事件).。在设计期,点选属性页可显示和设置所选对象的各种属性;点选事件页将列出该对象具有的触发事件,双击某一事件,则在事件代码编辑器中自动添加该事件的处理程序声明,并且转到代码编辑器窗口,进行代码的编写和修改。设计期窗体用于放置各种对象,开发应用程序的过程实际上就是在窗体上放置各种对象、进行属性设置和编写事件处理代码。源代码编辑器窗口左侧是单元资源列表,包括窗体包含的所有对象列表,自定义的变量和常量列表,其他相关单元的列表。窗口的右侧为当前窗体的源代码。微软公司的ActiveX Data Objects(ADO)是基于OLE DB Provider 的数据库访问引擎。其主要优点是易于使用、高速度、低内存支出和占用磁盘空间较少。ADO支持用于建立基于客户/服务器和WEB的应用程序的主要功能。通过ADO可以访问所有提供OLE DB 标准接口的数据。ADO访问数据库的层次结构如图1所示:在Delphi 的控件面板中有一个ADO页面,所有的ADO控件都在其中,它们的用途简述如下:OLE DBADO对象ODBCSQL Server 7.0Oracle、Access等OLEDB数据库。其它数据库图 1 ADO访问数据库的层次结构图 TADOConnection:用于和数据库建立连接的控件,ADO数据集通过它与数据库连接,一个TADOConnection控件可以被多个ADO数据集共享。 TADOCommand:用于在数据库上执行SQL语句的控件,它可以直接连接数据库或者通过TADOConnection控件连接数据库。TADODataSet:ADO方式的数据集控件,可以对应一个数据表或一次查询返回的结果。TADOTable::一种ADO数据集控件,对应数据库中的一个数据表。TADOQuery:一种ADO数据集控件,对应一次SQL查询的结果。TADOStoredProc:ADO方式的存储过程控件。这些控件在实际的程序中的关系如图2所示。ADO数据集控件TADODataSet数据库TADOCommandTADOTableTADOConnectionTADOQuery图 2 ADO控件间的关系2.2 Access2000简介 Access 2000是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索。Access 的优点在于它能使用数据表示图或自定义窗体收集信息。数据表示图提供了一种类似于 Excel 的电子表格,可以使数据库一目了然。另外,Access 允许创建自定义报表用于打印或输出数据库中的信息。Access也提供了数据存储库,可以使用桌面数据库文件把数据库文件置于网络文件服务器,与其他网络用户共享数据库。Access 是一种关系数据库工具,关系数据库是已开发的最通用的数据库之一。如上所述,Access 作为关系数据库开发具备了许多优点,可以在一个数据包中同时拥有桌面数据库的便利和关系数据库的强大功能。数据库是一种存储数据并对数据进行操作的工具。数据库的作用在于组织和表达信息,简而言之,数据库就是信息的集合。计算机的数据库可以分为两类:非关系数据库(flat-file)和关系数据库(relational)。关系数据库中包含了多个数据表的信息,数据库含有各个不同部分的术语,象记录、域等。创建任何一个数据库的第一步是仔细的规划数据库,设计必须是灵活的、有逻辑的。创建一个数据库结构的过程被认为是数据模型设计。(1) 标识需要的数据;(2) 收集被标识的字段到表中;(3)标识主关键字字段;(4)绘制一个简单的数据图表;(5)规范数据;(6)标识指定字段的信息;(7) 创建物理表。数据库的修改分为:添加、编辑和删除记录。这三种操作均可由Borland Delphi 创建的程序来完成,以后的章节将详细描述实现的具体方法。数据表之间的关系指明两个表之间共享一个共同的关键字值。一个连接是指一种虚拟的表,这种表是在当用户要求从相互关联的各个不同的表中获取信息时建立的,关键字段用于在相互连接的不同表中查找匹配的记录。一个更高级的连接形式称为自连接。这种连接是指一个表被连接到它自己的一个字段,或在不同的纪录中有重复数据的组合字段。数据库中有三种不同类型的关键字:主关键字、组合关键字和外关键字。在表中使用的关键字类型用于描述表表示什么以及在数据库中如何与其它的表建立关系。2.3 应用程序与数据库的结合微软的JET数据库引擎提供了与数据库打交道的途径,我们是通过它以及Borland Delphi的控件来访问数据库并对其进行各种操作。Borland Delphi 与Access通过共用JET数据库引擎,从而给用户提供了丰富的数据类型。ADO系列控件把数据库中的信息与将信息显示给用户看的Delphi程序之间架起了一座桥梁。我们可以设置ADO系列控件的各个属性,告诉它要调用数据库的哪个部分。缺省情况下,ADO系列控件根据数据库中的一个或多个数据表建立一个dynast-type(动态集合)类型的记录集合。一个记录集合是动态的也就意味着,当原来的数据表中的容改变了以后,该记录集合中的记录也会随之改变。将ADO系列控件放置在窗体中之后,我们还必须在该控件与要处理的数据库之间建立联系。3 需求分析3.1成绩管理信息化的目的和意义今天,计算机的价格已经十分低廉,性能却有了长足的进步,它已经被应用于许多领域。计算机之所以如此流行的原因主要有以下几个方面:首先,计算机可以代替人工进行许多繁杂的劳动;其次,计算机可以节省许多资源;第三,计算机可以大大的提高人们的工作效率;第四,计算机可以使敏感文档更加安全,等等。 现在我国某些地区的学校,特别是中小学中学校信息的管理水平还停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在工作效率上也是非常滞后的。在信息时代这种传统的管理方法必然被计算机为基础的信息管理系统所取代。计算机和软件技术以及网络技术的迅速发展和相关应用的普及使得在学校里开发应用程序,实现信息管理计算机化,早已经成为可能,而且是一劳永逸的廉价解决方案。归纳起来,使用成绩管理系统其好处大约有以下几点:1.可以存储历届的学生的成绩档案,经济、安全、高效;2.只需一到二名成绩录入人员即可操作系统,节省大量人力和财力;3.可以迅速查到所需信息,并形成报表;4.可以方便快捷的实现学生成绩的录入、修改和统计;5.可以方便快捷的对学校的专业、年级等信息进行设置。3.2 用户需求作为信息管理系统的一部分,成绩管理系统与其它系统有着相似的功能。成绩管理系统要求具有信息输入、删除和修改的功能。其中的信息是包含了学校的信息、专业的信息、年级的信息、考试类型的信息、课程的信息、学生的信息、成绩的信息、系统用户的信息等。这些信息,特别是最重要的学生信息和成绩信息,要求其输入方式多样化、方便化、快捷化。以提高工作效率,能迅速的为之后的信息的查询、统计和报表打印打下基础。 查询、统计和报表打印功能是信息管理系统非常重要的部分。实际上,对成绩管理系统来说,信息的录入在很大程度上就是为了信息的查询、统计和报表打印。信息的查询要求其查询多样,能组合各种查询条件进行综合查询,统计功能包含了整个班级或年级的平均分,分数段人数或学生名单,不及格人数或学生名单,成绩的前几名后几名,每个学生的总分、平均分等。报表打印要求能打印学生名单,学生的各次考试的成绩,整个班级的成绩和学生所有的成绩。 另外系统还要求一定的安全性,对于某些信息有些用户是无权随意设置的(如学生成绩),因此需要有一个用户登录模块来区分用户的操作权限,一个用户管理模块来存储和维护用户信息。3.3 对系统的其它要求由于我国经济欠发达,教育投资不多,许多院校的计算机性能不高,这就要求系统不能对计算机硬件有过高的要求;界面美观大方,易于理解,操作简单方便;有必要的帮助文档,能说明系统的使用方法。4 系统设计根据实际情况,使用原型法(Rapid Prototyping)即以少量代价快速地构造一个可执行的软件系统模型。使用户和开发人员可以较快地确定需求,然后采用循环进化的开发方式,对系统模型作连续的精化,将系统需具备的性质逐渐增加上去,直到此时模块也发展成为最终产品了。4.1 系统总体设计成绩管理的流程如下:(1) 收集在校学生的信息包括他(她)的入学日期、年级、专业、班级、学号、姓名等。(2)收集每个学生的考试成绩,归类、整理、记录在案。(3)统计学生的成绩信息,以报表形式打印出来。必要时可以提供查询。根据成绩管理流程,系统的功能模块图如图3,各功能如下:初始化考试类型设置用户管理信息输入信息编辑信息删除信息修改名单导入班级浏览查询统计按条件查询报表打印学校信息更改专业年级设置成 绩 管 理 系 统课程设置用户登录成绩统计图 3 功能模块图(1) 用户登录模块:为了系统所保存信息的安全性,要求登录系统时要有进入系统的身份确认,登录信息有用户名和密码。数据库中存储了用户信息,由用户管理模块进行维护。在用户登录过程中,应用程序连接数据库,并将用户输入的信息与数据库中存储的信息相比较,当两者相同时,用户登录成功,两者不同时,登录失败。在数据库中还存储了各用户的相应权限,登录的用户将依其权限拥有不同的功能,这也是出于对安全性的考虑。(2) 用户管理模块: 在系统初次投入使用时,数据库中已存在了一些初始用户信息,用来初次登录。为了安全性,系统管理员在登录后应及时修改初始用户信息。在用户管理模块中,提供了用户的添加、删除功能,用户的信息包含了用户名、密码和权限,对于每一个用户可以更改他的权限和密码。(3) 更改学校信息模块: 在此模块中提供了一个初始学校信息,在系统初次使用时应更改学校信息为本学校的信息。(4) 专业/年级设置模块: 此模块对专业或年级信息进行维护,提供添加、删除、修改和报表打印功能。对于已经存在的专业或年级代号和名称,系统将拒绝接受。此模块是为以后学生信息和成绩信息的输入和管理做准备的,相应信息应该提前进行输入。(5) 课程设置模块: 此模块对开设的课程信息进行维护,提供添加、删除、修改和报表打印功能。对于已经存在的课程号和课程名称,系统将拒绝接受。此模块是为以后成绩信息的输入和管理做准备的,相应信息应该提前进行输入。(6) 考试类型设置模块:此模块对考试类型信息进行维护,提供添加、删除、修改功能。此模块是为以后成绩信息的输入和管理做准备的,相应信息应该提前进行输入。(7) 学生名单输入模块: 此模块用来输入学生信息,包括了手工输入和文件导入两种输入方式。对于前者,首先要选择学生的入学年份、专业或年级、班级,之后系统提供了学生信息的添加、修改和删除功能。学生信息包括学号、姓名和性别,对于已经存在的学号,系统将拒绝输入;对于后者,系统将要求用户选择要导入的文件,然后由程序自动导入。(8) 成绩输入模块: 此模块用来输入学生的成绩。首先要选择要输入成绩的班级,然后系统提供了成绩的添加、删除和修改功能。系统提供了两种成绩输入方式,一种是对于整个班级,输入一个课程的考试成绩,另一种是对于某个学生输入本次考试所有课程的成绩。(9) 班级浏览模块: 此模块用来浏览班级和学生名单。系统将列出存储的所有班级,单击班级列表将会显示该班级的学生名单。系统还提供了所有班级的报表打印和班级学生名单的报表打印功能。(10) 查询模块: 查询模块将提供四个查询功能。按学号或姓名查询学生信息;按学号查询某一学生某次考试成绩;按学号查询某一学生的所有考试成绩;查询班级的某次考试成绩。(11) 统计模块: 此模块用来统计学生的成绩。首先要选择某个需要进行统计的班级,之后系统提供了某次考试某一课程的不及格学生名单和成绩统计、某次考试某一课程的不同分数段的学生名单和成绩统计,还提供了这个班级某次考试每个学生的平均成绩和总成绩的统计功能。(12) 打印模块: 打印模块用来提供报表打印功能。成绩管理系统中有几项需要打印,所有班级的打印、班级学生名单的打印、班级某次考试成绩的打印、某个学生某次考试成绩的打印、班级某个课程成绩的打印、学生各学期成绩单的打印,以及学校所开设专业或年级以及开设的课程的信息的打印。打印功能应该提供打印预览、打印机设置和打印功能。(13) 窗口操作: 由于系统使用了多文档界面(MDI)的结构,所以提供了可以统一操作各个子窗口的功能,以方便在各个子窗口之间切换。(14) 帮助: 帮助包括了两项,一个是关于,写明了系统的名称、版本号、开发日期以及适用范围;另一个是使用说明,简要介绍了系统的使用方法。4.2 数据结构设计建立数据库的工具很多,为了方便开发,该系统使用了Access 2000。如果要使用C/S结构,可以连接SQL Server 2000 ,只需更改Delphi的数据库连接控件的属性即可。用Access建立了空数据库之后,将要建立所需要的数据表格。该成绩管理系统建立了以下数据表格:(1) 学校信息表:此表用于学校信息更改模块,结构如表1(2) 用户密码表:此表用于用户管理和用户登录模块,结构如表2(3) 专业年级信息表:此表用于专业/年级设置模块、学生名单输入模块、成绩输入模块、班级浏览模块、查询模块、统计模块和打印模块,结构如表3(4) 课程信息表:此表用于课程设置模块、学生名单输入模块、成绩输入模块、班级浏览模块、查询模块、统计模块和打印模块,结构如表4(5) 学生信息表:此表用于学生名单输入模块、成绩输入模块、班级浏览模块、查询模块、统计模块和打印模块,结构如表5(6) 成绩表:此表用于成绩输入模块、查询模块、统计模块和打印模块,结构如表6(7) 考试类型代码表:此表用于成绩输入模块、查询模块、统计模块和打印模块,结构如表7在以上的七个表格中,专业年级信息表、考试类型代码表、课程信息表、学生信息表和成绩表之间是有联系的,关系图如图4所示。表1 学校信息表字段名称数据类型字段长度说明学校名称文本20学校地址文本40学校电话文本15邮编文本6表2 用户密码表字段名称数据类型字段长度说明用户名文本20密码数字整型权限文本1表3 专业年级信息表字段名称数据类型字段长度说明专业/年级代号文本10主键专业/年级名称文本30表4 课程信息表字段名称数据类型字段长度说明课程代号文本10主键课程名称文本20表5 学生信息表字段名称数据类型字段长度说明学号文本10主键姓名文本20性别文本2入学年份文本4专业/年级代号文本10班级代号文本2表6 成绩表字段名称数据类型字段长度说明学号文本10学期代号文本2考试类型代号文本10课程代号文本10成绩数字双精度型补考成绩数字双精度型备注文本50表7 考试类型代码表字段名称数据类型字段长度说明考试类型代号文本10主键考试类型名称文本20图 4 表格关系图4.3 界面设计图5至图 10是系统的几个主要界面。在计算机软件技术中,人机界面已经发展成为一个重要的分支。MIS人机界面设计一般遵循以下一些基本原则:(1) 以通信功能作为界面设计的核心人机界面设计的关键是使人与计算机之间能够准确地交流信息。一方面,人向计算机输入信息时应当尽量采取自然的方式;另一方面,计算机向人传递的信息必须准确,不致引起误解或混乱。另外,不要把内部的处理、加工与人机界面混在一起(人机界面程序只是通信),以免互相干扰,影响速度。(2)界面必须始终一致统一的人机界面不至于会增加用户的负担,让用户始终用同一种方式思考与操作。最忌讳的是每换一个屏幕就要换一套操作命令与操作方法。(3) 界面必须是用户随时掌握任务的进展情况人机界面应该能够告诉用户软件运行的进度。特别是在需要较长时间的等待时,必须让用户了解工作的进展情况。(4) 界面必须能够提供帮助 一个优秀的MIS软件应该提供在线求助功能,甚至提供使用向导,这将给用户带来极大的方便。在多媒体环境下,以语音提示作为操作向导,不会干扰屏幕信息,是一个极佳的选择。(5) 界面友好,使用方便多数MIS软件的数据输入量较大。对于一些相对固定的数据,不应让用户品频频输入(特别是汉字),而应让用户用鼠标轻松选择。如成绩管理系统中的“专业”是相对固定的数据,其值一般有若干种。录入这类数据之前,MIS软件应在相应位置弹出一个列表框,待用户以鼠标点击,而不应让用户每次都输入这些汉字。总之,所开发的MIS在使用过程中,应使用户输入量降至最低限度,同时也要减少用户的干预量。实践证明,用户干预越少,MIS系统的满意程度越高。(6)输入界面尽可能接近实际如果某个电算会计软件的凭证录入画面是表格式的,一屏可录入多条记录,而且与实际凭证一模一样,甚至连颜色都无异,用户在终端上录入凭证,仿佛用纸笔在纸图 5 主界面和课程设置界面图 6 学生名单输入界面图 7 成绩输入界面图 8 查询界面图 9 成绩统计界面图 10 打印预览界面上填写凭证,以增加人机亲和力。(7) 具有较强的容错功能 误操作、按键连击等均有可能导致数据误录。巧妙地进行程序设计,可以避免此类因素造成的错误。例如,录入学生成绩时,我们可以对其范围进行限定,使用户无法输入0100以外的数据;录入学生年龄时,不妨根据实际情况将范围限制在1520之间。 基于以上的考虑,决定使用多文档界面(Muti-Document Interface,简称MDI)结构来开发应用程序。这种界面是Windows应用程序大多使用的,用户比较熟悉,界面比较友好,使用起来也比较方便。它包含了一个主窗体和若干个子窗体,可以方便的在各个功能子窗口之间切换,并且共用一套菜单。但是这种结构也存在着一定的弊端,如窗口与窗口之间的功能可能相互影响,尤其是在数据库应用程序的开发中,因为要使用同一数据源,这种冲突更加容易发生。因此在程序中设置了一定的限制,以避免冲突的发生。在这种结构中,主窗体集中了菜单、工具栏和状态栏,菜单中提供了系统的各种功能,工具栏中是这些功能的快捷按钮,系统的所有功能都由菜单或快捷按钮来调用出来,而状态栏则显示了系统当前的状态。各个子窗体被赋予完成系统的各个功能的能力,系统提供的课程设置、学生名单输入、成绩输入、用户管理、成绩查询统计和打印等功能完全是在子窗体中实现的。因此系统使用的多文档界面结构实际上是主窗体统一管理各个子窗体(其实就是系统的各个子功能)并调用子窗体,而子窗体完成了系统的各个子功能。5 系统实现5.1 相关术语的解释工程:对于Delphi来说,一个工程就是一个应用程序,编写一个应用程序就要建立一个工程。应用程序所建立的各种文件都存在于工程之中,执行程序就是要运行工程。窗体:窗体是我们在Windows编程中必须用到的一个控件,它是其它控件对象放置的地方。控件:控件实际上是由Delphi提供的一个个的能够完成特定功能的程序,它包含了不同数量的属性和事件,提供给开发者进行设置及编程,以完成开发者需要的功能。数据网格:Delphi的控件之一,用于显示数据库中的数据。可以以数据表原有的格式显示数据,方便查询和修改。单元文件:是Pascal源文件,在创建窗体、数据模块、控件时都会产生相应的单元文件。5.2 启动封面及主窗体功能的实现 主窗体的主要功能是调用各个子窗体,用子窗体来实现系统的功能。主窗体创建子窗体的方法是在菜单按钮的onClick事件中加入语句:Application.CreateForm(TChildForm,ChildForm);同时在source文件中删除自动创建子窗体的语句,并在主窗体的uses语句中加入与创建的子窗体对应的单元文件名称。如图11所示,当单击图中名单输入菜单的子菜单按钮手工输入时,将弹出学生名单输入子窗体。 为使子窗体正常关闭,在子窗体的OnClose事件中使用语句:Action:=Free 将主窗体按钮设为灰色不可用,使用语句:M_Begin.Enabled:=False; /设置某一菜单按钮不可用B_Grade_ToolButton.Enabled:=False; /设置某一快捷按钮不可用对于创建某些需要选择班级的子窗体,要选择主窗体上的入学年份、专业/年级和班级,如果这些值为空,窗体不能创建,系统使用消息框提示用户,如图12。此功能由ifelse语句实现,举例如下:if INSchool_ComboBox.Text='' then begin showMessage('请选择入学日期!'); /为空则显示消息框 Exit; end else Application.CreateForm(TInName_Form,InName_Form);/不空则创建子窗体这里需要注意的是语句ifelse,它们中的复合语句必须用beginend包含起来,else之前则不能有分号。图 11 主窗体和名单输入子窗体图 12 系统提示对话框启动封面在软件开始执行时出现,停留3秒后消失,实现语句是:Flash_Timer.Interval:=3000;并在Timer控件的OnTime事件中加入语句:DataModule1.School_ADOTable.Open;Flash_Form.Close;5.3 信息编辑功能的实现信息编辑包括信息输入、删除和修改。信息输入的内容包括专业/年级的信息、课程的信息、考试类型的信息、学生的信息、成绩的信息以及用户的信息。各个相关子窗体的文本编辑框用来填写信息,对添加按钮编程实现了信息的输入,信息的输入使用ADO系列控件的ADO数据表或ADO查询,调用它们的Append方法、Post方法和AppendRecord方法。输入学生信息的语句是:DataModule1.InName_ADOTable.Open;/打开学生信息表DataModule1.Grade_ADOTable.Open; /打开专业年级代码表DataModule1.InName_ADOTable.Filtered:=True;/激活过滤DataModule1.InName_ADOTable.AppendRecord(ID_Edit.Text,Name_Edit.Text,Sex_ComboBox.Text,InYear_DBText.Caption,DataModule1.Grade_ADOTable'专业/年级代号',Class_DBText.Caption); /添加学生记录为避免输入重复的学号,使用下面的代码提示用户:DataModule1.InName_ADOTable1.Filter:='学号='''+ID_Edit.Text+''''/对学号设置过滤DataModule1.InName_ADOTable1.Filtered:=True;/激活过滤DataModule1.InName_ADOTable1.Open;/打开学生信息表if DataModule1.InName_ADOTable1.RecordCount=0 then/判断用户是否存在/不存在则添加学生信息记录else Application.MessageBox('该学号已存在!','信息',MB_OK)/学号存在则提示用户如图13所示,输入学号、姓名,选择性别,点击添加按钮,完成学生信息的添加。信息删除的内容包括专业/年级信息、考试类型信息、课程信息、学生信息、成绩,信息的删除调用ADO数据表的Delete方法,删除当前一条记录的方法是:if Application.MessageBox('确实要删除吗?','删除确认',MB_YESNO)=IDNO then DataModule1.InName_ADOTable.Cancel /取消删除 else begin DataModule1.InName_ADOTable.Open; /打开数据表 DataModule1.InName_ADOTable.Filtered:=True; DataModule1.InName_ADOTable.Edit; /表进入编辑状态 DataModule1.InName_ADOTable.Delete; /删除end