数据库应用课程设计实验报告.docx
- 文档编号:9954237
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:48
- 大小:1.02MB
数据库应用课程设计实验报告.docx
《数据库应用课程设计实验报告.docx》由会员分享,可在线阅读,更多相关《数据库应用课程设计实验报告.docx(48页珍藏版)》请在冰豆网上搜索。
数据库应用课程设计实验报告
华北科技学院
课程设计说明书
班级:
计算B082姓名:
李晓媛(200809014221)
设计题目:
_____小雨点学生成绩管理系统
设计时间:
2011.1.10至2011.1.21
指导教师:
丁智斌
评语:
________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
评阅成绩:
____评阅教师:
_____
小雨点学生成绩管理系统
设计总说明:
在当今社会,无论中小学还是大学,成绩管理是一项必要而且很关键的工作。
现在随着学生数量的急剧增加,处理学生的成绩数据变的越来越烦琐艰巨。
在当今社会,计算机已经普及到了几乎每个学校、家庭,我们的学习和生活已经处处离不开计算机的存在。
按照传统的管理方法,学生成绩都是登录在纸质的成绩册上,使用很不方便,在进行查询、修改、插入和删除操作时,可能由于人为的失误,使这些数据很容易丢失。
另一方面,传统的管理方法在面对大量的数据时,工作量非常大,效率非常低。
所以要设计出一套高效的、合理的学生成绩管理系统是很有必要的。
本系统依据开发要求主要应用于教育系统,完成对日常的教育工作中学生成绩档案的数字化管理。
开发本系统可使老师减轻工作压力,比较系统地对学生的信息和成绩进行管理,查询、增添、修改、删除都变的非常简便,节省了大量的工作量。
本课程设计是在学习了《数据库系统A》和相关开发软件课程之后,让学生通过实际项目的设计、开发,培养学生独立进行数据库软件的建模、在计算机中进行数据库设计、并通过相关软件开发系统的能力。
输入一个班级的学生基本信息(包括学号,姓名,性别,科目),对N门考试的成绩进行管理(例N=5),要求:
1、用户录入每个学生每门课程的分数;
2、能够计算每个学生的各门功课总分和平均分,并按总分将成绩排序,显示每个学生的总分和排名;
3、计算全班各门功课的平均分,显示没门课程中低于平均分的每一个学生的学号,姓名,性别,科目,成绩等信息;
4、显示每门科目中,成绩在90分以上的学生信息。
另外还输出每门科目中不及格的学生信息;
5、能按姓名或者学号查找,增加,删除和保存各个学生的信息。
本系统主要用于对学生成绩进行管理,能够进行插入、删除、修改、查询和显示学生的信息。
登录该系统时,用户需要输入口令和密码,以确保数据的安全性,成功登录的用户,可以插入学生的信息和成绩,并对学生的信息和成绩进行增、删、改操作。
基于上述想法,我们将学生数据保存到数据库中,以C++为前台进行系统的设计。
因为成绩管理系统是一项很实用的系统,所面对的数据量很大,所以我们要求系统能够高效快速的处理这些数据,并且要保证数据的正确性、相容性和安全性。
所以在数据库中需要定义很多触发器,比如删除了某位同学的信息则删除对应的所有成绩信息、活着删除了某门课程则删除该门课所有的成绩等。
C++作为前台是将数据库中的数据读取出来,有助于用户对这些数据进行相应的操作,使操作更方便,更符合用户的要求。
所以该系统应该要有一个良好的界面,使用户感觉很直观,使用快捷,这就是用C++所要实现的功能。
既然在一个系统中同时涉及到数据库和C++,所以我们要从数据库中读取数据,并且和界面联系起来,同时也能将用户界面上的数据存储到数据库中。
以上是设计此系统应该注意的地方和设计原则,以下就是遵循这些原则和标准设计出的一套完整的管理系统。
关键词:
SQLServer;成绩管理;MFC
绪论
本课程设计是在学习了《数据库系统A》和以前学过的C++等相关软件课程后,通过实际的操作来熟悉数据库和相关软件的应用,培养独立的完成对相关课题或者项目的分析能力、设计能力和调试能力。
这次的课程设计是继大二开设的C++面向对象课程设计之后的,同样是运用MFC程序来设计。
与上次课程设计唯一不同的就是数据的存储位置不同。
在大二下学期开设的课程设计中,我们主要是将数据保存到数据文件当中,而这次课程设计我们要将数据保存到数据库中。
所以我们要解决的首要问题就是如何将数据库中的数据导出来,这也是我们这次课程设计的关键,因为其他的操作我们在学面向对象程序设计C++时已经练习过。
这次的课程设计中,着重培养的是学生的自学能力,以及独立分析互联网上和图书馆里的各种资料,用来丰富自己的知识并且提高对SQL、VC++等软件的实际操作能力。
通过这次的课程设计,使我们对已经学习过的数据库课程的进一步的掌握,对知识进行最大程度的消化融汇。
因此这次的课程设计对我们来说具有非常重要的作用:
为以后学生工作做必要的准备和实践,提高自身对数据库开发的能力。
学生成绩管理系统,在系统中分为大的两个个方面:
一是学生信息的增删改,二是学生成绩的增删改。
(1)用户进入系统后,可以查询相应学号的学生的信息,可以增加、删除、修改学生信息。
(2)用户可以录入学生的成绩,只需输入对应的学号和课程号以及成绩,简单易操作,并且可以对记录进行增、删、改操作。
此次设计的学生成绩管理系统,虽然简单,但是却十分实用,极大的方便了用户对学生信息和成绩的操作,节省了大量的工作量。
第1章数据库设计
1.1需求分析
1.1.1数据需求
学生成绩管理系统需要完成的主要功能有:
1.学生的基本信息录入,包括学号、姓名、性别、出生时间、专业、总学分、备注、地址。
2.课程信息表的录入,包括课程号、课程名,学分。
3.成绩信息表的查询、插入、修改、删除等操作,包括课程号、学号、成绩。
1.1.2数据字典
表1学生信息表(XSB)结构
项目名
列名
数据类型
可空
默认值
说明
学号
XH
Char6
NOTNULL
无
主键
姓名
XM
Char8
NOTNULL
无
性别
XB
Char2
NULL
无
出生时间
CSSJ
Datetime
NULL
无
专业
ZY
Char
NULL
无
总学分
ZXF
Int
NULL
0
0≤总学分<160
备注
BZ
Varchar500
NULL
无
地址
DZ
xml
NULL
无
表2课程信息表(KCB)结构
项目名
列名
数据类型
可空
默认值
说明
课程号
KCH
Char3
NOTNULL
无
主键
课程名
KCM
Char16
NOTNULL
无
学分
XF
tinyint
NULL
0
表3成绩表(CJB)结构
项目名
列名
数据类型
可空
默认值
说明
学号
XH
Char6
NOTNULL
无
主键
课程号
KCH
Char3
NOTNULL
无
主键
成绩
CJ
int
NULL
0
1.1.3数据流程图
图1数据流程图
1.2概念分析
在以上需求分析的基础上,设计出该系统的E-R图以及各数据项之间的关系模式,则得出学生表E-R图:
图2学生表E-R图
课程表E-R图:
图3课程表E-R图
成绩表E-R图
图4成绩表E-R图
所以得出总的E-R图:
图5总E-R图
1.3逻辑结构设计
关系模型:
学生表(XH,XM,XB,CSSJ,ZY,ZXF,BZ,DZ);
课程表(KCH,KCM,XF);
成绩表(XH,KCH,CJ)
1.4物理实施
1.4.1创建数据库
CREATEDATABASEPXSCJ
ONPRIMARY
(NAME='PXSCJ_data',
FILENAME='F:
\数据库课程设计\数据源\PXSCJ.mdf',
SIZE=10,MAXSIZE=UNLIMITED,FILEGROWTH=5)
LOGON
(NAME='PXSCJ_log',
FILENAME='F:
\数据库课程设计\数据源\PXSCJ.LDF',
SIZE=5,MAXSIZE=UNLIMITED,FILEGROWTH=20%)
1.4.2创建数据表
创建学生信息表:
USEPXSCJ
GO
CREATETABLEXSB
(
XHCHAR(6)NOTNULLPRIMARYKEY,
XMCHAR(8)NOTNULL,
XBCHAR
(2)NULLCHECK(XB='男'ORXB='女'),
CSSJDATETIMENULL,
ZYCHAR(12)NULL,
ZXFINTNULLDEFAULT0CHECK(ZXF>=0ANDZXF<160),
BZVARCHAR(500)NULL,
DZVARCHAR(500)NULL
创建课程信息表:
CREATETABLEKCB
(
KCHCHAR(3)NOTNULLPRIMARYKEY,
KCMCHAR(16)NOTNULL,
XFTINYINTNOTNULLDEFAULT0)
创建成绩表:
CREATETABLECJB
(
XHCHAR(6)NOTNULL,
KCHCHAR(3)NOTNULL,
CJINTNULLDEFAULT0CHECK(CJ>=0ANDCJ<=100))
1.4.3像数据表中插入数据
学生信息表部分数据如图6:
图:
6学生信息表部分数据
课程信息表数据如图7:
图7课程信息表数据
成绩表部分数据如图8:
图8成绩表部分数据
1.4.4创建视图
USEPXSCJ
GO
CREATEVIEWXS_KC_CJ
AS
SELECTXSB.XH,XSB.XM,KCB.KCH,KCB.KCM,CJB.CJ
FROMKCB
INNERJOINCJBONKCB.KCH=CJB.KCH
INNERJOINXSBONXSB.XH=CJB.XH
1.4.5触发器和完整性约束
删除学生对应成绩记录(使用触发器实现)
实现功能:
当删除学生记录后,同步删除成绩表(CJB)该学生的成绩记录。
可以通过创建学生表(XSB)的DELETE触发器实现此功能。
触发器语句如下:
CREATETRIGGERCHECK_XSB_CJBONXSB
FORDELETE
AS
DELETEFROMCJBWHEREXHIN(SELECTXHFROMDELETED)
删除课程对应成绩记录(使用完整性约束实现)
实现功能:
当删除课程记录后,同步删除成绩表(CJB)中所有学生该课程的成绩记录。
语句如下:
ALTERTABLECJBWITHCHECKADDCONSTRAINTFK_CJB_KCBFOREIGNKEY(KCH)
REFERENCESKCB(KCH)
ONDELETECASCADE
用触发器验证输入数据
实现功能:
当向成绩表(CJB)表插入一条记录时,检查该记录的“学号”在学生表中是否存在,检查“课程号”在课程表(KCB)中是否存在。
若有一项为否,则不允许插入。
触发器语句如下:
CREATETRIGGER[DBO].[CHECK_XSB_KCB]ON[DBO].[CJB]
FORINSERT
AS
IF
EXISTS
(SELECTXHFROMINSERTEDWHERENOTEXISTS
(SELECTXHFROMXSBWHEREINSERTED.XH=XSB.XH))
OREXISTS(SELECTKCHFROMINSERTEDWHERENOTEXISTS(SELECTKCHFROMKCBWHEREINSERTED.KCH=KCB.KCH))
ROLLBACKTRANSACTION
1.4.6存储过程
存储过程名为CJ_Data。
参数:
学号(in_xh)、课程号(in_kch)和成绩(in_cj)。
实现功能:
根据存储过程的3个参数,对指定学号、课程号的学生成绩进行增、删、改。
编写思路:
(1)根据课程号查询该课程对应的学分。
(2)根据学号和课程号查询该成绩记录,删除原来成绩记录。
如果成绩>=60,则该学生总学分减去该课程的学分。
(3)如果新成绩=-1(表示删除该成绩记录),则储存过程结束。
(4)增加成绩记录,如果成绩>=60,则该学生总学分加上该课程的学分。
存储过程如下:
CREATEPROCEDURECJ_Date(@in_xhCHAR(6),@in_kchCHAR(3),@in_cjINT)
AS
SETNOCOUNTON
DECLARE@in_countINT
DECLARE@in_xfTINYINT
DECLARE@in_cjb_cjINT
SET@in_xf=(SELECTXFFROMKCBWHEREKCH=@in_kch)
SET@in_count=(SELECTCOUNT(*)FROMCJBWHEREXH=@in_xhANDKCH=@in_kch)
SET@in_cjb_cj=(SELECTCJFROMCJBWHEREXH=@in_xhANDKCH=@in_kch)
IF(@in_count>0)
BEGIN
DELETEFROMCJBWHEREXH=@in_xhANDKCH=@in_kch
IF(@in_cjb_cj>60)
BEGIN
UPDATEXSBSETZXF=ZXF-@in_xfWHEREXH=@in_xh
END
END
IF(@in_cj!
=-1)
BEGIN
INSERTINTOCJBVALUES(@in_xh,@in_kch,@in_cj)
IF(@in_cj>60)
BEGIN
UPDATEXSBSETZXF=ZXF+@in_xfWHEREXH=@in_xh
END
END
第2章系统界面设置及主要功能
2.1添加主菜单和功能按钮
在项目工作区窗口中选择ResourceView页面,双击资源“Menu”项中的“IDR_MAINFRAME”,则菜单编辑窗口出现在主页面的右面,如图9所示。
相应的XSCJ项目的菜单资源被显示出来,在菜单的最后一项,VisualC++为用户留出了一个空位置,用来输入新的菜单项。
在此可输入“学生信息管理”“学生成绩管理”和“成绩输入”
图9XSCJ菜单资源
同理,双级资源“Toolbar”项中的IDR_MAINFRAME,则工具条编辑器窗口出现在主界面的右面,如图10所示。
在此可以添加新的按钮:
图10工具栏编辑窗口
2.2登录界面设置:
登录界面设置如图11所示:
图11登录界面
登录界面的控件ID和标题设置如表4所示:
表4登陆界面设置ID和标题
添加的控件
ID号
标题
其他属性
编辑框(用户名)
IDC_EDIT1
默认
编辑框(密码)
IDC_EDIT2
选中选项password
按钮
IDOK
确定
默认
按钮
IDCANCEL
退出
默认
打开MFCClassWizad,切换到MemberVariables页下添加成员变量,详见表5
:
表5登录界面设置控件关联变量
ID号
变量类型
变量名
IDOK
Cstring
m_username
IDCANCEL
CString
m_passkey
背景图片的添加过程为:
打开MFCClassWizad,在MessageMaps里添加WM_PAINT和WM_CTLCOLOR函数,函数代码见附录。
添加图片的过程如下:
在ResourceView中选中一项,单击右键:
选择Insert,在“插入资源”中选择Bitmap,单击导入,选择格式为bmp的图片,则在项目工作区窗口会出现一个Bitmap选项,里面又要加入的图片,见图12:
图12插入图片
如果用户名或密码错误,则会出现如图13的提示:
图13用户名或密码错误提示
如果用户名密码正确,则成功登录系统,如图14:
图14成功登录提示
如果点击退出,则有如图15提示:
图15退出系统提示
2.3学生信息增、删、改界面
界面设置如图16所示:
登录界面的控件ID和标题设置如表6所示:
打开MFCClassWizad,切换到MemberVariables页下添加成员变量,详见图17
图16学生信息增、删、改界面
表6登陆界面设置ID和标题
添加的控件
ID号
标题
其他属性
编辑框(学号)
IDC_XH
默认
编辑框(姓名)
IDC_XM
默认
编辑框(性别)
默认
男
选中“组”
编辑框(性别)
默认
女
默认
编辑框(出生时间)
默认
默认
编辑框(专业)
IDC_ZY
默认
编辑框(备注)
IDC_BZ
默认
编辑框(地址)
IDC_DZ
默认
按钮
IDC_ADD
添加
默认
按钮
IDC_SEARCH
查找
默认
按钮
IDC_DELETE
删除
默认
按钮
IDC_EXIT
退出
默认
按钮
IDC_CHECK
检查您输入的学号是否存在
默认
图17为控件添加数据成员
建立头文件StuConStr.h,在其定义本应用系统在后续编程中一直要用使用的连接字符串宏常量SQLCONSTR。
具体代码见附录。
输入学号对学生进行添加功能,若学号已存在,则弹出系统消息,如图18
图18重复添加相同学号学生信息的系统提示
若输入数据表中不存在的学号的学生信息,则弹出“添加成功”的系统信息,如图19:
图19添加成功系统消息
对学生信息进行查询时,如果不存在要查询的学号,则弹出如图20系统消息:
图20查询非数据表中学号的学生信息的系统消息
如果要查询的学生的学号存在,则直接在显示在各个控件中,如查询学号为081106的学生,得到图21:
图21查询结果
在对学生信息进行修改时,可以先查询该学生的信息,再点击修改按钮,修改成功,出现图22提示:
图22修改成功提示
在对学生信息进行删改成功,则出现图23提示:
图23修改成功系统消息
2.4对学生信息多角度查询
点击菜单栏上的“学生信息管理”或工具栏上的“信”,可以对学生信息进行多角度查询。
在此界面中,可以按学号查询学生信息,也可以按姓名查找学生信息,并且可以按系部来看全系学生的基本信息情况。
基本界面如图24所示:
图24学生信息多角度查询界面
设置此对话框的方法为:
在Dialog下插入一个新对话框,有机对话框打开属性,在ID中输入“IDD_STUINFO_MODIFY”,标题为:
”学生成绩管理系统——学生信息查询修改”。
按Ctrl+W快捷键,弹出“添加新类”对话框,单击OK按钮,类名输入“CStuInfoModify”。
设置ADODC的属性,在“CommandType”中选择“1-adCmdText”,表示命令为SQL语句。
打开DataGrid控件的属性对话框,定位到“全部”页。
将DataGrid一栏右边的“DataSource”绑定为ADODC的ID,这里是“IDC_StuADODC”。
以后的操作类似,不再重复叙述。
登录界面的控件ID和标题设置如表7所示:
表7登陆界面设置ID和标题
添加的控件
ID号
标题
其他属性
编辑框(学号)
IDC_XH
默认
编辑框(姓名)
IDC_XM
默认
编辑框(专业)
IDC_COMBOZY
默认
DataGrid
默认
默认
见步骤
ADODC
IDC_StuADODC
默认
见步骤
按钮
IDC_BUTSearch
查询
默认
按钮
IDOK
保存
默认
按钮
IDCANCEL
退出
默认
打开MFCClassWizad,切换到MemberVariables页下添加成员变量,详见图25:
图25为控件添加数据成员
运行程序,例如查询学号为081101,专业为基础部的学生,点击查询,显示结果如图26所示:
图26查询结果
如果系部中不存在要查询的学号或姓名,则出现如图27提示:
图27未找到记录提示
2.5学生成绩的增删改和查询
点击菜单栏上的“学生成绩管理”下拉菜单中的“成绩录入”或工具栏上的“成绩录入”,即可进入学生成绩增删改和查询的界面,如图28所示:
图28学生成绩增删改和查询的界面
登录界面的控件ID和标题设置如表8所示:
表8登陆界面设置ID和标题
添加的控件
ID号
标题
其他属性
编辑框(按查找)
IDC_COMBO1
默认
编辑框(请输入)
IDC_EDIT1
默认
编辑框(学号)
IDC_EDIT2
默认
编辑框(课程号)
IDC_EDIT3
默认
编辑框(成绩)
IDC_EDIT4
默认
DataGrid
IDC_DATAGRID1
见步骤
ADODC
IDC_ADODC1
见步骤
按钮
IDC_BUTTON1
查询
默认
按钮
IDC_BUTTON2
添加
默认
按钮
IDC_BUTTON3
修改
默认
按钮
IDC_BUTTON4
删除
默认
按钮
IDC_BUTTON5
退出
默认
打开MFCClassWizad,切换到MemberVariables页下添加成员变量,详见图29。
图29为控件添加数据成员
对学生成绩的查询,可以按照不同的方式:
姓名、学号、课程名、课程号,极大的方便了用户的使用,如按照课程名“计算机基础”进行查询时,课得到如图30所示的结果:
图30成绩查询结果
对学生成绩添加时,如果学号或课程号为空,则出现如图31的提示:
图31添加成绩错误提示
如果添加的记录存在,则出现图32提示:
图32添加记录存在提示
若添加成功,则出现图33提示,并且记录更新到该界面左边的表格中:
图33添加成功提示
对成绩进行修改时,如果修改的记录不存在,则弹出图34提示
图34修改记录不存在提示
如果修改成功,则出现图35提示,点击确定后,系统更新到左边的表格中:
图35修改成功提示
对成绩记录进行删除时,如果记录不存在,则弹出如图36的消息:
图36删除记录不存在的系统消息
如果删除成功,则弹出“删除成功”的系统消息,并且更新到左边的表中,如图37:
图37删除成功系统消息
总结
通过两周时间做出来的学生管理系统
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 应用 课程设计 实验 报告