VC版学生成绩管理系统
一. 功能需求:
1. 能进行对数据库的连接(后台):
这是查询管理信息的基础。
2. 能进行增、删、改、查等基本功能:
这是学生成绩管理系统最基本的功能,可以在这个基础上进行扩展其他功能。
二. 总体设计:
1. 对数据库的连接(后台):
这是所有功能的基础,此项的实现可在后台进行。
我使用的是ADO方式连接数据库。(应避免让用户手动连接数据库)
这项功能写在一个类中最好。
2. 对窗体控件及相应的函数设计:
A.控件的添加:
(1).要进进行增、删、改、查,必须要添加相应的按钮。
在对话框的的特定区域添加相应的按钮,而且,对于增、删、改等操作只能由管理员进行,其他用户无权操作;对于查询,则可有按学号或按姓名等多种查询方式。
(2).要能显示查询结果,必须有显示控件(我使用List Contral控件)。
(3).要能有菜单就更好了。
B.相应控件响应函数的添加:
为每个相应的控件添加响应函数。
三. 详细设计:
1. 对数据库的连接(后台):
(1).引入ADO类库:
A.添加一个ADO连接类。
B.添加动态链接库:
在ADOConn.h的头文件中加入以下语句:
(2).封装ADO数据库对象:
A.在ADOConn.h头文件中添加成员变量:
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
(3).添加函数:
A.添加初始化OLE/COM库环境函数(OnInitADOConn())。
B.添加断开数据库连接函数(ExitConnect())。
C.添加打开获得记录集函数(GetRecordSet())。
D. 添加执行SQL语句的ExecuteSQL()函数。
相关代码如下:
voidADOConn::OnInitADOConn()
{
::CoInitialize(NULL); //初始化OLE/COM环境
m_pConnection.CreateInstance(__uuidof(Connection)); //创建connection对象
// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些意想不到的错误。
try
{
// 打开本地Access库student.mdb
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=student.mdb","","",adModeUnknown);
}
//捕获异常
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
}
void ADOConn::ExitConnect()
{
//关闭记录集和连接
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
//释放环境
::CoUninitialize();
}
_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
//连接数据库,如果conection对象为空,则重新连接数据库
if(m_pConnection==NULL)
OnInitADOConn();
//创建记录集对象
m_pRecordset.CreateInstance(__uuidof(Recordset));
//取得表中的记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
e.Description();
}
//返回记录集
return m_pRecordset;
}
BOOL ADOConn::ExecuteSQL(_bstr_t _bstrSQL)
{
_variant_tRecordsAffected;
try
{
//是否已连接数据库
if(m_pConnection==NULL)
OnInitADOConn();
m_pConnection->Execute(_bstrSQL,NULL,adCmdText);