VC学生成绩管理系统及源码.docx
《VC学生成绩管理系统及源码.docx》由会员分享,可在线阅读,更多相关《VC学生成绩管理系统及源码.docx(57页珍藏版)》请在冰豆网上搜索。
![VC学生成绩管理系统及源码.docx](https://file1.bdocx.com/fileroot1/2022-10/29/30915520-b12d-4de5-8619-40ca915d8fe4/30915520-b12d-4de5-8619-40ca915d8fe41.gif)
VC学生成绩管理系统及源码
VC学生成绩管理系统
1.VC操作数据库简介
本章节主要介绍VC中操作数据库的一般方法,有ADOData控件的连接、ADODB
对象的使用,当然在可视化的开发系统中用控件是的方法是比较简单的,但不是很灵活,相比较ADODB对象的方法比较灵活,但使用相对麻烦;这里读者会问,那这两个又是怎么去访问到数据库的呢?
其实他们是通过一些接口去访问不同数据库的,而这些接口会屏蔽掉数据库访问协议和各个数据库之间的差别,这里最常用的有两种接口,一种就是ODBC、还有一种是OLEDB,下面我们介绍他们的结构:
(a)数据库访问接口:
(1)ODBC:
ODBC其实是开放式数据库互连(OpenDatabaseConnectivity),是微软公司
推出的一种实现应用程序和关系数据库之间通讯的方法标准,是一个接口标准。
所
以它实际上是一种标准,符合标准的数据库就可以通过SQL语言编写的命令对数
据库进行操作,但只能针对关系数据库进行操作(如SQLServer,Oracle,Access,
Excel等),目前所有的关系数据库都符合该标准。
ODBC本质上是一组数据库访
问API(应用程序编程接口),由一组函数调用组成,核心是SQL语句,他的结构
图如下图1:
图1.1
在具体操作时,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提
供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体
数据库的联系。
这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立
起与相应数据库的连接。
(2)OLEDB:
OLEDB:
数据库链接和嵌入对象(ObjectLinkingandEmbedding
DataBase)。
OLEDB是微软提出的基于COM思想且面向对象的一种技术标准,
目的是提供一种统一的数据访问接口访问各种数据源,这里所说的"数据"除了标准
的关系型数据库中的数据之外,还包括邮件数据、Web上的文本或图形、目录服
务(DirectoryServices)、以及主机系统中的文件和地理数据以及自定义业务对
象等。
OLEDB标准的核心内容就是要求对以上这些各种各样的数据存储(Data
Store)都提供一种相同的访问接口,使得数据的使用者(应用程序)可以使用同样
的方法访问各种数据,而不用考虑数据的具体存储地点、格式或类型,他的结构
图如下图2:
图1.2
(b)VC中数据库访问对象:
(1)ADOData控件:
ADOData控件使用MicrosoftActiveX数据对象(ADO)来快速建立数据绑
定的控件和数据提供者之间的连接。
数据绑定控件是任何具有“数据源”属性的控
件。
数据提供者可以是任何符合OLEDB规范的数据源,这里可能是对ADO的一
个封装,他访问数据库的接口可以使用ODBC、也可以使用OLEDB,但OLEDB
灵活,不用在系统中配置数据源,而且效率高,所以现在使用OLEDB更多点,下
面程序中也是用OLEDB来介绍的,这里简单介绍一下ADODC控件的使用层次图。
ADODC在VC数据库程序设计中起了一个桥梁的作用,可以方便VC中的一些控
件直接和数据库关联,他的使用示意图如下:
图1.3
(2)ADODB对象
ADO是ActiveXDataObjects的缩写,是一项新的数据库的存取技术,他最主要包含三个对象,Connection、Recordset、Command,
Connection对象:
连接对象,负责通过OLEDB或ODBC建立与数据库之间的连接。
Recordset对象:
记录集对象,存放从数据库中得到的记录,这些可能是执行某条
SQL语句的结果。
Command对象:
执行SQL语句返回Recordset类型的结果。
基本的用法:
(1)连接数据源
(2)打开记录集对象
(3)使用记录集
(4)断开连接
具体的应用后面在学生成绩录入中会介绍到。
2.VC连接SQLServer数据库
a)用可视ADODC控件连接数据库,从ProjectAddToProjectComponentsAndControls,如图将ADO、DBGird组控件选择到工具栏。
(1)设置ADODC的ConnectionString属性。
图2.1
(2)打开ADO的属性页,选择Control下的生成连接字符串。
图2.2
图2.3图2.4
(3)设置ADODataControl的RecordSource属性。
图2.5
命令类型:
adCmdText:
值1,表示命令为SQL语句。
adCmdTable:
值2,表示命令为一表名。
adCmdStoredProc:
值4,表示命令是一存储过程名。
adCmdUnknown:
值8,表示不确定命令类型。
(4)此时数据源控件已连接好数据库,可以直接访问它,或者可以充当数据表格控件的数据源使用。
b)用Connection对象连接数和操作据库
(1)创建Connection对象
_ConnectionPtrpConnection=NULL;
pConnection.CreateInstance(__uuidof(Connection));
(2)使用Connection对象
HRESULThr;
_bstr_tstrCnn("Provider=SQLOLEDB;Server=microsof-cee903\\dcr;DataBase=XSCJ;UID=wmx;PWD=1234;");//“SQLOLEDB”—使用OLEDB,“microsof-cee903\\dcr”—SQL数据库服务器名,”XSCJ”—数据库名,后面是用户明和密码
hr=pConnection->Open(strCnn,"","",NULL);
(3)Command对象
用来执行SQL语句来操作数据库的对象,根据参数的不同可以执行存储过程
_CommandPtrpCmd=NULL;//定义command对象指针
_ParameterPtrpParam=NULL;
_RecordsetPtrpRs=NULL;
CStringSqlStr;
pCmd.CreateInstance(__uuidof(Command));
pCmd->ActiveConnection=pConnection;
//执行SQL语句
SqlStr.Format("Select*fromKC");
pCmd->CommandText=(_bstr_t)SqlStr;
pRs=pCmd->Execute(&vNULL,&vNULL,adCmdText);//返回记录集
//执行存储过程
SqlStr.Format("AddStuScore");
pCmd->CommandText=(_bstr_t)SqlStr;
pCmd->CommandType=adCmdStoredProc;
//为存储过程创建输入参数
pParam=pCmd->CreateParameter("@XH",adVarChar,adParamInput,16);
pParam->Value=_variant_t(“081101”);
pCmd->Parameters->Append(pParam);
//为存储过程创建输入参数
pParam=pCmd->CreateParameter("@KCM",adVarChar,adParamInput,16);
pParam->Value=_variant_t(“计算机基础”);
pCmd->Parameters->Append(pParam);
//为存储过程创建输入参数
pParam=pCmd->CreateParameter("@CJ",adInteger,adParamInput,4);
pParam->Value=_variant_t((long)80);
pCmd->Parameters->Append(pParam);
//为存储过程创建输入参数
pParam=pCmd->CreateParameter("@XF",adInteger,adParamInput,4);
pParam->Value=_variant_t((long)0);
pCmd->Parameters->Append(pParam);
//执行存储过程
pCmd->Execute(&vNULL,&vNULL,adCmdStoredProc);
//关闭连接
pConnection->Close();
(4)Recordset对象
用来操作表的更新删除等的对象
_RecordsetPtrpRs=NULL;
CStringSqlStr;
pRs.CreateInstance(__uuidof(Recordset));
SqlStr.Format("select*fromXSwhereXH='%s'",”081101”);
//打开记录集
pRs->Open(_variant_t(SqlStr),_variant_t((IDispatch*)pConnection,true),adOpenKeyset,adLockOptimistic,adCmdText);
if(!
pRs->adoEOF)
{
pRs->PutCollect("CSSJ",_variant_t((DATE)”1991-2-5”));
//更新记录集
pRs->Update();
}
pRs->Close();
pConnection->Close();
3.学生成绩管理系统
本演示系统是一个用VC实现的简单的学生成绩管理系统,使用用可视ADODC控件和ADODB对象来访问后台数据库服务器的,包含学生信息的查询、学生休息的录入修改删除、学生成绩的录入修改,下面就分别说明各模块的具体实现。
4.系统主界面
创建XSCJ多文档MFC工程,会生成框架,MainFrm、XSCJDoc、XSCJView等对象,这里演示的程序比较简单,所以代码主要加在XSCJView对象里,创建两个Dialog来实现学生信息修改和学生成绩修改。
主界面菜单和工具条框架如下:
图4.1
主要功能:
主界面,导航作用,点击可进入操作窗口。
创建过程:
(1)创建菜单:
图4.2
因为学生信息查询作为默认的界面,所以创建学生信息修改、学生成绩修改,打开VC的ClassWizad,添加菜单处理事件,这里选择映射到View对象里面。
图4.3
(2)创建工具条:
图4.4
创建工具条,打开VC的ClassWizad,添加菜单处理事件,这里选择映射到View对象里面。
图4.5
主要菜单代码:
菜单Click的处理过程在CXSCJView对象里面,对应与CXSCJView.cpp文件
学生信息修改菜单
voidCXSCJView:
:
OnMenuitem32771()
{
//TODO:
Addyou