高校学生信息管理系统说明书
实践教学
***************
工大学
计算机与通信学院
2010年春季学期
数据库课程设计
题 目: 高校学生信息管理系统 专业班级: 姓 名: 学 号: 指导教师:
成 绩:
前 言
随着学校规模的不断扩大,学生数量的急剧增加,有关学生的各种信息资料也成倍增长。办学者们所头疼的问题,就是如何面对这庞大的信息量。只有利用计算机,利用学生管理信息系统才能解决这一问题,才能提高学生管理的工作效率。通过这样的系统,可以做到信息的规范管理、科学统计和快速的查询,从而减少管理方面的工作量。
本学生信息管理系统包括学生信息、家庭信息、奖惩信息、毕业信息等内容的管理;遵从以往旧式的工作方式,该工作的工作量大,管理繁琐,既耗人力,又耗物力;如今面对大量的学生数据、报表,手工处理方式已经很难跟上现代化的步伐。随着计算机技术及网络通讯技术的飞速发展,许多学校已经有了较好的计算机应用甚至网络硬件建设基础。因此为提高学校管理工作的现代化、科学化水平,保证信息处理的即时化、准确化,开发一套对学生学籍进行管理的软件是极其重要的,而且是必需的。
本系统正是为解决这一问题而设计的,大大减少了以往学生管理工作的工作量,提高了工作效率,节省了资源,适应时代的步伐。
本系统采用开源的MySql作为后台数据库,MySql是一套中型数据库开发系统,能对数据进行处理和管理,性能优越;并使用Qt4开发前台软件,Qt4与MySql的对话通信十分好,效率也很高。使用Linux操作系统作为开发平台,同时经过重新编译以后能够跨平台运行在Windows操作系。
目 录
摘 要 ............................................................................................................................ 1 正文 ................................................................................................................................ 2 1 问题描述 .................................................................................................................... 2 2 需求分析 .................................................................................................................... 3
2.1数据流图 ........................................................................................................... 3
2.2数据字典 ........................................................................................................... 3 2.3 E-R图 ............................................................................................................... 4 3 系统总体设计 ............................................................................................................ 7
3.1总体设计 ........................................................................................................... 7
3.2系统功能模块图 ............................................................................................... 7 3.3数据库逻辑结构设计 ....................................................................................... 8 4 详细设计 .................................................................................................................. 10
4.1系统的主要功能 ............................................................................................. 10 4.2程序流程图 ..................................................................................................... 10 4.3数据库的连接 ................................................................................................. 12 5 系统测试 .................................................................................................................. 13
5.1测试方法 ......................................................................................................... 13 5.2测试用例 ......................................................................................................... 14 6 软件使用说明 .......................................................................................................... 16 设计总结 ...................................................................................................................... 19 参考文献 ................................................................................................................... 20 致 谢 ............................................................................................................................ 21 附录1部分源程序代码 .............................................................................................. 22
摘 要
学生信息管理系统是典型的信息管理系统,其开发主要包括后台数据库建立和维护以及前端应用程序的开发两个方面。我们使用Qt4作为前台开发工具,用MySql作为后台数据库开发工具,在短时间内建立系统应用原型,不断修正和改进,直到形成满意的系统。本系统参考兰州理工大学的学生档案管理为原型,通过调研,分析现有的管理模式和已有的管理软件,建立系统模型。本学生档案管理系统包括学生信息、家庭信息、奖惩信息、毕业信息等内容的管理。实现了信息的录入、查询、删除、修改等功能。
关键字:学生;信息管理系统;数据库;Qt4;MySql
正 文
1 问题描述
学生档案管理的方法日新月异,以前全是由人工管理的方法,存在很多的缺点:管理效率低,劳动强度大,信息处理速度低而且准确率也不够令人满意。为了提高学生管理效率,减轻劳动强度提高,信息处理速度和准确性;为管理员提供更方便、科学的服务项目。为管理员提供的一种更先进、科学的服务系统。于是我们便选择了由计算机来设计一个学生管理系统的方案。学生,教师都可以直接在计算机上实现学生的信息管理,并能在一定程度上实现自动化。我们在现行系统初步调查的基础上提出了新系统目标,即新系统建立后所要求达到的运行指标,这是系统开发和评价的依据。
该系统主要包括学生基本信息模块,家长信息模块,奖惩信息模块和毕业信息模块,系统要实现基本信息录入、修改、查询等功能:
1) 信息的输入,包括学生基本信息、入学信息、奖惩信息、毕业信息等。 2) 信息的修改、删除。
3) 根据要求,查询统计符合条件的各类信息。 4) 依据实际需要,对重要信息进行统计。
2 需求分析
2.1数据流图
该系统数据流图如图2-1所示:
学生信息 信息 管理员 接受 信息 信息 更新 系 统信 息 查询 处理 事务 信息 用 户 图2-1 系统数据流程图 数据流图由四种基本的元素构成:数据流(Data Flow),处理(Process),数据存储和数据源(数据终点)。
数据流(Data Flow):为具有名称且有流向的数据,用标有名称的箭头表示,一个数据可以是记录、组合项或基本项。
处理(Process):表示对数据所进行的加工和变换,在图中用矩形框表示。指向处理数据流为该处理的输入数据,离开处理的数据为处理的输出数据。
数据存储:表示用文件方式或数据库形式所存储的数据,堆砌进行的存取分别以指向或离开数据存储的箭头表示。
数据源及数据终点:表示数据的来源或数据的去向,可以是一个组织或人员,它处于系统范围之外,所以又称它为外部实体,它是为了帮助理解系统界面而引入的,一般只出现在数据流图的起点和终点。
2.2数据字典
数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
由于本次设计是小型软件系统的开发,所以采用卡片形式书写数据字典。每张卡片上保存描述一个数据的信息这样做更新和修改起来比较方便,而且能单独处理描述每个数据的信息。下面将列出若干数据元素的数据卡片信息。
数据字典卡片: 名字:学号 别名: 描述:惟一地标识一个特定学生的关键域 定义:学号=10{字符} 位置:学生基本信息表 家长信息表 学生入学信息表 学生毕业信息表 学生奖惩信息表 名称:学生基本信息 别名: 描述:对学生基本情况的描述 定义:学号+姓名+性别+考生来源+培养方式+民族+入学分数+出生日期+所在院系+专业+家庭住址+电话+邮政编码+入学政治面貌 位置:输出到打印机 保存到磁盘 名称:学生家庭信息 别名: 描述:对学生家长信息的描述 定义:学号+姓名+家长姓名+工作单位+职务+电话+年龄+文化程度 位置:输出到打印机 保存到磁盘 名字:学生奖惩信息 别名: 描述:学生奖惩信息的描述 定义:学号+姓名+奖惩类别+奖惩名称+奖惩原因+ 奖惩描述+评价 位置:输出到打印机 保存到磁盘 名字:学生毕业信息 别名: 描述:学生毕业后的信息描述 定义:学号+姓名+学历+学位+工作单位+职务+单位+政治面貌+电话 位置:输出到打印机 保存到磁盘 2.3 E-R图
根据对数据流图和数据字典的分析,我们可以确定该应用中的实体,属性和实体之间的关系,并画出如下所示的E-R图。
图2-2学生基本情况实体图
图2-3学生家庭情况实体图
图2-4学生奖惩信息实体图
图2-5学生毕业情况实体图
图2-5实体联系图
3 系统总体设计
3.1总体设计
通过这个阶段的工作将划分出组成系统的物理元素。
系统概要设计的基本目的是用比较抽象的概括方式确定系统如何完成预定的任务,也就是要确定系统的配置物理方案。软件结构设计时应该遵循的最主要的原理是模块独立,让模块彼此间的接口关系应该尽量简单。
3.2系统功能模块图
可以根据模块独立原理对软件结构进行精化。为了合理的分解,得到尽可能高的内聚、尽可能松散的耦合,最终要的是,为了得到一个易于实现、易于测试
和易于维护的软件结构,应该对模块进行再分解或合并。 系统功能模块图如图3-1所示:
学生档案管理系统 学生信息模块 家庭关系模块 奖惩信息模块 毕业信息模块 录入删除功能 修改保存功能 查询维护功能 录入删除功能 修改保存功能 查询维护功能 录入删除功能 修改保存功能 查询维护功能 录入删除功能 修改保存功能 查询维护功能 图3-1 系统功能模块图
3.3数据库逻辑结构设计
在数据库设计中相当重要的一步就是将概念模型转化为计算机上DBMS所支持的数据模型,例如,将E-R图模型转化为关系模型,道理很简单,我们设计概念模型基本上都是一些抽象的关系,在再数据库设计的实现过程中,在计算机上有效地表示出这些关系就成了数据库设计的关键。
根据学生档案管理系统的功能要求,选取MySQL作为后台数据库。 在上面的实体和实体之间的E-R图设计基础上,形成数据库中的表格及表格之间的关系。
该数据库由4个表组成,学生信息表,学生家长信息表,学生奖惩信息表,学生毕业信息表 。
主表的结构设计: 1.学生基本信息表
学生基本信息表是对学生的基本信息进行统计,学号、姓名、性别、民族 出生年月、庭出生、户口类别、家庭住址、通讯地址、邮政编码、所在院系、专业等信息。学生基本信息表的结构表如表3.1。
表3.1 学生基本信息结构表
字段名称 学号 姓名 性别 民族 出生年月 考生来源 培养方式 入学分数 政治面貌 家庭出身 户口类别 家庭住址 通讯地址 邮政编码 院系 专业 数据类型 char char char char char char char char char char char char char char char char 主键 Yes No No No No NO NO NO NO No No No No No No No 非空 Yes Yes Yes Yes No NO NO NO NO No No No No No Yes Yes
2.学生家庭信息表
学生家长信息表是对学生家长信息的统计,包括父母姓名、工作单位、电话 职务、年龄、文化程度等。学生家长信息表的结构如表3.2所示。
表3.2 学生家长信息 字段名称 学号 关系 家长姓名 工作单位 联系电话 职务 年龄 数据类型 char char char char char char char 主键 yes No No No No No No 非空 Yes No No No No No No 3.学生奖惩信息
学生奖惩信息是对学生在校期间的奖励惩罚信息的统计,包括学号、姓名、 奖励、惩罚名称、原因、描述、各种评价等。学生奖惩信息表结构如表3.3。
表3.3 学生奖惩信息表
字段名称 编号 学号 姓名 奖惩内容 奖惩原因 各种评价 数据类型 char char char char char char 主键 Yes No No No No No 非空 Yes Yes Yes Yes Yes Yes 4.学生毕业信息表
学生毕业信息表是对学生毕业后的信息的统计。包括毕业情况、毕业去向、当前学历、学位、当前工作单位、工作经历、当前政治面貌、当前职务、当前职称等用户信息。毕业信息表如表3.4。
表3.4学生毕业信息表 字段名称 编号 学号 姓名 毕业去向 当前学历 当前工作经历 工作经历 当前政治面貌 当前职称
数据类型 char char char char char char char char char 主键 Yes No No No No No No No No 非空 Yes Yes Yes No No No No No No
4 详细设计
详细设计阶段的根本目标是确定应该如何具体地实现所要求的系统,包括了用户界面设计、程序过程设计等步骤。
4.1系统的主要功能
1、学生各种信息的输入,包括学生基本信息,入学,奖惩,毕业信息的输入等。 2、学生管理的各种信息查询,修改和维护。 3、操作日志的管理。
4、学生管理系统的使用帮助。
4.2程序流程图
程序流程图的优点是对控制流程的描绘很直观,易于掌握。
1、学生各种信息的查询功能流程图
用户 输入查询条件 是 查询相应信息 是否重新查找 是否存在 否 确定信息 否 是 结 束 图4-1查询功能流程图 2、录入功能程序流程图
管理员 输入信息 保 存 是否重新保存 否 保存是否成功 是 结 束 图4-2 录入功能程序流程图
3、修改功能流程图
用户 修改 保存 是 保存是否成功 重新保存 否 是 结束 否 图4-3修改流程图
4.3数据库的连接
数据库创建完成后的工作是建立数据库的连接,当开发环境通过连接到数据库上之后,在设计中使用数据库画笔可实现对该数据库中表格,视图等的操作,如创建表,修改表,删除表,增加/删除记录。该系统的连接程序如下:
QSqlDatabase db = QSqlDatabase::addDatabase(dbLineEdit->text().trimmed()); db.setHostName(hostNameLineEdit->text().trimmed()); db.setDatabaseName(dbNameLineEdit->text().trimmed()); db.setUserName(userNameLineEdit->text().trimmed());
db.setPassword(passwdLineEdit->text().trimmed());
5 系统测试
5.1测试方法
当设计工作完成以后,就开始着手测试的准备工作。先对整个系统设计编写测试大纲,软件测试大纲是软件测试的依据,它明确详尽地规定了在测试中针对系统的每一项功能或特性所必须完成的基本测试项目和测试完成的标准。无论是自动测试还是手动测试,都必须满足测试大纲的要求,明确测试的内容和测试通过的准则。设计完整合理的测试用例,以便系统全部实现后进行全面的测试。在实现了程序的验证后,本系统测试按照以下方式组织:
(1)首先,要仔细的阅读有关资料,包括规格说明、文档、使用说明书及在设计过程中形成的测试大纲、测试内容及测试的通过准则,为再次全面熟悉系统,做好测试准备。
(2)为了保证测试的质量,现将测试过程分为几个阶段,即:代码审查、单元测试、集成测试和系统测试。
(3)代码审查
代码审查是在充分阅读程序文本,控制流程图及有关要求、规范等文件的基础上,各个模块依照程序的逻辑,以揭示错误为关键的。
(4)单元测试
单元测试集中在检查设计的最小单位的模块上,通过测试发现实现该模块的实际功能与定义该模块的功能说明不相符合的情况,以及编码的错误。由于本次设计的模块小、功能单一、逻辑简单。所以,可以通过模块说明书和源程序,清楚地了解该模块的I/O条件和模块的逻辑结构,以功能测试(黑盒测试)为主,是指对任何合理和不合理的输入都能鉴别和响应。
(5)集成测试
集成测试是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。此外,如果程序由多个进程组成,应该成对测试它们,而不是同时测试所有进程。集成测试的目的是确保各单元组合在一起后能够按既定意图协作运行,并确保增量的行为正确。它所测试的内容包括单元间的接口以及集成后的功能。
(6)系统测试
系统测试是在集成测试之后,与计算机硬件、和某些支持软件、数据和人员
等系统元素结合起来,在实际运行环境下对计算机系统进行严格的测试,来发现软件的潜在问题,保证系统的运行。系统测试的目的是向未来的用户表明系统能够像预定的要求那样工作,经集成测试后,已经按照设计把所有的模块组装成一个完整的交流平台。
5.2测试用例
登录系统测试用例如表5.1所示。
表5.1登陆系统测试用例 序测试点 号 1 未输入数据 输入数据或信息 点击“登录系统” 点击“登录系统” 系统查询测试用例如表5.2所示。
表5.2系统查询测试用例 序号 测试点 输入数据或信息 不输入查询关键字 1 查询 输入不存在的查询关键字 输入存在的查询关键字 期望结果 提示输入关键字 提示找不到相关记录 显示所有包含关键字的记录 正确 结论 期望结果 结论 提示用户名及密码不能为空! 正确 提示非法用户,正确 请返回! 2 错误输入
系统信息添加测试用例如表5.3所示。
表5.3查询测试测试用例 序号 测试点 输入数据或信息 不输入 1 学号 输入 2 3
期望结果 请选择学号 结论 正确 添加成功 提示没有相应的学号的学生,拒绝添加信息 添加信息成功 正确 正确 正确 家庭奖惩毕业信息 家庭奖惩毕业信息 输入不匹配学号 输入匹配学号 系统删除信息测试用例如表5.3所示。
表5.3删除信息测试用例 序测试点 号 1
删除学生信息 输入数据或信息 学生学号 期望结果 级联删除家庭奖惩毕业信息 结论 正确
6 软件使用说明
1、用户登录
用户使用本系统时,首先要通过本系统的身份认证,此过程叫做登录。登录过程需要完成以下步骤:
根据用户名和密码判断是否为合法用户; 根据用户类型判断用户拥有的权限。
每个用户有3次机会进行身份认证,如果3次输入的用户名和密码和数据库 数据不能匹配,则强制退出系统。 登录窗体的界面如图6-1所示:
图6-1 登录界面
2、系统主界面
图6-2 系统主界面
3、信息添加界面
图6-3信息添加界面
4、信息查询界面
当在学号的文本框中输入“06240402”,按查询按钮,将显示出查询的结果。
图6-4信息查询界面
5、信息删除界面
图6-5信息删除界面
首先通过信息查询找到相应的信息条,按删除按钮将该条信息删除。
6、信息统计界面
首先通过信息查询找到符合条件的信息集合,按统计按钮统计信息集合的条数。
图6-6信息统计界面
设计总结
通过学生信息管理系统的设计,我进一步了解了数据库设计方式以及Qt4和MySQL的使用方法,以及SQL语言的运用,使我认识到数据库开发的过程实际上就是描述现实世界的过程。而由现实世界向数据模型的转化过程是其中最核心的过程。在课程设计的过程中我们遇到了许多问题。而这些问题的产生都是由于理论知识和实践经验的缺乏造成的。
在为期二周的课程设计当中感触最深的便是实践联系理论的重要性,当遇到实际问题时,只要认真思考,用所学的知识,再一步步探索,是完全可以解决遇到的一般问题的。我查阅了大量的资料文献,请教老师和同学,经过耐心的调试终于达到了题目的要求。课程设计让我真正做到了学有所用,在设计当中受益匪浅。
数据库系统开发由于时间仓促,数据库系统还有很多不足之处,如:成绩查询部分不够完善,成绩输入模块不支持学生成绩批量输入,代码交冗余、效率不高等等,都是对Qt4操作不熟练,对相关功能缺乏认识造成的。在今后的学习中我会加强理论与实践的结合,通过不断的摸索来弥补自己在软件制作方面的差距。
参考文献
[1] 赵莉莉,王引斌.浅谈数据库系统的发展. 科技情报开发与经济, 2005. [2] 陈承欢,彭勇. 管理信息系统基础与开发技术. 人民邮电出版社, 2005. [3] 郑人杰, 殷人昆, 陶永雷. 实用软件工程. 北京:清华大学出版社, 1997. [4] 向海华.数据库技术发展综述.现代情报,2003. [5] 张海藩. 软件工程导论. 北京:清华大学出版社, 1998.
[6] 孙栋,陈莉,宋亚奇.基于数据仓库的决策支持系统[J].微机发展, 2005.10. [7] 廖明怡,刘宏.数据仓库及其应用.渤海大学学报,2005.6.
[8] 王珊,萨师煊.数据库系统概论(第四版).高等教育出版社,2006.5. [9] 李昭原主编. 数据库技术新进展. 北京:清华大学出版社, 1997. [10]蔡志明,卢传富,李立夏等 精通Qt4编程. 电子工业出版社,2008
致 谢
从确定设计方案到算法的实现再到编写程序,历时二个星期。在此,我謹向张其文老师致以最诚挚的谢意。在这段时间内老师不辞辛苦一直奔波忙碌于指导我们与完成自己的工作之间。
张老师的严谨的工作作风、亲切的待人方式,渊博的专业知识都给我留下了深刻的印象,老师细心的讲解和指点使我从课程设计之中受益匪浅,使我从实际的算法实现中更好地掌握了理论知识。
感谢我的《数据库原理》老师王燕老师以及与课设有关的各任课教师。一个学期以来老师们严肃的教学态度使我从对该课程的一无所知到收获颇丰,也为我今后的求学生涯树立了榜样。你们一直以来默默无闻的扮演着传道、授业、解惑的角色,您就是那将我们送到对岸的摆渡人。还要感谢所有参加评阅设计说明书以及参加答辩的老师,是你们让我及时的发现错误,改正错误,很快的取得了进步。
最后还要感谢我的同学们,感谢他们耐心的讲解和细心的指导,也感谢他们给我提出那么多的解决方案和指导性意见,帮我顺利完成我的课程设计和论文!
附录1部分源程序代码
#ifndef _GLOGIN_H_ #define _GLOGIN_H_
#include class GLogin:public QDialog { }; #endif #include \"glogin.h\" GLogin::GLogin(QWidget* parent) { Q_OBJECT; GLogin(QWidget* parent=0); virtual void accept(); QLineEdit* dbLineEdit; QLineEdit* hostNameLineEdit; QLineEdit* dbNameLineEdit; QLineEdit* userNameLineEdit; QLineEdit* passwdLineEdit; public: public slots: private: QLabel* dbLabel=new QLabel(\"DataBase\"); QLabel* hostNameLabel=new QLabel(\"HostName\"); QLabel* dbNameLabel=new QLabel(\"DBName\"); QLabel* userNameLabel=new QLabel(\"UserName\"); QLabel* passwdLabel=new QLabel(\"Password\"); dbLineEdit= new QLineEdit; hostNameLineEdit=new QLineEdit; dbNameLineEdit=new QLineEdit; userNameLineEdit=new QLineEdit; passwdLineEdit=new QLineEdit; passwdLineEdit->setEchoMode(QLineEdit::Password); QGridLayout* gridLayout=new QGridLayout; gridLayout->addWidget(dbLabel,0,0,1,1); gridLayout->addWidget(dbLineEdit, 0,1,1,3); gridLayout->addWidget(hostNameLabel, 1, 0, 1,1); gridLayout->addWidget(hostNameLineEdit, 1, 1, 1, 3); gridLayout->addWidget(dbNameLabel, 2, 0, 1, 1); } gridLayout->addWidget(dbNameLineEdit, 2, 1, 1, 3); gridLayout->addWidget(userNameLabel, 3, 0, 1, 1); gridLayout->addWidget(userNameLineEdit, 3, 1, 1, 3); gridLayout->addWidget(passwdLabel, 4, 0, 1, 1); gridLayout->addWidget(passwdLineEdit, 4, 1, 1, 3); QPushButton* connectBtn=new QPushButton(\"Connect\"); QPushButton* cancelBtn=new QPushButton(\"Cancel\"); QHBoxLayout* btnLayout=new QHBoxLayout; btnLayout->setSpacing(60); btnLayout->addWidget(connectBtn); btnLayout->addWidget(cancelBtn); QVBoxLayout* dlgLayout=new QVBoxLayout; dlgLayout->setMargin(40); dlgLayout->addLayout(gridLayout); dlgLayout->setMargin(40); dlgLayout->addLayout(btnLayout); setLayout(dlgLayout); connect(connectBtn, SIGNAL(clicked()), this, SLOT(accept())); connect(cancelBtn, SIGNAL(clicked()), this, SLOT(reject())); setWindowTitle(\"Login\"); resize(300, 200); void GLogin::accept() { QSqlDatabase db = QSqlDatabase::addDatabase(dbLineEdit->text().trimmed()); db.setHostName(hostNameLineEdit->text().trimmed()); db.setDatabaseName(dbNameLineEdit->text().trimmed()); db.setUserName(userNameLineEdit->text().trimmed()); db.setPassword(passwdLineEdit->text().trimmed()); if(!db.open()) } { QDialog::reject(); } else { } QDialog::accept(); 因篇幅问题不能全部显示,请点此查看更多更全内容