数据库课程设计报告CC.docx
《数据库课程设计报告CC.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告CC.docx(31页珍藏版)》请在冰豆网上搜索。
数据库课程设计报告CC
湖南科技大学计算机科学与工程学院
数据库课程设计报告
题目:
学生信息管理系统
学号:
姓名:
指导教师:
完成时间:
2011年12月16日
第一部分系统需求分析
1.开发环境分析………………………………………………………………………
2.系统功能分析………………………………………………………………………
3.系统功能模块设计…………………………………………………………………
4.与其它系统的关系…………………………………………………………………
5.数据流程图…………………………………………………………………………
第二部分数据库设计
1.数据库需求分析……………………………………………………………………
2.数据库概念结构设计………………………………………………………………
3.数据库逻辑结构设计………………………………………………………………
4.数据库的建立………………………………………………………………………
第三部分各功能模块的设计与实现
1.功能说明……………………………………………………………………………
2.用户界面设计………………………………………………………………………
3.各功能模块的实现…………………………………………………………………
4.
第四部分课程设计总结
第一部分系统需求分析
随着计算机网络的发展和个大高校的不断扩招,学生人数逐渐增多,需要通过学生管理系统对学生信息进行管理。
学生信息管理系统指通过计算机对学生的各种信息进行管理的计算机软、硬件系统。
对一个学校来说,无任规模的大小,每时每刻都会产生大量的学生信息,这些信息是如此的复杂,如此的海量,使得每个学校为维护和管理这些信息而浪费了大量的人力和物力,结果还经常出错,更谈不上数据的快速的科学分析。
为了方便管理员更好的管理学生信息,减少工作量,开发了这个可视化的学生管理系统,为管理员提供方便,可以对学生信息实现查询、修改、维护等操作,通过这个系统,可以做到信息的规范管理、快速的查询。
1.1开发环境分析
1.1.1软件开发环境
①windowsXP;
②MicrosoftSQLServer2000;
③PhotoshopCS4。
1.2系统功能分析
本系统主要的功能是收集学生的个人信息,以便向教师提供每个学生在校的情况。
系统的主要功能有:
学生个人信息输入,包括:
姓名、性别、院系、生日、籍贯、生源所在地等。
●学生流动情况的输入,包括:
转系、休学、复学、退学、毕业。
●奖惩情况的输入。
●学生个人情况查询和修改,包括流动情况和奖罚情况。
1.3系统功能模块设计
根据系统功能要求可以将系统分解成几个模块来分别设计应用程序界面,如图1所示。
图1学生信息管理系统功能模块
1.4与其它系统的关系
学生信息管理系统是校园信息管理系统的一个组成部分。
它为其它系统,如班级信息管理系统、教学管理系统、成绩单系统、宿舍分配系统等,提供学生的基本情况。
同时需要其他系统提供的班级设置和院系设置等情况。
这些系统可以使用同一个数据库,直接相互调用所需的数据。
1.5数据流程图
根据1.2节中对该系统功能模块的分析,绘得学生信息管理系统的数据流程图,如图2所示。
图2学生信息管理系统的数据流程
第二部分数据库设计
2.1数据库需求分析
根据上一节的数据流程图,可以列出以下记录学生信息所需的数据项和数据结构:
●学生:
学号、姓名、性别、生日、籍罗、所在院系、所在班级。
●处罚记录:
记录号、级别、处罚对象、记录时间、详细描述、是否生效。
●奖励记录:
记录号、级别、奖励对象、记录时间、详细描述。
●学籍变更记录:
记录号、变更情况、记录对象、记录时间、详细描述。
所需的外部数据支持:
●班级:
班级编号、班级名称、所属院系。
●院系:
代码、名称。
2.2数据库概念结构设计
本系统所需数据的E-R模型图如图3所示。
图3学生信息管理系统的E—R图
2.3数据库逻辑结构设计
根据系统E-R图,需要设计4个数据表来存放学生的信息,一个表存放密码信息。
为了系统的完整,系统中包括了应用程序设计中所需的2个外部数据表。
为了优化数据表结构,部分字段采用代码形式,因此需要附加3个代码表。
这9个数据表的结构如表1到表10所示。
表1studengt学生个人信息表
字段名
数据类型
是否可空
说明
studentnumber
varchar
否
学号(主关键字)
name
varchar
是
姓名
sex
varchar
是
性别(M、F)
class
varchar
是
班级编号(外部关键字)
department
varchar
是
所属院系编号(外部关键字)
age
Inte
是
生日
native_place
varchar
是
籍贯
monitor
varchar
是
班长学号
表2exchaange学籍变更信息表
字段名
数据类型
是否可空
说明
ID
varchar
否
记录号(主关键字)
sstudentnumber
varchar
是
学号(外部关键字)
change
varchar
是
变更代码(外部关键字)
rec_time
data
是
记录时间
description
varchar
是
描述
表3rewadr奖励记录信息表
字段名
数据类型
是否可空
说明
ID
varchar
否
记录号(主关键字)
studentnumber
varchar
是
学号(外部关键字)
levels
inte
是
级别代码(外部关键字)
rec_time
varchar
是
记录时间
description
varchar
是
描述
表4punishment处罚记录信息表
字段名
数据类型
是否可空
说明
ID
varchar
否
记录号(主关键字)
studentnumber
varchar
是
学号(外部关键字)
levels
inte
是
级别代码(外部关键字)
rec_time
varchar
是
记录时间
enable
varchar
是
是否生效(T、F)
description
varchar
是
描述
表5log_in密码记录表
字段名
数据类型
是否可空
说明
name
varchar
否
编号(主关键字)
rassword
varchar
是
全称
authority
varchar
是
班长学号(外部关键字)
表6CLASS班级信息表
字段名
数据类型
是否可空
说明
ID
编号(主关键字)
name
全称
monitor
班长学号(外部关键字)
表7CHANGE_CODE学籍变动代码表
字段名
数据类型
是否可空
说明
code
代码(主关键字)
description
描述
表8CHANGE_CODE学籍变动代码表
字段名
数据类型
是否可空
说明
code
inte
否
代码(主关键字)
description
varchar
是
描述
表9REWARD_LEVELS奖励等级代码表
字段名
数据类型
是否可空
说明
code
inte
否
代码(主关键字)
description
varchar
是
描述
表10PUNISH_LEVELS处罚等级代码表
字段名
数据类型
是否可空
说明
code
inte
否
代码(主关键字)
description
varchar
是
描述
2.4数据库的建立
2.4.1数据库的建立
进入MicrosoftSQLServer企业管理器,在控制面板跟目录中,选择数据库,右键单击“新建数据库”,如图4所示。
图4新建数据库a
在弹出的对话框中输入要创建的数据库的名称,点击确定即可。
如图5所示。
图5新建数据库b
2.4.2初始数据的输入
数据表创建成功后,数据库中还没有实际的数据。
为了保证外部键能使用,数据需要提前输入,如院系编号、班级编号、学籍变更代码和奖惩级别等等。
学籍变更代码和奖惩级别的主关键字CODE从0开始用阿拉伯数字依次编号,便于程序设计时,采用单选按钮来选择。
本系统中所用到的学籍变更和奖惩级别代码如表11至表20所示。
表11student学生个人信息表
表12exchaange学籍变更信息表
表13reward奖励记录信息表
表14punishment处罚记录信息表
表15log_in密码信息表
表16depatment院系信息表
表17class班级信息表
表18change_code血迹变更代码表
表19reward_code奖励等级代码表
表20punishment处罚等级代码表
第三部分各功能模块的设计与实现
3.1功能说明
1、用户登录:
操作人员使用自己注册时设置的用户名和密码登录到系统,对学生信息进行管理。
2、新生个人信息输入:
系统操作人员打开学生信息输入界面,采用文本形式输入相关信息,包括学号、姓名、班级等基本信息,将新生信息加入到数据库中。
3、学籍变更情况的输入:
新增学生学籍变更情况。
4、奖历情况的输入:
新增学生获奖情况。
5、处罚情况的输入:
新增学生处罚情况。
6、学生个人情况查询和修改:
根据相关字段查询出学生的相应信息,继而对这些信息进行更新和删除操作,并存储到数据库中。
3.2用户界面设计
完成数据库创建和功能说明以后,我们可以进行下一步工作,既设计用户界面。
由于本系统管理内容比较简单,且为校园管理信息系统的一部分,因此使用一个窗体不同的标签页来完成系统要求的6项功能。
我们把学生信息管理系统的窗体分成6个主要部分,如下图所示。
3.2.1应用程序主窗体的创建
该窗体为整个系统的主界面,对该界面的设计主要包括背景,菜单栏的设计,如图6所示。
图6应用程序主窗体
3.2.2用户登录界面
用户登录界面,顾名思义,用户进入学生信息系统的通道,该界面设计如图7所示。
图7用户登录界面
3.2.3新生个人信息输入界面
新生个人信息输入模块主要用于新生信息的录入,其界面设计主要包括学号、姓名、班级、年龄、籍贯、学院等基本信息的录入,界面设计如图8所示:
图8新生基本信息输入窗口
3.2.4学籍变更情况输入界面
学籍变更模块用于学生学籍变更情况的录入,对该模块的界面设计主要包学号,学籍变更类别等情况的输入,其界面设计如图9所示。
图9学籍变更输入界面
3.2.5奖历情况输入界面
奖励情况输入模块用于学生获奖情况的录入,对该模块的界面设计主要包括学号,奖励级别等情况的输入,其界面设计如图10所示。
图10奖励情况输入
3.2.6处罚情况输入界面
处罚情况输入模块用于学生处罚情况的录入,对该模块的界面设计主要包括学号,处罚级别等情况的输入,其界面设计如图11所示。
图11处罚情况输入界面
3.2.7学生个人情况查询和修改界面
学生个人情况查询和修改界面分为学生信息查询界面和学生信息更新界面和学生信息删除界面。
学生信息查询用于对学生信息的查询,包括流动情况的查询,及界面设计如图12所示。
图12学生信息查询
学生信息更新是对学生原有的信息记录进行修改和更新,及界面设计如图13所示。
图13学生信息更新界面
学生信息删除包括学生基本信息删除和流动情况的删除,其界面设计如图14所示。
图14学生信息删除界面
3.3各功能模块的实现
3.3.1用户登录模块
用户登录模块主要与log_in密码表进行连接,用于密码的验证,使用了1个adodc,2个static,2个edit,2个botton共计7个控件。
用户登录模块为用户进入系统对学生信息进行管理的唯一通道,若用户没有登录成功,则其他模块的功能无效,这是需要定义以风格函数OnMy(),接收用户登录成功的消息,代码如下:
LRESULTCImformationDlg:
:
OnMy(WPARAMwParam,LPARAMlParam)//接收消息
{
GetMenu()->EnableMenuItem(1,MF_ENABLED|MF_BYPOSITION);
GetMenu()->EnableMenuItem(2,MF_ENABLED|MF_BYPOSITION);
GetMenu()->EnableMenuItem(3,MF_ENABLED|MF_BYPOSITION);
GetMenu()->EnableMenuItem(4,MF_ENABLED|MF_BYPOSITION);
return0;
}
如登录成功,则其他模块的功能可以实现,界面图标变亮。
其运行界面如图15所示。
图15用户成功运行界面
用户登录时输入的密码需要与预设的密码相吻合,否则登录失败。
为Button1按钮创建关联成员,属性为“登录”,并对其编辑编码,代码如下:
voidCPersion:
:
OnButton1()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
//TODO:
Addextravalidationhere
UpdateData(TRUE);
_ConnectionPtrm_pConnection;
_RecordsetPtrm_pRecordset;
:
:
CoInitialize(NULL);
try
{
m_pConnection.CreateInstance("ADODB.Connection");
m_pRecordset.CreateInstance("ADODB.Recordset");
_bstr_tstrConn="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=command;DataSource=416-1-1";
m_pConnection->Open(strConn,"","",adModeUnknown);
}
catch(_com_errore)
{
:
:
CoUninitialize();
AfxMessageBox(e.ErrorMessage());
return;
}
//查询用户名密码在数据库中是否存在
//_variant_tra;
CStringstr;
//="selete*fromtmswheretms_user='"+m_name+"'andtms_pswd='"+m_password+"'";
str.Format("select*fromlog_inwherestudentnumber='%s'",m_studentnumber);
m_pRecordset=m_pConnection->Execute((_bstr_t)str,NULL,adCmdText);
while(!
m_pRecordset->GetadoEOF())
{
_variant_tvarName;
_variant_tvarpwd;
varName=m_pRecordset->GetCollect("studentnumber");
varpwd=m_pRecordset->GetCollect("password");
CStringstrName=(char*)_bstr_t(varName);
CStringstrpwd=(char*)_bstr_t(varpwd);
strName.TrimRight();
strpwd.TrimRight();
//MessageBox("strpwd="+strpwd+"m_password="+m_password);
if(strpwd==m_password)
{
AfxMessageBox("欢迎进入学生管理系统");
HWNDhwnd;
hwnd=FindWindow(NULL,"学生信息管理系统")->GetSafeHwnd();
:
:
SendMessage(hwnd,WM_MY,0,0);
CDialog:
:
OnOK();//发送消息
return;
}
if(strpwd!
=m_password)
{
MessageBox("密码不正确");
return;
}
}
CDialog:
:
OnOK();
}
经过上述步骤,已经完成代码编写任务,现在来连接数据库。
⑴在插入的Adodc控件上单击鼠标右键,在弹出的快捷菜单上选择“ADODC属性AdodcObject”,弹出Adodc属性对话框。
选择“General”选项卡,在该选项卡上可以通过三种方式连接数据库,其中常用的是后两项:
通过ODBC和连接字符串连接数据库。
在此,我们选择后者,如图16所示:
图16MicrosoftADODataControlProperties对话框
(2)单击“生成”按钮,弹出“数据链接属性”对话框。
根据要连接的数据库情况,选择适当的提供者,在此,选择“MicrosoftOLEDBProviderForSQLSERVER”来连接SQLSERVER数据库。
单击下一步进入“连接”属性页,在“选择或输入数据库名称”文本框中,填入要连接的SQLSERVER服务器名,在“输入登录服务器的信息”区域选择登录的验证模式,最后选择要连接到的数据库。
(3)关闭“数据连接属性”对话框,需要的字符串便显示在“UseConnectionString”文本框中,如图17所示。
图17自动生成的连接字符串
(4)设置DataGrid控件的属性。
DataGrid控件用于显示数据,需将数据源属性(DataSource属性)的值设置为ADO控件的ID属性值IDC_ADODC1。
方法是:
右击DataGrid控件,选择“Properties”,在弹出的属性对话框中选择“All”选项卡,然后在该选项中将“DataSource”项的值设置为IDC_ADODC1,其中IDCADODC1为ADO控件的ID属性值。
此外,还将“Caption”属性设置为“查询结果”,如图18所示。
图18设置DataGrid控件的属性
(5)连接数据库。
主要是对ADO控件的相关属性进行设置。
可按以下几个步骤进行:
①在主对话框上右击ADO控件,在弹出的菜单中选择“Properties”命令,会弹出如前面图2.2所示的对话框,按照图2.3中讲过的方法设置好数据库的连接信息,包括服务器名,登录服务器的验证方式(根据自己的服务器设置),要访问的数据库(选择command)。
②选择“RecordSource”选项卡,在“CommandType”下拉列表框中选择“adCmdText”项,表示要通过在下面的“CommandText”文本框中输入语句“SELECT*FROMlog_in”来查询数据。
至此,DataGrid控件与ADO控件联系起来,为了让ADO控件在运行时不可见,可在“常规”选项卡,去掉“Visible”复选框中的勾。
至此,对用户界面制作的所有过程已经完成,运行程序,输入用户名和对应的密码,点击“登录”即可进入学生信息管理系统。
如图19所示。
图19成功登录系统
3.3.2学生个人信息输入模块
学生个人信息输入模块主要由student学生个人信息表构成,使用了1个datagrid、1个adodc,2个button,1个combo、7个edit和8个static共计20个控件。
采用文本形式输入数据,点击“插入”按钮,数据存入数据库中,显示在列表中,如图20所示。
图20学生个人信息输入模块的运行界面
3.3.3学籍变更情况输入模块
该模块连接数据表exchaange,由5个statict,2个combo,3个edit,2个button,1个datagrid和一个adodc共计14个控件构成,其正确运行结果如图21所示。
图21学籍变更情况输入模块运行界面
3.3.4奖历情况输入模块
该功能模块连接数据表reward,由5个static,2个combo,3个edit,2个button,1个datagrid和1个adodc共计14个控件构成,起成功运行结果如图22所示。
图22奖励情况输入模块运行界面
3.3.5处罚情况输入模块
该功能模块连接数据表punishment,由6个static,3个combo,3个edit,2个button,1个datagrid和1个adodc共计16个控件构成,其成功运行结果如图23所示。
图23处罚情况输入模块运行界面
3.3.6学生个人情况查询模块
该功能模块连接student,reward,punishment,exchaange四个数据表,由2个static,2个combo,1个edit,2个button,1个datagrid和1个adodc共计9个控件构成,以查询名字为高玮的学生信息为例,其成功运行结果如图24所示。
图24学生信息查询运行界面
3.3.7学生信息更新模块
更新数据是通过执行UPDATE语句来实现。
在VC中执行UPDATE语句也可以通过调用ADO对象的Open方法来实现。
该功能模块连接student数据表,由8个static,8个edit,2个button,1个datagrid和1个adodc共计20个控件构成。
下面进入学生基本信息更新模块的编辑。
(1)为每个控件创建关联变量。
(2)打开“MFCClassWizard”对话框,为DataGrid控件添加成员函数OnDblclickDatagrid()并在该函数中添加代码,结果如下:
voidCUpdata:
:
OnDblClickDatagrid1()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData(TRUE);
intColNum=2;
CStringcolVal;
CColumnscols;//要包含头文件"Columns.h"
CColumncol;//要包含头文件"Column.h"
VARIANTv_ColNum,v_Value;//根据列编号返回CColumn对象
cols=m_datagrid1.GetColumns();//调用GetColumns返回CDataGrid对应的CColumns对象
v_ColNum.vt=VT_I2;
//读取学号
v_ColNu