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