VC学生成绩管理系统及源码Word文档下载推荐.doc
《VC学生成绩管理系统及源码Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《VC学生成绩管理系统及源码Word文档下载推荐.doc(43页珍藏版)》请在冰点文库上搜索。
![VC学生成绩管理系统及源码Word文档下载推荐.doc](https://file1.bingdoc.com/fileroot1/2023-5/8/1ad79862-c531-45cf-b13e-01dc34276037/1ad79862-c531-45cf-b13e-01dc342760371.gif)
图如下图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控件连接数据库,从Projectà
AddToProjectà
ComponentsAndControls,如图将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"
CommandText=(_bstr_t)SqlStr;
pRs=pCmd->
Execute(&
vNULL,&
vNULL,adCmdText);
//返回记录集
//执行存储过程
SqlStr.Format("
AddStuScore"
pCmd->
CommandType=adCmdStoredProc;
//为存储过程创建输入参数
pParam=pCmd->
CreateParameter("
@XH"
adVarChar,adParamInput,16);
pParam->
Value=_variant_t(“081101”);
Parameters->
Append(pParam);
@KCM"
Value=_variant_t(“计算机基础”);
@CJ"
adInteger,adParamInput,4);
Value=_variant_t((long)80);
@XF"
Value=_variant_t((long)0);
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”));
//更新记录集
Update();
}
pConnection->
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:
Addyourcommandhandlercodehere
CStuInfoModifymyStuInfoWin;
myStuInfoWin.DoModal();
}
学生成绩录入菜单
OnMenuitem32772()
CStuAddScoremyStuAddScoreWin;
myStuAddScoreWin.DoModal();
工具条Click的处理,分别对应调用菜单中的处理过程
学生信息修改工具条Click的处理
OnButton32773()
成绩录入工具条Click的处理
OnButton32774()
5.学生信息查询
目的与要求:
了解使用控件显示用SQL语句查询到的数据库中的数据,同时了解模糊查询的基本方法。
程序界面:
DataGrid控件
ADODC控件
学生选课表
图5.1
主要功能:
实现简单查询的需要,输入条件进行模糊查询,各条件之间为与的关系,在查询的结果中移动记录指针可以查看这个学生的具体选课信息
(1)在View的主窗体IDD_XSCJ_FORM上放入两个学生信息查询的ADODC和学生选课信息的ADODC、创建两个学生信息显示的DataGrid和学生选课信息显示的DataGrid,并分别起名为IDC_STUVIEWADODC,IDC_StuKCADO,IDC_STUVIEWDATAGRID,IDC_DGKC。
放入IDC_StuXH学号Edit、IDC_StuXM姓名Edit和IDC_StuZYCB专业下拉列表框,为了美观IDC_StuKCADO隐藏在IDC_DGKC后面,增加IDC_StuZYCB专业下拉列表项,如图5.2。
图5.2
(2)设置IDC_STUVIEWADODC,IDC_StuKCADO的ConnectionString属性为
Provider=SQLOLEDB.1;
IntegratedSecurity=SSPI;
PersistSecurityInfo=False;
UserID=sa;
InitialCatalog=XSCJ;
DataSource=microsof-cee903\dcr
(3)设置IDC_STUVIEWADODC的RecordSource属性为
select*fromXS,CXBwhereXS.XB=CXB.XB
(4)设置IDC_STUVIEWDATAGRID的DataSource属性为IDC_STUVIEWADODC。
(5)设置IDC_StuKCADO的ConnectionString属性为
(6)设置IDC_StuKCADO的RecordSource属性为
select*fromXS,KC,XS_KC
whereXS.XH=XS_KC.XHandKC.KCH=XS_KC.KCH
(7)设置IDC_DGKC的DataSource属性为IDC_StuKCADO。
(8)使用ClassWizad对这些控件设定变量的绑定,选顶绑定的类型,Edit只要输入输出,所以简单的CString类型就可以满足,ADO则要选择CAdodc的变量类型,这样才能访问其属性和调用函数,如图5.3、5.4。
图5.3
图5.4
完成的开发窗体如图:
图5.5
实现过程:
直接打开时由于控件属性的设置,所以显示所有记录,当输入查询条件时点击查询按钮则调用MakeSqlStr函数产生查询字符串,然后重新设置控件的属性,打开控件显示查询结果集。
当查询结果学生信息记录集中移动记录指针时,可以在下面的选课表中看到学生选课的信息。
主要代码:
CXSCJView对象的构造函数,为了避免在未初始化完成就做一些操作,所以定义m_AdoInitFlag为初始化完成标记,标记有效才能做进一步操作。
classCXSCJView:
publicCOleDBRecordView
…………………………
public:
intm_AdoInitFlag;
//添加成员变量
…………………………
CXSCJView类的构造函数,初始化成员对象
CXSCJView:
CXSCJView()
:
COleDBRecordView(CXSCJView:
IDD)
//{{AFX_DATA_INIT(CXSCJView)
m_pSet=NULL;
m_StuXH=_T("
m_StuXM=_T("
m_AdoInitFlag=0;
//初始化成0
//}}AFX_DATA_INIT
addconstructioncodehere
CXSCJView初始化函数,这里初始化IDC_STUVIEWDATAGRID的显示格式,添加表格头以及和数据库字段的绑定关系。
OnInitialUpdate()
m_pSet=&
GetDocument()->
m_xSCJSet;
COleDBRecordView:
OnInitialUpdate();
CColumnscols;
CColumncol;
VARIANTvIndex;
Addextrainitializationhere
//增加表格列
cols=m_ViewDBGrid.GetColumns();
cols.Add
(2);
cols.Add(3);
cols.Add(4);
cols.Add(5);
cols.Add(6);
vIndex.vt=VT_UINT;
//分别设定每列的属性,包括表头、绑定的数据库字段
vIndex.uintVal=long(0);
col=cols.GetItem(vIndex);
col.SetDataField("
XH"
col.SetCaption("
学号"
vIndex.uintVal=long
(1);
XM"
姓名"
vIndex.uintVal=long
(2);
XBM"
性别"
vIndex.uintVal=long(3);
出生日期"
vIndex.uintVal=long(4);
ZY"
专业"
vIndex.uintVal=long(5);
ZXF"
总学分"
vIndex.uintVal=long(6);
BZ"
备注"
//初始化标记设置
m_AdoInitFlag=1;
m_ViewDBGrid.ReBind();
m_ViewDBGrid.Refresh();
m_StuViewAdodc.GetRecordset().MoveFirst();
根据输入产生查询SQL语句的函数,以学号、姓名的输入信息和专业的选择生成模糊查询的SQL字符串
CStringCXSCJView:
MakeSqlStr(void)
CStringSqlStr;
CStringTempStr;
UpdateData(TRUE);
if(!
m_StuXH.IsEmpty())
{
SqlStr+="
andXHlike'
%"
;
SqlStr+=m_StuXH;
%'
"
}
m_StuXM.IsEmpty())
//strcat(SqlStr,"
andXHlike"
andXMlike'
SqlStr+=m_StuXM;
//取选择的专业
intindex=m_StuZYCB.GetCurSel();
m_StuZYCB.GetLBText(index,TempStr);
TempStr.TrimRight();
TempStr.IsEmpty())
andZY='
SqlStr+=TempStr;
'
returnSqlStr;
“查询”Click事件处理,用生成的模糊查询的SQL字符串,来刷新IDC_STUVIEWADODC,并显示到关联的DataGrid中,在DataGrid显示查询到的结果
OnSearchb()
//TODO:
Addyourcontrolnotificationhandlercodehere
SqlStr="
select*fromXS,CXBwhereXS.XB=CXB.XB"
+MakeSqlStr();
m_StuViewAdodc.SetRecordSource(SqlStr);
m_StuViewAdodc.Refresh();
IDC_STUVIEWADODC控件有记录Move的消息的时候,以当前学生信息的学号作为查询条件,从XS_KC表中查找当前学生的选课记录,并显示到学生课程显示的IDC_DGKC中
OnMoveCompleteStuviewadodc(l