ImageVerifierCode 换一换
格式:DOCX , 页数:55 ,大小:582.59KB ,
资源ID:8806018      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8806018.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(vc++管理系统实例.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

vc++管理系统实例.docx

1、vc+管理系统实例实例实现效果ODBCDemo2是本书用于阐述MFC ODBC数据库编程的实例应用程序,该应用程序实现了对某销售公司日常销售业务的信息浏览和报表操作。应用程序运行界面如图6-1所示。图6-1 ODBCDemo2实例应用程序的运行界面6.3.2 实例实现过程数据库设计我们利用Microsoft Access工具设计本实例的数据库结构。在本实例里,我们需要利用数据库存放销售公司的如下信息: 日常销售信息:指公司日常销售帐单中的客户信息、雇员信息、订购日期、货主信息、运货商信息。 产品信息:指公司现经营产品的产品名称、供应商信息、类别信息、单价以及库存量等信息。 客户信息:指公司客户

2、的客户名称、联系人信息和客户的地址信息。 雇员信息:指公司雇员的雇员姓名、头衔、尊称、出生日期、雇佣日期、联系信息及其上级等信息。 供应商信息:指与公司合作的供应商的名称、地址、联系人等信息。 运货商信息:指与公司合作的运货商的名称、电话信息。 产品类别信息:指公司所经营产品的类别。我们为数据库设计了八个表,表“订单”和表“订单明细”存放公司日常销售信息,表“产品”存放公司的产品信息,表“客户”存放公司的客户信息,表“雇员”存放公司的雇员信息,表“供应商”存放公司的产品供应商信息,表“运货商”存放公司的运货商信息,表“类别”存放公司经营产品的类别信息。为了便于数据访问,我们还定义了三个视图,“

3、SalesByCustomer”视图管理着以客户为统计方式的销售信息,“SalesByEmployee”视图管理着以雇员为统计方式的销售信息,“SalesByProduct”视图管理着以产品为统计方式的销售信息。下面的表6-1列出了表“订单”的结构,表6-2列出了表“订单明细”的结构,表6-3列出了表“产品”的结构,表6-4列出了表“客户”的结构,表6-5列出了表“雇员”的结构,表6-6列出了表“供应商”的结构,表6-7列出了表“运货商”的结构,表6-8列出了表“类别”的结构。表6-1 表“订单”的结构字段名称类型字段名称类型订单ID(key)自动编号运货费货币客户ID文本货主名称文本雇员ID

4、数字货主地址文本订购日期日期/时间货主城市文本到货日期日期/时间货主地区文本发货日期日期/时间货主邮政编码文本运货商数字货主国家文本表6-2 表“订单明细”的结构字段名称类型字段名称类型订单ID自动编号数量数字产品ID数字折扣数字单价货币表6-3 表“产品”的结构字段名称类型字段名称类型产品ID(key)自动编号单价货币产品名称文本库存量数字供应商ID数字订购量数字类别ID数字再订购量数字单位数量文本中止是/否表6-4 表“客户”的结构字段名称类型字段名称类型客户ID(key)自动编号地区文本公司名称文本邮政编码文本联系人姓名文本国家文本联系人头衔文本电话文本地址文本传真文本城市文本表6-5

5、表“雇员”的结构字段名称类型字段名称类型名字ID自动编号国家文本头衔文本邮政编码文本尊称文本家庭电话文本出生日期日期/时间分机文本雇用日期日期/时间照片OLE对象地址文本备注备注城市文本上级文本地区文本表6-6 表“供应商”的结构字段名称类型字段名称类型供应商ID(key)自动编号地区文本公司名称文本邮政编码文本联系人姓名文本国家文本联系人头衔文本电话文本地址文本传真文本城市文本主页超级链接表6-7 表“运货商”的结构字段名称类型字段名称类型运货商ID(key)自动编号电话货币类型公司名称文本表6-8 表“类别”的结构字段名称类型字段名称类型类别ID自动编号说明备注类别名称文本图片OLE对象在

6、实例光盘的Database目录下,stocks.mdb文件是存放公司销售信息的Access数据库文件,读者可以查看这个文件,了解详细信息。创建ODBCDemo2工程ODBCDemo2工程是一个基于单文档的应用程序,创建应用程序工程时需要选择基于单文档的应用程序类型。操作步骤:(1) 打开VC+的工程创建向导。从VC+的菜单中执行“FileNew”命令,将VC+ 6.0工程创建向导显示出来。如果当前的选项标签不是Project,单击Project选项标签将它选中。在左边的列表里选择MFC AppWizard(exe)项,在Project Name编辑区里输入工程名称“ODBCDemo2”,并在L

7、ocation编辑区里调整工程路径,如图6-2所示。图6-2 工程创建向导(2) 选择应用程序的框架类型。单击“工程创建向导”窗口的OK按钮,进入“MFC AppWizard Step 1”对话框。首先选择应用程序的框架类型。如图6-3所示。在本工程里,选择“Single document”,保持资源的语言类型为“中文”,单击“Next ”按钮。图6-3 选择应用程序的框架类型(3) 进入“MFC AppWizard Step 2 of 6”对话框,设置应用程序数据库特性。在对话框里选择None,如图6-4所示。(4) 设置应用程序对复杂文档的支持。在“MFC AppWizard Step 2

8、 of 6”对话框里,单击“Next ”按钮,进入“MFC AppWizard Step 3 of 6”对话框。在对话框里选择如下两项: None ActiveX Controls图6-4 设置应用程序数据库特性如图6-5所示,单击“Next ”按钮。图6-5 设置应用程序对复杂文档的支持(5) 进入“MFC AppWizard Step 4 of 6”对话框,设置应用程序的特征信息。如图6-6所示对话框是工程的特征信息,在本例中,ODBCDemo2工程有如下特征: Docking toolbar Initial statusbar Printing and print preview 3D

9、controls Normal(6) 在“MFC AppWizard Step 4 of 6”对话框里单击“Next ”按钮,进入“MFC AppWizard Step 5 of 6”对话框,选择工程风格和MFC类库的加载方式。在对话框里设置如下三项: MFC Standard Yes, Please As shared DLL如图6-7所示,单击“Next ”按钮,进入“MFC AppWizard Step 6 of 6” 对话框。图6-7 设置应用程序特征信息图6-8 选择工程风格和MFC类库的加载方式(7) “MFC AppWizard Step 6 of 6” 对话框显示工程创建中的类

10、信息。ODBCDemo2工程包含了四个类: CODBCDemo2View类,工程视图类 CODBCDemo2App类,工程的应用类 CMainFrame类,工程主框架类 CODBCDemo2Doc类,工程文档类这四个类构成了应用程序工程的主要框架。我们为CODBCDemo2View类选择ClistView基类,如图6-9所示。图6-9 显示工程创建中的类信息(8) 在对话框“MFC AppWizard Step 6 of 6”里单击Finish按钮,完成工程创建。工程创建向导将该次工程创建的信息显示在一个“New Project Information”对话框里,如图6-10所示。在对话框里单

11、击“OK”按钮,ODBCDemo2工程创建完成。图6-10 工程创建信息建立数据源建立数据源的方法在6.3.2节里已经进行了介绍,这里只说明本实例在建立数据源时的不同之处。本实例用到的数据源名称是“ODBCDemo2”,其描述为“Data source for ODBC MFC programming”,创建数据源时在“配置创建的新数据源”步骤里需要同ODBCDemo1数据源有所区别。另外,数据源所支持的数据库为stocks.mdb文件,我们已经在6.3.2节里完成了它的设计。设计应用程序界面在6.3.2节里,我们利用工程创建向导创建了一个基于单文档界面的工程,本节应用程序界面的设计工作主要是

12、菜单和按钮的添加。为了为报表设置报表的内容和格式,我们还需要为应用程序设计一个报表向导,这个向导由三个步骤组成,因此我们需要设计三个对话框以实现这三个步骤的界面。1. 设计应用程序的主菜单需要为应用程序设计的菜单包括:销售报告菜单、产品信息菜单、客户信息菜单、雇员信息菜单、供应商信息菜单、运货商信息菜单、类别菜单以及报表操作菜单。这些菜单的标识、标题以及提示信息如表6-9所示。表6-9 工程的菜单资源标识标题提示信息文件ID_OPTION选项应用程序设置选项ID_APP_EXIT退出退出应用程序;提示保存文档n退出销售报告ID_SALE_PRODUCT按产品按照产品显示销售报告。n产品销售报告

13、ID_SALE_CUSTOMER按客户按照客户显示销售报告。n客户销售报告ID_SALE_EMPLOYEE按雇员按照雇员显示销售报告。n雇员销售报告产品ID_VIEW_PRODUCT产品信息显示产品信息客户ID_VIEW_CUSTOMER客户信息显示客户信息雇员ID_EXPLOYEE雇员信息显示雇员信息运货商ID_VIEW_TRANSPORTOR运货商信息显示运货商信息供应商ID_VIEW_PROVIDER供应商信息显示供应商信息报表ID_REPORT_SETUP设置设置报表标题、字段内容、注脚等内容的字体。n报表设置ID_FILE_PRINT_PREVIEW打印预览显示整页n打印预览ID_F

14、ILE_PRINT_SETUP打印设置改变打印机及打印选项n打印设置ID_FILE_PRINT打印打印活动文档n打印2. 设计应用程序的按钮需要为应用程序设计的按钮主要是销售报告的三种显示方式。这三个按钮的标识、图标以及提示信息如表6-10所示。表6-10 工程的按钮资源标识图标提示信息ID_SALE_PRODUCT按照产品显示销售报告。n产品销售报告ID_SALE_EMPLOYEE按照雇员显示销售报告。n雇员销售报告ID_SALE_CUSTOMER按照客户显示销售报告。n客户销售报告3. 设计应用程序的报表向导需要设计三个对话框:IDD_WZDFIELD,IDD_WZDFORMAT和IDD_

15、WZDPREVIEW。这三个对话框分别代表了报表向导的三个步骤:报表字段选择、格式设置以及设置信息浏览三个步骤。(1) 设计IDD_WZDFIELD对话框。使用VC+的“InsertResource”菜单命令可以将Dialog(对话框)资源加入到工程里。IDD_WZDFIELD对话框供用户选择报表字段,它的标题是“选择报表字段信息”,字段选择对话框的其它资源如表6-11所示。表6-11 IDD_WZDFIELD对话框的资源资源类型资源ID标题功能编辑框IDC_MAINTITLE报表的大标题编辑框IDC_FOOTER报表的脚注编辑框IDC_FIELDTITLE报表的字段标题列表框IDC_LIST

16、PRE候选的报表字段列表列表框IDC_LISTSEL选用的报表字段列表组合框IDC_CBPNFORMAT页码类型组合框复选框IDC_CHKPAGENUM使用页码表示是否使用页码标签IDC_STATIC报表标题:报表标题标签标签IDC_STATIC供选择报表字段:候选报表字段列表标题标签IDC_STATIC选用的报表字段:选用报表字段列表标题标签IDC_STATIC字段标题:字段标题标签标签IDC_STATIC注脚文本:注脚文本标签标签IDC_STATIC页码格式:页码格式标签按钮IDC_SELECT选用候选字段按钮按钮IDC_DESELECT|全部选中候选字段按钮按钮IDC_DESELECTA

17、LL|Resource”菜单命令可以将Dialog(对话框)资源加入到工程里。IDD_WZDFORMAT对话框供用户选择报表格式,它的标题是“设置报表格式”。报表格式设置对话框的其它资源如表6-12所示。表6-12 IDD_WZDFORMAT对话框的资源资源类型资源ID标题功能组合框IDC_CBTITLEFONT提供标题字体选择组合框IDC_CBHEADFONT提供字段标题字体选择组合框IDC_CBNORMALFONT提供正文字体选择组合框IDC_CBFOOTERFONT提供注脚字体选择组合框IDC_CBTITLESIZE提供标题字体大小选择组合框IDC_CBHEADSIZE提供字段标题字体大

18、小选择组合框IDC_CBNORMALSIZE提供正文字体大小选择组合框IDC_CBFOOTERSIZE提供注脚字体大小选择静态控件IDC_PREVIEWAREA设置效果预览区域标签IDC_STATIC字体名称:字体标签标签IDC_STATIC字体大小:字体大小标签标签IDC_STATIC标题(&T):标题标签标签IDC_STATIC列头(&M):列头标签标签IDC_STATIC正文(&M):正文标签标签IDC_STATIC注脚(&F):注脚标签标签IDC_STATIC预览:预览区域标签设计完成后,报表格式设置对话框如图6-12所示。图6-12 设计完成后的设置报表格式对话框(3) 设计IDD_

19、WZDPREVIEW对话框。使用VC+的“InsertResource”菜单命令可以将Dialog(对话框)资源加入到工程里。IDD_WZDPREVIEW对话框供用户选择报表信息的显示与确认,它的标题是“报表预览”。设置信息浏览对话框的其它资源如表6-13所示。6-13 IDD_WZDPREVIEW对话框的资源资源类型资源ID标题功能标签IDC_REPORTINFOInfo信息显示区域静态控件IDC_STATIC信息标签设计完成后,设置信息浏览对话框如图6-13所示。图6-13 设计完成后的“报表预览”对话框编写工程代码1. 创建CCommonRs类CCommonRs类由CRecordset类

20、派生而来。创建CCommonRs类的操作步骤:(1) 执行菜单命令“InsertNew Class”,VC+弹出“New Class” 对话框,如图6-14所示。图6-14 New Class对话框(2) 在“New Class” 对话框里保持Class Type项为MFC Class,在Name编辑框里输入“CCommonRs”,然后在Base class下拉列表框里选择派生的父类CRecordset,如图6-15所示。图6-15 设置派生的类名称与父类(3) 在“New Class” 对话框里单击OK按钮,VC+弹出Database Options对话框,在这里,为CCommonRs设置缺

21、省的数据源。选择ODBC数据源为刚刚创建的ODBCDemo2,保持其它设置,如图6-16所示。图6-16 Database Options对话框(4) 在Database Options对话框里按下OK按钮,VC+弹出Select Database Tables对话框,为CCommonRs设置缺省的表,如图6-17所示。(5) 这里的表并不表示对类CCommonRs的操作只能在这个表上进行,这只是一个缺省的设置,因此可以任意选择一个表,注意,如果不选择任何表,单击OK按钮时操作是不能进行下去的。选择任一个表,单击OK按钮,完成类CCommonRs的创建。图6-17 Select Databas

22、e Tables对话框2. 创建全局变量整个应用程序是通过一个CCommonRs对象对数据库进行操作的,这个对象不仅应用在视图类里,还被报表向导引用,以获取结果集的字段信息。因此有必要将这个CCommonRs对象声明为全局对象。我们在ODBCDemo2View.cpp文件的头部对CCommonRs对象声明如下:#include CommonRs.hCCommonRs *m_pCommonRS;第一条语句将类CCommonRs的声明包括到ODBCDemo2View.cpp文件里,第二条语句声明CCommonRs对象的引用指针。3. 在CODBCDemo2View类里声明报表信息变量为了将报表设置

23、信息保存起来,下面为CODBCDemo2View类声明如下的报表信息变量:public: / 报表信息设置变量 / 标题和注脚 CString m_strReportTitle; CString m_strReportFooter; BOOL m_fHavePage; UINT m_uPageType; / 报表字段 CStringArray m_saSelectedFields; CStringArray m_saSelectedFieldsTitle; / 报表格式 / 报表字体 CString m_strFontTitle; CString m_strFontContentHead; C

24、String m_strFontContent; CString m_strFontFooter; / 字体大小 UINT m_uSizeTitle; UINT m_uSizeContentHead; UINT m_uSizeContent; UINT m_uSizeFooter;当报表向导完成了报表信息设置后,这些信息将保存到上述变量里。4. 编写CODBCDemo2View类的消息响应函数对所有菜单命令,应用程序都将在CODBCDemo2View类里响应。前面,我们已经介绍了使用VC+的ClassWizard工具添加菜单命令响应函数的方法,这里只介绍如何为这些响应函数编写操作代码。(1)

25、编写“销售报告按产品”菜单命令响应函数OnSaleProduct()。OnSaleProduct()函数将销售报告按照产品进行统计,并将结果显示到视图里,它的代码如下: CListCtrl& ctrlList = (CListCtrl&) GetListCtrl(); ctrlList.DeleteAllItems(); while(ctrlList.DeleteColumn(0); UpdateWindow(); CString strSQL; strSQL = _T(SELECT * FROM SalesByProduct;); if(!ShowInformation(strSQL) Af

26、xMessageBox(数据获取失败!); m_uStatus = TABLE_SPRODUCTS;SQL语句“SELECT * FROM SalesByProduct”从数据库视图SalesByProduct里将所有数据检索出来,SalesByProduct视图是数据库设计阶段创建的一个数据库视图,它的意义就在于将销售报告(订单)按照产品进行统计。函数ShowInformation()将strSQL里的SQL语句检索结果显示到视图里。(2) 编写“销售报告按客户”菜单命令响应函数OnSaleCustomer ()。OnSaleProduct()函数将销售报告按照客户进行统计,并将结果显示到视

27、图里,它的代码如下: CListCtrl& ctrlList = (CListCtrl&) GetListCtrl(); ctrlList.DeleteAllItems(); while(ctrlList.DeleteColumn(0); UpdateWindow(); CString strSQL(_T(select * from SalesByCustomer); if(!ShowInformation(strSQL) AfxMessageBox(数据获取失败!); m_uStatus = TABLE_SCUSTOMERS;该函数操作方法同OnSaleProduct()函数类似,不同的是,

28、它从SalesByCustomer数据库视图里检索数据。SalesByCustomer数据库视图能够将销售报告(订单)按照客户进行统计。(3) 编写“销售报告按雇员”菜单命令响应函数OnSaleEmployee ()。OnSaleEmployee ()函数将销售报告按照雇员进行统计,并将结果显示到视图里,它的代码如下: CListCtrl& ctrlList = (CListCtrl&) GetListCtrl(); ctrlList.DeleteAllItems(); while(ctrlList.DeleteColumn(0); UpdateWindow(); CString strSQL(_T(select * from SalesByEmployee); if(!ShowInformation(strSQL) AfxMessageBox(数据获取失败!); m_uStatus = TABLE_SIMPLOYEES;

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

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