数据库系统课程设计报告之教学与学生信息管理大学论文.docx
《数据库系统课程设计报告之教学与学生信息管理大学论文.docx》由会员分享,可在线阅读,更多相关《数据库系统课程设计报告之教学与学生信息管理大学论文.docx(32页珍藏版)》请在冰豆网上搜索。
![数据库系统课程设计报告之教学与学生信息管理大学论文.docx](https://file1.bdocx.com/fileroot1/2023-1/27/e7bf094b-7869-4727-bedc-083acef60c4d/e7bf094b-7869-4727-bedc-083acef60c4d1.gif)
数据库系统课程设计报告之教学与学生信息管理大学论文
《数据库系统》
课程设计
课程设计题目:
教学管理系统.
指导教师:
学生院系:
学生班级:
学生姓名:
学生学号:
目录
一、任务书2
二、相关技术与环境介绍(分析)3
三、需求分析4
四、概念结构设计7
五、逻辑结构设计8
六、数据库物理设计9
七、数据库实施9
八、系统测试方案和测试报告11
九、系统的主要功能和使用说明11
十、系统安装说明20
十一、课程设计心得20
十二、附录22
一、任务书
1.课程设计的题目与内容
教学管理系统
【1】信息需求:
(1)学生信息:
学号、姓名、班级编号、性别、年级、政治面貌编号、民族编号、籍贯编号、身份证号、学籍编号;
(2)班级信息:
班级编号、年级、班级名称、班级简称、人数、班主任;
(3)课程信息:
课程编号、课程名称、课程简称、拼音码、本学期课程、教师、开课系别、学分;
(4)成绩信息:
编号、学号、课程编号、成绩、考试次数、是否补修、是否重考、是否已确定成绩。
【2】处理需求:
(1)学生基本信息管理
Ø学生信息录入;
Ø学生信息查询:
按学号或姓名查询出指定学生的相关学籍信息
Ø学生信息修改:
按学号或姓名查询出指定学生的信息并做信息修改;
或者通过直接点击学生信息进行修改。
(2)班级信息管理:
对班级的基本信息输入、修改、删除
(3)课程信息管理:
课程信息的输入、修改、删除
(4)学生成绩信息管理:
成绩信息的输入、修改、删除
(6)学生成绩统计管理
Ø统计不合格人数
Ø统计学生考试成绩总分
Ø统计某一课程的最高分、平均分。
(7)信息查询
Ø学生信息查询:
按学号或姓名查询出指定学生的相关学籍信息
Ø学生成绩查询
(8)统计报表
成绩登记表,内容包括课程基本信息(课程号、课程名称、任课教师号、学时、学分、上课时间、上课地点、考试时间),每个学生的平时成绩(空格)、考试成绩(空格)和总评成绩(空格),按学号排序:
顺序输出所有课程的成绩登记表。
1.设计分工情况:
略
二、相关技术与环境介绍(分析)
对使用的RDBMS和应用开发工具作简单的介绍,及运行环境介绍。
2.1.使用的RDBMS:
SQLServer2012数据库
SQLServer是由Microsoft开发和推广的关系数据库管理系统(DBMS),它
最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。
MicrosoftSQLServer近年来不断更新版本,1996年,Microsoft推出了SQLServer6.5版本;1998年,SQLServer7.0版本和用户见面;SQLServer2000是Microsoft公司于2000年推出,目前最新版本是2015年份推出的SQLSERVER2015。
SQLServer2012具备很强的可伸缩性、更加可靠以及前所未有的高性能;而PowerView为用户对数据的转换和勘探提供强大的交互操作能力,并协助做出正确的决策。
增加PowerView数据查找工具和数据质量服务,企业版本则提高安全性可用性,以及从大数据到StreamInsight复杂事件处理,再到新的可视化数据和分析工具等,都将成为SQLServer2012最终版本的一部分。
2.2.应用开发工具:
C++Builder
C++Builder是由Borland公司推出的一款可视化集成开发工具。
C++Builder
具有快速的可视化开发环境:
只要简单地把控件(Component)拖到窗体(Form)上,定义一下它的属性,设置一下它的外观,就可以快速地建立应用程序界面;C++Builder内置了100多个完全封装了Windows公用特性且具有完全可扩展性(包括全面支持ActiveX控件)的可重用控件;C++Builder具有一个专业C++开发环境所能提供的全部功能:
快速、高效、灵活的编译器优化,命令行工具等。
它实现了可视化的编程环境和功能强大的编程语言(C++)的完美结合。
C++Builder可以编译所有符合ANSI/ISO标准的原代码,支持最新ANSI
C++/C语言特征:
模板(Templates)、异常(Exceptions)、运行类型信息(RuntimeTypeInformation)、Namespaces(命名空间)等,另外它还可以使用标准C++库且支持标准模板库(STL),以前的所有C++/C原代码可以不经过修改,直接移植到C++Builder环境下来。
C++Builder完全支持32位长文件名、多线程程序设计,且允许程序员直接调用任何Win95和NTAPI函数。
2.3.运行环镜:
C++Builder
C++Builder集成开发环境包含可视化窗体设计器,对象观察器、组件面板、
工程治理器、源代码编辑器、调试程序以及安装工具等。
三、需求分析
数据字典(包括数据项、数据结构、数据流、数据存储和数据处理,参考数据库教材和软件工程教材)和数据流图(参考软件工程教材);
3.1.此系统中的部分参数名词解释(数据项):
3.1.1.系统数据表及其用途:
数据表名称
数据表用途
班级信息表
保存班级基本信息
学生信息表
保存学生的基本信息
课程信息表
保存课程的基本信息
成绩表
用于保存学生的考试成绩
3.1.2.学生信息表:
对象名称
属性名称
设置值
学号
Char(10)
NotNull
姓名
Char(8)
Null
班级编号
Char(14)
Null
性别
Char
(2)
Null
年级
Int
Null
政治面貌编号
Char(13)
NotNull
民族编号
Char(10)
NotNull
籍贯编号
Char
(2)
NotNull
身份证号
Char(20)
Null
学籍编号
Char
(2)
NotNull
3.1.3.班级信息:
对象名称
属性名称
设置值
班级编号
Char(14)
NotNull
年级
Char(4)
Null
班级名称
Char(40)
Null
班级简称
Char(20)
Null
人数
Numeric(3,0)
Null
班主任
Char(8)
Null
3.1.4.课程信息:
对象名称
属性名称
设置值
课程编号
Int
NotNull
课程名称
Char(40)
NotNull
课程简称
Char(40)
NotNull
拼音码
Char(6)
Null
本学期课程
Int
NotNull
教师
Char(13)
NotNull
开课系别
Char(30)
NotNull
学分
Int
NotNull
3.1.5.成绩信息:
对象名称
属性名称
设置值
编号
[Int]IDENTITY(1,1)
NotNull
学号
Char(20)
NotNul
课程编号
Int
NotNul
成绩
Int
NotNul
考试次数
Int
Null
是否补修
Char
(2)
Null
是否重考
Char
(2)
Null
是否已确定成绩
Char
(2)
Null
3.2.数据流图
图3-1系统功能数据流图
3.3.安全性和完整性要求
随着这些年电脑计算机的速度质的提高,成本的下降,IT互联网大众趋势的发展。
我们使用电脑的高效率才处理数据信息成为可能。
学生学籍管理系统的出现,正是管理人员与信息数据,计算机的进入互动时代的体现。
友好的人机交互模式,清晰简明的图形界面,高效安全的操作使得我们对成千上万的信息的管理得心应手。
学生学籍管理系统,以SQL数据库作为后台信息存储,以C++Builder作为前台系统的语言。
提供了对学生信息添加,查询,修改,删除的功能。
实现了最基本的信息管理。
同时SQLServer2012具备很强的可伸缩性、更加可靠以及前所未有的高性能;而PowerView为用户对数据的转换和勘探提供强大的交互操作能力,并协助做出正确的决策。
在完整性跟安全性上存在很强的优越性。
四、概念结构设计
E-R图。
图4-1详细介绍的功能模块
图4-2系统流程E-R图
五、逻辑结构设计
概念结构设计所得的E-R模型是对用户需求的一种抽象的表达形式,它独立于任何一种具体的数据模型,因而也不能为任何一个具体的DBMS所支持。
为了能够建立起最终的物理系统,还需要将概念结构进一步转化为某一DBMS所支持的数据模型,然后根据逻辑设计的准则、数据的语义约束、规范化理论等对数据模型进行适当的调整和优化,形成合理的全局逻辑结构,并设计出用户子模式这就是数据库逻辑设计所要完成的任务。
数据库逻辑结构的设计分为两个步骤:
首先将概念设计所得的E-R图转换为关系模型;然后对关系模型进行优化。
关系模型是由一组关系(二维表)的结合,而E-R模型则是由实体、实体的属性、实体间的关系三个要素组成。
所以要将E-R模型转换为关系模型,就是将实体、属性和联系都要转换为相应的关系模型。
六、数据库物理设计
数据库在物理上的存储结构与存储方法称为数据库的物理结构,它依赖于选定的数据库管理系统。
为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程,就是物理结构设计。
数据库的物理结构设计通常分为两步:
(1)确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构;
(2)对物理结构进行评价,评价的中的是时间和空间效率。
七、数据库实施
创建数据库及数据库对象,实现及应用程序编码如下:
createtable班级信息(
班级编号varchar(4)notnull,
年级varchar(4)null,
班级名称varchar(30)null,
班级简称varchar(16)null,
人数numeric(3,0)null,
班主任varchar(8)null)
createtable学生信息(
学号varchar(14)notnull,
姓名varchar(8)null,
班级编号varchar(14)null,
性别varchar
(2)null,
年级intnull,
政治面貌编号varchar
(2)null,
民族编号varchar
(2)notnull,
籍贯编号varchar
(2)notnull,
身份证号varchar(15)null,
学籍编号varchar
(2)notnull)
createtable课程信息(
课程编号intnotnull,
课程名称char(40)notnull,
课程简称char(40)notnull,
拼音码char(6)null,
本学期课程char
(2)null,
教师char(10)null,
开课系别char(30)null,
学分intnull
)
createtable成绩表(
编号intnotnull,
学号varchar(14)notnull,
课程编号intnotnull,
成绩intnotnull,
是否补修varchar
(2)null,
是否重考varchar
(2)null,
是否已确定成绩varchar
(2)null
)
INSERTINTO成绩表
values('1','14020301','1','90','null','null','null');
INSERTINTO成绩表
values('2','14020301','2','59','null','null','null');
INSERTINTO成绩表
values('3','14020301','3','80','null','null','null');
INSERTINTO成绩表
values('4','14010302','1','91','null','null','null');
INSERTINTO成绩表
values('5','14010302','2','80','null','null','null');
INSERTINTO成绩表
values('6','14010302','3','80','null','null','null');
INSERTINTO成绩表
values('7','14030203','2','60','是','是','是');
INSERTINTO成绩表
values('8','14030203','1','32','null','null','null');
INSERTINTO成绩表
values('9','14030203','3','72','null','null','null');
INSERTINTO课程信息
values('1','数据结构','数据结构','sjjg','a','胡杏','信息与计算科学','3');
INSERTINTO课程信息
values('2','数据库系统概论','数据库','sjk','a','刘缅芳','信息与计算科学','3');
INSERTINTO课程信息
values('3','数值分析','数值分析','szfx','a','谭敏','信息与计算科学','4');
INSERTINTO学生信息
values('14010302','谢露','140103','男','2014','2','1','10','112233445567','2');
INSERTINTO学生信息
values('14020301','路毅恒','140203','女','2014','1','1','4','112233445566','1');
INSERTINTO学生信息
values('14030203','王五','140302','男','2015','2','2','6','223344556677','3');
INSERTINTO班级信息
values('1','2014','信息与计算科学3班','信计3班','26','刘佩');
INSERTINTO班级信息
values('2','2014','数学与计算数学3班','数学3班','28','张三');
ISERTINTO班级信息
values('3','2014','数学与应用统计2班','统计2班','29','李四');
八、系统测试方案和测试报告
总体来讲,我们每编写一个模块,就会进行相应的测试,当当前的所有功能测试完毕而且能正常运行时,我们才继续进行下一模块的编写。
我们用到的测试方法大概有如下几种:
8.1.1黑盒测试:
黑盒测试又称功能测试或者数据驱动测试。
黑盒测试是根据软件的规格对软件进行的测试,这类测试不考虑软件内部的运作原理,因此软件对用户来说就像一个黑盒子。
软件测试人员以用户的角度,通过各种输入和观察软件的各种输出结果来发现软件存在的缺陷,而不关心程序具体如何实现的一种软件测试方法。
释);
8.1.2静态测试:
静态测试指测试不运行的部分,例如测试产品说明书,对此进行检查和审阅.。
静态方法是指不运行被测程序本身,仅通过分析或检查源程序的文法、结构、过程、接口等来检查程序的正确性。
静态方法通过程序静态特性的分析,找出欠缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递归、未使用过的变量、空指针的引用和可疑的计算等。
静态测试结果可用于进一步的查错,并为测试用例选取提供指导
8.1.3动态测试:
动态测试是指通过运行软件来检验软件的动态行为和运行结果的正确性。
回归测试:
回归测试是指在发生修改之后重新测试先前的测试以保证修改的正确性。
理论上,软件产生新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现。
根据修复好了的缺陷再重新进行测试。
回归测试的目的在于验证以前出现过但已经修复好的缺陷不再重新出现。
一般指对某已知修正的缺陷再次围绕它原来出现时的步骤重新测试。
通常确定所需的再测试的范围时是比较困难的,特别当临近产品发布日期时。
因为为了修正某缺陷时必需更改源代码,因而就有可能影响这部分源代码所控制的功能。
所以在验证修好的缺陷时不仅要服从缺陷原来出现时的步骤重新测试,而且还要测试有可能受影响的所有功能。
8.1.4单元测试:
单元测试是最微小规模的测试;以测试某个功能或代码块。
典型地由程序员而非测试员来做,因为它需要知道内部程序设计和编码的细节知识。
这个工作不容易做好,除非应用系统有一个设计很好的体系结构;还可能需要开发测试驱动器模块或测试套具。
8.2测试报告
8.2.1登录界面测试报告
在对学生成绩统计表测试结果运行报告如下图所示:
九、系统的主要功能和使用说明
我们采用BCB中的BDE功能与通过SQLServer2012建立的ODBC数据源建立连接,从而实现访问数据库的功能。
其次,我们使用BCB中“数据
库”菜单中的“窗体创建向导”来生成多个窗体。
如下:
1、首先,登录功能:
只有正确的账户和密码才能登录,保证数据的基本安全性。
2、登录界面,可视化操作界面从而方便操作。
3、学生信息查询与维护功能。
包括查询首记录、上记录、下记录、尾记录、新增、删除(同时会提示用户再次确认)、编辑、完成、放弃、撤销;根据学号或者姓名查询,当没有符合条件的结果时,系统会返回空白,当查询条件为空时,系统会返回全部内容。
同时,界面下方还会显示所选中记录的各种信息。
4、班级信息查询与维护功能,和学生信息查询与维护功能相似。
包括查询首记录、上记录、下记录、尾记录、新增、删除(同时会提示用户再次确认)、编辑、完成、放弃、撤销;根据课程名称号或课程简称名查询,当没有符合条件的结果时,系统会返回空白,当查询条件为空时,系统会返回全部内容。
同时,界面下方还会显示所选中记录的各种信息。
5成绩信息查询与维护功能,和学生信息查询与维护功能相似,包括查询首记录、上记录、下记录、尾记录、新增、删除(同时会提示用户再次确认)、编辑、完成、放弃、撤销;根据课程名称号或课程简称名查询,当没有符合条件的结果时,系统会返回空白,当查询条件为空时,系统会返回全部内容。
同时,界面下方还会显示所选中记录的各种信息。
同时同时嵌入式SOL语言实现统计各种数据的功能。
如图片的右方所示。
一十、系统安装说明
1、打开SQLsever,导入数据表脚本文件并重启
2、在安装了SQLSever的Windows平台上即可运行本系统
3、输入正确的数据库访问账户与密码即可开始使用系统。
(初始界面)
(登录界面)
一十一、课程设计心得
通过此次课程设计,使我更加扎实的掌握了有关信息管理系统方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。
实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。
课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。
同时,设计让我感触很深。
使我对抽象的理论有了具体的认识。
本次课程设计虽然很辛苦,实在是受益匪浅。
本来这门课的知识学的就不够扎实,本次课程设计,在设计过程中碰到了很多问题,刚开始要设计的时候,还真不知道从哪里下手但最终在图书、同学和老师的帮助下都得到了解决,让我学会了好多书本上没有的东西,通过本次课程设计我也能将课本上的知识融会贯通,起到了很好的辅助学习的效果,但是我发现我学到的知识比整整一个学期学到的都多。
理论和实践的相结合是学习最有效的方法。
在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论.
一十二、附录
#include
#pragmahdrstop
#include
#include"Unit1.h"
#include"Unit2.h"
#include"Unit3.h"
#include"Unit4.h"
#include"Unit5.h"
#include"db.cpp"
#pragmapackage(smart_init)
#pragmaresource"*.dfm"
TForm1*Form1;
__fastcallTForm1:
:
TForm1(TComponent*Owner)
:
TForm(Owner)
{
}
void__fastcallTForm1:
:
Button1Click(TObject*Sender)
{
Form2->Show();
}
//---------------------------------------------------------------------------
void__fastcallTForm1:
:
Button2Click(TObject*Sender)
{
Form3->Show();
}
void__fastcallTForm1:
:
Button3Click(TObject*Sender)
{
Form4->Show();
}
void__fastcallTForm1:
:
Button4Click(TObject*Sender)
{
Form5->Show();
}
void__fastcallTForm1:
:
N2Click(TObject*Sender)
{
Form1->Button1->Click();
}
void__fastcallTForm1:
:
N6Click(TObject*Sender)
{
Form1->Button2->Click();
}
void__fastcallTForm1:
:
N4Click(TObject*Sender)
{
Form1->Button4->Click();
}
void__fastcallTForm1:
:
N5Click(TObject*Sender)
{
Form1->Close();
Form2->Close();
Form3->Close();
Form4->Close();
Form5->Close();
}void__fastcallTForm1:
:
N3Click(TObject*Sender)
{
Form1->Button3->Click();
}
void__fastcallTFo