企业级分析能力。得到改进的ETL工具将允许组织机构以更加简便快捷的方式对出自多种不同信息来源的数据资料进行集成化和分析处理。组织机构可基于一系列运营系统开展数据分析活动,并在此基础上通过对自身业务的全面理解赢得宝贵的竞争优势。 copyright paper51.com
Access2003就是关系数据库开发工具,数据库能汇集各种信息以供查询、分类、存储各检索。Access的优点在于它能使用数据表示图或自定义窗体收集信息。数据表示图提供了一种类似于Excel的电子表格,可以使数据库 一目了然。另外Access也提供了数据存储库,可以使用桌面数据库文件把数据库文件置于网络服务器,与其他网络用户共享数据库。Access是一种关系数据库工具,关系数据库是已开发的最通用的数据库之一。Access最重要的特征是不必编写程序。Access数据库系统只需把数据库应用程序的建立移进用户环境中,除非要执行复杂的操作,数据库的管理者不再必须具有程序设计能力。Access中数据库文件不是简单的存储数据的表,还包括操作和控制数据的其他对象(如查询、窗体和报表等)。如上所述,Access作为关系数据库开发区具备了许多优点,可以在一个数据包中同时拥有桌面数据库的便利和关系到数据库的强大功能。比较分析后,所以还是要选择ACCESS. 2.3数据库访问技术的选择 MFC(微软基础类库)即Microsoft FoundationClass Library,是微软为Windows程序员提供的一个面向对象的Windows编程接口。使用MFC大大简化了Windows编程工作。而MFC的ODBC类对较复杂的ODBC API进行了封装,提供了简化的具体细节,利用ODBC类即可完成对数据库的大部分操作。因此本系统使用MFC ODBC访问数据库。 3系统分析与概要设计 3.1系统分析 系统分析的根本目的是,分析出合理的信息流动、处理存储的过程。系统分析的主要活动有,系统初步调查、可行性研究、系统详细调查、新系统逻辑方案的提出。下面就各个方面分别说明: ⑴系统初步调查 系统初步调查的主要目标就是,从系统分析人员的角度看新项目的开发有无必要和可能。初步调查的内容包括: ① 系统的基本情况,包括它的外部环境、规模、历史、管理目标、主要任务、当前面临的主要问题。 ② 系统中信息处理情况,包括现有系统的组织机构、工作方式、工作效率、可靠性、人员素质和技术手段。 ③ 系统的资源情况人、财、物等资源。 ④ 系统各类人员对系统的态度,包括领导和有关管理人员对现有信息系统的看法、支持和关心程度等。 库存管理需要有:产品相关信息设置,产品入库信息和出库信息以及打印输出等功能。应有入库信息的输入窗口,出库信息输入窗口,产品相关信息设置的输入窗口。,并且当输入库存基本信息时,界面要自然、简便,要有充分的提示和帮助,以便于操作人员学习使用和掌握。对输入的错误又有好的措施,并随时掌握任务的进展情况,输出的形式要易于理解,结果要正确。当然了,对于用户来说,界面就是系统本身。用户特别关心能否有效地使用软件来解决问题,用户对软件功能的理解都在界面上表现出来。人机界面体现了系统的功能,以及操作的方便程度是否符合使用的要求与工作习惯。 总之,应使管理部门及时掌握产品库存全面情况,并通过这样的系统,做到信息的规范管理,科学统计和快速查询,从而减少管理方面的工作量。 根据用户提出的建议,为了开发出有效的库存管理系统,遵循以下原则: ① 满足用户需要。之所以开发新系统是因为旧系统存在问题,束缚着组织的发展,不能适应用户的需要。作威信系统必须其最终系统能被用户接受,实现用户的初衷。 ② 功能更完善。功能是否完整,是指能否覆盖组织的主要业务管理范围。同时,还表现在各部分接口是否完备,数据采集和存储格式是否统一,各部分是否协调一致。管理信息系统的功能主要有:数据处理功能、控制功能、预测功能、决策功能、公用信息服务功能。 ③ 技术更先进。正确认识各种先进技术的优劣长短,从而根据组织的实际情况和未来得发展将其合理的运用到管理信息系统的开发中去。要努力发挥其高速度、高精度、高密度的优点,也要避免其缺乏灵活性,不便于处理意外情况的缺点。同时,不要为了一味的先进,而忽视了技术本身的成熟性。 ④ 实现辅助决策。许多组织的决策任务非常复杂、耗时,而决策关系到组织的兴衰。因此,所有的组织都需要能够帮助他们做出最佳的决策支持系统。 ⑵ 可行性分析 可行性研究的主要任务是在系统初步调查的基础上,对新系统是否能够实现和值得实现等问题作出判断,避免在花费了大量的人力和物力之后才发现系统不能实现或新系统投入使用后没有实际意义,而引起的浪费,对新系统可行性分析,要求用最小的代价在尽量短的时间内确定系统是否可行。内容包括:技术可行性、经济可行性、营运可行性。 ① 技术可行性 计算机管理信息系统的开发是一项复杂的系统工程,从70年代开始,人们逐渐认识到,为了保证MIS开发成功,必须采用工程化的系统开发方法,并研究出一些符合工程化标准的开发方法。 这些方法旨在指导开发者进行工程化的系统开发,从而加快MIS开发的速度,保证质量,以降低开发成本。工程的系统开发方法确实在开发软件中取得了一定的效果。此次开发的库存管理系统使用Visual Basic作为前台开发工具。 为了很好的实现系统的功能,后台选用了MicrosoftAccess开发学籍管理所需要得数据库。 ② 经济可行性分析 公司有多台计算机和打印机,各台微机已通过局域网互联,因此新系统使用后,不需要购置新的硬件,硬件的升级费用也是非常低,系统完成后,一些报表可由系统自动处理,不再需要人工干预,提高公司管理的规范化、系统化、制度化、减轻了管理人员的工作量。公司有微机操作人员若干,对本系统的运行界面很容易熟练掌握,不需要进行特殊的培训工作。 ③ 运行可行性分析 随着计算机知识的普及和推广,越来越多的人掌握了计算机的基本使用方法和基本。目前,公司的管理人员已经具备了一定的计算机基础知识和实际操作经验。对于局域网、WINDOWS等环境下的软件使用比较熟悉,对于新系统的开发,用户表现出极大的兴趣和热情,提出了各种很好的建议和要求。 通过以上的分析,开发库存管理系统是完全必要并且是完全可行的。 3.2系统设计 ⑴系统设计原则 ① 实用性:系统的设计从公司的需求出发,满足了公司管理活动的一系列要求和需要,而且力求操作员操作方便、简单易懂、界面友好。 ② 安全性:系统采用了用户输入编号和密码的登录界面,从而防止了非法用户的入侵;通过对用户权限的设置实现了系统维护人员与操作员相分离,充分保证了系统的安全性。 ③ 可维护性和可扩展性:系统具有良好的可扩展性和可维护性。系统中各个模块的独立性可以完全保证各个模块的适当扩展和修改不会影响到其他模块的运行。 ④ 标准性:软件设计严格执行国家有关软件工程的标准,保证系统质量,提供完整、准确、详细的开发文档。 ⑵ 系统设计方法 结构化方法是系统在设计时采用的主要方法。结构化方法的基本思路就是把整个系统开发过程分为若干阶段,每个阶段进行若干活动,每项活动应用一系列标准、规范、方法和技术,完成一个或多个任务,形成符合给定规范的产品。 结构化系统开发方法的特点是: ① 用“自上而下”的开发策略,进行系统分析和系统设计,然后,“自下而上”地开发和调试各个模块,最后实现模块联调和整个系统的联调。 ② 工作文件的标准化与文档化。即每一阶段、每一步骤都有详细的文档记录,并有完整的管理制度。 ③ 强调面向用户的观点。即将用户的参与程度和满意与否作为系统开发能否成功的关键。 ④ 结构化开发方法在大多数情况下是信息系统工程开发的有效方法。它首先用结构化分析(SA)对软件进行需求分析,然后用结构化设计(SD)方法进行总体设计,最后是结构化编程(SP)。 结构化方法又可以分为自顶向下和自底向上底开发方法。两者结合是实际开发过程中常用的方法。 结构化方法的主要原则是: ① 用户参与的原则; ②“先逻辑,后物理”的原则 ③“自顶向下”的原则; ④ 工作成果描述标准化的原则。 ⑶ 总体设计 公司库存管理信息系统功能设计目标如下: ① 实用性强:符合实际操作流程的习惯,易学易用的友好的用户界面,适合各层次工作人员的使用需求,实现计算机与多年积累起来的经验相结合科学化管理; ② 先进的程序结构:使用当代前卫的软件编程,能延长其生命周期,易于维护与管理; ③ 安全可靠性高:登录密码口令,实现系统的可靠性; ④ 使用模块化设计的方法:使系统具有良好的可扩充性,以适应其不同阶段的发展需要; ⑤ 操作简单,维护方便:每个系统都具有系统维护功能,对可变化的项目可自行维护; ⑥打印功能强大:可以对当次产品入库信息、当次产品出库信息打印而且还可查询检索到哪一日入库及出库信息的打印。 4系统功能模块设计 4.1公司库存管理功能模块设计目标 ⑴ 实用性强:符合实际操作流程的习惯,易学易用的友好的用户界面,适合各层次工作人员的使用需求,实现计算机与多年积累起来的经验相结合科学化管理; ⑵ 先进的程序结构:使用当代前卫的软件编程,能延长其生命周期,易于维护与管理; ⑶ 安全可靠性高:登录密码口令,实现系统的可靠性; ⑷ 使用模块化设计的方法:使系统具有良好的可扩充性,以适应其不同阶段的发展需要; ⑸ 操作简单,维护方便:每个系统都具有系统维护功能,对可变化的项目可自行维护; ⑹ 查询功能强大:可以对文件按日期、部门、文件名和文件的编号等方式查询,使管理人员能及时准确地掌握公司库存的基本情况。 4.2公司库存管理信息系统功能模块划分 根据需求分析与系统功能设计目标,结合实际情况本系统功能模块设计分为如下几个模块: ①基础信息管理模块 ②日常业务管理模块 ③查询统计模块 ④系统管理模块
http://www.paper51.com
copyright paper51.com
系统简介
copyright paper51.com
内容来自www.paper51.com 库存管理系统是针对企业库存的商品货物的经常出入库和查询统计等方面工作而开发的管理软件。库存管理系统是用于完成众多库存管理业务所面临的日常工作。
http://www.paper51.com
内容来自www.paper51.com
根据用户的要求,实现库存的商品管理、出入库管理、查询管理及用户管理等功能。用户通过相应的模块,对库存里的商品的基本情况进行更新、删除和查询,对商品的出库和入库进行管理,对出入库明细进行查询,对使用该系统的用户进行更新、删除和查询,对库存数量进行查询,用户通过简单的操作即可轻松的管理库存。
http://www.paper51.com
内容来自www.paper51.com
库存管理系统开发的总体任务是实现企业物资设备管理的系统化、规范化和自动化,从而达到提高库存管理效率的目的。
paper51.com
copyright paper51.com u 简洁一致,操作便利
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com
u 图形化界面,完备的物资管理功能
内容来自论文无忧网 www.paper51.com
copyright paper51.com
u 表格中的文字实时显示
paper51.com
copyright paper51.com
u 本系统基于好用、易用、美观的原则设计了统一的人机界面
内容来自www.paper51.com
copyright paper51.com
u 表格中的文字实时显示。
http://www.paper51.com
copyright paper51.com Visual C++6.0提供了多种多样的数据库访问技术—ODBC API、MFC ODBC、DAO、OLE DB、ADO等。它们提供了简单、灵活、访问速度快、可扩展性强的开发技术。
内容来自www.paper51.com
paper51.com 本软件针对企业物资供应管理业务范围及工作特点,设计了设备代码、设备入库、出库、还库、入库信息、出库信息、还库信息、设备需求、查看日志、修改密码等几个模块,这几个子模块包括了企业管理的主要业务,可以全面实现对物资的采购、出库、还库、统计和流通等业务的计算机管理,应用本系统可以在计算机上灵活、方便地管理库存物资,从而大大的提高了处理效率,使管理更加现代化。本系统是根据实际情况和具体内容,按一定的要求、科学、合理进行系统分析,设计,具体包括、数据输入、、删除、修改等各种设计。从而使本系统完全能满足经济性、灵活性、系统性及可靠性的要求。系统考虑到设计与用户两方面,使其尽量具有好的兼容性,速度快,功能强的特点,可让程序运行相对变得简单而方便,可以简便地运行正确操作。
内容来自www.paper51.com
http://www.paper51.com 5数据库设计
http://www.paper51.com
paper51.com 5.1数据库设计概述
http://www.paper51.com
paper51.com
Microsoft Developer Studio为大多数标准的数据库格式提供了32位ODBC驱动器。这些标准数据格式包括有:SQL Server、Access、Paradox、dBase、FoxPro、Excel、Oracle以及Microsoft Text。如果用户希望使用其他数据格式,则需要安装相应的ODBC驱动器及DBMS。
内容来自www.paper51.com
http://www.paper51.com copyright paper51.com
用户使用自己的DBMS数据库管理功能生成新的数据库模式后,就可以使用ODBC来登录数据源。对用户的应用程序来说,只要安装有驱动程序,就能注册很多不同的数据库。登录数据库的具体操作参见有关ODBC的联机帮助。
copyright paper51.com
copyright paper51.com
内容来自论文无忧网 www.paper51.com
一、MFC提供的ODBC数据库类
内容来自论文无忧网 www.paper51.com
copyright paper51.com http://www.paper51.com
Visual C++的MFC基类库定义了几个数据库类。在利用ODBC编程时,经常要使用到 CDatabase(数据库类)、CRecordSet(记录集类)和CRecordView(可视记录集类)。
paper51.com
内容来自论文无忧网 www.paper51.com 内容来自www.paper51.com
CDatabase类对象提供了对数据源的连接,通过它可以对数据源进行操作。
内容来自论文无忧网 www.paper51.com
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com
CRecordSet类对象提供了从数据源中提取出的记录集。CRecordSet对象通常用于两种形式:动态行集(dynasets)和快照集(snapshots)。动态行集能与其他用户所做的更改保持同步,快照集则是数据的一个静态视图。每种形式在记录集被打开时都提供一组记录,所不同的是,当在一个动态行集里滚动到一条记录时,由其他用户或应用程序中的其他记录集对该记录所做的更改会相应地显示出来。
http://www.paper51.com
http://www.paper51.com
内容来自www.paper51.com
CRecordView类对象能以控件的形式显示数据库记录,这个视图是直接连到一个CRecordSet对象的表视图。
paper51.com
copyright paper51.com
内容来自论文无忧网 www.paper51.com
二、应用ODBC编程
copyright paper51.com
http://www.paper51.com
copyright paper51.com
应用Visual C++的AppWizard可以自动生成一个ODBC应用程序框架,步骤是:打开File菜单的New选项,选取Projects,填入工程名,选择MFC AppWizard (exe),然后按AppWizard的提示进行操作。
copyright paper51.com
内容来自论文无忧网 www.paper51.com
copyright paper51.com
当AppWizard询问是否包含数据库支持时,如果想读写数据库,那么选定Databaseview with file support;如果想访问数据库的信息而不想写回所做的改变,那么选定Database view without file support。
paper51.com
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com
选好数据库支持之后,Database Source 按钮会被激活,选中它去调用Data Options对话框。在Database Options对话框中会显示出已向ODBC注册的数据库资源,选定所要操作的数据库,如:Super_ES,单击OK后出现Select Database Tables对话框,其中列举了选中的数据库包含的全部表;选择要操作的表后,单击OK。在选定了数据库和数据表之后,就可以按照惯例继续进行AppWizard操作。
copyright paper51.com
http://www.paper51.com
内容来自www.paper51.com
特别需要指出的是:在生成的应用程序框架View类(如:CSuper_ESView)中,包含一个指向CSuper_ESSet对象的指针m_pSet,该指针由AppWizard建立,目的是在视表单和记录集之间建立联系,使得记录集中的查询结果能够很容易地在视表单上显示出来。
paper51.com
内容来自www.paper51.com
http://www.paper51.com
要使程序与数据源建立联系,需用CDateBase::OpenEx()或CDatabase::Open()函数来进行初始化。数据库对象必须在使用它构造记录集对象之前初始化。
http://www.paper51.com
copyright paper51.com
三、实例
内容来自论文无忧网 www.paper51.com
内容来自论文无忧网 www.paper51.com http://www.paper51.com
1.查询记录
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com http://www.paper51.com
查询记录使用CRecordSet::Open()和CRecordSet::Requery()成员函数。在使用CRecordSet类对象之前,必须使用CRecordSet::Open()函数来获得有效的记录集。一旦已经使用过CRecordSet::Open()函数,再次查询时就可以应用CRecordSet::Requery()函数。
paper51.com
paper51.com 内容来自论文无忧网 www.paper51.com
在调用CRecordSet::Open()函数时,如果将一个已经打开的CDatabase对象指针传给CRecordSet类对象的m_pDatabase成员变量,则使用该数据库对象建立ODBC连接;否则如果m_pDatabase为空指针,就新建一个CDatabase类对象,并使其与缺省的数据源相连,然后进行CRecordSet类对象的初始化。缺省数据源由GetDefaultConnect()函数获得。也可以提供所需要的SQL语句,并以它来调用CRecordSet::Open()函数,例如:Super_ESSet.Open(AFX_DATABASE_USE_DEFAULT,strSQL);
copyright paper51.com
http://www.paper51.com copyright paper51.com
如果没有指定参数,程序则使用缺省的SQL语句,即对在GetDefaultSQL()函数中指定的SQL语句进行操作:
内容来自www.paper51.com
paper51.com
paper51.com
CString CSuper_ESSet::GetDefaultSQL()
内容来自www.paper51.com
内容来自www.paper51.com
{return _T(″[BsicData],[MinSize]″);}
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com
对于GetDefaultSQL()函数返回的表名,对应的缺省操作是SELECT语句,即:
copyright paper51.com
内容来自论文无忧网 www.paper51.com
内容来自论文无忧网 www.paper51.com
SELECT *FROM BasicData,MainSize
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com 内容来自www.paper51.com
在查询过程中,也可以利用CRecordSet的成员变量m_strFilter和m_strSort来执行条件查询和结果排序。m_strFilter为过滤字符串,存放着SQL语句中WHERE后的条件串;m_strSort为排序字符串,存放着SQL语句中ORDER BY后的字符串。如:
http://www.paper51.com
内容来自论文无忧网 www.paper51.com
paper51.com
Super_ESSet.m_strFilter=″TYPE=‘电动机’″;
内容来自www.paper51.com
http://www.paper51.com
Super_ESSet.m_strSort=″VOLTAGE″;
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com
Super_ESSet.Requery();
http://www.paper51.com
http://www.paper51.com paper51.com
对应的SQL语句为:
内容来自www.paper51.com
http://www.paper51.com
内容来自论文无忧网 www.paper51.com
SELECT *FROM BasicData,MainSize
内容来自论文无忧网 www.paper51.com
copyright paper51.com WHERE TYPE=‘电动机’
内容来自www.paper51.com
paper51.com ORDER BY VOLTAGE
copyright paper51.com
内容来自www.paper51.com
http://www.paper51.com
除了直接赋值给m_strFilter以外,还可以使用参数化。利用参数化可以更直观、更方便地完成条件查询任务。使用参数化的步骤如下:
paper51.com
内容来自论文无忧网 www.paper51.com
paper51.com
S声明参变量:
paper51.com
内容来自www.paper51.com copyright paper51.com
CString p1;
内容来自www.paper51.com
内容来自www.paper51.com float p2;
paper51.com
copyright paper51.com copyright paper51.com
S在构造函数中初始化参变量:
内容来自论文无忧网 www.paper51.com
copyright paper51.com
copyright paper51.com
p1=_T(″″);
内容来自论文无忧网 www.paper51.com
内容来自论文无忧网 www.paper51.com p2=0.0f;
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com
m_nParams=2;
http://www.paper51.com
内容来自论文无忧网 www.paper51.com
paper51.com
S将参变量与对应列绑定:
copyright paper51.com
内容来自论文无忧网 www.paper51.com
内容来自论文无忧网 www.paper51.com
pFX->SetFieldType(CFieldExchange::param)
内容来自论文无忧网 www.paper51.com
copyright paper51.com
http://www.paper51.com
RFX_Text(pFX,_T(″P1″),p1);
内容来自论文无忧网 www.paper51.com
http://www.paper51.com
RFX_Single(pFX,_T(″P2″),p2);
copyright paper51.com
http://www.paper51.com
paper51.com
完成以上步骤后就可以利用参变量进行条件查询:
paper51.com
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com
m_pSet->m_strFilter=″TYPE=? AND VOLTAGE=?″;m_pSet->p1=″电动机″;
内容来自论文无忧网 www.paper51.com
http://www.paper51.com m_pSet->p2=60.0;
http://www.paper51.com
http://www.paper51.com
m_pSet->Requery();
http://www.paper51.com
内容来自论文无忧网 www.paper51.com
paper51.com
参变量的值按绑定的顺序替换查询字串中的“?”通配符。
内容来自www.paper51.com
copyright paper51.com
copyright paper51.com
如果查询的结果是多条记录,可以用CRecordSet类的函数Move()、MoveNext()、MovePrev()、MoveFirst()和MoveLast()来移动光标。
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com http://www.paper51.com
2.增加记录
copyright paper51.com
内容来自www.paper51.com
内容来自www.paper51.com
增加记录使用AddNew()函数,要求数据库必须是以允许增加的方式打开:
内容来自论文无忧网 www.paper51.com
copyright paper51.com
内容来自论文无忧网 www.paper51.com
m_pSet->AddNew();//在表的末尾增加新记录
paper51.com
http://www.paper51.com m_pSet->SetFieldNull(&(m_pSet->m_type), FALSE);
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com m_pSet->m_type=″电动机″;
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com
……
内容来自论文无忧网 www.paper51.com
copyright paper51.com
//输入新的字段值
copyright paper51.com
http://www.paper51.com m_pSet->update();
http://www.paper51.com
内容来自www.paper51.com
//将新记录存入数据库
内容来自论文无忧网 www.paper51.com
paper51.com
m_pSet->Requery();
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com //重建记录集
内容来自论文无忧网 www.paper51.com
copyright paper51.com
内容来自www.paper51.com
3.删除记录
内容来自www.paper51.com
paper51.com http://www.paper51.com
可以直接使用delete()函数来删除记录,并且在调用delete()函数之后不需调用update()函数:
内容来自www.paper51.com
内容来自www.paper51.com
copyright paper51.com
m_pSet->delete();
内容来自www.paper51.com
copyright paper51.com if (!m_pSet->IsEOF())
copyright paper51.com
paper51.com m_pSet->MoveNext();
内容来自www.paper51.com
copyright paper51.com
else
copyright paper51.com
http://www.paper51.com m_pSet->MoveLast();
内容来自论文无忧网 www.paper51.com
copyright paper51.com
copyright paper51.com
4.修改记录
paper51.com
copyright paper51.com http://www.paper51.com
修改记录使用Edit()函数:
http://www.paper51.com
paper51.com
http://www.paper51.com
m_pSet->Edit();
http://www.paper51.com
内容来自www.paper51.com //修改当前记录
内容来自论文无忧网 www.paper51.com
paper51.com
m_pSet->m_type=″发电机″;
paper51.com
copyright paper51.com //修改当前记录字段值
内容来自论文无忧网 www.paper51.com
http://www.paper51.com ……
paper51.com
内容来自论文无忧网 www.paper51.com m_pSet->update();//将修改结果存入数据库
copyright paper51.com
内容来自论文无忧网 www.paper51.com m_pSet->Requery();
http://www.paper51.com
http://www.paper51.com
http://www.paper51.com
5.撤消操作
http://www.paper51.com
copyright paper51.com
paper51.com
如果用户选择了增加或者修改记录后希望放弃当前操作,可以在调用update()函数之前调用:
paper51.com
内容来自论文无忧网 www.paper51.com 内容来自论文无忧网 www.paper51.com
CRecordSet::Move(AFX_MOVE_REFRESH)来撤消增加或修改模式,并恢复在增加或修改模式之前的当前记录。其中,参数AFX_MOVE_REFRESH的值为零。
内容来自www.paper51.com
copyright paper51.com
http://www.paper51.com
6.数据库连接的复用
内容来自论文无忧网 www.paper51.com
paper51.com 内容来自www.paper51.com
在CRecordSet类中定义了一个成员变量m_pDatabase:
copyright paper51.com
copyright paper51.com
copyright paper51.com
CDatabase* m_pDatabase;
内容来自www.paper51.com
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com
它是指向对象数据库类的指针。如果在CRecordSet类对象调用Open()函数之前,将一个已经打开的CDatabase类对象指针传给m_pDatabase,就能共享相同的CDatabase类对象。如:
http://www.paper51.com
http://www.paper51.com
paper51.com
CDatabase m_db;
http://www.paper51.com
内容来自www.paper51.com CRecordSet m_set1,m_set2;
内容来自论文无忧网 www.paper51.com
paper51.com
m_db.Open(_T(″Super_ES″)); //建立ODBC连接
copyright paper51.com
内容来自论文无忧网 www.paper51.com
m_set1.m_pDatabase=&m_db;
paper51.com
copyright paper51.com
//m_set1复用m_db对象
http://www.paper51.com
内容来自论文无忧网 www.paper51.com
m_set2.m_pDatabse=&m_db;
paper51.com
内容来自www.paper51.com // m_set2复用m_db对象
http://www.paper51.com
paper51.com copyright paper51.com
7.SQL语句的直接执行
copyright paper51.com
内容来自www.paper51.com 内容来自论文无忧网 www.paper51.com
虽然我们可以通过CRecordSet类完成大多数的查询操作,而且在CRecordSet::Open()函数中也可以提供SQL语句,但是有时候我们还是希望进行一些其他操作,例如建立新表、删除表、建立新的字段等,这时就需要使用CDatabase类直接执行SQL语句的机制。通过调用CDatabase::ExecuteSQL()函数来完成SQL语句的直接执行:
copyright paper51.com
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com
BOOLCDB::ExecuteSQLAndReportFailure(const CString& strSQL)
paper51.com
内容来自论文无忧网 www.paper51.com
{TRY
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com {m_pdb->ExecuteSQL(strSQL);
copyright paper51.com
paper51.com //直接执行SQL语句}
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com CATCH (CDBException,e)
http://www.paper51.com
paper51.com {CString strMsg;
内容来自论文无忧网 www.paper51.com
http://www.paper51.com
strMsg.LoadString(IDS_EXECUTE_SQL_FAILED);
http://www.paper51.com
paper51.com
strMsg+=strSQL;
paper51.com
内容来自论文无忧网 www.paper51.com
return FALSE;}
内容来自www.paper51.com
paper51.com
END_CATCH
copyright paper51.com
内容来自论文无忧网 www.paper51.com return TRUE;}
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com http://www.paper51.com
应当指出的是,由于不同的DBMS提供的数据操作语句不尽相同,直接执行SQL语句可能会破坏软件的DBMS无关性,因此在应用中应当慎用此类操作。
copyright paper51.com
http://www.paper51.com copyright paper51.com
8.动态连接表
copyright paper51.com
copyright paper51.com
copyright paper51.com
表的动态连接可以利用在调用CRecordSet::Open()函数时指定SQL语句来实现。同一个记录集对象只能访问具有相同结构的表,否则查询结果将无法与变量相对应。
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com
paper51.com
void CDB::ChangeTable()
内容来自www.paper51.com
内容来自www.paper51.com {
paper51.com
内容来自www.paper51.com
if (m_pSet->IsOpen())m_pSet->Close();
copyright paper51.com
http://www.paper51.com
switch (m_id)
paper51.com
内容来自论文无忧网 www.paper51.com {
paper51.com
copyright paper51.com
case 0:
内容来自www.paper51.com
paper51.com
m_pSet->Open(AFX_DB_USE_DEFAULT_TYPE,″SELECT * FROM SLOT0″);
内容来自www.paper51.com
paper51.com
//连接表SLOT0
paper51.com
http://www.paper51.com
m_id=1;
http://www.paper51.com
http://www.paper51.com
break;
内容来自论文无忧网 www.paper51.com
内容来自论文无忧网 www.paper51.com case 1:
paper51.com
paper51.com m_pSet->Open(AFX_DB_USE_DEFAULT_TYPE,″SELECT * FROM SLOT1″); //连接表SLOT1
内容来自www.paper51.com
http://www.paper51.com m_id=0;
内容来自www.paper51.com
http://www.paper51.com
break;
内容来自www.paper51.com
内容来自www.paper51.com
}
copyright paper51.com
http://www.paper51.com }
paper51.com
内容来自www.paper51.com
内容来自www.paper51.com
9.动态连接数据库
copyright paper51.com
http://www.paper51.com
内容来自论文无忧网 www.paper51.com
可以通过赋与CRecordSet类对象参数m_pDatabase来连接不同数据库的CDatabase对象指针,从而实现动态连接数据库。
内容来自www.paper51.com
copyright paper51.com
http://www.paper51.com
void CDB::ChangeConnect()
http://www.paper51.com
内容来自www.paper51.com
{
内容来自论文无忧网 www.paper51.com
paper51.com CDatabase* pdb=m_pSet->m_pDatabase;
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com
pdb->Close();
copyright paper51.com
内容来自www.paper51.com
switch (m_id)
paper51.com
内容来自论文无忧网 www.paper51.com
{
http://www.paper51.com
内容来自论文无忧网 www.paper51.com case 0:
内容来自www.paper51.com
paper51.com
if (!pdb->Open(_T(″Super_ES″)))
copyright paper51.com
http://www.paper51.com //连接数据源Super_ES
内容来自论文无忧网 www.paper51.com
内容来自论文无忧网 www.paper51.com
{
内容来自www.paper51.com
copyright paper51.com
AfxMessageBox(″数据源Super_ES打开失败″,″请检查相应的ODBC连接″, MB_OK|MB_ICONWARNING);
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com
exit(0);
paper51.com
http://www.paper51.com }
内容来自论文无忧网 www.paper51.com
http://www.paper51.com
m_id=1;
http://www.paper51.com
paper51.com
break;
内容来自www.paper51.com
内容来自www.paper51.com case 1:
内容来自www.paper51.com
http://www.paper51.com if (!pdb->Open(_T(″Motor″)))
内容来自www.paper51.com
copyright paper51.com
//连接数据源Motor
内容来自www.paper51.com
paper51.com {
内容来自论文无忧网 www.paper51.com
http://www.paper51.com AfxMessageBox(″数据源Motor打开失败″,″请检查相应的ODBC连接″, MB_OK|MB_ICONWARNING);
内容来自论文无忧网 www.paper51.com
http://www.paper51.com exit(0);
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com
}
内容来自论文无忧网 www.paper51.com
paper51.com
m_id=0;
copyright paper51.com
copyright paper51.com
break;
内容来自论文无忧网 www.paper51.com
paper51.com }
copyright paper51.com
copyright paper51.com }
内容来自论文无忧网 www.paper51.com
内容来自论文无忧网 www.paper51.com
内容来自论文无忧网 www.paper51.com
copyright paper51.com
内容来自论文无忧网 www.paper51.com 内容来自论文无忧网 www.paper51.com
Visual C++中的ODBC类库可以帮助程序员完成绝大多数的数据库操作。利用ODBC技术使得程序员从具体的DBMS中解脱出来,从而可以减少软件开发的工作量,缩短开发周期,并提高效率和软件的可靠性。
内容来自论文无忧网 www.paper51.com
paper51.com
5.2系统数据库表
http://www.paper51.com
内容来自论文无忧网 www.paper51.com
http://www.paper51.com
内容来自论文无忧网 www.paper51.com
paper51.com
6程序设计
内容来自www.paper51.com
http://www.paper51.com
6.1系统主界面
paper51.com
内容来自www.paper51.com 内容来自www.paper51.com
copyright paper51.com 主界面相关代码:
内容来自www.paper51.com
内容来自www.paper51.com // DMSDlg.cpp : implementation file
内容来自www.paper51.com
内容来自www.paper51.com //
copyright paper51.com
copyright paper51.com
内容来自www.paper51.com
#include "stdafx.h"
copyright paper51.com
内容来自论文无忧网 www.paper51.com #include "DMS.h"
copyright paper51.com
内容来自www.paper51.com #include "DMSDlg.h"
paper51.com
paper51.com
#include "DlgProxy.h"
copyright paper51.com
内容来自论文无忧网 www.paper51.com
#include "DlgLogIn.h"
paper51.com
内容来自www.paper51.com #include "DlgDevcode.h"
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com #include "DlgReport.h"
paper51.com
http://www.paper51.com
#include "DlgViewLog.h"
内容来自论文无忧网 www.paper51.com
copyright paper51.com #include "DlgViewDevIn.h"
copyright paper51.com
copyright paper51.com
#include "DlgViewRet.h"
copyright paper51.com
paper51.com
#include "DlgViewOut.h"
内容来自www.paper51.com
copyright paper51.com
#include "DlgViewNeed.h"
paper51.com
paper51.com #include "DlgViewReport.h"
内容来自www.paper51.com
http://www.paper51.com #include "DlgDev.h"
内容来自论文无忧网 www.paper51.com
http://www.paper51.com
#include "DlgDevAlert.h"
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com
#include "DlgDevIn.h"
内容来自论文无忧网 www.paper51.com
http://www.paper51.com #include "DlgDevOut.h"
copyright paper51.com
http://www.paper51.com
#include "DlgDevRet.h"
paper51.com
内容来自www.paper51.com
#include "DlgDevNeed.h"
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com
http://www.paper51.com
#ifdef _DEBUG
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com #define new DEBUG_NEW
paper51.com
paper51.com
#undef THIS_FILE
copyright paper51.com
内容来自论文无忧网 www.paper51.com static char THIS_FILE[] =__FILE__;
http://www.paper51.com
http://www.paper51.com
#endif
copyright paper51.com
paper51.com
paper51.com
/////////////////////////////////////////////////////////////////////////////
paper51.com
copyright paper51.com // CAboutDlg dialog used for App About
内容来自www.paper51.com
内容来自www.paper51.com
http://www.paper51.com
class CAboutDlg : publicCDialog
copyright paper51.com
内容来自论文无忧网 www.paper51.com {
copyright paper51.com
内容来自论文无忧网 www.paper51.com public:
paper51.com
copyright paper51.com
CAboutDlg();
内容来自www.paper51.com
copyright paper51.com
内容来自论文无忧网 www.paper51.com
// Dialog Data
paper51.com
内容来自论文无忧网 www.paper51.com //{{AFX_DATA(CAboutDlg)
内容来自论文无忧网 www.paper51.com
http://www.paper51.com enum { IDD = IDD_ABOUTBOX };
内容来自www.paper51.com
copyright paper51.com
//}}AFX_DATA
http://www.paper51.com
copyright paper51.com
copyright paper51.com
//ClassWizard generated virtual function overrides
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com
//{{AFX_VIRTUAL(CAboutDlg)
http://www.paper51.com
http://www.paper51.com
protected:
paper51.com
paper51.com virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
内容来自论文无忧网 www.paper51.com
http://www.paper51.com
//}}AFX_VIRTUAL
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com paper51.com
// Implementation
paper51.com
http://www.paper51.com
protected:
http://www.paper51.com
paper51.com //{{AFX_MSG(CAboutDlg)
内容来自www.paper51.com
内容来自www.paper51.com
//}}AFX_MSG
paper51.com
内容来自论文无忧网 www.paper51.com
DECLARE_MESSAGE_MAP()
内容来自论文无忧网 www.paper51.com
http://www.paper51.com };
内容来自www.paper51.com
paper51.com
copyright paper51.com
CAboutDlg::CAboutDlg() :CDialog(CAboutDlg::IDD)
内容来自www.paper51.com
paper51.com {
http://www.paper51.com
copyright paper51.com //{{AFX_DATA_INIT(CAboutDlg)
http://www.paper51.com
http://www.paper51.com
//}}AFX_DATA_INIT
内容来自www.paper51.com
copyright paper51.com }
paper51.com
内容来自论文无忧网 www.paper51.com
内容来自论文无忧网 www.paper51.com
voidCAboutDlg::DoDataExchange(CDataExchange* pDX)
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com {
copyright paper51.com
内容来自论文无忧网 www.paper51.com
CDialog::DoDataExchange(pDX);
paper51.com
copyright paper51.com
//{{AFX_DATA_MAP(CAboutDlg)
copyright paper51.com
copyright paper51.com
//}}AFX_DATA_MAP
copyright paper51.com
http://www.paper51.com }
内容来自www.paper51.com
copyright paper51.com
http://www.paper51.com
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
内容来自www.paper51.com
paper51.com //{{AFX_MSG_MAP(CAboutDlg)
paper51.com
copyright paper51.com //No message handlers
paper51.com
内容来自论文无忧网 www.paper51.com
//}}AFX_MSG_MAP
内容来自www.paper51.com
内容来自www.paper51.com END_MESSAGE_MAP()
内容来自www.paper51.com
paper51.com
copyright paper51.com
/////////////////////////////////////////////////////////////////////////////
copyright paper51.com
内容来自论文无忧网 www.paper51.com
// CDMSDlg dialog
内容来自www.paper51.com
paper51.com
copyright paper51.com
IMPLEMENT_DYNAMIC(CDMSDlg, CDialog);
copyright paper51.com
paper51.com
paper51.com
CDMSDlg::CDMSDlg(CWnd* pParent /*=NULL*/)
内容来自www.paper51.com
paper51.com :CDialog(CDMSDlg::IDD, pParent)
copyright paper51.com
内容来自www.paper51.com
{
copyright paper51.com
paper51.com //{{AFX_DATA_INIT(CDMSDlg)
paper51.com
copyright paper51.com
//NOTE: the ClassWizard will add member initialization here
内容来自www.paper51.com
http://www.paper51.com //}}AFX_DATA_INIT
paper51.com
内容来自www.paper51.com //Note that LoadIcon does not require a subsequent DestroyIcon in Win32
paper51.com
http://www.paper51.com
m_hIcon= AfxGetApp()->LoadIcon(IDR_MAINFRAME);
http://www.paper51.com
http://www.paper51.com
m_pAutoProxy= NULL;
paper51.com
http://www.paper51.com
}
http://www.paper51.com
paper51.com
copyright paper51.com
CDMSDlg::~CDMSDlg()
内容来自论文无忧网 www.paper51.com
copyright paper51.com
{
内容来自www.paper51.com
paper51.com //If there is an automation proxy for this dialog, set
http://www.paper51.com
http://www.paper51.com // its backpointer to this dialog to NULL, so it knows
http://www.paper51.com
http://www.paper51.com
// the dialog hasbeen deleted.
paper51.com
paper51.com if (m_pAutoProxy != NULL)
内容来自www.paper51.com
http://www.paper51.com
m_pAutoProxy->m_pDialog= NULL;
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com
}
http://www.paper51.com
paper51.com
内容来自www.paper51.com
voidCDMSDlg::DoDataExchange(CDataExchange* pDX)
内容来自论文无忧网 www.paper51.com
http://www.paper51.com {
http://www.paper51.com
paper51.com CDialog::DoDataExchange(pDX);
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com //{{AFX_DATA_MAP(CDMSDlg)
paper51.com
内容来自www.paper51.com //NOTE: the ClassWizard will add DDX and DDV calls here
内容来自www.paper51.com
http://www.paper51.com //}}AFX_DATA_MAP
copyright paper51.com
http://www.paper51.com
}
内容来自www.paper51.com
内容来自www.paper51.com
http://www.paper51.com
BEGIN_MESSAGE_MAP(CDMSDlg, CDialog)
copyright paper51.com
http://www.paper51.com //{{AFX_MSG_MAP(CDMSDlg)
copyright paper51.com
copyright paper51.com ON_WM_SYSCOMMAND()
内容来自论文无忧网 www.paper51.com
paper51.com
ON_WM_PAINT()
内容来自论文无忧网 www.paper51.com
paper51.com
ON_WM_QUERYDRAGICON()
paper51.com
paper51.com
ON_WM_CLOSE()
http://www.paper51.com
copyright paper51.com ON_BN_CLICKED(IDC_BTN_BUYDEV, OnBtnBuydev)
copyright paper51.com
内容来自论文无忧网 www.paper51.com ON_BN_CLICKED(IDC_BTN_DEVALERT, OnBtnDevalert)
copyright paper51.com
内容来自www.paper51.com ON_BN_CLICKED(IDC_BTN_DEVCODE, OnBtnDevcode)
paper51.com
copyright paper51.com ON_BN_CLICKED(IDC_BTN_DEVIN, OnBtnDevin)
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com ON_BN_CLICKED(IDC_BTN_DEVOUT, OnBtnDevout)
copyright paper51.com
paper51.com
ON_BN_CLICKED(IDC_BTN_DEVRET, OnBtnDevret)
http://www.paper51.com
内容来自www.paper51.com ON_BN_CLICKED(IDC_BTN_INFODEV, OnBtnInfodev)
paper51.com
内容来自www.paper51.com
ON_BN_CLICKED(IDC_BTN_INFOIN, OnBtnInfoin)
内容来自www.paper51.com
内容来自www.paper51.com
ON_BN_CLICKED(IDC_BTN_INFONEED, OnBtnInfoneed)
内容来自论文无忧网 www.paper51.com
http://www.paper51.com
ON_BN_CLICKED(IDC_BTN_INFOOUT, OnBtnInfoout)
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com ON_BN_CLICKED(IDC_BTN_INFORET, OnBtnInforet)
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com
ON_BN_CLICKED(IDC_BTN_NEED, OnBtnNeed)
http://www.paper51.com
paper51.com
ON_BN_CLICKED(IDC_BTN_VIEWLOG, OnBtnViewlog)
内容来自论文无忧网 www.paper51.com
http://www.paper51.com
ON_BN_CLICKED(IDC_BTN_VIEWPRT, OnBtnViewprt)
copyright paper51.com
paper51.com ON_WM_DESTROY()
内容来自www.paper51.com
copyright paper51.com ON_BN_CLICKED(IDC_BTN_ABOUT, OnBtnAbout)
copyright paper51.com
paper51.com
ON_BN_CLICKED(IDC_BTN_HELP, OnBtnHelp)
http://www.paper51.com
copyright paper51.com
//}}AFX_MSG_MAP
内容来自www.paper51.com
内容来自www.paper51.com END_MESSAGE_MAP()
http://www.paper51.com
内容来自论文无忧网 www.paper51.com
copyright paper51.com
/////////////////////////////////////////////////////////////////////////////
paper51.com
http://www.paper51.com
// CDMSDlg message handlers
copyright paper51.com
http://www.paper51.com
内容来自www.paper51.com
BOOL CDMSDlg::OnInitDialog()
内容来自论文无忧网 www.paper51.com
http://www.paper51.com
{
http://www.paper51.com
http://www.paper51.com
CDialog::OnInitDialog();
内容来自www.paper51.com
paper51.com
paper51.com
//Add "About..." menu item to system menu.
http://www.paper51.com
copyright paper51.com http://www.paper51.com
//IDM_ABOUTBOX must be in the system command range.
paper51.com
copyright paper51.com ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
内容来自www.paper51.com
内容来自www.paper51.com ASSERT(IDM_ABOUTBOX < 0xF000);
http://www.paper51.com
copyright paper51.com http://www.paper51.com
CMenu*pSysMenu = GetSystemMenu(FALSE);
内容来自论文无忧网 www.paper51.com
内容来自论文无忧网 www.paper51.com if (pSysMenu != NULL)
http://www.paper51.com
paper51.com
{
copyright paper51.com
http://www.paper51.com CStringstrAboutMenu;
内容来自论文无忧网 www.paper51.com
http://www.paper51.com
strAboutMenu.LoadString(IDS_ABOUTBOX);
内容来自www.paper51.com
内容来自www.paper51.com if (!strAboutMenu.IsEmpty())
内容来自论文无忧网 www.paper51.com
http://www.paper51.com {
http://www.paper51.com
http://www.paper51.com pSysMenu->AppendMenu(MF_SEPARATOR);
http://www.paper51.com
paper51.com
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX,strAboutMenu);
内容来自论文无忧网 www.paper51.com
http://www.paper51.com
}
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com }
内容来自论文无忧网 www.paper51.com
http://www.paper51.com
http://www.paper51.com
//Set the icon for this dialog. Theframework does this automatically
内容来自www.paper51.com
copyright paper51.com
// when theapplication's main window is not a dialog
内容来自www.paper51.com
copyright paper51.com
SetIcon(m_hIcon, TRUE); //Set big icon
copyright paper51.com
http://www.paper51.com SetIcon(m_hIcon, FALSE); //Set small icon
paper51.com
内容来自论文无忧网 www.paper51.com
内容来自论文无忧网 www.paper51.com
paper51.com
http://www.paper51.com
http://www.paper51.com /**
paper51.com
内容来自论文无忧网 www.paper51.com * 在这里弹出用户登录对话框
paper51.com
paper51.com
*/
copyright paper51.com
http://www.paper51.com
CDlgLogIndlg;
http://www.paper51.com
内容来自www.paper51.com do
http://www.paper51.com
paper51.com {
http://www.paper51.com
内容来自论文无忧网 www.paper51.com if (!dlg.DoModal())
copyright paper51.com
paper51.com
EndDialog(0);
paper51.com
paper51.com }while (dlg.m_UsrName.GetLength()==0);
内容来自www.paper51.com
http://www.paper51.com
paper51.com
/**
内容来自论文无忧网 www.paper51.com
copyright paper51.com * 登录数据库,若失败,则关闭程序。
copyright paper51.com
copyright paper51.com */
copyright paper51.com
内容来自www.paper51.com
try
内容来自论文无忧网 www.paper51.com
paper51.com
{
copyright paper51.com
http://www.paper51.com m_DBCnt.CreateInstance(__uuidof(Connection));
内容来自www.paper51.com
内容来自www.paper51.com
CStringsql_;
http://www.paper51.com
http://www.paper51.com
sql_.Format("DSN=DMS;UID=%s;PWD=%s",dlg.m_UsrName,dlg.m_UsrPwd);
内容来自www.paper51.com
内容来自www.paper51.com _bstr_tsql=sql_;
内容来自www.paper51.com
http://www.paper51.com m_DBCnt->Open(sql,"","",-1);
内容来自www.paper51.com
http://www.paper51.com
copyright paper51.com
m_logMngr.Setup(m_DBCnt,dlg.m_UsrName);
paper51.com
paper51.com
m_logMngr.AddLog("登录数据库");
内容来自www.paper51.com
http://www.paper51.com
}
paper51.com
http://www.paper51.com
catch(_com_error& e)
http://www.paper51.com
paper51.com {
paper51.com
内容来自论文无忧网 www.paper51.com AfxMessageBox(e.ErrorMessage());
http://www.paper51.com
内容来自www.paper51.com this->EndDialog(0);
内容来自www.paper51.com
http://www.paper51.com
}
http://www.paper51.com
copyright paper51.com
http://www.paper51.com
return TRUE; //return TRUE unless you set thefocus to a control
paper51.com
paper51.com }
paper51.com
http://www.paper51.com
paper51.com
voidCDMSDlg::OnSysCommand(UINT nID, LPARAM lParam)
http://www.paper51.com
copyright paper51.com
{
paper51.com
copyright paper51.com
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
http://www.paper51.com
http://www.paper51.com {
http://www.paper51.com
内容来自www.paper51.com CAboutDlgdlgAbout;
paper51.com
内容来自www.paper51.com
dlgAbout.DoModal();
paper51.com
内容来自www.paper51.com
}
copyright paper51.com
内容来自www.paper51.com else
paper51.com
http://www.paper51.com
{
paper51.com
http://www.paper51.com
CDialog::OnSysCommand(nID, lParam);
内容来自www.paper51.com
内容来自www.paper51.com }
http://www.paper51.com
内容来自论文无忧网 www.paper51.com
}
paper51.com
内容来自论文无忧网 www.paper51.com
http://www.paper51.com
// If you add a minimize button to your dialog, you will need thecode below
paper51.com
内容来自论文无忧网 www.paper51.com
// to draw the icon. ForMFC applications using the document/view model,
paper51.com
paper51.com // this is automatically done for you by the framework.
内容来自www.paper51.com
copyright paper51.com
内容来自论文无忧网 www.paper51.com
void CDMSDlg::OnPaint()
copyright paper51.com
内容来自www.paper51.com {
内容来自www.paper51.com
paper51.com
if (IsIconic())
http://www.paper51.com
内容来自www.paper51.com
{
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com CPaintDCdc(this); // device context for painting
copyright paper51.com
内容来自www.paper51.com
paper51.com
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
copyright paper51.com
http://www.paper51.com 内容来自论文无忧网 www.paper51.com
//Center icon in client rectangle
copyright paper51.com
copyright paper51.com
int cxIcon = GetSystemMetrics(SM_CXICON);
内容来自www.paper51.com
内容来自www.paper51.com int cyIcon = GetSystemMetrics(SM_CYICON);
内容来自论文无忧网 www.paper51.com
内容来自论文无忧网 www.paper51.com
CRectrect;
http://www.paper51.com
copyright paper51.com
GetClientRect(&rect);
copyright paper51.com
paper51.com
int x = (rect.Width() - cxIcon + 1) / 2;
内容来自论文无忧网 www.paper51.com
copyright paper51.com int y = (rect.Height() - cyIcon + 1) / 2;
内容来自www.paper51.com
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com
//Draw the icon
http://www.paper51.com
paper51.com
dc.DrawIcon(x,y, m_hIcon);
内容来自www.paper51.com
内容来自www.paper51.com }
http://www.paper51.com
内容来自论文无忧网 www.paper51.com
else
http://www.paper51.com
内容来自论文无忧网 www.paper51.com
{
内容来自www.paper51.com
copyright paper51.com CDialog::OnPaint();
内容来自论文无忧网 www.paper51.com
http://www.paper51.com }
内容来自论文无忧网 www.paper51.com
copyright paper51.com
}
paper51.com
paper51.com
内容来自www.paper51.com
// The system calls this to obtain thecursor to display while the user drags
copyright paper51.com
paper51.com // the minimized window.
内容来自www.paper51.com
http://www.paper51.com
HCURSOR CDMSDlg::OnQueryDragIcon()
http://www.paper51.com
copyright paper51.com {
内容来自论文无忧网 www.paper51.com
copyright paper51.com
return (HCURSOR) m_hIcon;
内容来自www.paper51.com
paper51.com
}
http://www.paper51.com
paper51.com
copyright paper51.com
// Automation servers should not exit when a user closes the UI
http://www.paper51.com
paper51.com
// if a controller still holds on to one of its objects. These
内容来自论文无忧网 www.paper51.com
http://www.paper51.com // message handlers make sure that if the proxy is still in use,
copyright paper51.com
内容来自论文无忧网 www.paper51.com
// then the UI is hidden but thedialog remains around if it
paper51.com
paper51.com // is dismissed.
copyright paper51.com
copyright paper51.com
copyright paper51.com
void CDMSDlg::OnClose()
copyright paper51.com
内容来自www.paper51.com {
内容来自论文无忧网 www.paper51.com
paper51.com
if (CanExit())
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com CDialog::OnClose();
内容来自www.paper51.com
copyright paper51.com }
内容来自论文无忧网 www.paper51.com
copyright paper51.com 内容来自www.paper51.com
void CDMSDlg::OnOK()
paper51.com
http://www.paper51.com {
copyright paper51.com
copyright paper51.com if (CanExit())
内容来自论文无忧网 www.paper51.com
内容来自论文无忧网 www.paper51.com
CDialog::OnOK();
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com
}
内容来自论文无忧网 www.paper51.com
copyright paper51.com
http://www.paper51.com
void CDMSDlg::OnCancel()
paper51.com
内容来自www.paper51.com {
内容来自论文无忧网 www.paper51.com
http://www.paper51.com if (CanExit())
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com
CDialog::OnCancel();
copyright paper51.com
paper51.com
}
copyright paper51.com
copyright paper51.com
paper51.com
BOOL CDMSDlg::CanExit()
paper51.com
http://www.paper51.com {
http://www.paper51.com
paper51.com
//If the proxy object is still around, then the automation
http://www.paper51.com
http://www.paper51.com // controller isstill holding on to this application. Leave
内容来自论文无忧网 www.paper51.com
内容来自论文无忧网 www.paper51.com
// the dialogaround, but hide its UI.
copyright paper51.com
paper51.com if (m_pAutoProxy != NULL)
copyright paper51.com
paper51.com {
http://www.paper51.com
http://www.paper51.com
ShowWindow(SW_HIDE);
内容来自论文无忧网 www.paper51.com
copyright paper51.com return FALSE;
paper51.com
paper51.com }
http://www.paper51.com
http://www.paper51.com
内容来自www.paper51.com
return TRUE;
内容来自论文无忧网 www.paper51.com
paper51.com
}
copyright paper51.com
内容来自www.paper51.com paper51.com
void CDMSDlg::OnBtnBuydev()
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com {
http://www.paper51.com
内容来自www.paper51.com
CDlgReportdlg;
copyright paper51.com
paper51.com dlg.Setup(m_DBCnt,&m_logMngr);
copyright paper51.com
paper51.com
this->ShowWindow(SW_HIDE);
copyright paper51.com
paper51.com dlg.DoModal();
http://www.paper51.com
内容来自论文无忧网 www.paper51.com
this->ShowWindow(SW_SHOW);
内容来自论文无忧网 www.paper51.com
paper51.com }
内容来自论文无忧网 www.paper51.com
http://www.paper51.com
内容来自www.paper51.com
voidCDMSDlg::OnBtnDevalert()
内容来自论文无忧网 www.paper51.com
copyright paper51.com
{
copyright paper51.com
内容来自论文无忧网 www.paper51.com
CDlgDevAlertdlg;
http://www.paper51.com
内容来自论文无忧网 www.paper51.com
dlg.Setup(m_DBCnt,&m_logMngr);
http://www.paper51.com
paper51.com this->ShowWindow(SW_HIDE);
内容来自论文无忧网 www.paper51.com
paper51.com
dlg.DoModal();
copyright paper51.com
http://www.paper51.com this->ShowWindow(SW_SHOW);
copyright paper51.com
内容来自www.paper51.com }
http://www.paper51.com
paper51.com
http://www.paper51.com
void CDMSDlg::OnBtnDevcode()
http://www.paper51.com
http://www.paper51.com
{
内容来自论文无忧网 www.paper51.com
http://www.paper51.com
CDlgDevcodedlg;
paper51.com
内容来自www.paper51.com dlg.Setup(m_DBCnt,&m_logMngr);
copyright paper51.com
内容来自www.paper51.com this->ShowWindow(SW_HIDE);
http://www.paper51.com
内容来自www.paper51.com dlg.DoModal();
paper51.com
http://www.paper51.com this->ShowWindow(SW_SHOW);
copyright paper51.com
copyright paper51.com
}
http://www.paper51.com
内容来自www.paper51.com
http://www.paper51.com
void CDMSDlg::OnBtnDevin()
内容来自www.paper51.com
copyright paper51.com {
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com
CDlgDevIndlg;
paper51.com
paper51.com
dlg.Setup(m_DBCnt,&m_logMngr);
内容来自www.paper51.com
http://www.paper51.com
this->ShowWindow(SW_HIDE);
paper51.com
内容来自www.paper51.com
dlg.DoModal();
内容来自www.paper51.com
paper51.com
this->ShowWindow(SW_SHOW);
内容来自论文无忧网 www.paper51.com
内容来自论文无忧网 www.paper51.com
}
http://www.paper51.com
内容来自论文无忧网 www.paper51.com
copyright paper51.com
void CDMSDlg::OnBtnDevout()
http://www.paper51.com
内容来自论文无忧网 www.paper51.com {
http://www.paper51.com
paper51.com
CDlgDevOutdlg;
内容来自www.paper51.com
copyright paper51.com dlg.Setup(m_DBCnt,&m_logMngr);
内容来自论文无忧网 www.paper51.com
内容来自论文无忧网 www.paper51.com this->ShowWindow(SW_HIDE);
内容来自论文无忧网 www.paper51.com
内容来自论文无忧网 www.paper51.com
dlg.DoModal();
paper51.com
copyright paper51.com
this->ShowWindow(SW_SHOW);
内容来自论文无忧网 www.paper51.com
http://www.paper51.com
}
内容来自论文无忧网 www.paper51.com
http://www.paper51.com copyright paper51.com
void CDMSDlg::OnBtnDevret()
paper51.com
http://www.paper51.com
{
paper51.com
http://www.paper51.com
CDlgDevRetdlg;
paper51.com
copyright paper51.com
dlg.Setup(m_DBCnt,&m_logMngr);
paper51.com
http://www.paper51.com this->ShowWindow(SW_HIDE);
http://www.paper51.com
http://www.paper51.com dlg.DoModal();
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com this->ShowWindow(SW_SHOW);
内容来自www.paper51.com
copyright paper51.com
}
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com
http://www.paper51.com
void CDMSDlg::OnBtnInfodev()
内容来自www.paper51.com
http://www.paper51.com {
内容来自论文无忧网 www.paper51.com
paper51.com
CDlgDevdlg;
http://www.paper51.com
内容来自www.paper51.com
dlg.Setup(m_DBCnt,&m_logMngr);
内容来自www.paper51.com
copyright paper51.com
this->ShowWindow(SW_HIDE);
copyright paper51.com
copyright paper51.com
dlg.DoModal();
内容来自www.paper51.com
内容来自www.paper51.com
this->ShowWindow(SW_SHOW);
http://www.paper51.com
内容来自论文无忧网 www.paper51.com }
http://www.paper51.com
内容来自论文无忧网 www.paper51.com
copyright paper51.com
void CDMSDlg::OnBtnInfoin()
paper51.com
内容来自论文无忧网 www.paper51.com {
copyright paper51.com
内容来自论文无忧网 www.paper51.com CDlgViewDevIndlg;
http://www.paper51.com
http://www.paper51.com
dlg.Setup(m_DBCnt,&m_logMngr);
paper51.com
内容来自论文无忧网 www.paper51.com
this->ShowWindow(SW_HIDE);
paper51.com
内容来自www.paper51.com dlg.DoModal();
copyright paper51.com
paper51.com this->ShowWindow(SW_SHOW);
内容来自www.paper51.com
copyright paper51.com }
http://www.paper51.com
内容来自论文无忧网 www.paper51.com 内容来自论文无忧网 www.paper51.com
voidCDMSDlg::OnBtnInfoneed()
copyright paper51.com
http://www.paper51.com {
paper51.com
copyright paper51.com CDlgViewNeeddlg;
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com
dlg.Setup(m_DBCnt,&m_logMngr);
内容来自论文无忧网 www.paper51.com
copyright paper51.com
this->ShowWindow(SW_HIDE);
http://www.paper51.com
copyright paper51.com dlg.DoModal();
内容来自论文无忧网 www.paper51.com
copyright paper51.com this->ShowWindow(SW_SHOW);
http://www.paper51.com
内容来自论文无忧网 www.paper51.com
}
http://www.paper51.com
copyright paper51.com 内容来自www.paper51.com
void CDMSDlg::OnBtnInfoout()
内容来自www.paper51.com
paper51.com {
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com
CDlgViewOutdlg;
paper51.com
内容来自www.paper51.com dlg.Setup(m_DBCnt,&m_logMngr);
paper51.com
copyright paper51.com this->ShowWindow(SW_HIDE);
paper51.com
paper51.com
dlg.DoModal();
paper51.com
内容来自www.paper51.com this->ShowWindow(SW_SHOW);
copyright paper51.com
内容来自www.paper51.com }
paper51.com
paper51.com
内容来自www.paper51.com
void CDMSDlg::OnBtnInforet()
copyright paper51.com
paper51.com
{
http://www.paper51.com
paper51.com
CDlgViewRetdlg;
http://www.paper51.com
copyright paper51.com dlg.Setup(m_DBCnt,&m_logMngr);
内容来自www.paper51.com
paper51.com this->ShowWindow(SW_HIDE);
http://www.paper51.com
paper51.com dlg.DoModal();
http://www.paper51.com
copyright paper51.com this->ShowWindow(SW_SHOW);
内容来自www.paper51.com
paper51.com
}
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com
copyright paper51.com
void CDMSDlg::OnBtnNeed()
http://www.paper51.com
http://www.paper51.com {
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com
CDlgDevNeeddlg;
内容来自www.paper51.com
copyright paper51.com dlg.Setup(m_DBCnt,&m_logMngr);
http://www.paper51.com
内容来自论文无忧网 www.paper51.com this->ShowWindow(SW_HIDE);
copyright paper51.com
内容来自论文无忧网 www.paper51.com
dlg.DoModal();
paper51.com
内容来自www.paper51.com
this->ShowWindow(SW_SHOW);
内容来自www.paper51.com
http://www.paper51.com
}
内容来自www.paper51.com
copyright paper51.com
内容来自www.paper51.com
void CDMSDlg::OnBtnViewlog()
内容来自www.paper51.com
copyright paper51.com {
内容来自论文无忧网 www.paper51.com
copyright paper51.com
CDlgViewLogdlg;
paper51.com
copyright paper51.com dlg.SetDBConnection(m_DBCnt);
paper51.com
paper51.com this->ShowWindow(SW_HIDE);
copyright paper51.com
http://www.paper51.com dlg.DoModal();
内容来自论文无忧网 www.paper51.com
paper51.com
this->ShowWindow(SW_SHOW);
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com
}
copyright paper51.com
内容来自论文无忧网 www.paper51.com
内容来自论文无忧网 www.paper51.com
void CDMSDlg::OnBtnViewprt()
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com {
内容来自论文无忧网 www.paper51.com
内容来自论文无忧网 www.paper51.com CDlgViewReportdlg;
内容来自论文无忧网 www.paper51.com
http://www.paper51.com
dlg.Setup(m_DBCnt,&m_logMngr);
http://www.paper51.com
内容来自www.paper51.com this->ShowWindow(SW_HIDE);
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com dlg.DoModal();
内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com
this->ShowWindow(SW_SHOW);
paper51.com
http://www.paper51.com
}
copyright paper51.com
内容来自论文无忧网 www.paper51.com
内容来自论文无忧网 www.paper51.com
void CDMSDlg::OnDestroy()
copyright paper51.com
内容来自www.paper51.com {
内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com
CDialog::OnDestroy();
内容来自论文无忧网 www.paper51.com
paper51.com
内容来自www.paper51.com
copyright paper51.com m_DBCnt->Close();
内容来自www.paper51.com
http://www.paper51.com }
copyright paper51.com
paper51.com
内容来自论文无忧网 www.paper51.com
void CDMSDlg::OnBtnAbout()
内容来自www.paper51.com
paper51.com
{
paper51.com
内容来自论文无忧网 www.paper51.com CAboutDlgdlg;
copyright paper51.com
paper51.com
dlg.DoModal();
copyright paper51.com
内容来自论文无忧网 www.paper51.com
}
内容来自www.paper51.com
copyright paper51.com
内容来自www.paper51.com
void CDMSDlg::OnBtnHelp()
paper51.com
paper51.com {
http://www.paper51.com
内容来自论文无忧网 www.paper51.com WinExec("hh.exe dms.chm",SW_SHOW);
paper51.com
内容来自论文无忧网 www.paper51.com }
内容来自论文无忧网 www.paper51.com
copyright paper51.com
6.2 其它系统界面
paper51.com
http://www.paper51.com
copyright paper51.com
copyright paper51.com
copyright paper51.com
copyright paper51.com
内容来自www.paper51.com
内容来自www.paper51.com
paper51.com
内容来自论文无忧网 www.paper51.com
paper51.com
paper51.com
http://www.paper51.com
内容来自www.paper51.com
内容来自www.paper51.com
内容来自www.paper51.com copyright paper51.com
http://www.paper51.com 内容来自论文无忧网 www.paper51.com
copyright paper51.com copyright paper51.com
paper51.com
http://www.paper51.com
内容来自www.paper51.com
7 结束语
内容来自www.paper51.com
copyright paper51.com
内容来自论文无忧网 www.paper51.com
通过本次毕业设计,让我深切感悟到,作为一个编程人员,这次设计大大提高了我们综合运用所学理论知识解决实际问题和不断创新的能力。我设计的程序在我的工作中起到了至关重要的作用
内容来自www.paper51.com
内容来自www.paper51.com
copyright paper51.com
致谢:
内容来自www.paper51.com
内容来自www.paper51.com 在这篇论文完成之际,在此我衷心的感谢我的指导老师。老师在百忙之抽出时间来为我指导讲解,并提出了许多宝贵的意见和建议,我的论文才得以顺利完成。在即将离开学校之际,再次衷心感谢我系所有老师对我的帮助,谢谢你们为我的大学生活划上一个完满的句号。
http://www.paper51.com
copyright paper51.com
参考文献1、编著:胡峪 刘静. VC++高级编程技巧与示例. 西安电子科技大学出版社
copyright paper51.com
http://www.paper51.com 2、VC++ 深入详解 孙鑫等编著 电子工业出版社
paper51.com
http://www.paper51.com 3、编著:袁玫 林志英 刘劲松. 网络数据库应用教程 人民邮电出版社.
内容来自www.paper51.com
paper51.com paper51.com