管理信息系统课程设计说明书.doc_第1页
管理信息系统课程设计说明书.doc_第2页
管理信息系统课程设计说明书.doc_第3页
管理信息系统课程设计说明书.doc_第4页
管理信息系统课程设计说明书.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课 程 设 计设计题目 销售订单信息系统学生姓名 刘宇学 号 20071103专业班级 工业工程07-1班 指导教师 王跃飞2011 年 1 月 合肥工业大学课程设计任务书设 计题 目销售订单信息系统成绩主要内容 正确运用管理信息系统课程的基本理论和知识,结合实际信息系统的开发,初步掌握管理信息系统的系统分析、方案设计、论证和开发方法。2.了解在Windows环境下,使用Visual C+6.0、SQL Server开发管理信息系统所需的计算机软、硬件环境。3. 熟悉可视化编程工具Visual C+6.0,熟练掌握Visual C+6.0编程的方法和步骤。4. 理解SQL Server中数据库和表的概念,能根据题目的要求设计并建立数据库,建立数据库中表与表之间的关系。5. 通过编程和上机调试,进一步提高计算机的操作水平,提高解决实际问题的能力。 6. 逐步树立正确的程序设计思想,培养分析问题、解决问题的能力,提高查询资料和撰写书面文件的能力指导教师意见签名: 20 年 月 日- 20 -目录第1章 系统功能 1.1 概述 2 1.2 需求分析 2 1.3 销售管理信息系统管理用例图 2 1.4 数据库访问技术和系统开发环境 2第2章 数据库设计 2.1数据库需求分析 3 2.2数据库逻辑结构设计和实现 4第3章 功能模块的建立 3.1 生成程序框架 5 3.2 树控件(CTreeCtrl)的使用 6 3.3 建立数据库连接 7 3.4 从数据库中读出所有的销售单号及序号并在树中显示 7 3.5 建立对话框类 8 3.6 建立菜单资源 11 3.7 为树控件添加右键弹出菜单 11 3.8 基于右视图销售单信息的浏览、添加、修改、删除。 12第四章 查询功能的实现 4.1按客户统计查询功能的实现26 4.2按产品统计查询功能的实现28 4.3按业务员统计查询功能的实现29管理信息系统课程设计说明书销售订单信息系统概述:该设计主要是设计一个销售订单信息系统,实现销售订单资料的录入、修改、删除、查询等功能,是企业销售部门的管理信息系统。第1章 系统功能1.1 需求分析1、销售订单的录入、修改、删除,在输入客户信息、物料信息、付款方式时能查询这些信息,选取输入,若是新信息则应能输入新的信息。2、实现按客户统计查询某一段时间所销售的产品及数量。3、实现按产品查询某一段时间的销售数量,价格及金额。4、实现按业务员统计查询某一段时间所销售的产品种类、数量情况。 1.2 销售管理信息系统管理用例图订单录入订单查询订单删除订单修改图1-1 销售管理信息系统管理用例图销售管理信息系统管理用例图如图1-1所示,其中订单的录入、修改、删除功能主要是对销售订单基本项目,销售订单物料明细表,销售订单付款约定表的录入、修改、删除。订单的查询功能则是对整个系统的数据,分为按客户查询,按产品查询和按业务员查询,查询各种数据在一定时间范围之内的一些基本信息,包括这段时间内销售的产品及其数量、销售的价格及其金额等。1.3 VC开发环境介绍Visual C+是一个功能强大的可视化软件开发工具。Visual C+6.0不仅是一个C+编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。Visual C+可以分成三个主要的部分:Developer Studio、MFC、Platform SDK。第二章 数据库设计2.1数据库访问技术采用ADO机制访问数据库。ADO包含了连接对象(Connection)、命令对象(Command)、记录集对象(Recordset)、字段对象(Filed)、参数对象(Parameter)、错误对象(Error)、属性对象(Property)和集合与事件对象。本次课程设计只使用了连接对象(Connection)、记录集对象(Recordset)来完成所有的数据库操作。为了使用的方便分别对连接对象(Connection)和记录集对象(Recordset)进行了封装。 2. 1. 1 Class CADODatabase是对连接对象(Connection的封装主要功能是:(1) 与数据源建立连接(2) 关闭与数据源之间的连接void CADODatabase:Close()( 3 ) 执行不返回记录集的SQL语句(如插入、更新、删除)BOOL CADODatabase:Execute(LPCTSTR lpstrExec) 2. 1. 2 Class CADORecordset 是记录集对象(Recordset)的封装类主要功能是得到查询过程中得到的结果集。(1)查询语句的执行 BOOL CADORecordset:Open(ADODB:_ConnectionPtr mpdb, LPCTSTR lpstrExec, int nOption/* CADORecordset:openUnknown */)(2) 得到指定字段的值BOOLGetFieldValue(int nIndex,CString&strValue,CString strDateFormat/*_T(“”)*/)(3) 记录集的遍历 BOOL IsEOF() /判断是否已到记录集结尾BOOL IsBof() /判断是否已到记录集开头2.2 数据库需求分析表1-1销售单基本项目表销售单号销售单期客户代号客户名称客户地址采购员varcharvarcharvarcharvarcharvarcharvarchar电话付款方式交货地址运输方式联系人联系电话varcharvarcharvarcharvarcharvarcharvarchar部门代号部门名称业务员号业务员名varcharvarcharvarcharvarchar表1-2 销售单物料明细表序号销售单号产品代号产品名称单位varcharvarcharvarcharvarcharvarchar订购量需求日期承诺日期无税定价税率varcharvarcharvarcharvarcharvarchar含税定价报价金额折扣率折扣金额已出量varcharvarcharvarcharvarcharvarchar表1-3 销售单付款约定表序号销售单号预定时间百分比金额备注varcharvarcharvarcharvarcharvarcharvarchar2.3数据库逻辑结构设计和实现 2. 2. 1 建立数据库:根据数据库需求分析中的表1-1,表1-2,表1-3三张表的内容和数据类型要求的数据项在SQLServer 2000中建立数据库“销售信息子系统”,然后建立如图1-1,图1-2,图1-3所示的三张表,表中所有字段为varchar类型。结果如下: 图2-1 销售单基本项目表图2-2 销售单物料明细表图2-3 销售单付款约定表 2. 2. 2 建立关系图:按照数据库中各表主外键约束关系,建产E-R图,如下: 图2-4 销售信息关系图第三章 功能模块的建立3.1 生成程序框架 3. 1. 1 生成单文档程序框架从VC+6.0的文件菜单选择新建,然后,单击对话框中的工程选项卡。确认选中了MFCAppWizard(exe),输入工程名称和工程文件的位置后单击确定按钮。确认选中了单个文档选项。接受下面四个屏幕的默认设置。 确认将BaseClass 改为CFromView,点击完成后,在随后出项的对话框中点击确定。 3. 1. 2 为了实现窗口的分割必须创建一个基于CView的视图类。插入菜单选择新建类,出现新建类对话框,确认Base Class 选择了CView 点击OK按钮。完成CLeftTreeView类的创建。 3. 1. 3 切分窗口(将主窗口切分成左右两个视图) 在CMainFrame类中添加变量CSplitterWnd m_wndSplitter;/实现切分窗口类 通过建立类向导,分别在classname 和ObjectIDs 栏中选择CMainFrame,在Messages栏中选择 OnCreateClient, 点击AddFunction 按钮。 完成添加 OnCreateClient 函数在OnCreateClient中添加如下代码:BOOL CMainFrame:OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) if(!m_wndSplitter.CreateStatic(this,1,2) return 0;if(!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CLeftTreeView),CSize(180,100),NULL) return 0;if(!m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CPersonnelView),CSize(50,100),NULL) return 0;return 1;/CFrameWnd:OnCreateClient(lpcs, pContext);删除CPersonnelView 中的CSaleDoc* GetDocument();函数在CMainFrame 类的.cpp中开始位置包含类CLeftTreeView和CPersonnelView的头文件inlude” LeftTreeView.h”、 inlude”Personnel View.h”3.2 树控件(CTreeCtrl)的使用 3. 2. 1 创建树控件函数,virtual BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID) 3. 2. 2 添加树中的节点 HTREEITEM ParentItem=m_tree.InsertItem(销售子系统信息,1,0); HTREEITEM sonItem1=m_tree.InsertItem(销售单基本项目,1,0,ParentItem); HTREEITEM sonItem2=m_tree.InsertItem(销售物料明细,1,0,ParentItem);HTREEITEM sonItem3=m_tree.InsertItem(销售单付款约定,1,0,ParentItem); 分别在classname 和ObjectIDs 栏中选择CLeftTreeView,在Messages栏中选择WM_CREATE, 点击AddFunction 按钮。再在Messages栏中选择WM_SIZE最后点击AddFunction 按钮。最后点击确定完成消息函数添加功能。此时在CLeftView中多了两个函数。int CLeftTreeView:OnCreate(LPCREATESTRUCT lpCreateStruct) void CLeftTreeView:OnSize(UINT nType, int cx, int cy) 说明:视图类其实就是一个封装好的窗口类。在窗口生成时将首先调用OnCreate,只要窗口的大小发生改变都将调用 OnSize。在类CLeftTreeView中添加一变量CTreeCtrl m_tree. 在 int CLeftTreeView:OnCreate(LPCREATESTRUCT lpCreateStruct)中添加如下代码:/创建树控件m_tree.Create(WS_VISIBLE | WS_TABSTOP | WS_CHILD | TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES | TVS_DISABLEDRAGDROP) , rectDummy, this, ID_TREE);/ ID_TREE为控件的ID在OnSize 函数中添加代码:CView:OnSize(nType, cx, cy);if(m_tree.GetSafeHwnd()/判断窗口是否存在 CRect rect; GetClientRect(&rect);/得到窗口客户区的大小m_tree.MoveWindow(rect);3.3 建立数据库连接 3. 3. 1 因为本程序只访问一个数据库,为了提高访问数据库的效率,声明一个全局的数据库连接函数和变量。 在stdafx.h中添加如下代码#include Ado.hextern CADODatabase m_ADODb;/声明全局的数据库连接对象BOOL ConnetDatabase();在stdafx.cpp中添加如下代码:CADODatabase m_ADODb;/声明数据库连接对象BOOL ConnectDatabase() if(m_ADODb.IsOpen()return TRUE;/连接数据库LSHHQ 为数据库服务器名return m_ADODb.ConnectSQLServer(local),sa,销售信息子系统);3.4 从数据库中读出所有的销售单号及序号并在树中显示 3.4.1 在 CLeftTreeView的实现头文件(.cpp)开始处添加数据库文件 #include Ado.h 3.4.2 打开VC6.0 开发环境的ResourceView 点击鼠标右键选择Import菜单选择要导入的BMP文件 ,更改导入的图片ID为 IDB_FOLDER。在CLeftTreeView的头文件中声明 CImageList m_ ImageList; 3. 4. 3 在OnCreate 函数中加入如下代码:/从数据库中读出所有的销售信息系统信息 CADODatabase m_ADODb;/声明数据库连接对象 if(!m_ADODb.ConnectSQLServer(local),sa,销售信息子系统)/连接数据库(local) 为数据库服务器名(一般为计算机名称) return 0; CADORecordset m_ADORecord; /声明记录集对象CString strSql;/字符串对象/字符串对象d的格式化函数%s为匹配字符,将由字符串“部门信息表”取代 strSql.Format(select * from %s ,销售单基本项目); if(!m_ADORecord.Open(m_ADODb.GetActiveConnection(),strSql) return 0; while(!m_ADORecord.IsEOF()/遍历记录集(如果没有到记录集结尾则继续循环) CString value; m_ADORecord.GetFieldValue(销售单号,value); /在节点sonItem1 下插入销售单节点 m_tree.InsertItem(value,1,0,sonItem1); m_ADORecord.MoveNext();/移到下一条记录 strSql.Format(select * from %s ,销售单物料明细表); if(!m_ADORecord.Open(m_ADODb.GetActiveConnection(),strSql) return 0; while(!m_ADORecord.IsEOF()/遍历记录集(如果没有到记录集结尾则继续循环) CString value; m_ADORecord.GetFieldValue(序号,value); /在节点sonItem2 下插入物料单明细节点 m_tree.InsertItem(value,1,0,sonItem2); m_ADORecord.MoveNext();/移到下一条记录 strSql.Format(select * from %s ,销售单付款约定表); if(!m_ADORecord.Open(m_ADODb.GetActiveConnection(),strSql) return 0; while(!m_ADORecord.IsEOF()/遍历记录集(如果没有到记录集结尾则继续循环) CString value; m_ADORecord.GetFieldValue(序号,value); /在节点ParentItem 下插入付款约定节点 m_tree.InsertItem(value,1,0,sonItem3); m_ADORecord.MoveNext();/移到下一条记录 m_ADORecord.Close();m_ADODb.Close();return 0;3.5 建立对话框类 3. 5. 1 在工作区点击ResourceView视图 选择Dialog 点击右键选择 InsertDialog 插入对话框。鼠标点击新建的对话框,弹出右键菜单选择”属性项”修改ID为IDD_SALE_LIST,标题改为销售单信息录入。从控件工具箱中选择Static Text、Edit Box 和Combo Box建立如下对话框:图3-2 绘制销售单信息录入对话框 3. 5. 2 建立与对话框关联类在刚建立的对话框上点击右键,从弹出的菜单中选择建立类向导。确认选择了Create a new class ,点击Ok按钮。然后在Name里面输入CSALE_LISTDlg,确认Base class 为CDialog,点击Ok按钮完成对话框类的创建。此时在类视图窗口中将出现CSaleDlg类。 3.5.3 建立控件变量。从属性对话框中修改各个控件的ID。然后,打开建立类向导对话框,选择Member Variables 选项,确认Class names 选择了CSALE_LISTDlg。从Control IDs中选择一个ID号,点击 Add Variable按钮,出现增加变量对话框。最后效果如下:图3-3 添加销售单录入对话框的变量 3. 5. 4 为对话框模板的确定按钮添加响应函数。点击确定按钮,点击鼠标右键,从菜单中选择建立类向导。选择Messge Maps选项,Class names 项选择 CSALE_LISTDlg,Object IDs 项选择ID_OK,Messages项选择BN_CLICKED,点击Add Function 按钮,在弹出的对话框中输入函数名OnOk点击确定。最后点击确定完成添加。如下:图3-4 添加销售单录入对话框的OnOK函数 查看CSALE_LISTDlg类将看到函数OnOk。将改函数改写为如下:UpdateData(TRUE);/将控件窗口中的值写入对应的变量CADODatabase m_ADODb;/声明数据库连接对象if(!m_ADODb.ConnectSQLServer(local),sa,销售信息子系统)/连接数据库LOCALreturn ;/查询输入的销售单号是否已经存在CADORecordset m_ADORecord;/声明记录集对象CString strSql;/字符串对象/字符串对象d的格式化函数%S为匹配字符,将由后面的字符串取代 strSql.Format(select * from %s where 销售单号=%s,销售单基本项目,m_SALE_List_Code);if(!m_ADORecord.Open(m_ADODb.GetActiveConnection(),strSql) return ;if(m_ADORecord.GetRecordCount()0)/如果查询记录得到的记录大于0,则该销售单号已经存在 AfxMessageBox(该销售单号已经存在,请重新输入);return ;elseCDialog:OnOK(); m_ADORecord.Close();m_ADODb.Close();3.5.5 对话框初始化,在CSALE_LISTDlg类向导的Messages栏中选择WM_INITDIALOG。生成函数OnInitDialog,在其OnInitDialog中添加如下初始化代码:CDialog:OnInitDialog();m_trans_ctrl.AddString(汽车);m_trans_ctrl.AddString(火车);m_trans_ctrl.AddString(飞机);m_trans_ctrl.AddString(轮船);m_pay_ctrl.AddString(现金);m_pay_ctrl.AddString(银行转帐);m_pay_ctrl.AddString(支票); return TRUE; 3.5.6 根据以上步骤完成SALE_LIST_MATERIAL 、fukuanyuedingbiao的创建,为各个控件添加响应的变量,为确定按钮添加响应函数,对话框如下: 图3-5 绘制销售单物料明细对话框 图3-6 绘制销售单付款约定对话框3.6 建立菜单资源3. 6. 1 新建菜单 在工作区点击ResourceView视图 选择Menu 点击右键选择 InsertMenu 插入1个菜单。从属性中修改菜单的ID和标题。如下:图3-7添加菜单并修改其属性 选择Messge Maps选项,Class names 项选择 CPersonnelView,Object IDs 项选择该菜单的ID即ID_ADD,Messages项选择COMMAND,点击Add Function 按钮,在弹出的对话框中输入函数名OnAddSALE点击确定。最后点击确定完成添加。查看CLeftTreeView类将看到函数ADD()。3.6.2 依照以上步骤为修改、删除功能添加响应函数。3.7 为树控件添加右键弹出菜单在如下位置加入加粗字体的代码:BEGIN_MESSAGE_MAP(CPersonnelView, CFormView)/AFX_MSG_MAP(CPersonnelView)ON_WM_SIZE()ON_NOTIFY(NM_RCLICK, IDC_LIST, OnRclickListSale)ON_COMMAND(ID_ADD, ADD)ON_COMMAND(ID_UPDATE_INFOR, UpdateInfor)ON_COMMAND(ID_DELETE_INFOR, OnDeleteInfor)/AFX_MSG_MAP/ Standard printing commandsON_COMMAND(ID_FILE_PRINT, CFormView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView:OnFilePrintPreview)END_MESSAGE_MAP()在CPersonnelView.h 中加入函数声明:afx_msg void OnRclickListSale(NMHDR* pNMHDR, LRESULT* pResult);在CPersonnelView.cpp中添加如下代码:void CPersonnelView:OnRclickListSale(NMHDR* pNMHDR, LRESULT* pResult) CMenu menu;VERIFY(menu.LoadMenu(IDR_information);CMenu* pPopup=menu.GetSubMenu(0) ; ASSERT(pPopup!=NULL);CPoint point;GetCursorPos(&point);/得到当前鼠标的位置if(menu.GetSafeHmenu()pPopup-TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this); *pResult = 0;3.8 销售单信息的浏览、添加、修改、删除。 3.8.1 因为右视图只有一个界面,而销售信息子系统中不同的数据库表对应不同的数据库信息,就要求其右视图有不同的表头,所以先通过设定一个全局变量来控制右视图不同的显示,其定义和声明如下:stdafx.h 中 定义: extern int guanjian;stdafx.cpp 中声明并初始化全局变量 int guanjian=1;首先通过对LeftTreeView.cpp中的函数OnTvnSelchangedTree来控制全局变量guanjian的值,当鼠标选取左视图中树控件不同的节点的值时,来对全局变量进行赋值,其函数代码如下:void CLeftTreeView:OnTvnSelchangedTree(NMHDR *pNMHDR, LRESULT *pResult) HTREEITEM hSelecteItem=m_tree.GetSelectedItem();/得到树中当前选择的节点 HTREEITEM parentItem=m_tree.GetParentItem(hSelecteItem); CString Text=m_tree.GetItemText(hSelecteItem);/得到节点的文本值 CString Text1=m_tree.GetItemText(parentItem); if(Text=销售单基本项目|Text1=销售单基本项目) guanjian=1;else if(Text=销售物料明细|Text1=销售物料明细)guanjian=2;else if(Text=销售单付款约定|Text1=销售单付款约定)guanjian=3;elseguanjian=1;/得到右边的视图对象 CMainFrame*pFrame=(CMainFrame*)AfxGetMainWnd(); pFrame-SwitchToView();该函数后两句通过基于CMainFrame 类的pFrame指针来指向CMainFrame.cpp的SwitchToView 函数,再通过SwitchToView函数,删除之前已有右视图的基础上,通过基于CPersonnelView 类的pFrame指针,来调用CPersonnelView 的OnBrowserCSalelist(guanjian),通过不同的guanjian值,通过判断调用CPersonnelView 的函数salelistbasic(),salelistmaterial(),salelistpay(),在右视图中显示各个表中不同的内容,另一方面在CPersonnelView中新建两个函数Setstyle 和Gettitle,分别对于不同的全局变量guanjian值设置基于不同的数据库表的不同的表头,以上就是该销售信息系统浏览功能思路。跟浏览相关的具体代码详见源程序:当左边选取的节点是销售单基本项目或其子节点时,显示结果如下图3-8所示:图3-8 销售基本项目在右视图的显示当左边选取的节点是销售单物料明细或其子节点时,显示结果如下图3-9所示:图3-9 销售单物料明细在右视图的显示当左边选取的节点是销售单付款约定或其子节点时,显示结果如下图3-10所示:图3-10 销售单付款约定在右视图的显示 3.8.2 销售信息的添加也是基于不同全局变量guanjian值来进行的,其实也就是在右视图显示那张表的信息就对那张表进行销售信息的添加,通过在右视图右击弹出的功能菜单,通过点击添加响应CPersonnelView:ADD()函数,再通过基于左视图树节点给全局变量guanjian的赋值,来分别调用CPersonnelView:OnADDsalelist()函数、CPersonnelView:OnADDsalesmaterial()函数、CPersonnelView:OnADDSalepay()函数,从而可以对不同的数据库表进行信息的添加,具体代码详见源程序。添加销售订单基本项目时,客户信息选择输入的功能。首先,添加为客户代号编辑框采用combox组合框控件,通过遍历数据库中已经存在的客户信息,将客户代号作为客户信息的唯一判断,从组合框控件进行选取后,将客户信息直接输入,提高用户在添加客户信息时的速度,同时也避免一些繁琐的操作。运行效果见图3-11,其具体功代码查看源程序CSALE_LISTDlg类里面的函数。图3-12、图3-13分别为添加销售单物料明细表和添加销售单付款约定表的对话框运行效果图。图3-11添加销售单基本项目对话框图3-12 添加销售单物料明细对话框图3-13 添加销售单付款约定对话框 3.8.3 销售信息的修改也是基于全局变量guanjian的值来实现的,通过guanjian值的不同来对与关键值相对应的销售信息进行修改。首先通过在右视图右击弹出菜单,选择修改响应CPersonnelView:UpdateInfor() ,通过循环判断,根据不同的guanjian值对不同的数据库表信息进行修改。需要说明的是,在进行修改时,数据库表的主键是不能进行修改的,于是在每个修改对话框的初始化函数里面加上下列代码,实现数据库表销售单号的不可编辑。 if(!m_xiaoshoucode.IsEmpty()/如果人员编号不为空则表示是修改属性 CWnd*pWnd=GetDlgItem(IDC_xiaoshoucode);/取得窗口句柄 pWnd-EnableWindow(FALSE);/使得该控件不可编辑下图为修改销售单物料明细表的对话框:图3-14 修改销售单物料明细的对话框 3.8.4 销售信息的删除同样的还是基于全局变量guanjian的值来控制的,图3-15为删除销售付款约定表某条记录的删除确认界面。以下是删除功能实现的具体代码:void CPersonnelView:OnDeleteInfor() if(guanjian=1)int nSelected=m_Salelist.GetSelectionMark();/取得当前选择的行 if(nSelected=-1)/如果没有选择return; CString salelist_code=m_Salelist.GetItemText(nSelected,0);CString str;str.Format(确定要删除%s吗?,salelist_code); if(MessageBox(str,提示,MB_OKCANCEL |MB_ICONQUESTION )!=IDOK)/弹出是否确定删除提示框,如果没有点击确定则返回return; CString strSql;strSql.Format(delete from 销售单基本项目 where 销售单号=%s,salelist_code);if(m_ADODb.Execute(strSql)/如果该SQL语句执行成功m_Salelist.DeleteItem(nSelected);/ TODO: Add your command handler code here图3-15 删除销售付款约定的删除确认界面3.9 销售信息的查询功能实现 3.9.1 在ResouceView菜单中插入菜单,在下拉菜单下创建“客户查询”、“产品查询”、“业务员查询”,其对应得ID号为:ID_customer_sch ,ID_product_sch,ID_saleman_sch,其创建过程如图3-16所示:图3-16 绘制查询菜单并修改器属性 3.9.2 创建按客户查询的对话框IDD_CUSTOMER_SCH,并创建对话框的类CUSTOMER_SCH,过程如图3-17所示:图3-17 绘制基于客户查询的对话框选中客户查询对话框,点击右键“建立类向导”创建类CUSTOMER_SCH,并添加变量,过程如图3-18所示:图3-18 添加按客户查询对话框的变量 3.9.3 在CUSTOMER_SCH 类中创建OnInitDialog、OnOk函数,具体实现代码如下:BOOL CUSTOMER_SCH:OnInitDialog() CDialog:OnInitDialog();m_liebiao.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);m_liebiao.InsertColumn(0,客户代号,LVCFMT_CENTER,95);m_liebiao.InsertColumn(1,客户名称,LVCFMT_CENTER,95);m_liebiao.InsertColumn(2,产品名称,LVCFMT_CENTER,95);m_liebiao.InsertColumn(3,产品数量,LVCFMT_CENTER,95);return TRUE; void CUSTOMER_SCH:OnOK() UpdateData(TRUE);m_liebiao.DeleteAllItems();/删除所有列CADODatabase m_ADODb;/声明数据库连接对象 if(!m_ADODb.ConnectSQLServer(local),sa,销售信息子系统)/连接数据库 (local) 为数据库服务器名(一般为计算机名称) return ; CString strSql;strSql.Format(select * from 销售单基本项目 join 销售单物料明细表 on 销售单基本项目.销售单号=销售单物料明细表.销售单号 where 销售单基本项目.客户代号=%s AND BETWEEN%sAND%s,m_daihao,m_starttime.Format(%y-%m-%d),m_endtime.Format(%y-%m-%d);CADORecordset m_ADORecord; /声明记录集对象if(!m_ADORecord.Open(m_ADODb.GetActiveConnection(),strSql)|m_ADORecord.IsEOF()/如果记录集打开失败或者该部门信息不存在AfxMessageBox(没有找到相关记录);return; CString value; int i=0; while(!m_ADORecord.IsEOF()/遍历记录集(如果没有到记录集结尾则继续循环) m_ADORecord.GetFieldValue(客户代号,value); m_liebiao.InsertItem(i,value); m_ADORecord.GetFieldValue(客户名称,value); m_liebiao.SetItemText(i,1,value); m_ADORecord.GetFieldValue(产品名称,value); m_liebiao.SetItemText(i,2,value); m_ADORecord.GetFieldValue(订购量,value); m_liebiao.SetItemText(i,3,value); m_ADORecord.MoveNext(); +i; UpdateData(0); 3.9.4 按产品查询和按业务员查询的实现步骤和方法同按客户查询,具体代码见源代码中的类PRODUCT_SCH和SALEMAN_SCH中的具体函数。第四章 销售信息管理系统的功能4.1按客户统计查询功能的实现在ResouceView菜单中插入菜单,在下拉菜单下创建“客户查询”、“产品查询”、“业务员查询”,其对应得ID号为:ID_customer_sch ,ID_product_sch,ID_saleman_sch,其创建过程如下:图4-1 绘制查询菜单并修改器属性创建按客户查询的对话框IDD_CUSTOMER_SCH,并创建对话框的类CUSTOMER_SCH,过程如下:图4-2 绘制基于客户查询的对话框选中客户查询对话框,点击右键“建立类向导”创建类CUSTOMER_SCH,并添加变量,过程如下:图4-3 添加按客户查询

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论