毕业设计论文

更新时间:2024-06-03 15:56:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

东 莞 理 工 学 院

本 科 毕 业 设 计

毕业设计题目:学生信息和成绩管理系统的设计与

实现

学 生 姓 名: 郑林鸿 学 号: 201141402511 院 系: 计算机学院

专业班级:计算机科学与技术 5班 指导教师姓名及职称: 张洁 讲师 起止时间:2015年1月—— 2015年5月

郑林鸿:学生信息和成绩管理系统的设计与实现 摘要

如今是信息高速发展的时代,任何的一家事企业单位或是小工厂如果要生存并发展下去,都是离不开对信息的有效管理,那么建立相应的信息管理系统就成为无法忽视的一个问题了。

应用了Visual C++ 6.0这一编程软件,外加Access 2003数据库开发了一个较小型的学生信息和成绩管理系统,创建一个与时俱进符合常规的有效的计算机管理学生学籍的系统。

该学生信息和成绩管理系统功能:成绩查询,学生基本信息的保存,用户管理,学生成绩录入,数据库的备份与恢复,学校的奖惩记录与奖学金记录等。

该系统具有界面友好简洁,操作比较简易,各个功能模块之间是独立的优点。

关键字 成绩 学籍管理 信息化

郑林鸿:学生信息和成绩管理系统的设计与实现 Abstract

Today is the information era of rapid development, any of a family enterprise unit or small factory if you want to survive and develop, are inseparable from the effective management of information, to establish the corresponding management information system has become impossible to ignore a problem.

The application of the Visual C + + 6.0 programming software, plus Access 2003 database to develop a relatively small student information management system, and results to create a keep pace with the times in accordance with conventional effective scheme of computer management and students' status files.

The student information management system functions and results: the scores query, save the students basic information, user management, student achievement entry, database backup and recovery, the disciplinary records of the school and scholarship notes, etc.

The system has friendly interface is simple, the operation is simple, between each function module is independent of the advantages. Keywords Score Student status management informatization

郑林鸿:学生信息和成绩管理系统的设计与实现 目 录

1.前 言 ..................................................................................................... 1

1.1 课题的背景及意义 ............................................................................................. 1 1.2课题的基本概念和发展现状 .............................................................................. 1 1.3课题的目标 .......................................................................................................... 1

2.系统分析 .............................................................................................. 2

2.1 可行性研究 ......................................................................................................... 2 2.1.1经济上的可行性 ........................................................................................... 2 2.1.2技术上的可行性 ........................................................................................... 2 2.1.3运行上的可行性 ........................................................................................... 2 2.1.4性能需求的可行性 ....................................................................................... 2 2.2 需求分析 ............................................................................................................. 3 2.2.1 系统需求 ...................................................................................................... 3 2.2.2 功能需求 ...................................................................................................... 3

3.系统设计 .............................................................................................. 5

3.1 基于设计概念和处理流程 ................................................................................. 5 3.2系统层次模块图 .................................................................................................. 5 3.3 数据库设计 ......................................................................................................... 7

4.详细设计 ............................................................................................ 10

4.1系统菜单主界面 ................................................................................................ 10 4.2权限验证模块 .................................................................................................... 11 4.3 用户管理模块 ................................................................................................... 11 4.4 基础数据设置模块 ........................................................................................... 13 4.5 成绩录入模块 ................................................................................................... 15 4.6 数据库管理模块 ............................................................................................... 16 4.7 查询成绩模块 ................................................................................................. 17

郑林鸿:学生信息和成绩管理系统的设计与实现 5. 软件测试 ............................................................................................. 20

5.1 测试计划 ........................................................................................................... 20 5.2 随机用例以及系统的测试过程 ....................................................................... 20

结束语 ....................................................................................................... 22 参考文献................................................................................................... 23 致谢 ........................................................................................................... 24 附录 ........................................................................................................... 25

附录1——主控平台的实现MFC代码 ................................................................ 25 附录2——权限验证模块的实现MFC代码........................................................ 26 附录3——用户管理模块的实现MFC代码........................................................ 28 附录4——学生总分名次查询对话框的初始化的MFC代码 ........................... 30 附录5——统计查询学生总分名次MFC代码 ................................................... 31 附录6——数据备份的MFC代码 ........................................................................ 32 附录7——数据库恢复的MFC代码 .................................................................... 33

郑林鸿:学生信息和成绩管理系统的设计与实现 1.前 言

1.1 课题的背景及意义

国内现在许多高校都进行了大量的扩招,随着生源的增多,学校工作人员的工作量也随着剧增,因此,信息管理系统也就随着这一种趋势而出现了,而信息管理系统在提高学校的工作效率的同时也能更加的充分使用学生的资源利用率。在学校改革的新形势下,学校的教学管理的也应该逐渐升级并适应,使员工的工作潜力充分发挥出来。

在这样的信息量庞大的时代,提高学生学籍管理效率的问题随之而生,即创建更好更有效的学生信息管理系统。学校为了提高自身的行政效率,同时也提高自身的硬件条件从而能跟上信息时代的发展,并且能实现自身的信息规范化管理,因此,学生信息和成绩管理系统也就应运而生了。 1.2课题的基本概念和发展现状

信息化是个普遍的概念,是如今生活中人们比较喜欢用的词语。世界万物之间都是有关连的,而用计算机的知识来简单讲述,就是信息与数据的关系,数据就是信息的载体,而信息反过来也是数据的描述。这两者是不可分离的。信息的主要特点是可以共享的,可以被处理,存储,传输延迟。

众所周知,信息活动是信息的加工、传输、收集与利用等活动是人们在日常生活中离不开的,在现代生活中的作用越来越广泛并不可取代。在智能化生产力的发展中,以发展计算机为主的并发生在信息活动中,并且为社会做出贡献的历史过程,我们称之为信息化[1]。很多情况下信息不能发挥出更好的效能,原因之一是它没有经过有效的管理。人们常说,现代社会是信息的时代,而就我而言,所谓的信息时代就是以计算机硬件为基础,加以用算法和网络技术以及其它相关技术的辅助,对人们所需的信息进行管理、保存、维护。从而使人们能更加的方便、简易、快速的取得自己所需的信息。 1.3课题的目标

1、 本系统可以提高学生的基本信息安全以外,在快速查询学生的信息的同时也能提高了学校对学生信息的管理效率,节约了管理者的大量时间和学校的管理成本。

2、 满足学校里不同方面的需求。

3、 为学校建设信息化提供有效的信息支持。

1

郑林鸿:学生信息和成绩管理系统的设计与实现 2.系统分析

2.1 可行性研究

可行性研究的目的是确定所有问题是否能够得到有效的解决并且是在最短的时间内用最小的成本。 2.1.1经济上的可行性

随着社会经济的快速发展,计算机的价格越来越低廉,但是性能却越来越强,而学校的管理工作也由原来的纸质版的管理飞跃到了无纸化,系统化。当今信息管理的系统的开发是为了不断提高学校管理的工作效率。其中的信息,学生和改善绩效管理系统主要包括:手动对许多复杂劳动现在可以运行,而不是由管理系统;两个管理系统的操作可以节省很多不必要的工作和资源如人力和物质资源;三的操作管理系统可以极大地提高工作效率,使学校的学生信息管理更有组织性,四个在维护信息安全管理系统提供了大量的帮助,可以使重要的文档文件更安全,等等。所以,该系统在经济上是可行的。 2.1.2技术上的可行性

学生信息和成绩管理系统的开发,使用Microsoft Access 2003作为系统的数据库,Microsoft Access 2003是一个支持多用户的数据库,适用于一些中小规模管理的数据量。

使用Visual c++ 6.0编译器开发环境的系统开发,它是广泛使用的编程软件,一种现代的完美对象,以及支持和丰富的数据类型的命令和控制语句[2]。为研制高性能系统的程序员提供安全保障,并能满足客户要求的各种系统,保证了代码的模块化要求,提高代码模块的程度,为日后系统的扩展、维护和修改。

使用MFC Windows应用程序编写的C + +类的设置,设置组织结构,它封装了Windows的API函数和控制,采用C++ MFC大大简化了程序员开发Windows应用程序根据工作量[3]。因此,本系统在技术上是可行的。 2.1.3运行上的可行性

学生信息和成绩管理系统是一个小型的系统,该系统所需的运行空间非常小,学校的计算机硬件或软件都能够满足条件。因此,本系统在运行上也是可行的。

2.1.4性能需求的可行性

运行学生信息和成绩管理系统所需的硬件环境:如果电脑的配置在比较

2

郑林鸿:学生信息和成绩管理系统的设计与实现 低系统运行的性能和效率往往不尽如人意,但是根据调查目前市场上的硬件的性能技术以及其价格,其性价比是非常的高的,因此在给服务器配置比较高性能的硬件的成本也不是很高,相对于现代人们的生活水平还是能够接受的。

处理器:Inter Pentium II 266 MX 或更高 内存:1024MB 硬盘空间:100GB 显卡:SVGA 显示适配器

操作系统:Windows XP或WIN 7/8 数据库:Microsoft Access 2003 2.2 需求分析 2.2.1 系统需求

在开发的学生信息和成绩管理系统,该系统应具有以下几点要求:

1)多层次的数据收集,为学生提供在管理人员,支持数据的教师,各级教育部门管理人员的学校领导与管理。

2)有着不同方式的成绩查询功能,以满足不同用户的的不同需求。

3)只需要极少的工作人员,就能完成大量的学生信息的管理工作,且操作要简单。

4)要充分考虑到学校以后的建设,可以方便的修改和扩张该系统。 5)可以保证数据的安全管理,准确。 2.2.2 功能需求

该系统需要完成几个基本功能:

1)用户管理:增加和删除用户还有修改用户的密码和设置用户权限。有利于系统的安全性和可维护性。

2)基础数据管理:它主要包括学校的专业设置和系别设置还有班级设置。 3)学生管理:有奖学金和奖惩以及学生信息档案。学校的对学生的奖学金,奖惩等信息进行记录,以及对学生的基本信息的的管理

4)成绩管理:提供学生成绩录入的功能。可以把所有同一班级的学生一起列出,然后可以分不同的科目,不同的时间段,不同的考试类型逐一的录入其成绩。 5)学籍变动管理:对学生在校的变动信息进行实时记录如学生休学,学生辍学,学生转系,学生退学等信息进行管理。

6)数据库管理:数据库的数据备份和数据库的数据恢复,这两个功能可以最大

3

郑林鸿:学生信息和成绩管理系统的设计与实现 限度的保护了数据库的数据安全。当数据被人为恶意或不正常的操作而毁坏时,数据库的数据恢复功能可以恢复数据库,恢复的数据库是备份时的数据库。 7)成绩查询:用户可以根据不同的方式对学生的成绩进行查询。

4

郑林鸿:学生信息和成绩管理系统的设计与实现 3.系统设计

在系统的设计完成后,其性能与质量是由多个方面的因素来确定的,而本学生信息和成绩管理系统的设计是在尽可能完成基本的功能模块外的同时也要保证该系统的运行可靠性和高效率以及实际生活中的实用性。 3.1 基于设计概念和处理流程

本系统使用微软Access 2003作为后台数据库,采用Visual C++ 6开发环境下,即使电脑的配置很低,该系统也能正常的运行。

系统基本的流程是:“用户登录” “成功登陆” “菜单界面” “选择各项功能”。 3.2系统层次模块图

系统层次图是描绘物理系统的传统工具,它用图形符号来表示系统中的各个元素,例如人工处理、数据处理、数据库、文件、设备等。它表达了系统中各个元素之间的信息流动的情况。

1、学生信息和成绩管理系统可分为六个大的功能模块:系统管理功能模块,基础设置功能模块,学生管理功能模块,成绩管理功能模块,学籍变动管理功能模块,数据库管理功能模块。系统业务处理流程如图3-1所示,而系统业务的流程是整个系统设计的基础,同时也是系统设计的思路,因此系统业务处理流程也是比较重要的。

图 3-1 系统业务流程图

统计查询 学生成绩录入 学生成绩管理 形成基础数据库 基础数据录入 基础数据管理 形成基础数据库 2、如图3-2,为该管理系统的部分结构图分别是:系统管理,学生管理和成绩管理,这三个功能模块在该系统的设计中,根据系统的分析是所有的用户都可以进行操作的,没有权限的限制。

3、如图3-3,为该系统的另一部分的系统结构图分别为:基础设置,学籍变动管理以及数据库管理。而这三个功能模块的操作和访问是有权限的限制的,而想要进行操作访问的用户只能是“管理员”才行;如果是非管理员的用户,则主

5

郑林鸿:学生信息和成绩管理系统的设计与实现 菜单的下拉窗口中的选项为灰色。

4、系统结构图所具有的特性:

抽象性:表现在舍去了具体的物质,只剩下数据的流动、加工处理和存储。 概况性:表现在可以把信息中的各种不同业务处理过程联系起来,形成一个整体。用系统流程图来分析业务流程的合理性。

学生信息和成绩管理系统 系统管理 学生管理 成绩管理 用户管员 重新登录 退出系统 档案管理 奖学金管理 奖罚管理 学生成绩录入 学生成绩查询 基础设置

图3-2 学生信息和成绩管理系统(系统管理,基础设置,学生管理)

5、系统流程图的作用表现在以下几个方面:

1)制作系统流程图的过程是系统分析员全面了解系统业务处理概况的过程,它是系统分析员做进一步分析的依据。

2)系统流程图是系统分析员、管理员、业务操作员相互交流的工具。 3)系统分析员可直接在系统流程图上画出可以有计算机处理的部分。 4)可利用系统流程图来分析业务流程的合理性。 5)清晰表达数据流的情况; 6)有利于系统建模。

6

郑林鸿:学生信息和成绩管理系统的设计与实现 学生信息和成绩管理系统 基础设置 基础设置 基础设置 系别设置 专业设置 班级设置 基础设置 休学处理 退学处理 转学处理 数据库恢复 基础设置

图3-3 学生信息和成绩管理系统(基础设置,学籍变动管理,数据库管理)

3.3 数据库设计

数据库中表格的大体结构与全部的数据类型有如下所叙述: (1)名字:系统用户表(见表3-1系统用户表)

表3-1 系统用户表 名 称 用 户 名 用户密码 用户类型 字段名称 类型 文本 文本 是/否 主键 非空 user passwd isAdmin Yes No No Yes Yes Yes 该表的唯一标识:user

数据来源:管理员在“用户管理”之中选择“新增”进行新的用户成员信息输入 。

(2)名字:系别设置表(见表3-2系别设置表)

表3-2 系别设置表

名 称 系别代码 字段名称 类型 文本 主键 非空 code Yes Yes 7

郑林鸿:学生信息和成绩管理系统的设计与实现 系 名 说 明 name brief 文本 文本 No No Yes No 该表的唯一标识:department

数据来源:管理员选择“基础设置”之中选择“系别设置”在弹出的对话窗口中单击“增加”并在相应的框中输入相应的信息,最终选择“保存”即可。

(3)名字:专业设置表(见表3-3专业设置表) 该表的唯一标识:major

数据来源:管理员选择“基础设置”之中选择“专业设置”在弹出的对话窗口中单击“增加”并在相应的框中输入相应的信息,最终选择“保存”即可。

(4)名称:成绩记录表 (见表3-4 学生成绩记录表) 该表的唯一标识:score

数据来源:所有的用户在“成绩录入”之中操作“学生成绩录入”,选择相应的窗口选择想要的条件进行筛选学生,最终在用户输入的信息都会被写入到相应的数据库中。

表3-3 专业设置表 名 称 专业代码 字段名称 类型 文本 主键 非空 code name department brief Yes No No No Yes Yes Yes No 专业名称 所属系别 说明 文本 文本 文本 (5)名称:学生成绩记录表 (见表3-4 学生成绩记录表) 该表的唯一标识:score

数据来源:成绩管理模块进行录入

表3-4 学生成绩记录表 名 称 字段名称 类 型 主键 非空 标 识 名称 班 级 ID 字段名称 自动编号 类型 文本 Yes 主键 Yes 非空 class No Yes 8

郑林鸿:学生信息和成绩管理系统的设计与实现 时间段 学 号 姓 名 time code name subject type score makeup_score absent 文本 文本 文本 No No No No No No No No Yes Yes Yes Yes Yes No No No 科 目 考试类型 成 绩 补考成绩 文本 文本 数字 数字 缺考标识 文本 9

郑林鸿:学生信息和成绩管理系统的设计与实现 4.详细设计

4.1系统菜单主界面

通常来说,系统的早期设计都是来自于系统的需求分析以及系统的总体设计这两个系统设计最基本的分析的综合。而本学生信息和成绩管理系统主要是使用了Visual C++ 6.0来实现每个模块功能。

1、主控平台菜单界面设计

1)主菜单控平台的界面,如图4-1所示。

图4-1 主菜单控平台图

2)进行入系统主菜单窗口之后,打开和进入系统的界面是用户看到“通过它可以为每个功能模块的学生信息管理系统”的界面。当把鼠标移动到某个模块功能上时,如果这个模块功能中还包含有其它功能时,其会自动弹出一个下拉窗口,用户可以在这个下拉窗口之中选择并双击所自己所需的功能即可方便的进行使用操作。

2、主控平台窗口的实现

1)系统框架:使用Visual C++ 6.0创建一个新的MFC应用程序,软件它会自动的建立起一个系统框架,CSchoolView为视图、CSchoolDoc为文档、CSchoolApp生成应用程序和CMainFram主框架等类。

2)菜单:主要由上述的系统层次模块图中的图3-1,从而在Visual C++ 6.0的资源编辑器中的MENU里可以根据程序员的爱好来新建一个主菜单

3)背景图:在类函数:OnPaint之中可以修改背景图片。

10

郑林鸿:学生信息和成绩管理系统的设计与实现 4.2权限验证模块

1、不同的用户有着不同层次的操作权限,而这个操作权限则取决于在增加新用户时设置其是否管理员或普通用户。而在登陆时从用户表中读出数据来进行判断。

2、权限验证模块的IPO图如下:

输入:首先要某一用户必须输入“用户名”和“密码”,缺一不可。

处理:弹出“用户登录”对窗口。从“user”表中取出之前所有的“用户名”信息,在“用户名”表格中显示所有的“用户名”以方便用户选择和输入,当用户选择了自己的“用户名”时也应输入相应的“密码”,登陆者输入的信息与“user”表中的信息进行校对,无论是“用户名”不正确或者还是“密码”不正确都进不系统,并跳转回到“用户登陆”窗口,与之相反则进入主菜单控制平台。 输出:系统跳转到了主菜单控制平台。 3、权限验证模块的详细界面设计

其界面设计如图4-2所示。 4、权限验证模块的详细设计实现如下:

根据图IPO认证,由clogindlg类定义完成身份认证模块。下面阐述CLoginDlg类的设计与实现:

1)从“user”表中取出“用户名”和“密码”来确定该用户的权限。

2)在Dialog中新建一个“登录”对窗口。

3)系统正常后,所有的用户开始登陆的窗口如图4-2

图4-2 用户登陆窗口图

4.3 用户管理模块

出于对系统的安全性考虑,该模块功能只能是该系统的管理员才能有权限使

11

郑林鸿:学生信息和成绩管理系统的设计与实现 用的。

用户管理模块达到三个主要功能:“新增”、“删除”、“修改”权限和密码。 1、用户管理IPO图

输入:“用户名”和“密码”以及选择是否管理员。 处理:读取所输入的信息,写入“user”表。

输出:系统用户表“USER”的数据会被重新刷新,也会被重新读出。 详细的处理过程:

(1)管理员增加新用户的具体流程:

首先必须是管理员才能“新增”用户,管理人员选择“新增”,在弹出的窗口中输入“用户名”和“密码”,当用户名己有人注册了,则不能再注册,与之相反则是,成功。 (2)修改己存在的用户成员的信息:

首先必须是管理员才能“修改”,管理员在“用户列表”选中他要修改的用户,输入相应的修改信息后,选择“保存”即可成功完成。 (3)管理员删除己有用户的流程:

首先必须是管理员才能“删除”,管理员选中自己要删除的用户后,当管理员选择“删除”后,该用户成员就会被从数据库中删除。 2、“用户管理”模块功能的界面如图4-3

根据IPO的用户管理模块,程序员使用CuserDlg类最终可以使得用户管理模块可以和ACCESS数据库建立某一关联。下面来对CuserDlg类的详细设计以及是如何的实现进行讲述:

(1)CUserSet类的主要功能是产生记录集,而CUserDlg类则是可以调用记录集中的结果,因此,再调用ClassWizard,则完成了和数据库建立了某一关联。

(2)编辑或添加一个用户相关的信息

1)管理员进行选择用户设置的界面窗口如图4-3

图4-3 用户设置窗口图

12

郑林鸿:学生信息和成绩管理系统的设计与实现 4.4 基础数据设置模块

由上述的分析可大体概括出本系统之中“基础设置”这一模块的功能主要有:添加,浏览,删除和修改该学校的系别(院系),专业设置等。基础设置功能模块,如图4-4所示。

系别设置 基础数据设置 专业设置

图4-4 基础设置功能模块

1、 系别(院系)设置的详细功能

(1)系别(院系)设置功能的IPO图如以下文字所述:

功能:从数据库中把之前己经设置或已经存在的系别(院系)的数据读取出来,并弹出一功能窗口,在窗口中还包含了添加,浏览,删除和修改功能。

输入:管理员把要设置的系别(院系)的信息一一对应的输入窗口中,并且会被储存到ACCESS数据库中。

处理:管理员选择“系别设置”选项,用户选择“修改”,“删除”和“增加”系别等数据操作,根据用户的操作对“department”表进行操作,最后在下方的列表中显示出来。

输出:对“department”表进行更新。 (2)系别设置功能界面设计,如图4-5所示。

图4-5 系别设置窗口图

(3)系别(院系)设置功能的详细实现

根据IPO的用户管理系别(院系)模块,程序员使用cdepartmentdlg类最终可以使得系别(院系)设置功能可以和ACCESS数据库建立某一关联。下面来对cdepartmentdlg类的详细设计以及是如何的实现进行讲述:

13

郑林鸿:学生信息和成绩管理系统的设计与实现 1)CDepartmentSet类的主要功能是产生记录集,而CDepartmentDlg类则是可以调用记录集中的结果,因此,再调用ClassWizard类,则完成了和数据库建立了某一关联。

2)管理员增加新系别信息的详细过程:

处理过程:管理员选择“专业设置”,弹出一个窗口,然后管理员选择“新增”并在窗口中的输入相应的系别信息,即可成功的完成。

3)管理员修改系别信息详细过程:

处理过程:管理员把鼠标移到要修改的系别上,单击,选择“修改”,在相应的位置上修改相应的信息,即可成功完成。

4)管理员删除指定的系别信息的详细过程:

处理过程:管理员管理员把鼠标移到要删除的系别上,单击,选择“删除” ,即可成功完成。具体代码

2、专业设置的详细功能

(1)专业设置功能的IPO图如以下文字所述:

功能:从数据库中把之前己经设置或已经存在的专业的数据读取出来,并弹出一功能窗口,在窗口中还包含了添加,查看,删除和修改功能。

输入:管理员把要设置的专业的信息一一对应的输入窗口中, 并且会被储存到ACCESS数据库中。

处理:管理员选择“专业设置”,用户可以在弹出的窗口之中选择,“添加”功能,“修改”功能和“删除数据”功能。

输出:数据库中的“major”表数据会被更新 (2)专业设置的功能界面图,如图4-6所示。

(3)根据IPO的专业设置模块,程序员使用cmajordlg类最终可以使得专业设置功能可以和ACCESS数据库建立某一关联。下面来对cmajordlg类的详细设计以及是如何的实现进行讲述:

1)CMajorSet类的主要功能是产生记录集,而CMajorDlg类则是可以调用记录集中的结果,因此,再调用ClassWizard类,则完成了和数据库建立了某一关联。

2)管理员增加新专业的详细过程:

处理过程:当管理员单击“专业设置”后,选择了“增加”后,然后就可以输入新的专业的详细信息,最终当选择了“保存”后,数据会被写入数据库中的“major”表。

3)管理员修改专业信息的详细过程:

处理过程:在要修改的专业列单击一下,就可以在弹出的窗口中输入相应要

14

郑林鸿:学生信息和成绩管理系统的设计与实现 修改的信息,确定后就选择“修改”,则数据会被写入数据库中的“major”表。

图4-6 专业设置窗口图

4)管理员删除专业信息的详细过程:

处理过程:当管理员在要删除的专业上单击下,接着选择“删除”, 数据会被从数据库中的“major”表中删除。 4.5 成绩录入模块

由本系统的上述需求分析和系统的总体设计,成绩录入模块的主要有两大功能:“学生成绩的录入”和“基础设置”。成绩录入模块如图4-7所示。

基础设置功能模块中也是一个小的下拉窗口,这个下拉窗口之中又包含了三个小功能设置分别是:一、“考试时间段设置”,二、“考试类型设置”,三、“考试科目设置”。按照以下分类分模块说明和模块的具体流程实现与详细的设计如下:

学生成绩录入 成绩录入 基础设置

图4-7 成绩录入图

1、 学生成绩录入功能

(1)功能:以班级为单位,指定类的完成在一个检查所有学生的成绩输入函数;

处理:选择“学生成绩录入”,在弹出的窗口中,用户先把要录入成绩的“班级”“考试时间”“考试类型”“科目”逐一的选择好,单击“开始录入”,然后在下面的列表中就会出现班级的所有学生,双击某一学生即可录入其成绩。

15

郑林鸿:学生信息和成绩管理系统的设计与实现 输出:数据会更新到数据库中的“score”表中

(2) “学生成绩录入”功能对话窗口给用户提供简洁友好的操作界面,如图4-8所示。

(3)学生成绩录入功能的详细实现如下:

1)CScoreSet类的主要功能是产生记录集,而CScoreInputDlg类则是可以调用记录集中的结果,因此,再调用ClassWizard类,则完成了和数据库建立了某一关联。

2)录入学生成绩。

处理过程:如图4-9所示,当用户输入学生成绩后,系统将会将数据保存到“score”表中,同时也会在列表中显示出刚输入的新成绩。

图4-8 录入学生成绩窗口图

4.6 数据库管理模块

数据库管理模块包括对数据库还原和数据库备份这两个部分的功能,而维护数据库的数据的安全主要是靠这两个功能来实现,降低因非自然不可抗力的因素而造成数据的毁坏。如图4-9所示为数据库管理模块。

数退出系统 数据库管理模块 数据库恢复 图4-9 数据库管理模块图

1、数据库管理模块的IPO图,系统的数据库备份

输入:所有的用户(包括管理员和普通用户)在操作本系统过程中输入的所有信息。

处理:当有某一用户选择了“数据库备份”时,会有一个窗口弹出提醒是否

16

郑林鸿:学生信息和成绩管理系统的设计与实现 继续;当点击“确定”后,数据库文件会被自动的复制一份内容一模一样的数据文件,但是文件的扩展名也会被改为“.bak”,并储存起来;否则,不进行数据库的文件备份。

输出:“.bak”文件会储存起来,以备不时之需。 2、系统的数据库恢复

输入:上一次的执行数据库备份从而储存的“.bak”文件

处理:当某一用户进行选择“数据库恢复”时,会有一个窗口弹出提醒是否继续;当用户点击“确定”后,原来的数据库文件“.mdb”会被上次备份的“.bak”还原并被其替换;否则,数据库恢复取消。

输出:“.bak”的还原文件。

2.数据库管理模块功能的详细实现过程如下: 1、数据库的备份

在类CMainFram框架中实现数据库备份,菜单上“数据库管理” “备份数据库”。

2、数据库的恢复

在类CMainFram框架中实现数据库恢复,菜单上“数据库管理” “数据库恢复”。 4.7 查询成绩模块

1、 学生成绩查询功能

功能:可以灵活的选择输入“学生姓名”或“班级”其中一种方式进行查询学生成绩,而“学生姓名”这一方式是小范围查找,而“班级”是大范围的查找。

(1)学生查询成绩功能的IPO图

输入:某一系统用户必需输入“班级编号”或“学生姓名”

处理:当该用户选择“学生成绩查询”对窗口时;在弹出窗口中用户选择“班级”,读取“score”表中该班级所有学生的成绩。

输出:该用户所选择的学生的成绩会被输出。 成绩输入功能的界面,如图4-10。

图4-10 成绩输入窗口图

17

郑林鸿:学生信息和成绩管理系统的设计与实现 (2)学生成绩查询功能的界面设计,如图4-11所示。

图4-11 学生成绩查询窗口图

(3)实现学生成绩查询功能的详细过程如下 :

由IPO图学生成绩查询功能,根据IPO的专业设置模块,程序员使用cscorequerydlg类最终可以使得专业设置功能可以和ACCESS数据库建立某一关联。下面来对cscorequerydlg类的详细设计以及是如何的实现进行讲述:

1)CScoreSet类的主要功能是产生记录集,而CScoreQueryDlg类则是可以调用记录集中的结果,因此,再调用ClassWizard类,则完成了和数据库建立了某一关联。

2)直接查询学生成绩。

处理过程:当用户输入某一学生的“姓名”,系统自动查询数据库中“score”表该学生的所有成绩记录,所读取的成绩结果将会在下面的列表中直接显示出。见代码十五(直接查询学生成绩)。

2、 学生总分名次查询功能

功能:对某一个班上所有的学生在某一个时间段里参加的每一个的所有科目的成绩累加,对其总分进行排名。

(1)查询学生总分名次子模块的IPO图

输入:用户需要在相应的下拉窗口中进行选择:“考试类型”、“班级编号”还有“考试时间段”

处理:当用户选择了“学生总分名次查询”对窗口,在弹出的窗口中用户可以进行选择“班级”、“时间段”和“考试类型”,从“score”表中读取该班级所有学生的成绩进行累加,然后班级学生的总分进行排名的统计,最终的结果在对应的列表之中一一显示出来。

18

郑林鸿:学生信息和成绩管理系统的设计与实现 输出:在学生成绩表中对学生的所有科目的成绩相加,再一一的比较排名,最终输出。

(2)在模块的界面设计查询学生总分名次子,如图4-12所示 (3)实现学生总分名次查询功能

根据学生的成绩排名查询子模块的IPO图程序员使用cscoretotaldlg类最终可以使得专业设置功能可以和ACCESS数据库建立某一关联。下面来对cscoretotaldlg类的详细设计以及是如何的实现进行讲述:

1)CScoreSet类的主要功能是产生记录集,而CScoreTotalDlg类则是可以调用记录集中的结果,因此,再调用ClassWizard类,则完成了和数据库建立了某一关联。

图4-12 查询学生总分窗口图

2)统计查询学生总分名次。

处理过程:当用户选择了“查询成绩”中下拉菜单中的“学生总分名次查询”,系统自动从学生成绩信息表中符合记录的条件下读取测试类型和测试的时间,并在这些记录按学号统计类的所有科目的总成绩和排名的考试。

19

郑林鸿:学生信息和成绩管理系统的设计与实现 5. 软件测试

5.1 测试计划

正如古人所说的“金无足赤、人无完人”,在软件开发过程中,开发者自己所想的很有可能违背了事物的客观性,在这过程,往往会产生很多错误,但是解决方法总比问题多。软件设计的早期一点微小的差异,但是软件程序设计是一件工作非常庞大的工程,因此在后期之中前期的一点差异会被无限的放大。由此可见软件测试的必要性,这也可说明了软件测试能够很好的纠正软件中的错误,并保证其质量。

之所以要测试软件,目标是能够正常有效的运行该学生信息和成绩管理系统并且可以存储所需要保存的学生的基本信息,也要保证学生信息不会无故的丢失或不见。测试环境如下:

(1)客户端采用的软件环境:Windows 2003/XP + Microsoft Access 2003 (2)基本要求:不同权限的系统管理员进行登录本学生信息和成绩管理系统有着不同功能,本系统的运行结果良好,而且系统的运行效率也比较高效,有着比较合理和完善的系统框架,本系统的设计大体上符合了软件工程的软件开发规范。

(3)测试模块如下:1、权限验证功能;2、用户管理功能;3、数据库管理功能;4、成绩管理功能;5、成绩查询功能。

(4)测试的工作人员:陈恒恒 5.2 随机用例以及系统的测试过程

(1)测试系统的权限验证功能的详细过程如下:

“用户登录” “Admin”为用户名 “1”为输入密码 “登录”

(2)测试系统的用户管理功能: 1)增加新用户的处理

“用户设置” “新增” “135”为用户名 “135”为密码 “135”为确认密码 “保存”

2)修改用户口令和权限的处理

“用户设置” “135”为用户名 “246”为修改密码 “246”为确认密码 成功。

3)管理员删除用户的处理过程:

“用户设置” “135”为用户名 “删除”

20

郑林鸿:学生信息和成绩管理系统的设计与实现 (3)测试使用基础数据库管理功能

1) 测试使用系别设置功能

“系别设置” 选择“增加” 本人输入系别代码为“135” 本人输入系名为“工程系” 写入说明为“分两个专业,两个班。” “保存”, 列表中显示到所输入的信息,成功操作增加。

“系别设置” “001” “计算机” “修改” “003”系别代码写入 “修改”

“系别设置” “003” “计算机” “修改” “删除”

2) 测试使用专业设置功能 “专业设置” “增加” 专业代码写入“11” “计算机软

件开发”为专业名 属“计算机系”系别 说明为“不错的专业” “保存”

“专业设置” “11” 把“计算机软件开发” 改为“软件工程” “修改”

“专业设置” “11” “软件工程” “删除” (4)测试使用成绩管理功能 1)测试使用学生成绩录入功能

“成绩录入” 班级选择为“11计科五班” “2011年度下上学期” “期末考试” “大学英语” “开始录入” “11计科五班” “85” “确定” “85”

(5)测试使用数据库管理功能

1)“数据库管理” “备份数据库” “您是否要备份数据库吗?” “确定” “备份数据库成功”。

2)“数据库管理” “数据库还原” “现在的数据库覆盖。您确定要还原吗?” “确定” “成功” (6)测试系统的成绩查询功能 1)测试使用学生成绩查询功能

“成绩查询” “11计科五班” “显示学生列表”“201141402511” “郑林鸿”双击这一行,输入姓名“郑林鸿” “直接查询”,该学生所有科目成绩在下面列表中显示出来。成功操作查询。

2)测试使用学生总分名次查询功能

“学生总分名次” “11计科五班” “期末考试” “2011年度下上学期” “统计”, 列表中则显示出该班所有的学生的名次,平均分和总成绩。成功操作学生总分名次查询。

21

郑林鸿:学生信息和成绩管理系统的设计与实现 结束语

测试的过程就是发现问题并且解决问题的过程,而这个学生信息和成绩管理系统程序存在不少的问题,但是在指导老师和同学以及本人的努力下,从而使得需求分析书之中所叙述的各类功能要求本系统基本上都解决了。而且本系统的特点之一就是各个模块之间的独立性强,系统也可以根据用户的不同需求而进行不同的扩充;本系统界面比较的友好,用户只要进行操作简单就可以轻松的完成用户所需要的功能。

但是经过了老师的查看之后,发现了本系统的不少问题,该系统还存在不少需要完善的地方,但是由于本人的技术有限还有种种因素,导致没有对本系统进行一步的修改完善。希望自己在以后的工作中能对该系统进行改善。

22

郑林鸿:学生信息和成绩管理系统的设计与实现 参考文献

[1] 李刚著.轻量级JavaEE企业应用实战(第三版)—Struts2+Spring+Hibernate整合开发电子工业出版社,2011年3月.

[2] 陈松.《J2EE电子商务系统开发从入门到精通》.清华大学出版社,2007年4月. [3] 陈松乔,任胜兵,王国军编著. 《现代软件工程》.清华大学出版社,2006年8月. [4] 王珊,萨师煊编著. 《数据库系统概论》(第四版). 高等教育出版社,2006年5月

23

郑林鸿:学生信息和成绩管理系统的设计与实现 致谢

非常感谢我的指导老师,在整个毕业设计过程中细致耐心的指导。 毕业设计经过几周的努力后终于完成了,这一次的毕业设计我认识到了这不仅仅是学校对我的考验,也是自己对自己这四年大学以来所学到的东西的验证。而我经过这次的考验后让自己明白原来自己的专业知识是如此的缺乏。也让自己了解到之前自己四年来有太多专业知识没有学到,而自己学到的知识又不能灵活的运用于具体的编程之中。感谢学校对我们的这次考验,此时,我才真正理解到学习并不是一朝一夕可以完成的,而是一个漫长的积累过程。此外,得出一个结论, 知识并不是从书本上看到了就是自己的了,只有熟练且灵活的运用于实际才是自己的!

在这里再次的感谢指导老师和各位答辩老师的辛勤劳动!

24

郑林鸿:学生信息和成绩管理系统的设计与实现 附录

附录1——主控平台的实现MFC代码

void CSchoolView::OnPaint() {

CPaintDC* pDC=new CPaintDC(this); // 创建设备上下文 CBitmap bmp; RECT RECT CDC

Rect; RectView;

dcmem;

POINT ptSize; BITMAP bm;

int b = bmp.LoadBitmap(IDB_BITMAP2); //将位图取出; dcmem.CreateCompatibleDC(pDC); //创建兼容设备上下文。 dcmem.SelectObject(&bmp); //用设备上下文选择位图; dcmem.SetMapMode(pDC->GetMapMode()); //设置映射方式; GetObject(bmp.m_hObject, sizeof(BITMAP),(LPSTR)&bm);//映射位图; GetClientRect(&Rect); ptSize.x=bm.bmWidth; ptSize.y=bm.bmHeight;

pDC->DPtoLP((LPPOINT)&ptSize,1); //设备单元to逻辑单元; GetClientRect(&RectView); CRect RectBmp = RectView;

if((RectView.right - RectView.left) > bm.bmWidth) { else { }

if((RectView.bottom - RectView.top) > bm.bmHeight) { else {

25

RectBmp.left = RectView.left + (RectView.right - RectView.left - bm.bmWidth) / 2; RectBmp.right = bm.bmWidth;

}//当位图宽度容纳不下的处理

RectBmp.left = RectView.left;

RectBmp.right = RectView.right - RectBmp.left;

RectBmp.top = RectView.top + (RectView.bottom - RectView.top - bm.bmHeight) / 2; RectBmp.bottom = bm.bmHeight;

}//当位图高度容纳不下的处理

郑林鸿:学生信息和成绩管理系统的设计与实现 }

RectBmp.top = RectView.top;

RectBmp.bottom = RectView.bottom - RectBmp.top;

}//加载视图到设备上下文中

pDC->StretchBlt(RectBmp.left, RectBmp.top, RectBmp.right,\\

RectBmp.bottom, &dcmem, 0, 0, bm.bmWidth, bm.bmHeight,\\ SRCCOPY);//删除设备上下文

dcmem.DeleteDC();

附录2——权限验证模块的实现MFC代码

void CUserDlg::OnOK()

{

UpdateData();

if(m_ctrUser.IsWindowEnabled()) { //增加新用户 } else

{//修改用户信息 }

if(m_strPass==\{ }

if(m_strPass!=m_strRePass) {

MessageBox(\两次输入地密码不一致,请重新输入密码!\m_ctrPass.SetFocus(); m_strPass = \m_strRePass = \

26

if(m_strUser==\{ }

MessageBox(\请填写用户名!\m_ctrUser.SetFocus(); return;

if(m_strUser==\{

MessageBox(\请选择一个用户!\return;}

MessageBox(\密码不能为空,请输入密码!\m_ctrPass.SetFocus(); return;

郑林鸿:学生信息和成绩管理系统的设计与实现

}

CString strSQL;

strSQL.Format(\if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL)) { }

if(m_ctrUser.IsWindowEnabled()) { //判断用户是否已经存在 } else

{ //修改用户信息

if(m_recordset.GetRecordCount()==0) { //判断用户是否不存在 }

m_recordset.Edit();

m_recordset.m_user = m_strUser; m_recordset.m_passwd = m_strPass; m_recordset.m_isadmin = m_bIsAdmin; m_recordset.Update();

MessageBox(\用户修改成功!请记住用户名和密码!\m_recordset.Close();

27

UpdateData(FALSE); return;

MessageBox(\打开数据库失败!\数据库错误\return ;

if(m_recordset.GetRecordCount()!=0) { }

m_recordset.AddNew(); m_recordset.m_user = m_strUser; m_recordset.m_passwd = m_strPass; m_recordset.m_isadmin = m_bIsAdmin; m_recordset.Update();

MessageBox(\用户添加成功!请记住用户名和密码!\m_recordset.Close();

m_recordset.Close();

MessageBox(\该用户已经存在!\return;

m_recordset.Close();

MessageBox(\该用户不存在!请更新数据库\return;

郑林鸿:学生信息和成绩管理系统的设计与实现 }

}

m_ctrUser.EnableWindow(FALSE); RefreshData();

附录3——用户管理模块的实现MFC代码

void CUserDlg::OnButtonNew()

{// TODO: Add your control notification handler code here

m_strUser = \m_strPass = \m_strRePass = \

m_bIsAdmin = FALSE;//设置用户名编辑框为可用 m_ctrUser.EnableWindow(TRUE); m_ctrUser.SetFocus();//更新数据到界面 UpdateData(FALSE);

}//保存添加或者修改用户信息 void CUserDlg::OnButtonDelete() {

UpdateData(TRUE); if(m_strUser==\

{ MessageBox(\请选择一个用户!\ }

return;

CString strSQL;

strSQL.Format(\if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL)) {

MessageBox(\打开数据库失败!\数据库错误\return ; }//删除该用户 m_recordset.Delete(); }

CString strSQL;

28

m_recordset.Close();

RefreshData();//刷新用户列表 m_strUser = \m_strPass = \m_strRePass = \m_bIsAdmin = FALSE; UpdateData(FALSE);

郑林鸿:学生信息和成绩管理系统的设计与实现 }

strSQL.Format(\if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL)) { MessageBox(\打开数据库失败!\数据库错误\ }

if(m_ctrUser.IsWindowEnabled()) { //增加新用户 } else

{//修改用户信息 }

m_ctrUser.EnableWindow(FALSE); RefreshData();

if(m_recordset.GetRecordCount()==0) {//判断用户是否不存在 }

m_recordset.Edit();

m_recordset.m_user = m_strUser; m_recordset.m_passwd = m_strPass; m_recordset.m_isadmin = m_bIsAdmin; m_recordset.Update();

MessageBox(\用户修改成功!请记住用户名和密码!\m_recordset.Close();

m_recordset.Close();

MessageBox(\该用户不存在!请更新数据库\return;

//判断用户是否已经存在

if(m_recordset.GetRecordCount()!=0) { m_recordset.Close(); }

m_recordset.AddNew(); m_recordset.m_user = m_strUser; m_recordset.m_passwd = m_strPass; m_recordset.m_isadmin = m_bIsAdmin; m_recordset.Update();

MessageBox(\用户添加成功!请记住用户名和密码!\m_recordset.Close();

MessageBox(\该用户已经存在!\return; return ;

29

郑林鸿:学生信息和成绩管理系统的设计与实现 附录4——学生总分名次查询对话框的初始化的MFC代码

BOOL CScoreTotalDlg::OnInitDialog() {

CDialog::OnInitDialog(); CString strSQL; //初始化班级 CClassSet ClassSet ; strSQL=\

if(!ClassSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL)) { AfxMessageBox(\打开数据库失败!\while(!ClassSet.IsEOF())

{ m_ctrClass.AddString(ClassSet.m_code);

ClassSet.MoveNext();} ClassSet.Close();

CExamtimeSet TimeSet ; //初始化时间段 strSQL=\

if(!TimeSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL)) { } { }

TimeSet.Close();

CExamtypeSet TypeSet ; //初始化考试类型 strSQL=\

if(!TypeSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL)) { } { }

TypeSet.Close(); //初始化成绩列表

m_ctrList.InsertColumn(0,\学号\m_ctrList.InsertColumn(1,\姓名\

30

AfxMessageBox(\打开数据库失败!\

while(!TimeSet.IsEOF())

m_ctrTime.AddString(TimeSet.m_time); TimeSet.MoveNext();

AfxMessageBox(\打开数据库失败!\

while(!TypeSet.IsEOF())

m_ctrType.AddString(TypeSet.m_name); TypeSet.MoveNext();

郑林鸿:学生信息和成绩管理系统的设计与实现 }

m_ctrList.InsertColumn(2,\班级\m_ctrList.InsertColumn(3,\总成绩\m_ctrList.InsertColumn(4,\平均分\m_ctrList.InsertColumn(5,\名次\m_ctrList.SetColumnWidth(0,80); m_ctrList.SetColumnWidth(1,80); m_ctrList.SetColumnWidth(2,80); m_ctrList.SetColumnWidth(3,80); m_ctrList.SetColumnWidth(4,80); m_ctrList.SetColumnWidth(5,80);

m_ctrList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE

附录5——统计查询学生总分名次MFC代码

void CScoreTotalDlg::OnButtonStat()

{ // TODO: Add your control notification handler code here

UpdateData();

if(m_strClass.IsEmpty())

{ AfxMessageBox(\请选择班级\ }

if(m_strTime.IsEmpty())

{ AfxMessageBox(\请选择考试时间段\ }

if(m_strType.IsEmpty())

{ AfxMessageBox(\请选择考试类型\ }

m_ctrList.DeleteAllItems(); m_ctrList.SetRedraw(FALSE); CString strSQL; CString strValue=\CString strTemp; CDatabase db; db.Open(_T(\CRecordset rs1(&db); CRecordset rs2(&db); strSQL.Format(\

31

return;

return;

return;

郑林鸿:学生信息和成绩管理系统的设计与实现 }

avg(score) as average,\\ sum(score) as total from score \\ where class = '%s' and time = '%s' \\

and type = '%s' group by code order by sum(score) desc\,m_strClass,m_strTime,m_strType);

if(!rs1.Open(CRecordset::forwardOnly,strSQL))

{ MessageBox(\打开数据库失败!\数据库错误\ } int i=0;

rs1.m_strSort = \char buffer[20]; while(!rs1.IsEOF())

{ rs1.GetFieldValue(\学号 }

rs1.Close();

m_ctrList.SetRedraw(TRUE);

m_ctrList.InsertItem(i,strValue); //姓名

strTemp.Format(\if(!rs2.Open(CRecordset::forwardOnly,strTemp))

{ MessageBox(\打开数据库失败!\数据库错误\ }

rs2.GetFieldValue(\rs2.Close();

m_ctrList.SetItemText(i,1,strValue); m_ctrList.SetItemText(i,2,m_strClass); //班级 rs1.GetFieldValue(\总成绩 m_ctrList.SetItemText(i,3,strValue);

rs1.GetFieldValue(\平均成绩 m_ctrList.SetItemText(i,4,strValue); itoa(i+1,buffer,10);

m_ctrList.SetItemText(i,5,buffer); i++;

rs1.MoveNext();

rs1.Close(); return ; return ;

附录6——数据备份的MFC代码

void CMainFrame::OnDatabaseBackup() {

32

郑林鸿:学生信息和成绩管理系统的设计与实现 // TODO: Add your command handler code here

if(AfxMessageBox(\您确定要备份数据库吗?\ { return; }

if(CopyFile(\ AfxMessageBox(\数据库备份成功!\ else AfxMessageBox(\数据库备份失败!\

}

附录7——数据库恢复的MFC代码

void CMainFrame::OnDatabaseRecover()

{ if(AfxMessageBox(\还原数据库将覆盖原来的数据库。吗?\ { return; }

if(CopyFile(\ AfxMessageBox(\数据库还原成功!\ else

AfxMessageBox(\数据库还原失败!\ }

33

您确定要还原

本文来源:https://www.bwwdw.com/article/k546.html

Top