首页 VC论文物资管理系统毕业论文

VC论文物资管理系统毕业论文

举报
开通vip

VC论文物资管理系统毕业论文VC论文物资管理系统毕业论文 贵州省广播电视大学 毕业论文 物资管理系统 ---------前 言--------- 自1946年人类第一台计算机(ENIAC)问世以来,50多年过去了,计算机的软硬件发展日新月异,突飞猛进。以个人电脑为例,硬件方面,以CPU、内存、硬盘为代表,CPU已发展到当今的P4 2.8GHZ,P?和P?已淡出历史舞台,成为昨日黄花;256M DDR内存,80G以上的7200转硬盘已成为标准配置。如此高性能的配置,就是和5年之前相比,也不知高出了多少倍。软件方面,已经从当初晦涩难懂的机...

VC论文物资管理系统毕业论文
VC论文物资管理系统毕业论文 贵州省广播电视大学 毕业论文 物资管理系统 ---------前 言--------- 自1946年人类第一台计算机(ENIAC)问世以来,50多年过去了,计算机的软硬件发展日新月异,突飞猛进。以个人电脑为例,硬件方面,以CPU、内存、硬盘为代表,CPU已发展到当今的P4 2.8GHZ,P?和P?已淡出历史舞台,成为昨日黄花;256M DDR内存,80G以上的7200转硬盘已成为 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 配置。如此高性能的配置,就是和5年之前相比,也不知高出了多少倍。软件方面,已经从当初晦涩难懂的机器语言、汇编语言过渡到今天的第四代语言甚至第五代语言,第四代语言(4GL)是完全非过程化的语言,这种语言只要求用户指明将要干什么,而无需指明怎么干,如何做这一工作,则完全交给软件模块来自动处理,大大提高了软件的开发效率和软件质量,使软件开发人员从繁重的脑力、体力劳动中解脱出来。 伴随着计算机软硬件技术的发展,计算机的技术和应用获得了突飞猛进的发展,计算机已经在大致如下的领域得到广泛的应用: 1、科学计算:如在天文学、生物学、空气动力学、核物理学、地质勘探、新材料的研制和天气预报等领域中。 2、数据处理:与科学计算不同,数据处理涉及的数据量大,但计算方法较简单。 3、过程控制:以下内容略 随着计算机的普及和发展,人们开始利用计算机解决越来越多的实际问题,虽然现在软件的数量如雨后春笋,但依然不能满足用户的各种需要,尤其是用于特定教学管理方面的软件。本文是针对我校学习成绩管理方面的需求进行开发设计而形成一套适合自身应用的计算机管理信息系统。论文对系统进行了较为全面的业务需求 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 ,并进行有针对性的系统设计,包括开发平台和工具选型、功能模块设计、数据库设计等,最后选用Visual C++ 6.0和Access数据库进行了系统实现,并进行了相应的系统测试和调试 随着当代计算机技术的发展,硬件运行速度的不断提高,软件功能越来越多,越来越完善,它的应用范围也就不断地扩大,已被广泛地应用于科研部门,金融系统、工厂、学校,直至进入千家万户。用手工来完成物资管理 贵州省广播电视大学 毕业论文 系统是一个较烦琐的过程,既费时、费力,又不利于一个月或更久时间的结 算,而进行计算机管理可以大大提高工作效率,而且数据处理也更为精确。 本文用Visual c++6.0 设计用户界面, access 97做数据库 摘 要: 物资管理系统是信息管理系统(MIS),其开发主要包括后台数据库的建 立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致 性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备, 易使用等特点。 经过分析,使用 MICROSOFT公司的 VISUAL c++开发工具,利用其提供的各 种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智 能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求 迭代,不断修正和改进,直到形成用户满意的可行系统。物资管理是一般工业, 商业企业生产管理环节中重要的一环,需要对物资基本信息管理,物资调配信 息等内容进行完整的监控,这样才能更有效地利用物资管理.。 关键词:ADO, 面向对象, 信息管理系统 ABSTRACT Goods and materials administrative system information management system( MIS), it develop and include backstage supporter foundation and maintain and front development two of application program of data base mainly. Demand and set up data consistency and integrality strong, data security kind storehouse as to the former. Require to the latter that the function of the application program is complete, apt characteristic of using etc.. Through analyse , use MICROSOFT ++ developing instrument, c of VISUAL, of Company , utilize various kinds of that offer it face developing instrument of marriage partner, Data window this can convenient succinct to handle the intelligent marriage partner of the data base especially, Set up system use prototype, then carry on to initial prototype system demand changes and takes the place of within short time at first, Revise and improve constantly, until forming user's satisfied feasible system. The handing of goods and materials is general industry, an important ring in the production management of merchandising concern link, Need to goods and materials basic information management, goods and materials allocate information,etc. content go on intact control, Could utilize handing of goods and materials more effectively in this way. This text introduction make with interface and make the data base with vc ++ with data base sql sever 2000. Keywords: ADO,FACE TO OBJECT,MIS(Management Information System) 目 录 前言 ………………………………………………………………………1 摘要………………………………………………………………………..2 目录………………………………………………………………………..2 第一章 系统设计„„„„„„„„„„„„„„„„„„„„„„3 1.1 系统功能分析„„„„„„„„„„„„„„„„„„„„.3 贵州省广播电视大学 毕业论文 1.2 系统功能模块设计„„„„„„„„„„„„„„„„„„..5 第二章 数据库设计„„„„„„„„„„„„„„„„„„„„„.5 2.1 数据库需求分析 2.2 数据库概念结构设计 2.3 使用逻辑结构设计 第三章 数据库结构的实现„„„„„„„„„„„„„„„„„„.55 3.1 创建系统用户表格„„„„„„„„„„„„„„„„„„„..6 3.2 创建物资基本信息表格…………………………………………..6 3.3 创建入库物资信息…………………………………………………….6 3.4 创建出库物资信息表格……………………………………………….6 第四章 物资管理信息系统主窗体的创建„„„„„„„„„„„„„6 4.1所用工具VC++的介绍„„„„„„„„„„„„„„„„„„10 4.2 数据库ACCESS简介„„„„„„„„„„„„„„„„„„..10 4.3创建 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 项目-material_mis„„„„„„„„„„„„„„„„12 4.4创建主窗体菜单„„„„„„„„„„„„„„„„„„„„„12 4.5创建公用模块„„„„„„„„„„„„„„„„„„„„„..13 第五章 系统用户管理模块的创建„„„„„„„„„„„„„„„„14 第六章 物资基本信息模块的创建„„„„„„„„„„„„„„„.18 6.1 添加物资基本信息„„„„„„„„„„„„„„„„„„„.19 6.2修改物资基本信息„„„„„„„„„„„„„„„„„„„23 6.3删除物资基本信息„„„„„„„„„„„„„„„„„„„.26 6.4查询物资基本信息„„„„„„„„„„„„„„„„„„„26 6.5帮助界面的设置„„„„„„„„„„„„„„„„„„„„.29 第七章 结束语…………………………………………………………..30 致谢………………………………………………………………30 参考文献…………………………………………………………31 附录:……………………………………………………………………31 第一章 系统设计介绍 1.1 系统功能分析 系统开发的总体任务就是实现物资信息的系统化、 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 化和自动化。 随着电脑诞生以来,人类聪明的头脑总是想:“要做的事简单化“。因此 在我们大、中、小宾馆,其繁重信息管理使他们聪明的头脑想到:”由电脑来 管理这些事务,又简单又省事。所以人们常说:“计算机已经成为我们学习和 工作的得力助手了,少了它生命中没有了阳光~“。 今天,计算机的价格已经十分低廉,性能却有了长足的进步。它已经被应 用于许多领域,计算机之所以如此流行的原因主要有以下几个方面: 贵州省广播电视大学 毕业论文 首先,计算机可以代替人工进行许多繁杂的劳动; 其次,计算机可以节省许多资源; 第三,计算机可以大大的提高人们的工作效率; 第四,计算机可以使敏感文档更加安全,等等。 可见,开发一套物资信息管理系统已经是必要的了。物资管理是企业管理的一个重要内容。随着时代的进步,企业也逐渐变的庞大起来。如何管理好企业内物资的信息,成为企业管理中的一个重要问题。在这种情况下,一个可以规范化,自动化的物资系统就显的非常重要。 最初的物资管理,都是靠人力来完成。当企业规模比较小的时候,人力 可以 完成。随着企业规模越来越大,企业的物资数量越来越多,依然维持着人力进管理必 然会造成工作效率底,工作错误曾高等问题。管理信息系统(简称MIS)是介于信息论,经济管理理论,统计学与运筹学及计算机科学之间的一门边缘性,综合性,系统性的交叉科学,它是随着管理科学,信息技术,计算机技术等的发展而产生和发展起来的。 XXX管理系统是典型的信息管理系统,其开发主要包括后台数据库 的建立和维护以及前端的应用程序的开发两个方面。对于前者 要求建立数据的一致性和完整性,对于后者则要求应用程序功 能的完备,易用等的特点。基于上述考虑本系统主要利用VC6.0 作前端的应用开发工具 ,利用Sql或Acess作为后台的数据库, 利用WINDOWS作为系统平台开发的XXXX管理系统。另外本XXX 管理系统利用软件工程化思想和方法,总体上是采用结构化生 命法进行系统分析和设计的,而系统实现等步骤则采用了原型 法和面对对象的方向 物资管理系统就是把分散的企业物资信息实行统一,集中,规范的收集 管理。建立分类编号管理,电脑存贮查询以及防火,防潮,防盗等现代化,专 业化的 管理系统。为企事业的管理解除了后顾之忧。 系统功能分析是在系统开发总体任务的基础上进行的。本系统中的物资管理信息系统需要完成的主要功能有: , 有关物资基本信息的输入,包括物资编号、物资名称、规格型号、种 类和计量单位等。 , 物资基本信息的查询。 , 物资基本信息的修改。 , 入库物资基本信息的输入。 , 入库物资基本信息的查询。 , 入库物资基本信息的修改。 , 出库物资基本信息的输入。 贵州省广播电视大学 毕业论文 , 出库物资基本信息的查询。 , 出库物资基本信息的修改。 , 物资余额信息的查询。 , 物资余额信息的浏览 1.2 系统功能模块设计 对上述的功能进行集中,分块和分析,按照结构化程序设计的要求,得到下图 物资管理信息系 统 物物物物 资资资资 余出入基系 统额库库本 信信信信管 理息息息息 管管管管 理理理理 物物出出出入入入物物物密 资资库库库库库库资资资码 余余物物物物物物基基基管密用 码户额额资资资资资资本本本理 信信信信信信信信信信信管管 理理息息息息息息息息息息息 游查查修添查修添查修添 览询询改加询改加询改加 图(1)系统功能模块图 第二章 数据库设计 设计数据库系统时应该首先充分了解用户的各个方面的需要,包括现 有的以及将来可能增加的需求。数据库设计一般包括如下几个步骤: , 数据库需求分析。 , 数据库概念结构设计。 , 数据库逻辑结构设计。 第三章 数据库结构的实现 Access2000 就是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索。Access 的优点在于它能使用数据表示图或自定义窗体收集信息。数据表示图提供了一种类似于 Excel 的电子表格,可以使数据库一目了然。另外,Access 允许创建自定义报表用于打印或输出数据库中的信息。Access也提供了数据存储库,可以使用桌面数据库文件把数据库文件置于网络文件服务器,与其他网络用户共享数据库。Access 是一种关系数据库工具,关系数据库是已开发的最通用的数据库之一。如上所述,Access 作为关系数据库开 贵州省广播电视大学 毕业论文 发具备了许多优点,可以在一个数据包中同时拥有桌面数据库的便利和关系数据库的强大功能。经前面的系统需求分析和概念结构设计以后,得到数据库逻辑结构。现在就可以在access 2000,实现上面设计的数据库逻辑结构,然后转化为access97.下面给出创建这些表格的清单。 3.1 创建系统用户表格 user_info 用户名称 用户密码 3.2 创建物资基本信息表格 material 物资编号 物资名称 物资规格 类别 计量单位 3.3创建入库物资信息表格 msave 入库编号 入库物资编号 物资名称 规格型号 种类 单位 数量 单价 金额 入库时间 经办人 保管人 仓库 备注 3.4 创建出库物资信息表格 muse 出库编号 出库物资编号 物资名称 规格型号 种类 单位 数量 单价 金额 入库时间 领用人 经办人 仓库 备注 3.5创建物资余额信息表格 msurplus 物资编号 物资名称 规格型号 类别 计量单位 数量 金额 仓库 备注 第四章 物资管理信息系统主窗体的创建 4.1 使用工具VC++的介绍 所用开发语言简介 4.1.1 VC++的特点 Visual C++是功能最为强大可视化开发工具,它不仅支持传统的软件开发方法,更重要的是它能支持面向对象、可视化的开发风格。因此Visual C++又称作是一个集成开发工具,它提供了软件代码自动生成和可视化的资源编辑功能。 Visual C++具有的优点:提供了面向对象的应用程序框架MFC(Microsoft Foundation Class),简化了程序员的编程工作,提高了模块的可重用性;提供了基于CASE技术的可视化软件的自动生成和维护工具AppWizard、ClassWizard、Visual Studio、WizardBar等,实现了直观、可视的程序设计风格,方便地编和管理各种类,维护程序的源代码;封装了Windows的API函数、USER、KERNEL、GDI函数,简化了编程时创建、维护窗口的许多复杂的工作。 4.1.2本程序中使用的VC++控件及其属性简介 (1)CStatic(静态控件):显示一些几乎固定不变的文字或图形描述。 (2)CButton(按钮控件):产生某些命令或改变某些选项设置。 (3)CEdit(编辑框控件):完成文字的输入输出双向操作,查看并编辑文字。 贵州省广播电视大学 毕业论文 (4)CListBox(列表框控件):显示一个列表,让用户从中选取一个或多个项。 (5)CComboBox(组合框):将列表框和编辑框有机地组合在一起,可选择列表中已有的项,还可以编辑出新的项。 microsoft visual c++6.0提供了良好的集成开发环境,在这一环境下用户可以输入自己的程序,调试并运行.为了方便用户快速开发程序, visual c++不仅编译代码,而且产生代码.可以在几分钟之内就可以生成一个windows应用程序,所要做的只是告诉appwizard生成一个具有模板代码的"起始应用程序".appwizard是一个非常有效的辅助开发工具,能生成许多种应用程序,但对于大多数的人来说,想要的是可执行程序.appwizard不仅能够生成可执行程序,而且它还生成了每个程序所必要的模板代码-类,对象和函数.(1)appwizard提供了三种可选择的应用程序类型,并为每一种类型生成不同的代码和类.三种可选择的程序类型如下:1,单文档界面应用程序逻辑 这种应用程序一次只能打开一个文档:当选择file菜单的open或new时,当前打开的文件在新文件打开或建立前被关闭.在windows中notepad应用程序就是这种文档的典型代表.2 多文档界应用程序 多文档应用程序一次可以打开多个文档(通常是多个文件),在菜单栏上有Windows菜单并且在File菜单上有close先项.同时打开的多个文档可以通过close命令进行有选择地关闭.在Windows中如果希望一个文档有多个视图,则必须建立多文档视图.Windows中的Word或Excel都是多文档的例子.3 基于对话框的应用程序 在这一种应用程序中,它没有文档也没有菜单,整个程序看起来就是一个对话框.Windows的磁盘扫描应用程序就是一个基于对话框的应用程序例子.(2)AppWizard允许用户选择是否需要文档/视图结构支持.如果需要AppWizard就在应用程序中自动生成了基于CDocument类的文档/视图结构,否则生成没有文档/视图结构的应用程序(在这种情况下,多一个磁盘文件打开一个文档视图时将不包含MFC支持). (3)AppWizard生成可执行应用程序允许用户选择是否支持数据库(在后面的任务中将详细介绍对数据库的支持).有关数据库支持的选项一共有四个. 4 None 不是编写数据库应用程序. 5 Header files only 不从CForm View 派生自己的视图或有一个Record菜单. 6 Database iew without file support 从CForm View 派生自己的视图并有一个Record菜单,但不需要对文档进行序列化,从而可以借助CRecordset类更新数据库记录.7 Database iew with file support 从CForm View 派生自己的视图并有一个Record菜单,同时又需要对文档进行序列化.(4)AppWizard提供了确定应用程序界面外观的选项.影响界面外观的选项有:8 Docking Toolbar AppWizard为用户创建了工具栏,用户在以后可以利用Resource View 对它进行编辑.如:删除不要的按钮,增加新的按钮.9 贵州省广播电视大学 毕业论文 Initial status bar AppWizard生成了初始状态栏以显示菜单提示和其它消息,用户可以在以后对状态栏进行编程以显示自己所需要显示的信息.用户要以在状态栏上增加指示器或其它组件. 下面开始使用visual c++6.0来编写数据库系统的客户端程序。 所用开发语言简介 VC++的特点 Visual C++是功能最为强大可视化开发工具,它不仅支持传统的软件开发方法,更重要的是它能支持面向对象、可视化的开发风格。因此Visual C++又称作是一个集成开发工具,它提供了软件代码自动生成和可视化的资源编辑功能。 Visual C++具有的优点:提供了面向对象的应用程序框架MFC(Microsoft Foundation Class),简化了程序员的编程工作,提高了模块的可重用性;提供了基于CASE技术的可视化软件的自动生成和维护工具AppWizard、ClassWizard、Visual Studio、WizardBar等,实现了直观、可视的程序设计风格,方便地编和管理各种类,维护程序的源代码;封装了Windows的API函数、USER、KERNEL、GDI函数,简化了编程时创建、维护窗口的许多复杂的工作。 3.1.2本程序中使用的VC++控件及其属性简介 (1)CStatic(静态控件):显示一些几乎固定不变的文字或图形描述。 (2)CButton(按钮控件):产生某些命令或改变某些选项设置。 (3)CEdit(编辑框控件):完成文字的输入输出双向操作,查看并编辑文字。 (4)CListBox(列表框控件):显示一个列表,让用户从中选取一个或多个项。 (5)CComboBox(组合框):将列表框和编辑框有机地组合在一起,可选择列表 中已有的项,还可以编辑出新的项。 系统数据访问接口的选择 Visual C++中可用的数据访问对象接口有三种:ODBC(Open Database Connectity,开发数据库连接)、DAO(Data Access Objects,数据访问对象)及OLE DB(OLE data Base,OLE数据库)。 1(ODBC(Open Database Connectity,开发数据库连接) ODBC提供了应用程序接口(API),使得任何一个数据库都可以通过ODBC驱动器与指定DBMC相联,用户的程序就可以通过调用ODBC驱动管理器中相应的驱动程序达到管理数据库的目的。作为Microsoft Windows Open Standards Architecture(WOSA,Windows开放式服务体系结构)的主要组成部分,ODBC一直沿用至今。 2.DAO(Data Access Objects,数据访问对象) 贵州省广播电视大学 毕业论文 DAO 提供了一种通过程序代码创建和操纵数据库的机制。多个DAO 对象构成了一个体系结构,在这个结构里,各个DAO 对象协同工作,通过 Microsoft Jet 数据库访问数据库中的数据和数据库的结构定义。可以访问的数据库类型主要有:Microsoft Jet 数据库、ODBC 数据源、可安装的ISAM数据库。 DAO 是我们可以通过程序访问和操纵本地的或远程的数据和数据定义,管理数据库中的对象或结构。DAO 支持两种不同的数据库环境——称为工作区(Workspace). Microsoft Jet Workspace ——这是一种使用Microsoft Jet 数据库引擎来访问数据源的工作区。 ODBC Direct Workspace ——这是一种使用 ODBC Direct 来直接访问一个ODBC 数据源,并绕过Microsoft Jet 数据库引擎的工作区。可通过ODBC访问数据库服务器,而无须安装Microsoft Jet 数据库引擎。 3(OLE DB(OLE data Base,OLE数据库)。 OLE DB试图提高一种统一的数据访问接口,并能处理除了标准的关系型数据库中的数据之外,还能处理包括邮件数据、Web上的文本或图形、目录服务(Directory Services),以及主机系统中的IMS和VSAM数据。OLE DB提供一个数据库编程COM(组件对象模型)接口,使得数据的使用者(应用程序)可以使用同样的方法访问各种数据,而不用考虑数据的具体存储地点、格式或类型。这个COM接口与ODBC相比,其健壮性和灵活性要高的多。但是,由于OLE DB的程序比较复杂,因而对于一般用户来说使用ODBC和DAO方式已能满足一般数据库处理的需要 Access介绍 Access是Microsoft Office办公套件中一个极为重要的组成部分。刚开始时微软公司是将Access单独作为一个产品进行销售的,后来微软发现如果将Access捆绑在OFFICE中一起发售,将带来更加可观的利润,于是第一次将Access捆绑到OFFICE97中,成为OFFICE套件中的一个重要成员。现在它已经成为Office办公套件中不可缺少的部件了。自从1992年开始销售以来,Access 已经卖出了超过6000万份,现在它已经成为世界上最流行的桌面数据库管理系统。后来微软公司通过大量地改进,将Access的新版本功能变得更加强大。不管是处理公司的客户订单数据;管理自己的个人通讯录;还是大量科研数据的记录和处理,人们都可以利用它来解决大量数据的管理工作。 建立一个数据库我们有多种选择,现在市场上有各种各样的数据库,而且每一种数据库都有其自身的特点,不能说哪一种更好,只能在其中寻找一种能更好地适应系统需求、更好地满足用户的要求以及适应开发人员的习惯。在本系统中,做为图书仓库管理系统是一个比较小的应用系统,它所产生和处理的数据量也比较小。因此,没有必要使用像SQL Server和Oracle这样的大型数据库。我首先想到的数据库是Borland公司的Paradox数据库。另外,Microsoft 贵州省广播电视大学 毕业论文 Office中的Access数据库在计算机上的应用比较普及,是开发小型数据库系统 的比较理想的选择,所以,在本系统中我选择了Access数据库。 Access做为一个数据库管理系统,它被集成在Microsoft Office中。Access数据库处理的基本结构,采取关系型数据库模式。与其他的数据库系统相比, Access更加简单易学,一个普通的计算机用户可以很快地掌握它。Access 2000的功能十分强大,利用它可以方便地实现对信息保存、维护、查询、统计、打 印、交流、发布,而且它可以十分方便地与Office其他组件交流数据,这些功 能对一个一般用户而言已经足够了。 4.1创建工程项目-material_mis 启动visual c++6.0后,从“file”菜单中选“new”命令,然后,单击“new”对话框中的“projects”选项卡,选择工程模板中的“mfc appwizard(exe)”选项,并在“project_name”中输入工程的名称:material_mis,在location中选择保存这个工程的位置:c:\vc,其他使用系统 提供的默认选项,单击“OK”按钮,就会进入mfc appwizard,这个向导一共 有6步,step1对话框中选中“single document”选项。单击“next”按钮,进入step 2 of 6对话框,这一步要选择需要的数据库,因为涉及到数据库的 使用,所以在这里选中“header files only”选项,意思是在这个实例中只使用头文件种类所包含的数据库。单击“next”按钮,进入step 3 of 6对话 框,这里保持系统给定的默认值。单击“next”按钮,进入 step 4 of 6对 话框,在这里选中“3dcontrols”和“initial status bar”选项,其他选项都不需要选中。单击“next”按钮进入下一步,这里保持系统给定的默认值. 单击“next”按钮进入下一步,进入mfc向导的最后一步,在该对话框中,保 证base class的下拉列表中选择的是cview,其他的保持系统提供的默认值。 单击“finish”按钮,会出现一个“new project information”对话框,确认信息无误后,单击“ok”按钮,完成创建material_mis工程。 4.2创建主窗体菜单 完成上面的工作后,在“workspace”中选择“recourceview”命令,然后双击menu文件夹,再双击“idr_mainframe”项目,单击右边窗口中的“文件”菜单,双击“文件”或者敲enter键,就会出现“menu item properties”对话框,在这个对话框中更改菜单项的内容,更改后的内容如图2示,第一级 菜单的设置都 和图3中的设置方法相同,二级菜单的设置方法如图3. 贵州省广播电视大学 毕业论文 图2 图3 使用上面所讲述的设置方法,最终创建出如表4的菜单结构。 表4 菜单结构 菜单名称 id 系统 修改密码 ID_MAINMENU_CHANGEPWD 添加用户 ID_MAINMENU_APPENDACCOUNT 退出系统 ID_APP_EXIT 物资基本信息管理 添加物资基本信息管理 ID_MENU_ADDBASICINFO 修改物资基本信息管理 ID_MENU_ALTERBASICINFO 删除物资基本信息管理 ID_MENU_DELBASICINFO 查询物资基本信息管理 ID_MENU_SEARCHBASICINFO 物资入库信息管理 添加物资入库信息 ID_MENU_ADDININFO 贵州省广播电视大学 毕业论文 修改物资入库信息 ID_MENU_ALTERININFO 删除物资入库信息 ID_MENU_DELININFO 查询物资入库信息 ID_MENU_SEARCHININFO 物资出库信息管理 添加物资出库信息 ID_MENU_ADDOUTINFO 修改物资出库信息 ID_MENU_ALTEROUTINFO 删除物资出库信息 ID_MENU_DELOUTINFO 查询物资出库信息 ID_MENU_SEARCHOUTINFO 物资余额信息管理 查询物资余额信息 ID_MENU_SEARCHSURPLUSINFO 帮助 关于 4.3创建公用模块 在这个系统中,频繁地使用到了对数据库的访问,修改等操作,所以把 针对数据库的一些公共操作集中起来,可以使代码更加规范和容易维护。在 classview中,利用鼠标右键单击“cmaterial_misapp”项目,选择“add member variable”选项,然后依次添加这个工程中要使用到的变量: public: CString m_sCurrentUser; int m_iLoginCount; _RecordsetPtr m_pADOSet; private: _ConnectionPtr ADOConn; //定义ado数据 库连接对象指针 选择 add member function添加函数 bool ADOExecute(_RecordsetPtr&ADOSet,_variant_&strSQL); 最后手工添加一个外部变量的声明: extern Cmaterial_MISApp theApp; 在visual c++中进行数据库操作一定要引进ado类,所在把下面这段 代码添加到这个工程中的stdafx.h中,才能对记录集进行操作。 #import "C:\Program files\common files\System\ado\msado15.dll" no_namespace \ rename("EOF","EndOfFile") \ rename("LockTypeEnum","newLockTypeEnum")\ rename("DataTypeEnum","newDataTypeEnum")\ 贵州省广播电视大学 毕业论文 rename("FieldAttributeEnum","newFieldAttributeEnum")\ rename("EditModeEnum","newEditModeEnum")\ rename("RecordStatusEnum","newRecordStatusEnum")\ rename("ParameterDirectionEnum","newParameterDirectionEnum")在 cmaterial_misapp类的initistance()函数中添加如下代码: m_iLoginCount = 0; // 创建ADO连接对象 if( FAILED(::CoInitialize(NULL)) ) { AfxMessageBox("ADO Init failed"); return false; } try { { ADOConn.CreateInstance(__uuidof(Connection)); ADOConn->Open(_bstr_t("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+GetCurDir()+"ylz.mdb"),_bstr_t(""),_bstr_t(""),adModeUnkno wn); } // 捕捉例外 catch(_com_error &e) { CString err; err.Format("%s", (char*)(e.Description()) ); AfxMessageBox(err); } catch(...) { AfxMessageBox("Unknown Error..."); } // 初始化ADO记录集 添加以上代码后,就完成了打开数据库的工作,同时添加下面的代码, 来设置窗口的名称: m_pMainWnd->SetWindowText(_T("物资管理信息系统")); 在函数中bool ADOExecute(_RecordsetPtr &ADOSet, _variant_t &strSQL)中添加如下代码: bool CMaterial_MISApp::ADOExecute(_RecordsetPtr &ADOSet, _variant_t &strSQL) { if ( ADOSet->State == adStateOpen) ADOSet->Close(); 贵州省广播电视大学 毕业论文 try { ADOSet->Open(strSQL, ADOConn.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdUnknown); return true; } catch(_com_error &e) { CString err; err.Format("ADO Error: %s",(char*)e.Description()); AfxMessageBox(err); return false; } } 最后添加关闭数据库连接的函数。选择ADD Virtual Function添加一个虚函数,重载系统提供的ExitInstance()函数,填写代码如下: int CMaterial_MISApp::ExitInstance() { // TODO: Add your specialized code here and/or call the base class //释放ADO连接对象 if( adStateOpen == ADOConn->State ) ADOConn->Close(); ADOConn.Release(); // 释放ADO记录集 if(adStateOpen==m_pADOSet->State) m_pADOSet->Close(); m_pADOSet.Release(); return CWinApp::ExitInstance(); } 通过以上的编写,完成了对数据库的基本操作,为下面的工作提供了最基本的功能。 第五章 系统用户管理模块的创建 用户管理模块主要实现: 5.1用户登录 该窗口中放置了三个静态文本框(Static)控件,在窗口的相应位置显示文字。放置了2个编辑框(Edit),一个供用户输入登录的用户名(m_username),另一个供用户输入口令(m_passward),这个编辑框的属性要设成password。输入的值存放在编辑框控件对应的变量中,另外还放置了两个按钮控件 (Button)。如图5所示。 贵州省广播电视大学 毕业论文 5.2添加用户 为了数据库使用的安全,允许的用户和口令都预先存在数据库中,如果要 加入新的用户,必须修改数据库中对应的表。 5.3修改用户密码 为了保证数据库的安全,有时候需要经常修改用户的口令。本系统可以在应用程序执行过程中修改当前用户的口令。 程序清单: CLoginDLG::CLoginDLG(CWnd* pParent /*=NULL*/) : CDialog(CLoginDLG::IDD, pParent) { //{{AFX_DATA_INIT(CLoginDLG) m_sPWD = _T(""); m_sUSER = _T("Administrator"); //}}AFX_DATA_INIT } void CLoginDLG::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CLoginDLG) DDX_Text(pDX, IDC_LOGIN_PWD, m_sPWD); 贵州省广播电视大学 毕业论文 DDX_Text(pDX, IDC_LOGIN_USER, m_sUSER); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CLoginDLG, CDialog) //{{AFX_MSG_MAP(CLoginDLG) ON_BN_CLICKED(IDC_LOGIN_CAPTION, OnLoginCaption) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CLoginDLG message handlers void CLoginDLG::OnOK() { // TODO: Add extra validation here // Check UserName Vadilaty UpdateData(true); m_sUSER.TrimRight(" "); if ( ""==m_sUSER ) { AfxMessageBox(_T("请填写用户名"), MB_ICONEXCLAMATION); return; } _variant_t Holder, strQuery; strQuery = "select user_ID, user_PWD from user_Info where user_ID='"+m_sUSER+"'"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); int iCount = theApp.m_pADOSet->GetRecordCount(); if ( 0==iCount ) { theApp.m_iLoginCount++; if ( theApp.m_iLoginCount>2 ) { AfxMessageBox("没有这个用户\n三次输入均不正确,请核对 后再来", MB_ICONEXCLAMATION); CDialog::OnCancel(); return; } 贵州省广播电视大学 毕业论文 AfxMessageBox("没有这个用户,请重新输入用户名", MB_ICONEXCLAMATION); return; } CString sPWD; theApp.m_pADOSet->MoveFirst(); Holder = theApp.m_pADOSet->GetCollect("user_PWD"); sPWD = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; if ( 0!=sPWD.Compare(m_sPWD) ) { theApp.m_iLoginCount++; if ( theApp.m_iLoginCount>2 ) { AfxMessageBox("输入密码不正确\n三次输入均不正确,请核 对后再来", MB_ICONEXCLAMATION); CDialog::OnCancel(); return; } AfxMessageBox("输入密码不正确,请重新输入", MB_ICONEXCLAMATION); return; } // Get Login User theApp.m_sCurrentUser = m_sUSER; CDialog::OnOK(); } BOOL CLoginDLG::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here ((CEdit*)GetDlgItem(IDC_LOGIN_USER))->SetLimitText(15); ((CEdit*)GetDlgItem(IDC_LOGIN_PWD))->SetLimitText(10); // Set Caption Font //CFont m_Font; m_fMyFont.CreatePointFont(180,"华文彩云",NULL); ((CStatic 贵州省广播电视大学 毕业论文 *)GetDlgItem(IDC_LOGIN_CAPTION))->SetFont(&m_fMyFont, true); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CLoginDLG::OnLoginCaption() { // TODO: Add your control notification handler code here } 第六章物资基本信息模块的创建 本系统的主窗体创建如下: 其运行的部分代码如下所示: CMainFrame::CMainFrame() { // TODO: add member initialization code here } CMainFrame::~CMainFrame() { 贵州省广播电视大学 毕业论文 } int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; // fail to create } m_bmpBK.LoadBitmap(IDB_BITMAP_FLASH); return 0; } BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return TRUE; } 物资基本信息模块的创建 物资基本信息管理模块主要实现如下功能: , 添加物资基本信息。 , 修改物资基本信息。 , 删除物资基本信息。 , 查询物资基本信息。 6.1 添加物资基本信息对话框的创建 选择“物资基本信息管理/添加物资基本信息”菜单,将会出现图6所示的对 话框 贵州省广播电视大学 毕业论文 添加物资基本信息对话框 图6 在这个对话框上面放置多个文本框,用来输入物资基本信息:放置两个按钮, 用来确定是否添加物资基本信息;多个标签,用来提示文本框中需要输入的内 容。这些控件的属性见 表7 添加物资基本信息对话框中各个控件的属性设置 控件 属性 ID Label1 物资编号 IDC_STATIC Label2 物资名称 IDC_STATIC Label3 规格型号 IDC_STATIC Label4 类 别 IDC_STATIC Label5 计量单位 IDC_STATIC Edit Box1 IDC_BASICINFO_WZID Edit Box2 IDC_BASICINFO_WZNAME Edit Box3 IDC_BASICINFO_WZSPEC Edit Box4 IDC_BASICINFO_WZKIND Edit Box5 IDC_BASICINFO_WZUNIT Button1 IDOK Button2 IDCANCEL 选择“view/classwizard菜单,然后选择“message maps”标签页,在“class name”下拉列表中选“addbasicinfo”选项,在左边的“object ids”中选择idok,然后双击右边“messages”中的 bn_clicked 添加 onok()函数,在左边 选择addbasicinfo,然后在右边双击选择wm_initdialog,添加oninitdialog() 函数,选择“member variables”标签页,在“class name”下拉列表中仍然 贵州省广播电视大学 毕业论文 选择“addbasicinfo”,双击“control ids”中每一个id,添加变量,除了使 用这种方法添加变量和函数以外,用鼠标右键单击addbasicinfo为,选择弹 出菜单中的“add member variable”命令,然后在弹出对话框中添加变量。 对话框初始化的时候,根据变量m_bappend 来判断是添加还是修改,并显 示相应状态。为了响应addbasicinfo类对话框的初始化事件,为 oninitdialog()函数,添加如下代码: BOOL AddBasicInfo::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here ((CEdit*)GetDlgItem(IDC_BASICINFO_WZID))->SetLimitText(50); ((CEdit*)GetDlgItem(IDC_BASICINFO_WZNAME))->SetLimitText(50); ((CEdit*)GetDlgItem(IDC_BASICINFO_WZSPEC))->SetLimitText(50); ((CEdit*)GetDlgItem(IDC_BASICINFO_WZKIND))->SetLimitText(50); ((CEdit*)GetDlgItem(IDC_BASICINFO_WZUNIT))->SetLimitText(50); if (m_bAppend) { //更新对话框属性 SetWindowText(_T("添加物资基本信息")); } else { // 更新对话框属性 SetWindowText(_T("修改物资基本信息")); } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } 为了响应“确定”按钮的单击事件,为onok()函数添加如下代码:void AddBasicInfo::OnOK() { // TODO: Add extra validation here UpdateData(true); m_wzID.TrimRight(" "); m_wzName.TrimRight(" "); m_wzKind.TrimRight(" "); m_wzSpec.TrimRight(" "); m_wzUnit.TrimRight(" "); 贵州省广播电视大学 毕业论文 // 确定所有输入有效 CString sWarning=""; if ( ""==m_wzID ) sWarning=_T("物资编号"); else if ( ""==m_wzName ) sWarning=_T("物资名称"); else if ( ""==m_wzKind ) sWarning=_T("类别"); else if ( ""==m_wzSpec ) sWarning=_T("规格型号"); else if ( ""==m_wzUnit ) sWarning=_T("计量单位"); if ( ""!=sWarning ) { sWarning += _T("不能为空"); AfxMessageBox(sWarning, MB_ICONEXCLAMATION); return; } _variant_t strQuery; if (m_bAppend) { // 判断物资唯一性 strQuery = "select * from material where wzid='"+m_wzID+"'"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); int iCount = theApp.m_pADOSet->GetRecordCount(); if ( 0!=iCount ) { AfxMessageBox(_T("已经存在此物资的记录~"), MB_ICONEXCLAMATION); return; } } if (m_bAppend) { strQuery = "insert material (wzid, wzname, wzspec, wzkind, wzunit) \ values ('"+m_wzID+"', '"+m_wzName+"','"+m_wzSpec+"','"+m_wzKind+"','"+m_wzUnit+"')"; if ( theApp.ADOExecute(theApp.m_pADOSet, strQuery) ) { AfxMessageBox(_T("添加记录成功~"), MB_ICONINFORMATION); // 清空输入数据 m_wzID=m_wzName=m_wzSpec=m_wzKind=m_wzUnit=""; UpdateData(false); } 贵州省广播电视大学 毕业论文 else AfxMessageBox(_T("添加记录失败~"), MB_ICONEXCLAMATION); } else//修改记录 { strQuery = "Update material set wzname='"+m_wzName+"', wzspec='"+m_wzSpec+"', wzunit='"+m_wzUnit+",\ where wzid='"+m_wzID+"'"; if ( theApp.ADOExecute(theApp.m_pADOSet, strQuery) ) AfxMessageBox(_T("修改记录成功~"), MB_ICONINFORMATION); else AfxMessageBox(_T("修改记录失败~"), MB_ICONEXCLAMATION); } // Refresh RoomType List CMaterial_MISView* p = (CMaterial_MISView*)(((CMainFrame*)AfxGetMainWnd())->GetActiveView( )); p->RefreshMaterial(); if (!m_bAppend) CDialog::OnOK(); } 这个函数首先判断是否输入了内容,然后才进行下一下。在物资管理中,所有 物资都有唯一的编号,并且不同型号的物资对应不同的编号。所以程序中使用 判断是否有重复的ID来判断是否已经存在相同的物资。然后进行数据库操作。 最后根据选择的操作来显示相应的信息,如果是添加,则显示添加成功,并清 空所有文本框;如果是修改,则提示修改成功,然后更新所有记录的列表。 6.2修改物资基本信息窗体的创建 选择“物资基本信息管理|修改物资基本信息”菜单,将会出现窗体,窗体 中放置一个表格空件,用来显示数据库中的记录。 载入这个窗体的时候,就会调用OnMenuAlterbasicinfo()函数,添加方法 和上面的OnOK()的添加方法一样,只是Class Name要选择Material_MISView,下面其他On开始的函数都是这样添加的,其他的函数使用鼠标右键单击类名 添加。这个函数用来显示当前数据库中的记录,函数的代码如下: void CMaterial_MISView::OnMenuAlterbasicinfo() { // TODO: Add your command handler code here if ( m_ListCtrl && m_sCurrentList!=_T("物资出库列表") ) { m_ListCtrl.DestroyWindow(); CreateMaterialInfo(); return; } 贵州省广播电视大学 毕业论文 if ( !m_ListCtrl ) { CreateMaterialInfo(); return; } POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition(); if (pos == NULL) AfxMessageBox(_T("物资列表"), MB_ICONEXCLAMATION); else { AddBasicInfo dlg; dlg.m_bAppend = false; CString str; int iItem = m_ListCtrl.GetNextSelectedItem(pos); dlg.m_wzID=m_ListCtrl.GetItemText(iItem,0); dlg.m_wzName=m_ListCtrl.GetItemText(iItem,1); dlg.m_wzSpec=m_ListCtrl.GetItemText(iItem,2); dlg.m_wzKind=m_ListCtrl.GetItemText(iItem,3); dlg.m_wzUnit=m_ListCtrl.GetItemText(iItem,4); dlg.DoModal(); } } 选择要修改的记录,然后单击鼠标右键,就会触发 OnContextMenu(CWnd*pWnd,CPoint point)函数,函数的代码如下: void CMaterial_MISView::OnContextMenu(CWnd* pWnd, CPoint point) { // TODO: Add your message handler code here if ( ""==m_sCurrentList ) return; CMenu menu; if ( _T("物资列表")==m_sCurrentList ) menu.LoadMenu(IDR_MENU_BASICINFO); else if ( _T("物资入库列表")==m_sCurrentList ) menu.LoadMenu(IDR_MENU_IN); else if ( _T("物资出库列表")==m_sCurrentList ) menu.LoadMenu(IDR_MENU_OUT); CMenu* pMenu=menu.GetSubMenu(0); pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUT TON,point.x,point.y,this); return; } 出现弹出式菜单,如图8所示。 贵州省广播电视大学 毕业论文 图8 在弹出式菜单中选择:修改物资基本信息:命令,就会调用 onmenualterbasicinfo()函数,并且在文本框中自动载入数据,加入的代码如 下: void CMaterial_MISView::OnMenuAlterbasicinfo() { // TODO: Add your command handler code here if ( m_ListCtrl && m_sCurrentList!="物资列表" ) { m_ListCtrl.DestroyWindow(); CreateMaterialInfo(); return; } if ( !m_ListCtrl ) { CreateMaterialInfo(); return; } POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition(); if (pos == NULL) AfxMessageBox(_T("没有选中记录~"), MB_ICONEXCLAMATION); else { AddBasicInfo dlg; dlg.m_bAppend = false; CString str; int iItem = m_ListCtrl.GetNextSelectedItem(pos); //获得ID dlg.m_wzID = m_ListCtrl.GetItemText(iItem, 0); //获得名称 dlg.m_wzName = m_ListCtrl.GetItemText(iItem, 1); //获得规格 dlg.m_wzSpec = m_ListCtrl.GetItemText(iItem, 2); //获得类别 dlg.m_wzKind = m_ListCtrl.GetItemText(iItem, 3); //获得单位 dlg.m_wzUnit = m_ListCtrl.GetItemText(iItem, 4); 贵州省广播电视大学 毕业论文 dlg.DoModal(); } } 6.3删除物资基本信息 选择“物资基本信息管理/删除物资基本信息”菜单,将会出现记录列表。选择相应的记录,然后单击鼠标右键,在弹出式菜单中选择“删除物资基本信息”命令,就可以删除选中的记录。具体代码如下: void CMaterial_MISView::OnMenuDelbasicinfo() { // TODO: Add your command handler code here if ( m_ListCtrl && m_sCurrentList!="物资列表" ) { m_ListCtrl.DestroyWindow(); CreateMaterialInfo(); return; } if ( !m_ListCtrl ) { CreateMaterialInfo(); return; } //去除记录 POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition(); if (pos == NULL) AfxMessageBox(_T("没有选中记录~"), MB_ICONEXCLAMATION); else { int iItem; Cstring sID; _variant_t Holder,strQuery; while(pos) { iItem=m_listctrl.GetNextSelectedItem(pos); sID=m_listctrl.getitemtext(iitem,0); strquery= “delete from material where wzid= ““+sid+””; theapp.adoexecute(theapp.m_padoset,strquery); } }//刷新列表 RefreshMaterial(); } 6.4查询物资信息对话框的创建 选择“物资基本信息管理/查询物资基本信息”菜单。在这里可以按照各种方 贵州省广播电视大学 毕业论文 式以及它们的组合进行查询。 这里首先选择查询方式,然后输入查询内容。单击“确定”按钮,调用OnOK()函数,具体代码如下:void CCheckBasicInfoDLG::OnOK() { // TODO: Add extra validation here UpdateData(true); if ( !m_bNameChecked && !m_bSpecChecked) { AfxMessageBox(_T("请选择查询条件~"), MB_ICONEXCLAMATION); return; } m_sName.TrimRight(" "); m_sSpec.TrimRight(" "); if ( m_bNameChecked ) { if ( ""==m_sName ) { AfxMessageBox(_T("物资名称不能为空~"), MB_ICONEXCLAMATION); return; } } else m_sName="%"; if ( m_bSpecChecked ) { if ( ""==m_sSpec ) { AfxMessageBox(_T("物资型号不能为空~"), MB_ICONEXCLAMATION); return; } } else m_sSpec="%"; //刷新列表 _variant_t strQuery; 贵州省广播电视大学 毕业论文 strQuery = "select * from material where wzname like '"+m_sName+"' and wzspec like '"+m_sSpec+"'"; CMaterial_MISView* p = (CMaterial_MISView*)(((CMainFrame*)AfxGetMainWnd())->GetActiveView( )); p->RefreshMaterialWindow(strQuery); CDialog::OnOK(); } 程序首先判断查询方式,如果没有选择查询方式,就会提示用户选择查询方式; 然后在对输入的查询内容进行组合,在数据库中查询。代码如下: void CMaterial_MISView::CreateMaterialInfo() { m_sCurrentList = _T("物资列表"); m_StaticCtrl.SetWindowText(m_sCurrentList); CRect rect; GetClientRect(rect); rect.top += 30; m_ListCtrl.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT, rect, this, 1); m_ListCtrl.SetBkColor(RGB(177, 151, 240)); m_ListCtrl.SetTextColor(RGB(0,0,0)); m_ListCtrl.SetTextBkColor(RGB(177, 151, 240)); // Set EX-Style m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLIN ES|LVS_EX_HEADERDRAGDROP); // 创建标题 m_ListCtrl.InsertColumn(0,_T("物资编号"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(1,_T("物资名称"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(2,_T("规格型号"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(3,_T("类 别"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(4,_T("计量单位"), LVCFMT_LEFT, 100); // 获得所有记录 _variant_t Holder, strQuery; strQuery = "select * from material order by wzid"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); int iCount = theApp.m_pADOSet->GetRecordCount(); if ( 0==iCount ) return; 贵州省广播电视大学 毕业论文 CString str; theApp.m_pADOSet->MoveFirst(); for(int i=0; iGetCollect("wzid"); str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; m_ListCtrl.InsertItem(i, str); // 获得物资名称 Holder = theApp.m_pADOSet->GetCollect("wzname"); str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; m_ListCtrl.SetItemText(i, 1, str); // 获得物资规格型号 Holder = theApp.m_pADOSet->GetCollect("wzspec"); str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; m_ListCtrl.SetItemText(i, 2, str); // 获得物资类别 Holder = theApp.m_pADOSet->GetCollect("wzkind"); str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; m_ListCtrl.SetItemText(i, 3, str); // 获得物资计量单位 Holder = theApp.m_pADOSet->GetCollect("wzunit"); str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; m_ListCtrl.SetItemText(i, 4, str); theApp.m_pADOSet->MoveNext(); } } 6.5帮助界面的设置 在帮助窗口中,主要是显示当前系统的的版本以及作都的介绍 其窗口如下图: 其运行的部分代码如下: CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) 贵州省广播电视大学 毕业论文 { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() // App command to run the dialog void CMaterial_MISApp::OnAppAbout() { CAboutDlg aboutDlg; aboutDlg.DoModal(); } 计算机专业 毕业设计 机械毕业设计下载球磨机的毕业设计下载关于网络爬虫的毕业设计下载关于网络爬虫的毕业设计下载河南城建学院毕业设计论文下载 开发环境:ASP.NET,VB,VB.NET VF,java等,数据库:SQL。包括:开题报告、程序、论文、答辩PPT,所有程序都是通过答辩的优秀作品,质量保证。也可代做。 我是哈尔滨工业大学计算机专业毕业的学生我卖的毕业设计都是新做出来的而且是学生亲手做的符合学生要求如果你在别的店卖来的都是很专业的人员做的一看就不是学生自己亲手做出来的,而且其他 贵州省广播电视大学 毕业论文 店不提供售后我们提供售后服务及技术支持和答辩技巧. Q Q:982465840 旺旺:诚信源代码之家 电话: 店铺地址: 全天在线 各位学弟学妹联系我. 本店购设计的优点: 1价格合理便宜 2提供技术支持 3售后服务好 4成交速度快当时就可以完成调试功能 5东西齐全(开题论文代码程序答辩PPT售后服务) 6作品都是获得优秀的产品(保证质量) 第七章 结束语 结束语: 经过两个多月的设计和开发,物资管理系统的功能已基本能实现。其功能基本符合用户需求,但是由于毕业设计时间较短而且编程经验不足,所以该系统还有许多不尽如人意的地方,功能相对的不全,用户界面不够美观,出错处理不够,漏洞比较的多等多方面的问题。这些都还有待进一步的改善。 致谢 在此次设计中,非常感谢xxx老师对我的指导和帮助。x老师认真负责的工作态度,严谨的治学精神和深厚的理论、实践水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我 贵州省广播电视大学 毕业论文 以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导.另外,在系统开发过程中,我身边的同学以及我同组的同学也给予我很多的帮助,我在他们的帮助下解决了不少的难点,使得系统能及时开发完成,这里一并表示感谢。 参考文献 (1) 同志工作室 编著, Visual C++ 6.0数据库开发实例,人民邮电出版社。 (2) 王华,叶爱亮,祁立学,曹凌云 编著,Visual C++编程实例与技巧, 机械工业出版社 (3 ) 李闽溟,吴继刚,周学明 编著,Visual C++ 数据库系统开发实例导航, 人民邮电出版社 (4)张秀娟,赵茂先 编著 visual c++ 6.0 全攻略宝典 中国水利水电出版社 制作环境: windowsxp + visual c++ access 2000 p4,内存hy 250m,硬盘空间60g。 附录: 主窗体: CMainFrame::~CMainFrame() { } int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; // fail to create } m_bmpBK.LoadBitmap(IDB_BITMAP_FLASH); return 0; } 贵州省广播电视大学 毕业论文 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return TRUE; } ///////////////////////////////////////////////////////////////////////////// // CMainFrame diagnostics #ifdef _DEBUG void CMainFrame::AssertValid() const { CFrameWnd::AssertValid(); } void CMainFrame::Dump(CDumpContext& dc) const { CFrameWnd::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CMainFrame message handlers BOOL CMainFrame::OnEraseBkgnd(CDC* pDC) { // TODO: Add your message handler code here and/or call default // CFrameWnd::OnEraseBkgnd(pDC); // return TRUE; return CFrameWnd::OnEraseBkgnd(pDC); } void CMainFrame::OnMainmenuChangepwd() 贵州省广播电视大学 毕业论文 { // TODO: Add your command handler code here CChangePWD m_dlg; m_dlg.DoModal(); } void CMainFrame::OnMainmenuAppendaccount() { // TODO: Add your command handler code here CAddNew m_dlg; m_dlg.DoModal(); } 物资入库信息管理 CAppendInInfo::CAppendInInfo(CWnd* pParent /*=NULL*/) : CDialog(CAppendInInfo::IDD, pParent) { //{{AFX_DATA_INIT(CAppendInInfo) m_sDealPerson = _T(""); m_sMemo = _T(""); m_sSavePerson = _T(""); m_sStorage = _T(""); m_sTime = COleDateTime::GetCurrentTime(); m_sUnit = _T(""); m_wzName=_T(""); m_wzID=_T(""); m_wzSpec=_T(""); m_wzKind=_T(""); m_wzUnit=_T(""); m_rkNO = _T(""); m_sMoney = _T(""); m_sQuantity = _T(""); //}}AFX_DATA_INIT } void CAppendInInfo::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAppendInInfo) DDX_Text(pDX, IDC_IN_DEALPERSON, m_sDealPerson); DDX_Text(pDX, IDC_IN_MEMO, m_sMemo); DDX_Text(pDX, IDC_IN_SAVEPERSON, m_sSavePerson); DDX_Text(pDX, IDC_IN_STORAGE, m_sStorage); DDX_Text(pDX, IDC_IN_TIME, m_sTime); 贵州省广播电视大学 毕业论文 DDX_Text(pDX, IDC_IN_UNIT, m_sUnit); DDX_Text(pDX, IDC_IN_WZNAME, m_wzName); DDX_Text(pDX, IDC_IN_WZID, m_wzID); DDX_Text(pDX, IDC_IN_WZSPEC, m_wzSpec); DDX_Text(pDX, IDC_IN_WZKIND, m_wzKind); DDX_Text(pDX, IDC_IN_WZUNIT, m_wzUnit); DDX_Text(pDX, IDC_IN_RKNO, m_rkNO); DDX_Text(pDX, IDC_IN_MONEY, m_sMoney); DDX_Text(pDX, IDC_IN_QUANTITY, m_sQuantity); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAppendInInfo, CDialog) //{{AFX_MSG_MAP(CAppendInInfo) ON_CBN_SELCHANGE(IDC_IN_WZID, OnSelchangeInWzid) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CAppendInInfo message handlers void CAppendInInfo::OnOK() { // TODO: Add extra validation here UpdateData(true); m_sDealPerson.TrimRight(" "); m_sMoney.TrimRight(" "); m_sQuantity.TrimRight(" "); m_sSavePerson.TrimRight(" "); m_sStorage.TrimRight(" "); m_sUnit.TrimRight(" "); m_sMemo.TrimRight(" "); CString sWarning=""; if( ""==m_sQuantity ) sWarning=_T("数量"); else if ( ""==m_sUnit ) sWarning=_T("单价"); else if ( ""==m_sMoney ) sWarning=_T("金额"); else if ( ""==m_sDealPerson ) sWarning=_T("经办人"); else if ( ""==m_sSavePerson ) sWarning=_T("保管人"); else if ( ""==m_sStorage ) sWarning=_T("仓库"); if ( ""!=sWarning ) 贵州省广播电视大学 毕业论文 { sWarning += _T("不能为空~"); AfxMessageBox(sWarning, MB_ICONEXCLAMATION); return; } double fQuantity=atof(m_sQuantity); if ( 0==fQuantity ) { AfxMessageBox(_T("数量请输入非零整数~"), MB_ICONEXCLAMATION); return; } double fUnit=atof(m_sUnit); if(0==fUnit) { AfxMessageBox(_T("单价请输入非零数字~"), MB_ICONEXCLAMATION); return; } m_sUnit.Format("%.2f", fUnit); double fMoney=atof(m_sMoney); if(0==fMoney) { AfxMessageBox(_T("金额请输入非零数字~"), MB_ICONEXCLAMATION); return; } m_sMoney.Format("%.2f", fMoney); _variant_t strQuery; _variant_t strQuery1; _variant_t strQuery2; _variant_t strQuery3; _variant_t strQuery4; // 删除旧记录 if ( !m_bAppend ) { strQuery4="update msurplus set yeaccount=yeaccount-"+m_soldaccount+",yevalue=yevalue-"\ 贵州省广播电视大学 毕业论文 +m_soldvalue+" where yeid='"+m_wzID+"'and yebase='"+m_sStorage+"'"; theApp.ADOExecute(theApp.m_pADOSet,strQuery4); strQuery = "delete from msave where rkno='"+m_rkNO+"'"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); } // 产生序列号 CString sSN; COleDateTime today = COleDateTime::GetCurrentTime(); sSN = today.Format("%y%m%d%H%M%S"); // 获得入库日期 CString sInDate; sInDate = m_sTime.Format("%Y-%m-%d"); // 插入记录 strQuery = "insert into msave (rkno, rkid, rkname, rkspec, rkkind, rkunit, rkaccount,rkprice,\ rkvalue,rkdate,rkdeal_person,rksave_person,rkbase,rkmemo) values ('"+sSN+"', '"\ +m_wzID+"','" +m_wzName+"','"+m_wzSpec+"','"+m_wzKind+"','"\ +m_wzUnit+"',"+m_sQuantity+","+m_sUnit+","+m_sMoney+",'"\ +sInDate+"','"+m_sDealPerson+"','"+m_sSavePerson+"','"\ +m_sStorage+"','"+m_sMemo+"')"; if ( theApp.ADOExecute(theApp.m_pADOSet, strQuery) ) { if ( m_bAppend ) { AfxMessageBox(_T("添加记录成功~"), MB_ICONINFORMATION); strQuery1="select * from msurplus where yeid='"+m_wzID+"' and yebase='"+m_sStorage+"'"; theApp.ADOExecute(theApp.m_pADOSet, strQuery1); int iCount=theApp.m_pADOSet->RecordCount; if(0==iCount) { strQuery2="update msurplus set 贵州省广播电视大学 毕业论文 yeaccount=yeaccount+"+m_sQuantity+",yevalue=yevalue-"\ +m_sMoney+" where yeid='"+m_wzID+"'and yebase='"+m_sStorage+"'"; theApp.ADOExecute(theApp.m_pADOSet,strQuery2); } else { strQuery3="update msurplus set yeaccount=yeaccount+"+m_sQuantity+",yevalue=yevalue+"\ +m_sMoney+" where yeid='"+m_wzID+"'and yebase='"+m_sStorage+"'"; theApp.ADOExecute(theApp.m_pADOSet,strQuery3); } // 清除所有输入 m_sQuantity=m_sUnit=m_sMoney=sInDate=m_sDealPerson=m_sSavePer son=\ m_sStorage=m_sMemo=""; ((CComboBox*)GetDlgItem(IDC_IN_WZID))->SetCurSel(0); UpdateData(false); } else { strQuery3="update msurplus set yeaccount=yeaccount+"+m_sQuantity+",yevalue=yevalue+"\ +m_sMoney+" where yeid='"+m_wzID+"'and yebase='"+m_sStorage+"'"; theApp.ADOExecute(theApp.m_pADOSet,strQuery3); AfxMessageBox(_T("修改记录成功~"), MB_ICONINFORMATION); } } else { if ( m_bAppend ) AfxMessageBox(_T("添加记录失败~"), MB_ICONEXCLAMATION); else AfxMessageBox(_T("修改记录失败~"), MB_ICONEXCLAMATION); } 贵州省广播电视大学 毕业论文 // 刷新入库信息列表 strQuery = "select * from msave"; CMaterial_MISView* p = (CMaterial_MISView*)(((CMainFrame*)AfxGetMainWnd())->GetActiveVie w()); p->RefreshIn(strQuery); if (!m_bAppend) CDialog::OnOK(); } BOOL CAppendInInfo::OnInitDialog() { CDialog::OnInitDialog(); ((CEdit*)GetDlgItem(IDC_IN_QUANTITY))->SetLimitText(50); ((CEdit*)GetDlgItem(IDC_IN_UNIT))->SetLimitText(50); ((CEdit*)GetDlgItem(IDC_IN_MONEY))->SetLimitText(50); ((CEdit*)GetDlgItem(IDC_IN_TIME))->SetLimitText(50); ((CEdit*)GetDlgItem(IDC_IN_DEALPERSON))->SetLimitText(50); ((CEdit*)GetDlgItem(IDC_IN_SAVEPERSON))->SetLimitText(50); ((CEdit*)GetDlgItem(IDC_IN_STORAGE))->SetLimitText(50); ((CEdit*)GetDlgItem(IDC_IN_MEMO))->SetLimitText(50); // TODO: Add extra initialization here _variant_t strQuery, Holder; if (m_bAppend) { // 初始化下拉列表 SetWindowText(_T("添加入库信息")); strQuery = "select * from material"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); int iCount = theApp.m_pADOSet->GetRecordCount(); theApp.m_pADOSet->MoveFirst(); for (int i=0; iGetCollect("wzid"); ((CComboBox*)GetDlgItem(IDC_IN_WZID))->InsertString(i, Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder); if (0==i) { Holder = theApp.m_pADOSet->GetCollect("wzname"); 贵州省广播电视大学 毕业论文 m_wzName = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; Holder = theApp.m_pADOSet->GetCollect("wzspec"); m_wzSpec = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; Holder = theApp.m_pADOSet->GetCollect("wzkind"); m_wzKind = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; Holder = theApp.m_pADOSet->GetCollect("wzunit"); m_wzUnit = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; } theApp.m_pADOSet->MoveNext(); } ((CComboBox*)GetDlgItem(IDC_IN_WZID))->SetCurSel(0); } else//修改记录 { SetWindowText(_T("修改物资入库信息")); m_rkOldNO=m_rkNO; m_soldaccount=m_sQuantity; m_soldvalue=m_sMoney; _variant_t strQuery, Holder; CString NO; int iSel = 0; strQuery = "select * from msave"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); int iCount = theApp.m_pADOSet->GetRecordCount(); theApp.m_pADOSet->MoveFirst(); for (int i=0; iGetCollect("rkno"); NO = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; Holder = theApp.m_pADOSet->GetCollect("rkid"); m_wzID = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; ((CComboBox*)GetDlgItem(IDC_IN_WZID))->InsertString(i, Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder); if (NO==m_rkNO) { Holder = theApp.m_pADOSet->GetCollect("rkname"); m_wzName = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; 贵州省广播电视大学 毕业论文 Holder = theApp.m_pADOSet->GetCollect("rkspec"); m_wzSpec = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; Holder = theApp.m_pADOSet->GetCollect("rkkind"); m_wzKind = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; Holder = theApp.m_pADOSet->GetCollect("rkunit"); m_wzUnit = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; iSel=i; } theApp.m_pADOSet->MoveNext(); } ((CComboBox*)GetDlgItem(IDC_IN_WZID))->SetCurSel(iSel); } UpdateData(false); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } 物资基本信息管理: AddBasicInfo::AddBasicInfo(CWnd* pParent /*=NULL*/) : CDialog(AddBasicInfo::IDD, pParent) { //{{AFX_DATA_INIT(AddBasicInfo) m_wzID = _T(""); m_wzKind = _T(""); m_wzName = _T(""); m_wzSpec = _T(""); m_wzUnit = _T(""); //}}AFX_DATA_INIT } void AddBasicInfo::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(AddBasicInfo) DDX_Text(pDX, IDC_BASICINFO_WZID, m_wzID); DDX_Text(pDX, IDC_BASICINFO_WZKIND, m_wzKind); DDX_Text(pDX, IDC_BASICINFO_WZNAME, m_wzName); DDX_Text(pDX, IDC_BASICINFO_WZSPEC, m_wzSpec); 贵州省广播电视大学 毕业论文 DDX_Text(pDX, IDC_BASICINFO_WZUNIT, m_wzUnit); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(AddBasicInfo, CDialog) //{{AFX_MSG_MAP(AddBasicInfo) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // AddBasicInfo message handlers BOOL AddBasicInfo::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here ((CEdit*)GetDlgItem(IDC_BASICINFO_WZID))->SetLimitText(50); ((CEdit*)GetDlgItem(IDC_BASICINFO_WZNAME))->SetLimitText(50); ((CEdit*)GetDlgItem(IDC_BASICINFO_WZSPEC))->SetLimitText(50); ((CEdit*)GetDlgItem(IDC_BASICINFO_WZKIND))->SetLimitText(50); ((CEdit*)GetDlgItem(IDC_BASICINFO_WZUNIT))->SetLimitText(50); if (m_bAppend) { //更新对话框属性 SetWindowText(_T("添加物资基本信息")); } else { // 更新对话框属性 SetWindowText(_T("修改物资基本信息")); } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void AddBasicInfo::OnOK() { // TODO: Add extra validation here CString m_wzID1=m_wzID; UpdateData(true); 贵州省广播电视大学 毕业论文 m_wzID.TrimRight(" "); m_wzName.TrimRight(" "); m_wzKind.TrimRight(" "); m_wzSpec.TrimRight(" "); m_wzUnit.TrimRight(" "); // 确定所有输入有效 CString sWarning=""; if ( ""==m_wzID ) sWarning=_T("物资编号"); else if ( ""==m_wzName ) sWarning=_T("物资名称"); else if ( ""==m_wzKind ) sWarning=_T("类别"); else if ( ""==m_wzSpec ) sWarning=_T("规格型号"); else if ( ""==m_wzUnit ) sWarning=_T("计量单位"); if ( ""!=sWarning ) { sWarning += _T("不能为空"); AfxMessageBox(sWarning, MB_ICONEXCLAMATION); return; } _variant_t strQuery; if (m_bAppend) { // 判断物资唯一性 strQuery = "select * from material where wzid='"+m_wzID+"'"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); int iCount = theApp.m_pADOSet->GetRecordCount(); if ( 0!=iCount ) { AfxMessageBox(_T("已经存在此物资的记录~"), MB_ICONEXCLAMATION); return; } } if (m_bAppend) { strQuery = "insert into material (wzid, wzname, wzspec, wzkind, wzunit) \ values ('"+m_wzID+"', '"+m_wzName+"','"+m_wzSpec+"','"+m_wzKind+"','"+m_wzUnit+"')"; if ( theApp.ADOExecute(theApp.m_pADOSet, strQuery) ) { 贵州省广播电视大学 毕业论文 AfxMessageBox(_T("添加记录成功~"), MB_ICONINFORMATION); // 清空输入数据 m_wzID=m_wzName=m_wzSpec=m_wzKind=m_wzUnit=""; UpdateData(false); } else AfxMessageBox(_T("添加记录失败~"), MB_ICONEXCLAMATION); } else//修改记录 { strQuery = "Update material set wzname='"+m_wzName+"', wzkind='"+m_wzKind+"', wzspec='"+m_wzSpec+"',wzid='"+m_wzID+"', wzunit='"+m_wzUnit+"' where wzid='"+m_wzID1+"'"; if ( theApp.ADOExecute(theApp.m_pADOSet, strQuery) ) AfxMessageBox(_T("修改记录成功~"), MB_ICONINFORMATION); else AfxMessageBox(_T("修改记录失败~"), MB_ICONEXCLAMATION); } // Refresh RoomType List CMaterial_MISView* p = (CMaterial_MISView*)(((CMainFrame*)AfxGetMainWnd())->GetActiveVie w()); p->RefreshMaterial(); if (!m_bAppend) CDialog::OnOK(); } void CAppendInInfo::OnSelchangeInWzid() { // TODO: Add your control notification handler code here UpdateData(true); _variant_t strQuery, Holder; // strQuery = "select * from material where wzid='"+m_wzID+"'"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); Holder = theApp.m_pADOSet->GetCollect("wzname"); 贵州省广播电视大学 毕业论文 m_wzName = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; Holder = theApp.m_pADOSet->GetCollect("wzspec"); m_wzSpec = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; Holder = theApp.m_pADOSet->GetCollect("wzKind"); m_wzKind = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; Holder = theApp.m_pADOSet->GetCollect("wzunit"); m_wzUnit = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; UpdateData(false); } 物资出库: CAppendOutInfo::CAppendOutInfo(CWnd* pParent /*=NULL*/) : CDialog(CAppendOutInfo::IDD, pParent) { //{{AFX_DATA_INIT(CAppendOutInfo) m_sDealPerson = _T(""); m_rkNO = _T(""); m_sMemo = _T(""); m_sMoney = _T(""); m_sQuantity = _T(""); m_sSavePerson = _T(""); m_sStorage = _T(""); m_sTime = COleDateTime::GetCurrentTime(); m_sUnit = _T(""); m_wzID = _T(""); m_wzKind = _T(""); m_wzName = _T(""); m_wzSpec = _T(""); m_wzUnit = _T(""); //}}AFX_DATA_INIT } void CAppendOutInfo::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAppendOutInfo) DDX_Text(pDX, IDC_OUT_DEALPERSON, m_sDealPerson); 贵州省广播电视大学 毕业论文 DDX_Text(pDX, IDC_OUT_LYNO, m_rkNO); DDX_Text(pDX, IDC_OUT_MEMO, m_sMemo); DDX_Text(pDX, IDC_OUT_MONEY, m_sMoney); DDX_Text(pDX, IDC_OUT_QUANTITY, m_sQuantity); DDX_Text(pDX, IDC_OUT_SAVEPERSON, m_sSavePerson); DDX_Text(pDX, IDC_OUT_STORAGE, m_sStorage); DDX_Text(pDX, IDC_OUT_TIME, m_sTime); DDX_Text(pDX, IDC_OUT_UNIT, m_sUnit); DDX_CBString(pDX, IDC_OUT_WZID, m_wzID); DDX_Text(pDX, IDC_OUT_WZKIND, m_wzKind); DDX_Text(pDX, IDC_OUT_WZNAME, m_wzName); DDX_Text(pDX, IDC_OUT_WZSPEC, m_wzSpec); DDX_Text(pDX, IDC_OUT_WZUNIT, m_wzUnit); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAppendOutInfo, CDialog) //{{AFX_MSG_MAP(CAppendOutInfo) ON_CBN_SELCHANGE(IDC_OUT_WZID, OnSelchangeOutWzid) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CAppendOutInfo message handlers BOOL CAppendOutInfo::OnInitDialog() { CDialog::OnInitDialog(); ((CEdit*)GetDlgItem(IDC_OUT_QUANTITY))->SetLimitText(50); ((CEdit*)GetDlgItem(IDC_OUT_UNIT))->SetLimitText(50); ((CEdit*)GetDlgItem(IDC_OUT_MONEY))->SetLimitText(50); ((CEdit*)GetDlgItem(IDC_OUT_TIME))->SetLimitText(50); ((CEdit*)GetDlgItem(IDC_OUT_DEALPERSON))->SetLimitText(50); ((CEdit*)GetDlgItem(IDC_OUT_SAVEPERSON))->SetLimitText(50); ((CEdit*)GetDlgItem(IDC_OUT_STORAGE))->SetLimitText(50); ((CEdit*)GetDlgItem(IDC_OUT_MEMO))->SetLimitText(50); // TODO: Add extra initialization here _variant_t strQuery, Holder; if (m_bAppend) { // 初始化下拉列表 SetWindowText(_T("添加入库信息")); 贵州省广播电视大学 毕业论文 strQuery = "select * from material"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); int iCount = theApp.m_pADOSet->GetRecordCount(); theApp.m_pADOSet->MoveFirst(); for (int i=0; iGetCollect("wzid"); ((CComboBox*)GetDlgItem(IDC_OUT_WZID))->InsertString(i, Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder); if (0==i) { Holder = theApp.m_pADOSet->GetCollect("wzname"); m_wzName = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; Holder = theApp.m_pADOSet->GetCollect("wzspec"); m_wzSpec = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; Holder = theApp.m_pADOSet->GetCollect("wzkind"); m_wzKind = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; Holder = theApp.m_pADOSet->GetCollect("wzunit"); m_wzUnit = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; } theApp.m_pADOSet->MoveNext(); } ((CComboBox*)GetDlgItem(IDC_OUT_WZID))->SetCurSel(0); } else//修改记录 { SetWindowText(_T("修改物资出库信息")); m_rkOldNO=m_rkNO; m_soldaccount=m_sQuantity; m_soldvalue=m_sMoney; _variant_t strQuery, Holder; CString NO; int iSel = 0; strQuery = "select * from muse"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); int iCount = theApp.m_pADOSet->GetRecordCount(); 贵州省广播电视大学 毕业论文 theApp.m_pADOSet->MoveFirst(); for (int i=0; iGetCollect("lyno"); NO = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; Holder = theApp.m_pADOSet->GetCollect("lyid"); m_wzID = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; ((CComboBox*)GetDlgItem(IDC_OUT_WZID))->InsertString(i, Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder); if (NO==m_rkNO) { Holder = theApp.m_pADOSet->GetCollect("lyname"); m_wzName = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; Holder = theApp.m_pADOSet->GetCollect("lyspec"); m_wzSpec = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; Holder = theApp.m_pADOSet->GetCollect("lykind"); m_wzKind = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; Holder = theApp.m_pADOSet->GetCollect("lyunit"); m_wzUnit = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; iSel=i; } theApp.m_pADOSet->MoveNext(); } ((CComboBox*)GetDlgItem(IDC_OUT_WZID))->SetCurSel(iSel); } UpdateData(false); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CAppendOutInfo::OnOK() { // TODO: Add extra validation here UpdateData(true); m_sDealPerson.TrimRight(" "); 贵州省广播电视大学 毕业论文 m_sMoney.TrimRight(" "); m_sQuantity.TrimRight(" "); m_sSavePerson.TrimRight(" "); m_sStorage.TrimRight(" "); m_sUnit.TrimRight(" "); m_sMemo.TrimRight(" "); CString sWarning=""; if( ""==m_sQuantity ) sWarning=_T("数量"); else if ( ""==m_sUnit ) sWarning=_T("单价"); else if ( ""==m_sMoney ) sWarning=_T("金额"); else if ( ""==m_sDealPerson ) sWarning=_T("领用人"); else if ( ""==m_sSavePerson ) sWarning=_T("经办人"); else if ( ""==m_sStorage ) sWarning=_T("仓库"); if ( ""!=sWarning ) { sWarning += _T("不能为空~"); AfxMessageBox(sWarning, MB_ICONEXCLAMATION); return; } double fQuantity=atof(m_sQuantity); if ( 0==fQuantity ) { AfxMessageBox(_T("数量请输入非零整数~"), MB_ICONEXCLAMATION); return; } double fUnit=atof(m_sUnit); if(0==fUnit) { AfxMessageBox(_T("单价请输入非零数字~"), MB_ICONEXCLAMATION); return; } m_sUnit.Format("%.2f", fUnit); double fMoney=atof(m_sMoney); if(0==fMoney) { AfxMessageBox(_T("金额请输入非零数字~"), MB_ICONEXCLAMATION); 贵州省广播电视大学 毕业论文 return; } m_sMoney.Format("%.2f", fMoney); _variant_t strQuery; _variant_t strQuery1; _variant_t strQuery2; // 删除旧记录 if ( !m_bAppend ) { strQuery="update msurplus set yeaccount=yeaccount+"+m_soldaccount+",yevalue=yevalue+"\ +m_soldvalue+" where yeid='"+m_wzID+"'and yebase='"+m_sStorage+"'"; theApp.ADOExecute(theApp.m_pADOSet,strQuery); strQuery = "delete from muse where lyno='"+m_rkNO+"'"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); } // 产生序列号 CString sSN; COleDateTime today = COleDateTime::GetCurrentTime(); sSN = today.Format("%y%m%d%H%M%S"); // 获得入库日期 CString sInDate; sInDate = m_sTime.Format("%Y-%m-%d"); // 插入记录 strQuery = "insert into muse (lyno, lyid, lyname, lyspec, lykind, lyunit, lyaccount,lyprice,\ lyvalue,lydate,lyuse_person,lydeal_person,lybase,lymemo) values ('"+sSN+"', '"\ +m_wzID+"','" +m_wzName+"','"+m_wzSpec+"','"+m_wzKind+"','"\ +m_wzUnit+"',"+m_sQuantity+","+m_sUnit+","+m_sMoney+",'"\ +sInDate+"','"+m_sDealPerson+"','"+m_sSavePerson+"','"\ +m_sStorage+"','"+m_sMemo+"')"; if ( theApp.ADOExecute(theApp.m_pADOSet, strQuery) ) 贵州省广播电视大学 毕业论文 { if ( m_bAppend ) { AfxMessageBox(_T("添加记录成功~"), MB_ICONINFORMATION); strQuery2="update msurplus set yeaccount=yeaccount-"+m_sQuantity+",yevalue=yevalue-"\ +m_sMoney+" where yeid='"+m_wzID+"'and yebase='"+m_sStorage+"'"; theApp.ADOExecute(theApp.m_pADOSet,strQuery2); // 清除所有输入 m_sQuantity=m_sUnit=m_sMoney=sInDate=m_sDealPerson=m_sSavePer son=\ m_sStorage=m_sMemo=""; UpdateData(false); } else { strQuery2="update msurplus set yeaccount=yeaccount-"+m_sQuantity+",yevalue=yevalue-"\ +m_sMoney+" where yeid='"+m_wzID+"'and yebase='"+m_sStorage+"'"; theApp.ADOExecute(theApp.m_pADOSet,strQuery2); AfxMessageBox(_T("修改记录成功~"), MB_ICONINFORMATION); } } else { if ( m_bAppend ) AfxMessageBox(_T("添加记录失败~"), MB_ICONEXCLAMATION); else AfxMessageBox(_T("修改记录失败~"), MB_ICONEXCLAMATION); } // 刷新入库信息列表 strQuery = "select * from muse"; CMaterial_MISView* p = 贵州省广播电视大学 毕业论文 (CMaterial_MISView*)(((CMainFrame*)AfxGetMainWnd())->GetActiveVie w()); p->RefreshOut(strQuery); if (!m_bAppend) CDialog::OnOK(); } void CAppendOutInfo::OnSelchangeOutWzid() { // TODO: Add your control notification handler code here UpdateData(true); _variant_t strQuery, Holder; // strQuery = "select * from material where wzid='"+m_wzID+"'"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); Holder = theApp.m_pADOSet->GetCollect("wzname"); m_wzName = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; CString name=m_wzName; Holder = theApp.m_pADOSet->GetCollect("wzspec"); m_wzSpec = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; Holder = theApp.m_pADOSet->GetCollect("wzKind"); m_wzKind = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; Holder = theApp.m_pADOSet->GetCollect("wzunit"); m_wzUnit = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; UpdateData(false); } 登录: CLoginDLG::CLoginDLG(CWnd* pParent /*=NULL*/) : CDialog(CLoginDLG::IDD, pParent) { //{{AFX_DATA_INIT(CLoginDLG) m_sPWD = _T(""); m_sUSER = _T("Administrator"); //}}AFX_DATA_INIT } 贵州省广播电视大学 毕业论文 void CLoginDLG::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CLoginDLG) DDX_Text(pDX, IDC_LOGIN_PWD, m_sPWD); DDX_Text(pDX, IDC_LOGIN_USER, m_sUSER); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CLoginDLG, CDialog) //{{AFX_MSG_MAP(CLoginDLG) ON_WM_TIMER() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CLoginDLG message handlers void CLoginDLG::OnOK() { // TODO: Add extra validation here // Check UserName Vadilaty UpdateData(true); m_sUSER.TrimRight(" "); if ( ""==m_sUSER ) { AfxMessageBox(_T("请填写用户名"), MB_ICONEXCLAMATION); return; } _variant_t Holder, strQuery; strQuery = "select user_ID, user_PWD from user_Info where user_ID='"+m_sUSER+"'"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); int iCount = theApp.m_pADOSet->GetRecordCount(); if ( 0==iCount ) { theApp.m_iLoginCount++; if ( theApp.m_iLoginCount>2 ) 贵州省广播电视大学 毕业论文 { AfxMessageBox("没有这个用户\n三次输入均不正确,请核对后再 来", MB_ICONEXCLAMATION); CDialog::OnCancel(); return; } AfxMessageBox("没有这个用户,请重新输入用户名", MB_ICONEXCLAMATION); ((CWnd *)GetDlgItem(IDC_LOGIN_USER))->SetFocus(); ((CEdit *)GetDlgItem(IDC_LOGIN_USER))->SetSel(0,-1); return; } CString sPWD; theApp.m_pADOSet->MoveFirst(); Holder = theApp.m_pADOSet->GetCollect("user_PWD"); sPWD = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; if ( 0!=sPWD.Compare(m_sPWD) ) { theApp.m_iLoginCount++; if ( theApp.m_iLoginCount>2 ) { AfxMessageBox("输入密码不正确\n三次输入均不正确,请核对后 再来", MB_ICONEXCLAMATION); CDialog::OnCancel(); return; } AfxMessageBox("输入密码不正确,请重新输入", MB_ICONEXCLAMATION); ((CWnd *)GetDlgItem(IDC_LOGIN_PWD))->SetFocus(); ((CEdit *)GetDlgItem(IDC_LOGIN_PWD))->SetSel(0,-1); return; } // Get Login User theApp.m_sCurrentUser = m_sUSER; CDialog::OnOK(); } BOOL CLoginDLG::OnInitDialog() { CDialog::OnInitDialog(); 贵州省广播电视大学 毕业论文 // TODO: Add extra initialization here ((CEdit*)GetDlgItem(IDC_LOGIN_USER))->SetLimitText(15); ((CEdit*)GetDlgItem(IDC_LOGIN_PWD))->SetLimitText(10); // Set Caption Font //CFont m_Font; m_fMyFont.CreatePointFont(180,"华文彩云",NULL); SetTimer(1,1,NULL); ((CStatic *)GetDlgItem(IDC_LOGIN_CAPTION))->SetFont(&m_fMyFont, true); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CLoginDLG::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default ((CWnd *)GetDlgItem(IDC_LOGIN_PWD))->SetFocus(); KillTimer(1); CDialog::OnTimer(nIDEvent); }
本文档为【VC论文物资管理系统毕业论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_511210
暂无简介~
格式:doc
大小:259KB
软件:Word
页数:0
分类:
上传时间:2018-11-11
浏览量:2