c++课程设计2.docx

上传人:b****6 文档编号:7416302 上传时间:2023-01-23 格式:DOCX 页数:16 大小:185.25KB
下载 相关 举报
c++课程设计2.docx_第1页
第1页 / 共16页
c++课程设计2.docx_第2页
第2页 / 共16页
c++课程设计2.docx_第3页
第3页 / 共16页
c++课程设计2.docx_第4页
第4页 / 共16页
c++课程设计2.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

c++课程设计2.docx

《c++课程设计2.docx》由会员分享,可在线阅读,更多相关《c++课程设计2.docx(16页珍藏版)》请在冰豆网上搜索。

c++课程设计2.docx

c++课程设计2

VisualC++面向对象程序设计

课程设计

 

题目:

图书查询系统

 

院系:

数理学院

 

专业班级:

12信息与计算科学一班

 

学号姓名:

12207010137王建春

12207010109姜阿华

12207010116张安柱

2015年1月4号

 

一、功能:

通过该系统可以对书库中的图书进行查询,查询结果显示的主要内容包括:

书号、书名、作者、出版社、图书的借阅状态(是否可借)。

二、设计

1.数据库设计:

采用本地数据库,数据库形式可自行选择,数据库中包括一个数据表,数据表中包含以下字段:

书号、书名、作者、出版社、借阅状态。

其中书号为关键字段。

数据库和数据表的名称自定。

2.用户界面设计:

建立四个用户界面:

系统登录界面、查询条件选择界面、查询条件录入界面、查询结果显示界面。

(1)系统登录界面

一个引导界面,确定是否进入系统或退出系统。

(2)查询条件选择界面

选择进行查询的条件,如选择书名,则表示按书名进行查询。

(3)查询条件录入界面

输入所要的查询内容,系统即可根据该条件查询所有满足该条件的图书。

(4)查询结果显示界面

显示所有满足查询条件的图书。

三、要求:

1.查询时可实现模糊查询,查询结果以表格的形式显现给用户。

如果没有满足条件的图书,则应给出提示,提示可使用消息框的形式。

2.模糊查询:

只要输入查询条件的部分内容,即可查询所有包含该条件的图书。

VC中界面的操作与管理

1.启动VC6.0

 

使用基于对话框的开发模式,出现下面的对话框:

2.先删除无用的出事空间,然后再空间工具栏中选择相应的空间添加到对话框的面板上,并对这些按钮、编辑栏等进行布局。

3,设计界面,添加类向导,在每个类中添加OnInitDialog()函数

设置登陆的类位CPengDlg

在主程序中peng.cpp判断登录条件代码如下:

BOOLCPengApp:

:

InitInstance()

{

AfxEnableControlContainer();

ADOConnm_adoconn;

CPengDlgdlg;

//inti=0;

if(dlg.DoModal()==IDOK)

{

CStringsqlstr;

try

{

sqlstr.Format("select*fromMANAGERwhereMPASSWORD='%s'andMID='%s'",dlg.m_password,dlg.m_id);

_RecordsetPtrm_pRs;

m_pRs=m_adoconn.GetRecordSet((_bstr_t)sqlstr);//执行查询

CStringstr1,str2;

str1=(LPCTSTR)(_bstr_t)(m_pRs->GetCollect("MPASSWORD"));

str2=(LPCTSTR)(_bstr_t)(m_pRs->GetCollect("MID"));

str1.TrimRight();//去掉空字符

str2.TrimRight();

if(str2==dlg.m_id||str1==dlg.m_password)

{

//AfxMessageBox("登陆成功");

CSUCCESSDlgdlg;

dlg.m_id=str2;

dlg.m_name=(LPCTSTR)(_bstr_t)(m_pRs->GetCollect("MNAME"));

dlg.DoModal();

}

else

{

AfxMessageBox("登陆失败");

returnfalse;

}

}

catch(...)//异常处理

{

AfxMessageBox("ID或密码输入错误!

");

returnfalse;

}

}

returntrue;

}

如果上述验证成功转到登录成功界面如下:

显示相关信息,然后点击确定登录到主界面:

点击相关按钮可以跳转到不同的界面

一.点击查询显示页面如下(类名为CLOOKDlg):

 

实现查询功能代码如下:

voidCLOOKDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CLOOKDlg)

DDX_Control(pDX,IDC_LIST1,m_resultlist1);

DDX_Text(pDX,IDC_CONDITION,m_condition);

DDX_CBString(pDX,IDC_COMBO1,m_combo);

//}}AFX_DATA_MAP

}

 

BEGIN_MESSAGE_MAP(CLOOKDlg,CDialog)

//{{AFX_MSG_MAP(CLOOKDlg)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//CLOOKDlgmessagehandlers

BOOLCLOOKDlg:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

inti=0;

m_resultlist1.ModifyStyle(0,LVS_REPORT);

m_resultlist1.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_GRIDLINES);

m_resultlist1.InsertColumn(0,"书号",0,100);

m_resultlist1.InsertColumn(1,"书名",0,100);

m_resultlist1.InsertColumn(2,"作者",0,100);

m_resultlist1.InsertColumn(3,"出版社",0,100);

m_resultlist1.InsertColumn(4,"借阅状态",0,100);

 

CComboBox*pComb=(CComboBox*)GetDlgItem(IDC_COMBO1);

pComb->AddString("书号");

pComb->AddString("书名");

pComb->AddString("作者");

pComb->AddString("出版社");

pComb->AddString("借阅状态");

pComb->SetCurSel(0);

ADOConnado;

_RecordsetPtrm_recordset;

CStringsql="select*frombook";

m_recordset=ado.GetRecordSet((_bstr_t)sql);

ado.OnInitADOConn();

while(!

m_recordset->adoEOF)

{

CStringc1=(LPCTSTR)(_bstr_t)m_recordset->GetCollect("BNO");

CStringc2=(LPCTSTR)(_bstr_t)m_recordset->GetCollect("BNAME");

CStringc3=(LPCTSTR)(_bstr_t)m_recordset->GetCollect("WRITER");

CStringc4=(LPCTSTR)(_bstr_t)m_recordset->GetCollect("PUBLISH");

CStringc5=(LPCTSTR)(_bstr_t)m_recordset->GetCollect("REGISTER");

m_resultlist1.InsertItem(i,"");

m_resultlist1.SetItemText(i,0,c1);

m_resultlist1.SetItemText(i,1,c2);

m_resultlist1.SetItemText(i,2,c3);

m_resultlist1.SetItemText(i,3,c4);

m_resultlist1.SetItemText(i,4,c5);

m_recordset->MoveNext();

}

returntrue;

}

 

voidCLOOKDlg:

:

OnOK()

{

//TODO:

Addextravalidationhere

//CDialog:

:

OnOK();

UpdateData(TRUE);

m_resultlist1.DeleteAllItems();

CStringtemp;

CStringsqlstr;

ADOConnado;

CComboBox*pComb=(CComboBox*)GetDlgItem(IDC_COMBO1);

intn=pComb->GetCurSel();

switch(n)

{

case0:

temp="BNO";

break;

case1:

temp="BNAME";

break;

case2:

temp="WRITER";

break;

case3:

temp="PUBLISH";

break;

case4:

temp="REGISTER";

break;

}

//if(m_condition=="")

//{

//MessageBox("请输入查询条件!

");

//return;

//}

sqlstr.Format("select*frombookwhere%slike'%%%s%%'",temp,m_condition);

ado.OnInitADOConn();

intk=0;

inti=0;

intcount=0;

_RecordsetPtrm_recordset;

m_recordset=ado.GetRecordSet((_bstr_t)sqlstr);

while(!

m_recordset->adoEOF)

{

count++;

CStringw1=(LPCTSTR)(_bstr_t)m_recordset->GetCollect("BNO");

CStringw2=(LPCTSTR)(_bstr_t)m_recordset->GetCollect("BNAME");

CStringw3=(LPCTSTR)(_bstr_t)m_recordset->GetCollect("WRITER");

CStringw4=(LPCTSTR)(_bstr_t)m_recordset->GetCollect("PUBLISH");

CStringw5=(LPCTSTR)(_bstr_t)m_recordset->GetCollect("REGISTER");

m_resultlist1.InsertItem(i,"");

m_resultlist1.SetItemText(i,0,w1);

m_resultlist1.SetItemText(i,1,w2);

m_resultlist1.SetItemText(i,2,w3);

m_resultlist1.SetItemText(i,3,w4);

m_resultlist1.SetItemText(i,4,w5);

UpdateData(FALSE);

m_recordset->MoveNext();

k++;

}

if(count>0)

{

CStringstr;

str.Format("找到%d条记录!

",count);

MessageBox(str);

}

else

{

MessageBox("没有找到相关记录!

");

}

}数据库的管理与操作

1,表格的建立如下:

管理者的表格,

书本的表格:

3.创建代码与数据库的连接:

先导入ado的包,导入代码如下:

#import"c:

\ProgramFiles\CommonFiles\System\ado\msado15.dll"no_namespacerename("EOF","adoEOF")rename("BOF","adoBOF")

建立一个可以操控数据库的类(ADOConn):

其代码如下:

头文件中,定义各个函数的声明:

//ADOConn.h:

interfacefortheADOConnclass.

//

//////////////////////////////////////////////////////////////////////

#if!

defined(AFX_ADOCONN_H__C678E5FE_9EB5_41BE_9D9D_F2C100A3E559__INCLUDED_)

#defineAFX_ADOCONN_H__C678E5FE_9EB5_41BE_9D9D_F2C100A3E559__INCLUDED_

#import"c:

\ProgramFiles\CommonFiles\System\ado\msado15.dll"no_namespacerename("EOF","adoEOF")rename("BOF","adoBOF")

#if_MSC_VER>1000

#pragmaonce

#endif//_MSC_VER>1000

classADOConn

{

//定义变量

public:

//添加一个指向Connection对象的指针:

_ConnectionPtrm_pConnection;

//添加一个指向Recordset对象的指针:

_RecordsetPtrm_pRecordset;

//定义方法

public:

ADOConn();

virtual~ADOConn();

//初始化—连接数据库

voidOnInitADOConn();

//执行查询

_RecordsetPtr&GetRecordSet(_bstr_tbstrSQL);

//执行SQL语句,InsertUpdate_variant_t

BOOLExecuteSQL(_bstr_tbstrSQL)

voidExitConnect();

};

 

#endif//!

defined(AFX_ADOCONN_H__C678E5FE_9EB5_41BE_9D9D_F2C100A3E559__INCLUDED_)

在其实现方法中(ADOConn.cpp)中实现上述功能代码如下:

//ADOConn.cpp:

implementationoftheADOConnclass.

//

//////////////////////////////////////////////////////////////////////

#include"stdafx.h"

#include"peng.h"

#include"ADOConn.h"

#ifdef_DEBUG

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#definenewDEBUG_NEW

#endif

//////////////////////////////////////////////////////////////////////

//Construction/Destruction

//////////////////////////////////////////////////////////////////////

ADOConn:

:

ADOConn()

{

}

ADOConn:

:

~ADOConn()

{

}

//初始化—连接数据库

voidADOConn:

:

OnInitADOConn()

{

//初始化OLE/COM库环境

:

:

CoInitialize(NULL);

try

{

//创建Connection对象

m_pConnection.CreateInstance("ADODB.Connection");

//设置连接字符串,必须是BSTR型或者_bstr_t类型

_bstr_tstrConnect="Provider=SQLOLEDB;Server=.;Database=library;uid=ypf;pwd=123;";

//m_pConnection->Open(Provider=SQLOLEDB;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=suntest;DataSource=.;UserId=ypf;Password=123;);

m_pConnection->Open(strConnect,"","",adModeUnknown);

}

//捕捉异常

catch(_com_errore)

{

//显示错误信息

AfxMessageBox(e.Description());

}

}

//执行查询

_RecordsetPtr&ADOConn:

:

GetRecordSet(_bstr_tbstrSQL)

{

try

{

//连接数据库,如果Connection对象为空,则重新连接数据库

if(m_pConnection==NULL)

OnInitADOConn();

//创建记录集对象

m_pRecordset.CreateInstance(__uuidof(Recordset));

//取得表中的记录

m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

}

//捕捉异常

catch(_com_errore)

{

//显示错误信息

AfxMessageBox(e.Description());

}

//返回记录集

returnm_pRecordset;

}

//执行SQL语句,InsertUpdate_variant_t

BOOLADOConn:

:

ExecuteSQL(_bstr_tbstrSQL)

{

//_variant_tRecordsAffected;

try

{

//是否已经连接数据库

if(m_pConnection==NULL)

OnInitADOConn();

//Connection对象的Execute方法:

(_bstr_tCommandText,

//VARIANT*RecordsAffected,longOptions)

//其中CommandText是命令字串,通常是SQL命令。

//参数RecordsAffected是操作完成后所影响的行数,

//参数Options表示CommandText的类型:

adCmdText-文本命令;adCmdTable-表名

//adCmdProc-存储过程;adCmdUnknown-未知

m_pConnection->Execute(bstrSQL,NULL,adCmdText);

returntrue;

}

catch(_com_errore)

{

AfxMessageBox(e.Description());

returnfalse;

}

}

voidADOConn:

:

ExitConnect()

{

//关闭记录集和连接

if(m_pRecordset!

=NULL)

m_pRecordset->Close();

m_pConnection->Close();

//释放环境

:

:

CoUninitialize();

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1