软件工程及应用第7章

上传人:san****019 文档编号:68251728 上传时间:2019-01-10 格式:PPT 页数:30 大小:361.81KB
返回 下载 相关 举报
软件工程及应用第7章_第1页
第1页 / 共30页
软件工程及应用第7章_第2页
第2页 / 共30页
软件工程及应用第7章_第3页
第3页 / 共30页
软件工程及应用第7章_第4页
第4页 / 共30页
软件工程及应用第7章_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《软件工程及应用第7章》由会员分享,可在线阅读,更多相关《软件工程及应用第7章(30页珍藏版)》请在金锄头文库上搜索。

1、第7章 图书馆管理系统实现,7.1 创建工程 7.2 数据库操作 7.3 模块实现,7.1 创建工程,1. 启动Visual C+ 6.0,选择“File/New”菜单,打开“New”对话框,如图7.1所示。,图7.1 新建工程,2. 在“New”对话框总选择“MFC AppWizard(exe)”选项,在“Location”中输入保存工程的路径“D:vc”,在“Project Name”中输入工程名称“Library”。AppWizard是一个自动化程序生成工具,它通过提示用户一系列对话框,来指定将要生成的应用程序的特性,然后自动生成相应的代码。 3. 点击“OK”进入下一个对话框,进入下一

2、个对话框“MFC AppWizard-Step 1”。在这个对话框中,可以指定生成框架的类型,包括Single Document(单文档),Multiple Document(多文档),Dialog Based(基于对话框)三种。还可以从下拉列表框中选择语言,指定程序资源文件使用的语言类型。本系统选择Single Document,此时AppWizard将生成一个单文档的应用程序框架,如图7.2所示。,7.1 创建工程,图7.2 选择单文档应用程序框架,7.1 创建工程,4. 在后面出现的对话框中,全部按默认设置进行,直 到出现“MFC AppWizard-Step 6 of 6”对话框,如下

3、图 7.3所示。,图7.3 完成创建,7.1 创建工程,5. 最后点击Finish按钮并确认,即完成了整个系统的框架创建。AppWizard为我们创建了基本的单文档应用程序框架代码以及相应的资源。,7.1 创建工程,7.2 数据库操作,ODBC 一个完整的ODBC由下列几个部件组成: 应用程序(Application)。 ODBC管理器(Administrator)。 驱动程序管理器 ODBC API。 ODBC 驱动程序。是一些DLL,提供了 ODBC和数据库之间的接口。 数据源。,各部件之间的关系如图下图7.4所示:,7.2 数据库操作,ADO ADO的具有如下几个特点: 由于封装了许多底

4、层工作,使用ADO与使用ODBC几乎是一样 方便。 ADO不仅具有ODBC的主要功能,而且ADO适用的数据源的范围 要大的多。 在定义ADO记录集变量和数据库表字段绑定类时,要求记录集 的字段变量、状态变量与数据库表字段的个数、顺序必须相同。 ADO允许同一Connection实例下有多个Recordset实例。 ADO允许进行批更新(使用的UpdateBatch方法),这样将大大 减轻网络负担,提高数据库处理效率。,7.2 数据库操作,ADO在Visual C+中使用的基本步骤 1. 使用import指令引入ADO2组件 2. 定义CADORecordBinding 的派生类,用于程序与数据

5、库表字段的交互,该类的定义可参见icrsint.h。 3. 调用CoInitialize初始化COM :CoInitialize(NULL); 4. 声明ADO的Connection对象指针和Recordset对象指针并初始化。 5. 定义CADORecordBinding派生类的实例及其Bind接口指针。 6. 产生Connection对象实例和Recordset对象实例。 7. 连接到数据库并打开Recordset对象,其中open函数的参数的使用方法可参见微软MSDN中ADO 相应对象参数的Basic描述。 8. 将CADORecordBinding派生类的实例联编到Recordset对

6、象的Bind接口。 9. 对Recordset对象实例进行操作。 10. 关闭Record set对象并释放Bind接口;关闭连接 pConnection1-Close();调用 CoUnitialize释放COM资源 :CoUninitialize();,7.2 数据库操作,数据库操作的封装 在VC工具下使用ADO的相关数据库操作非常复杂。为了在本系统中方便地使用ADO的功能,本文对ADO的相关方法重新封装,提供了一个操作数据库的统一接口。该接口已经在本系统中成功地得到应用,同时读者也可以应用在其他系统中。本接口主要用到了CADODatabase 和CADORecordset,CADODat

7、abase主要用来连接和关闭数据块,CADORecordset主要用来操作记录集。,7.2 数据库操作,7.3 模块实现,主模块 主模块即为系统的主应用程序框架,负责运行主界面、连接数据库以及接受来自用户的输入并启动其他模块。系统启动时的主界面如图7.6所示。,登陆模块 在登陆模块的具体实现中,我们采用对话框来实现管理员帐号和密码的验证。 创建登陆对话框;,7.3 模块实现, 生成对话框基本代码 在Visual C+ 6.0中我们可以用ClassWizard工具为对话框创建相关的对话框类,这些生成的对话框类都是继承CDialog类。登陆对话框生成的类CLoginDlg与CDialog的关系如下

8、: class CLoginDlg : public CDialog 生成的登陆对话框代码主要有两个文件组成:LoginDlg.h和LoginDlg.cpp文件。LoginDlg.h是CLoginDlg的类定义文件;LoginDlg.cpp是CLoginDlg的类实现文件。,7.3 模块实现, 添加验证函数 void CLoginDlg:OnConfirm() CString mSqlStr; UpdateData(TRUE); mSqlStr = “SELECT * FROM CLERK WHERE NAME=“; mSqlStr = mSqlStr + m_strName; mSqlStr

9、 = mSqlStr + “ AND PASSWORD=“; mSqlStr = mSqlStr + m_strPassword; mSqlStr = mSqlStr + “; CMainFrame *pWnd = (CMainFrame *)this-GetParent(); CADODatabase *pDB = pWnd-GetDatabase(); CADORecordset rst(pDB); if (!rst.Open(mSqlStr.GetBuffer(mSqlStr.GetLength() ,7.3 模块实现,AfxMessageBox(“CLERK表打开失败!“); retu

10、rn; if (!rst.IsEOF() / Open all function for user m_bSuccess = TRUE; CDialog:OnOK(); else AfxMessageBox(“登录失败!“); m_strUSERID = _T(“); return; ,7.3 模块实现, 在主框架中调用登陆模块 用ClassWizard工具为登陆菜单生成一个消息命令函数,具体代码如下: void CMainFrame:OnLoginIn() CLoginDlg mDlg; if (mDlg.DoModal() = IDOK) m_bLogin = TRUE; else m_b

11、Login = FALSE; ,7.3 模块实现,借书模块 在借书模块的具体实现中,我们采用对话框来实现读者的借书过程。 创建借书对话框,7.3 模块实现, 生成对话框基本代码 在Visual C+ 6.0中我们可以用ClassWizard工具为对话框创建相关的对话框类CLendOutDialog,生成的借书对话框代码主要有两个文件组成:LendOutDlg.h和LendOutDlg.cpp文件。,7.3 模块实现, 添加借书函数 void CLendOutDlg:OnConfirm() UpdateData(TRUE); CString strSql; / 确认读者是否以及借满 int nB

12、orrowed = 0; int maxBorrow = 10; / 从Reader表中获取可借数量 strSql = “SELECT * FROM Reader WHERE ReaderId=“ + m_strReaderID + “; pRst-Open(strSql.GetBuffer(strSql.GetLength(); if (!pRst-IsEOF() pRst-GetFieldValue(“MaxBorrow“, maxBorrow); ,7.3 模块实现,else MessageBox(“读者不存在!“); return; pRst-Close(); / 从Borrow表中获

13、取已借数量 strSql = “SELECT COUNT(*) FROM Borrow WHERE State = 0 AND ReaderId=“ + m_strReaderID + “; pRst-Open(strSql.GetBuffer(strSql.GetLength(); pRst-GetFieldValue(0, nBorrowed); pRst-Close();,7.3 模块实现,if (nBorrowed = maxBorrow) MessageBox(“读者可借书已满!“); return; strSql = “INSERT INTO Borrow(ReaderId, Bo

14、okId, State) VALUES (“ + m_strReaderID + “, “ + m_strBookID + “, 0)“; CMainFrame *pWnd = (CMainFrame *)this-GetParent(); CADODatabase *pDB = pWnd-GetDatabase(); if (!pDB-Execute(strSql) MessageBox(“借书失败!“); return; ,7.3 模块实现,else MessageBox(“借书成功!“); m_strBookID = _T(“); UpdateData(FALSE); ,7.3 模块实现

15、, 在主框架中调用借书模块 借书对话框完成之后,主框架中需要在菜单中能调用它。首先用ClassWizard工具为借书菜单生成一个消息命令函数 Void CMainFrame:OnLendOut() CLendOutDlg mDlg; mDlg.DoModal(); ,7.3 模块实现,还书模块 类似于借书模块,在还书模块的具体实现中,我们也采用对话框来实现读者的还书过程。 创建还书对话框,7.3 模块实现, 生成对话框基本代码 在Visual C+ 6.0中我们可以用ClassWizard工具为对话框创建相关的对话框类CRetrunBookDialog,生成的还书对话框代码主要有两个文件组成:

16、RetruenBookDlg.h和ReturnBookDlg.cpp文件。,7.3 模块实现, 添加还书函数 void CReturnBookDlg:OnConfirm() UpdateData(TRUE); CString strSql; strSql = “SELECT * FROM BORROW WHERE State = 0 AND BookId=“ + m_Book_ID + “; pRst-Open(strSql.GetBuffer(strSql.GetLength(); if (!pRst-IsEOF() pRst-GetFieldValue(“BookId“, m_Book_ID); pRst-GetFieldValue(“BorrowDate“,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号