vc+】客户管理系统毕业设计论文_第1页
vc+】客户管理系统毕业设计论文_第2页
vc+】客户管理系统毕业设计论文_第3页
vc+】客户管理系统毕业设计论文_第4页
vc+】客户管理系统毕业设计论文_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、客户管理系统 学 院 专 业 班 级 学 号 姓 名 指导教师 教师职称 年月日 目录 目录 摘要 0 引言 1 系统需求分析 2 总体设计 1 项目规划 2 系统功能结构 3 设计目标 3 系统设计 1 开发及运行环境 2 数据库设计 4 技术准备 1 数据库的封装 2 封装 ADO 数据库的代码分析 5 主要功能模块设计 1 主窗体 2 客户信息 3 联系人信息 4 联系人信息查询 附录 A 参考文献 附录 B 数据表 摘要 【摘要】 科技的发展、时代的进步,市场经济的竞争也越发激烈与残酷,在竞争中客户作为市场的 最最要的资源,早已成为市场营销的核心,企业间谁拥有的客户多,谁就在竞争中占有

2、绝对的 优势。在市场经济竞争如此激烈的环境之下,企业要想立于不败之地,就必须和与之生存发展 息息相关的客户,建立起良好的关系,在现有客户资源的基础之上,维护好和老客户的关系, 并且不断的发展新的客户,用企业高品质的产品、优质的服务、良好的信誉树立企业在客户心 目中的良好形象;并以客户需求为己任,不断的创新与发展自身的产品,以满足客户新需求, 并规范企业内部的客户资源的管理方式、提升企业的客户服务质量。计算机管理系统满足了企 业对自身客户资源管理的新要求,减少了客户资源管理过程中的浪费的大量人力、物力和财力 等。 【关键词】客户管理系统 0 引言 本系统具有完善的基础信息维护和客户信息维护功能,

3、并增置了客户服务模块,满足了客 户日常管理的需求;强大的数据查询及图表分析功能,帮助企业能够及时根据分析结果进行新 规划和方案,以适应变化万千的消费市场。客户管理系统后台数据库采用 SQL Server 2000 数据 库,以保证数据的安全、高效和稳定。前台采用 Microsoft 公司的 Visual C+ 6.0 作为主要的开 发工具,其可与 SQL Server 2000 数据库无缝链接。 1 系统需求分析 通过调查,要求系统需要有以下功能: 详细全面记录并管理客户信息和联系人信息。 方便实用的数据查询功能。 能够根据客户的反馈得出相应的处理方法,做到快速、及时。 对客户和企业进行分类,

4、方便管理。 设置业务往来的商品数量统计功能。 通过计算机控制电话呼叫用户。 2 总体设计 2.1 项目规划 客户管理系统所涉及的信息非常的全面,主要由基础信息维护、客户信息维护、客户服务、 信息查询、系统管理和帮助信息等几个功能模块组成,规划系统功能模块如下: 基础信息维护模块 基础信息维护模块主要包括区域信息设置、企业性质设置、企业类型设置、企业资信设置、 客户级别设置和客户满意程度设置 6 部分。 客户信息维护模块 客户信息维护模块主要包括客户信息、联系人信息、业务往来、客户呼叫中心 4 个部分。 客户服务模块 客户服务模块主要包括客户反馈、客户投诉 2 个部分。 信息查询模块 信息查询模

5、块主要包括客户信息查询、联系人信息查询、客户反馈满意度查询和客户投诉 满意度查询。 系统管理模块 系统管理模块主要包括操作员设置、密码修改。 帮助信息模块 帮助信息模块主要包括关于、帮助 2 个部分。 2.2 系统功能结构 客户管理系统的功能结构如图 1 所示。 图 1 客户管理系统功能架构图 2.3 设计目标 本系统属于典型的数据库管理系统,是针对中小型企业生产管理开发设计的,实现进一步 的计算机化的管理。通过本系统可以达到以下目标: 灵活的运用表格批量输入数据,使信息传递更快捷。 系统采用良好的人机对话模式,界面设计美观友好,信息查询灵活、方便、快捷、准 确,数据存储安全可靠。 键盘操作,

6、快速响应。 实现各种查询及打印等。 操作员可以随时修改自己的口令。 管理员可以设置操作员的权限 对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。 数据保密性强,为每个用户设置权限级别。 系统运行稳定、安全可靠。 3 系统设计 3.1 开发及运行环境 系统开发平台:Visual C+ 6.0。 数据库管理系统软件:SQL Server 2000。 运行平台:Windows xp/ Windows 2000。 分辨率:最佳效果 800*600。 3.2 数据库设计 本系统数据库采用 SQL Server 2000 数据库,系统数据库名称为 db_SCGL。数据库 db_SCGL 中

7、包含 19 张数据表。下面分别给出数据表概要说明和主要数据表的结构。 1数据表概要说明 从读者角度出发,使读者对本系统后台的数据库中数据表有一个更清晰的认识,在此特设 计一个数据库中数据表列表,该数据表列表包含系统所有数据表,如图 2 所示。 图 2 数据表列表 2主要数据表的结构 数据库中的数据表请参见附录 B。 4 技术准备 4.1 数据库的封装 调用数据库的方式有很多,主要有 DAO、ODBC、ADO,但使用起来比较灵活的是 ADO, 直接引用 ADO 的方法是在头文件 StdAfx.h 中加入如下代码: #import E:Program FilesCommon FilesSystem

8、adomsado15.dll no_namespace rename(EOF,adoEOF)rename(BOF,adoBOF) 然后在要用的 ADO 的类中加入两个指针的定义就可以应用 ADO 了 _ConnectionPtr m_pConnection; _RecordsetPtr m_pRecordset; 4.2 封装 ADO 数据库的代码分析 对 ADO 的封装主要是将引用 ADO 的代码加到自定义的类中,并引用头文件 StdAfx.h 即可, 对 ADO 进行封装的代码如下: 头文件 ADO.H 声明如下: #import C:Program FilesCommon FilesSy

9、stemadomsado15.dll no_namespace rename(EOF ,adoEOF) class ado public: _ConnectionPtr m_pConnection; _RecordsetPtr m_pRecordset; public: ado(); virtual ado(); void close(); bool MovePrevious();/向上移动 bool MoveLast();/最后一条 bool MoveNext();/向下移动 bool MoveFirst();/最后一条 int GetRecordCount();/获得记录个数 bool O

10、pen(CString srecordset, UINT adCmd); void GetErrors(_com_error eErrors);/获得错误信息 CString GetFieldValue(CString Field);/获得字段值 bool Move(int nRecordNum);/移动记录 void ExecuteSQL(CString SQL);/执行SQL语句 void rstOpen(CString TSQL);/打开记录集 ; 实现文件 ADO.CPP 原代码如下: 构造函数,直接实现数据库的连接。 ado:ado() :CoInitialize(NULL); /

11、ADO是基于COM技术要进行初始化 try m_pConnection.CreateInstance(_uuidof(Connection); _bstr_t strConnect=Provider=SQLOLEDB;SERVER=127.0.0.1;Database=db_client;uid=sa;pwd=; m_pConnection-Open(strConnect,0); catch(_com_error e) AfxMessageBox(e.Description(); 利用连接指针打开数据库,这样的方式打开的记录集,无法回滚,可以打开空记录集。 bool ado:Open(CStr

12、ing srecordset, UINT adCmd) try m_pRecordset=m_pConnection-Execute(_bstr_t)srecordset,NULL,adCmd); catch(_com_error return false; return true; 用于返回记录集的个数。 int ado:GetRecordCount() int nCount=0; try m_pRecordset-MoveFirst(); catch(.) return 0; if(m_pRecordset-adoEOF) return 0; while (!m_pRecordset-ad

13、oEOF) m_pRecordset-MoveNext(); nCount=nCount+1; m_pRecordset-MoveFirst(); return nCount; 这个函数用来获取执行 SQL 语句时的出错信息。 void ado:GetErrors(_com_error eErrors) ErrorsPtr pErrors=m_pConnection-GetErrors(); if (pErrors-GetCount()=0) MessageBox(NULL,eErrors.ErrorMessage(),错 误,MB_OK|MB_ICONEXCLAMATION); else f

14、or (int i=0;iGetCount();i+)/如果有多条语句,将用这个循环输出所有错误 _bstr_t desc=pErrors-GetItem(long)i)-GetDescription(); MessageBox(NULL,desc,错 误,MB_OK|MB_ICONEXCLAMATION); 用记录的指针打开一个记录集,但打开空记录集时返回错误,如果出错就转向用连接打开 记录集。 void ado:rstOpen(CString TSQL) try _bstr_t bstrSQL=TSQL.AllocSysString(); m_pRecordset.CreateInstan

15、ce(_uuidof(Recordset); m_pRecordset-Open(bstrSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText); catch(_com_error e) m_pRecordset=m_pConnection-Execute(_bstr_t)TSQL,NULL,adCmdText); 获取记录集指定列的值。 CString ado:GetFieldValue(CString Field) _variant_t Thevalue; CString temp; Thevalue=

16、m_pRecordset-GetCollect(_bstr_t)Field); if(Thevalue.vt=VT_EMPTY |Thevalue.vt=VT_NULL) temp=; else temp=(char*)(_bstr_t)Thevalue; temp.TrimRight(); temp.TrimLeft(); return temp; 指向记录集的游标向上移一条。 bool ado:MovePrevious() try m_pRecordset-MovePrevious(); catch(_com_error e) AfxMessageBox(e.Description();

17、return false; return true; 指向记录集的游标移到指定行处。 bool ado:Move(int nRecordNum) try if(!m_pRecordset-BOF) m_pRecordset-MoveFirst(); m_pRecordset-Move(nRecordNum); catch(_com_error e) AfxMessageBox(e.Description(); return false; return true; 指向记录集的游标向下移一条。 bool ado:MoveNext() try m_pRecordset-MoveNext(); ca

18、tch(_com_error e) AfxMessageBox(e.Description(); return false; return true; 将指向记录集的游标移到顶部。 bool ado:MoveFirst() try m_pRecordset-MoveFirst(); catch(_com_error e) AfxMessageBox(e.Description(); return false; return true; 将指向记录集的游标移到尾部。 bool ado:MoveLast() try m_pRecordset-MoveLast(); catch(_com_error

19、 e) AfxMessageBox(e.Description(); return false; return true; 用指向连接的指针执行 SQL 语句,如果 SQL 语句有语法错误,就返回响应的错误。 void ado:ExecuteSQL(CString TSQL) try m_pConnection-Execute(_bstr_t)TSQL,NULL,adCmdText); catch(_com_error e) AfxMessageBox(e.Description(); 关闭指针连接。 void ado:close() m_pRecordset-Close(); m_pConn

20、ection-Close(); m_pRecordset=NULL; m_pConnection=NULL; :CoUninitialize(); 5 主要功能模块设计 5.1 主窗体 主窗体主要是对客户管理系统的各个模块进行调用,主要有菜单调用和工具栏调用两种, 如图 3 所示。 图 3 主窗体运行效果 1菜单设计 (1)首先要用到工作区窗口,默认情况下工作区窗体是打开的,如果没打开可以从菜单中 选择 View/Workspace 此时工作区窗体会弹出,具体如图 4 所示。 图 4 工作区窗口 (2)工作区选项卡有三个选项卡,如图 4 所示。资源选项卡是 VC 的资源管理器,它的功 能是可以

21、实现添加或删除 Windows 的位图、图标、对话框等资源,要用资源选项卡,请单击资 源选项卡。 (3)添加菜单,可以鼠标右键单击 Menu 文件夹,出现菜单后选择 Insert Menu 就会出现菜 单编辑器,要想在菜单内添加文字就双击如图 4 所示的虚线框,弹出如图 5 所示菜单属性对话 框(Menu Item Properties)。 工作区窗口 图 4 工作区选项卡及菜单编辑器 图 5 菜单属性窗口 (4)设置菜单文本,可以在 Caption(标题)编辑框内输入即可,关闭属性窗体后一个菜单 项就生成了。所有的菜单项都是照这样的方法重复完成的。最后生成如图 6 所示的系统执行时 的菜单。

22、还有另一种生成菜单的方法,主要是利用 WindowApi 函数进行文本编辑,具体方法请 参照Windows98 程序设计一书。 图 6 系统执行时的菜单效果 2工具栏设计 工具栏资源可以利用 VC 自带的 ToolBar 编辑器生成,也可以采用 MFC 提供的 CToolBarCtrl 类动态生成,这里我们用语句动态生成。工具栏的生成将主要用到 CToolBarCtrl 类 的 Create 方法来创建工具栏,其原型如下: BOOL Create( DWORD dwStyle, const RECT 文件选项卡 资源选项卡 类选项卡 菜单编辑器虚线框 在这里输入汉字 dwStyle 是工具栏的

23、风格和样式,主要有 WS_CHILD(子窗体) , WS_VISIBLE(可见) 和 WS_DISABLED(不可见) ,还有以 CCS 开头 8 种样式,但在这 8 种样式中最长常用到的只有 CCS_TOP(把工具栏放在顶部) ,其它请参考 MSDN。 下面给出一个在程序中用到生成工具栏的实例代码。 toolbar.Create(WS_CHILD|WS_VISIBLE,CRect(0,0,0,0),this,ID_TOOLBAR); this 是指向其父窗体的指针,ID_TOOLBAR是在Resource.h 中定义的资源标识。 工具栏上的按钮主要是对数据结构 TBBUTTON 进行赋值来实

24、现的,下面给出一个具体赋值 的代码。 button0.dwData=0; button0.fsState=TBSTATE_ENABLED; button0.fsStyle=TBSTYLE_BUTTON; button0.idCommand=ID_ADD; button0.iString =toolbar.AddStrings(pString); fsState 确定按钮的状态,fsStyle 确定按钮的风格,dwData 可以是用户定义的数据, idCommand 是按下按钮后要执行命令的标识,通常是菜单项的 ID 值,iString 是在按钮上显示文 字,主要是通过 CtoolBarCtrl

25、 类的 AddStrings 方法加入的,pString 是 TCHAR 的指针,iBitmap 是在按钮上显示的图片的编号,通常是图形列表(CImageList)的序号。这里应该提示大家: button数组开始编号是基于 0 的。iBitmap 选择图形列表的标号也是基于 0 的。 如果要在工具栏中添加分隔符,就要使 button0.fsStyle=TBSTYLE_SEP,因为分隔符也是 一个按钮,并且此时 button0.idCommand 必须为 0。 工具栏中的按钮图片是通过 CimageList 类的进行导入的,CimageList 类的 Create 方法原形 如下: BOOL C

26、reate( int cx, int cy, UINT nFlags, int nInitial, int nGrow ); 由于 CimageList 类比较简单,一些参数请参照 MSDN,我这里只给一个具体实例。 在程序中的图象列表是通过如下代码实现的。 imagelist.Create(32,32,ILC_COLOR32|ILC_MASK,0,0); 创建了类对象还不行,还要往类中导入图片,实现的方法主要是通过全局函数 LoadIcon 将 图标加载到程序中,其主要参数只有一个就是图标文件,这里就不在多说了。ILC_COLOR32 是设 置图标的颜色深度,ILC_MASK 是设置是否非图

27、标区使用透明色。 3状态条的设计 状态栏主要使用 CStatusBarCtrl 类来生成,该类 Create 方法原型为: BOOL Create( DWORD dwStyle, const RECT WS_CHILD 和 WS_VISIBLE 是一般窗体控件通用的样式,使用的次数很多。 程序中经常使用工具栏和状态栏,下面给出在对话框初始化函数中生成工具栏和状态栏的 代码,具体代码如下: BOOL khmain:OnInitDialog() CDialog:OnInitDialog(); int weith2; weith1=150; weith0=500; statebar.Create(W

28、S_CHILD|WS_VISIBLE,CRect(0,0,0,0),this,ID_STATU); statebar.SetParts(3, statebar.SetText(长春市明日科技有限公司,0,0); imagelist2.Create(32,32,ILC_COLOR32|ILC_MASK,0,0); imagelist2.Add(:LoadIcon(:AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON12);/ Add函数是 向图象列表中添加图表 imagelist2.Add(:LoadIcon(:AfxGetResourceHandle

29、(),MAKEINTRESOURCE(IDI_ICON13); imagelist2.Add(:LoadIcon(:AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON14); imagelist2.Add(:LoadIcon(:AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON15); imagelist2.Add(:LoadIcon(:AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON16); imagelist2.Add(:LoadIcon(:AfxGetRe

30、sourceHandle(),MAKEINTRESOURCE(IDI_ICON20); toolbar2.EnableAutomation(); toolbar2.Create(WS_CHILD|WS_VISIBLE,CRect(0,0,0,0),this,ID_TOOLBAR2); toolbar2.SetImageList( int i; /以下就是对TBBUTTON结构进行赋值,赋值完成后工具栏的按钮就实现了 for(i=0;i7;i+) buttoni.dwData=0; buttoni.fsState=TBSTATE_ENABLED; buttoni.fsStyle=TBSTYLE_

31、BUTTON; button0.idCommand=ID_KHXX; button0.iBitmap=0; button1.idCommand=ID_lxrxx; button1.iBitmap=1; button2.idCommand=ID_KHHJ; button2.iBitmap=2; button3.idCommand=ID_KHFK; button3.iBitmap=3; button4.idCommand=ID_KHTS; button4.iBitmap=4; button5.idCommand=ID_EXITSYS; button5.iBitmap=5; CString s; T

32、CHAR *pString;/这个指针取得生成工具栏按钮的字符串 for(i=0;iSetWindowPos( for( int nCount=1; nCount SetWindowPos( m_nNumOfPages = 0; 用来设置指定对话框资源在 Tab 控件中的位置。 void CTabSheet:SetRect(int m) CRect tabRect, itemRect; int nX, nY, nXc, nYc; GetClientRect( GetItemRect(0, nX=itemRect.left; nY=itemRect.bottom+1; nXc=tabRect.r

33、ight-itemRect.left-2; nYc=tabRect.bottom-nY-2; for( int nCount=0; nCount SetWindowPos( m_pPagesm-SetWindowPos( 在 Tab 控件中显示对话框。 void CTabSheet:Show() for( int i=0; i Create( m_IDDi, this ); InsertItem( i, m_Titlei ); m_pPages0-ShowWindow(SW_SHOW); for( i=1; i ShowWindow(SW_HIDE); SetRect(); 在 Tab 控件中

34、显示指定对话框。 void CTabSheet:Show(int n) for( int i=0; i Create( m_IDDi, this ); InsertItem( i, m_Titlei ); for( i=0; i ShowWindow(SW_HIDE); m_pPagesn-ShowWindow(SW_SHOW); SetRect(n); SetCurSel(n); 用户单击 Tab 控件时,将焦点设置在对话框上。 void CTabSheet:OnLButtonDown(UINT nFlags, CPoint point) CTabCtrl:OnLButtonDown(nFl

35、ags, point); if(m_nCurrentPage != GetCurFocus() m_pPagesm_nCurrentPage-ShowWindow(SW_HIDE); m_nCurrentPage=GetCurFocus(); m_pPagesm_nCurrentPage-ShowWindow(SW_SHOW); 通过 Tab 控件在窗体中设置选项卡。 int CTabSheet:SetCurSel(int nItem) if( nItem = m_nNumOfPages) return -1; int ret = m_nCurrentPage; if(m_nCurrentPa

36、ge != nItem ) m_pPagesm_nCurrentPage-ShowWindow(SW_HIDE); m_nCurrentPage = nItem; m_pPagesm_nCurrentPage-ShowWindow(SW_SHOW); CTabCtrl:SetCurSel(nItem); m_nNumOfPages = 0; return ret; 获得 Tab 控件当前用户选择的分页项。 int CTabSheet:GetCurSel() return CTabCtrl:GetCurSel(); 5.3 联系人信息查询 1实现目标 实现查询功能,可以查询联系人的编号,企业的名

37、称,联系人的姓名等字段,最后将查询 出来的结果显示在列表中,程序运行结果如图 12 所示。 图 12. 联系人信息查询 2设计步骤 (1)设计类 qlxr,基类为 CDialog。 (2)定义文本框的成员变量(给资源 IDC_EDIT1 加变量)和列表框的成员变量(给资源 IDC_LIST1 加变量) 。 主要成员变量列表如表 2 所示(这里没有给出所有成员变量,具体请参照程序原代码) 。 表 2 主要资源属性设置 资源 ID类型变量描述 IDC_COMBO1CComboBoxm_com1查询条件 IDC_COMBO2CComboBoxm_com2查询条件 IDC_EDIT1CEditm_ed

38、it1输入查询信息 IDC_LIST1CListCtrlm_list显示查询结果 3代码分析 联系人人信息查询文件 Qlxr.ccp 的主要代码如下: 对话框的初始化程序代码如下: BOOL qlxr:OnInitDialog() CDialog:OnInitDialog(); this-m_com1.AddString(联系人编号); this-m_com1.AddString(企业名称); this-m_com1.AddString(联系人姓名); this-m_com1.AddString(联系人性别); this-m_com1.AddString(年龄); this-m_com1.Ad

39、dString(职位); this-m_com1.AddString(办公电话); this-m_com1.AddString(电子邮件); this-m_com1.AddString(手机); this-m_com2.AddString(like); this-m_com2.AddString(=); m_list.SetExtendedStyle(LVS_EX_GRIDLINES| LVS_EX_FULLROWSELECT| LVS_EX_HEADERDRAGDROP| LVS_EX_ONECLICKACTIVATE); m_list.InsertColumn(0,联系人编号); m_li

40、st.InsertColumn(1,企业名称); m_list.InsertColumn(2,联系人姓名); m_list.InsertColumn(3,联系人性别); m_list.InsertColumn(4,年龄); m_list.InsertColumn(5,职位); m_list.InsertColumn(6,办公电话); m_list.InsertColumn(7,电子邮件); m_list.InsertColumn(8,手机); m_list.SetColumnWidth(0,100);/设置列表框列的宽度 m_list.SetColumnWidth(1,100); m_list

41、.SetColumnWidth(2,100); m_list.SetColumnWidth(3,100); m_list.SetColumnWidth(4,100); m_list.SetColumnWidth(5,100); m_list.SetColumnWidth(6,100); m_list.SetColumnWidth(7,100); m_list.SetColumnWidth(8,100); this-loadlist(); return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: O

42、CX Property Pages should return FALSE void qlxr:OnButton2() this-EndDialog(true); 实现查询功能,当文本框和选择列表框都为空是,出现提示。 void qlxr:OnButton1() m_list.DeleteAllItems(); ado rst; CString sql,edit1,com1,com2; this-m_edit.GetWindowText(edit1); this-m_com2.GetWindowText(com2); this-m_com1.GetWindowText(com1); if(ed

43、it1.IsEmpty() AfxMessageBox(请输入); return; if(com1.IsEmpty() AfxMessageBox(请输入); return; if(com2.IsEmpty() AfxMessageBox(请输入); return; sql.Format(select * from tb_Client_lxrxx where %s %s %s,ssel,com2,edit1); rst.Open(sql,adCmdText); int recordcount=rst.GetRecordCount(); int ii; for(ii=1;ii=recordcou

44、nt;ii+) m_list.InsertItem(ii-1,); m_list.SetItemText(ii-1,0,rst.GetFieldValue(lxrxx_id); m_list.SetItemText(ii-1,1,rst.GetFieldValue(lxrxx_qymc); m_list.SetItemText(ii-1,2,rst.GetFieldValue(lxrxx_xm); m_list.SetItemText(ii-1,3,rst.GetFieldValue(lxrxx_xb); m_list.SetItemText(ii-1,4,rst.GetFieldValue(

45、lxrxx_nl); m_list.SetItemText(ii-1,5,rst.GetFieldValue(lxrxx_zw); m_list.SetItemText(ii-1,6,rst.GetFieldValue(lxrxx_bgdh); m_list.SetItemText(ii-1,7,rst.GetFieldValue(lxrxx_Email); m_list.SetItemText(ii-1,8,rst.GetFieldValue(lxrxx_sj); rst.Move(ii); rst.close(); 程序运行中对话框被打开后,列表框数据的初始化。 void qlxr:loa

46、dlist() ado rst; rst.Open(select * from tb_Client_lxrxx,adCmdText); int recordcount=rst.GetRecordCount(); int ii; for(ii=1;ii=recordcount;ii+) m_list.InsertItem(ii-1,); m_list.SetItemText(ii-1,0,rst.GetFieldValue(lxrxx_id); m_list.SetItemText(ii-1,1,rst.GetFieldValue(lxrxx_qymc); m_list.SetItemText(

47、ii-1,2,rst.GetFieldValue(lxrxx_xm); m_list.SetItemText(ii-1,3,rst.GetFieldValue(lxrxx_xb); m_list.SetItemText(ii-1,4,rst.GetFieldValue(lxrxx_nl); m_list.SetItemText(ii-1,5,rst.GetFieldValue(lxrxx_zw); m_list.SetItemText(ii-1,6,rst.GetFieldValue(lxrxx_bgdh); m_list.SetItemText(ii-1,7,rst.GetFieldValu

48、e(lxrxx_Email); m_list.SetItemText(ii-1,8,rst.GetFieldValue(lxrxx_sj); rst.Move(ii); rst.close(); 此函数用来将用户在 ComboBox 控件的选择转换成 SQL 语句所需的字段名称。 void qlxr:OnSelchangeCombo1() switch(m_com1.GetCurSel() case 0: ssel=lxrxx_id; break; case 1: ssel=lxrxx_qymc; break; case 2: ssel=lxrxx_xm; break; case 3: sse

49、l=lxrxx_xb; break; case 4: ssel=lxrxx_nl; break; case 5: ssel=lxrxx_zw; break; case 6: ssel=lxrxx_bgdh; break; case 7: ssel=lxrxx_Email; break; case 8: ssel=lxrxx_sj; break; 附录 A 参考文献 1Visual Basic精彩编程200例机械工业出版社 赛奎春、高春艳等 2003年1月 2Visual Basic数据库开发实例解析机械工业出版社 刘志铭、高春艳等 2003年8月 3Visual FoxPro数据库开发实例解析

50、机械工业出版社王晶莹、王国辉等 2003年9月 4Power Builder数据库开发实例解析机械工业出版社华传铭、张振坤等 2003年9月 5Delphi数据库开发实例解析机械工业出版社 赛奎春、郑骁鹏等 2004年2月 6PowerBuilder 精彩编程200例机械工业出版社 张振坤、李文立等 2004年9月 7Visual FoxPro 精彩编程200例机械工业出版社 王国辉、董韶华等 2004年9月 8ASP数据库开发实例解析机械工业出版社 李严、于亚芳、王国辉2004年12月 9Delphi工程应用与项目实践机械工业出版社 宋坤、赵智勇等 2005年1月 10Visual Basi

51、c工程应用与项目实践机械工业出版社 高春艳、李俊民等 2005年1月 11Visual C工程应用与项目实践机械工业出版社 张雨、阮伟良等 2005年1月 12JSP工程应用与项目实践机械工业出版社 陈威、白伟明、李楠 2005年2月 13ASP工程应用与项目实践机械工业出版社 王国辉、牛强、李南南 2005年4月 14Visual Basic 信息系统开发实例精选机械工业出版社 高春艳、李俊民、张耀庭等 2005年7月 15ASP 信息系统开发实例精选机械工业出版社 王国辉、牛强、李南南等 2005年7月 16Delphi 信息系统开发实例精选机械工业出版社 宋坤、赵智勇、刘强等 2005年7月 17Visual foxpro数据库开发关键技术与实例应用人民邮电出版社 周桓、张雨、王国 辉 2004年5月 18Power Builder数据库开发关键技术与实例应用人民邮电出版社 刘志铭、张振坤、 冯文萃 2004年5月 19Delphi数据库开发关键技术与实例应用人民邮电出版社 赛奎春、陈紫鸿、宋昆 2004年5月 附录 B 数据表 由于篇幅有限,只给出部分数据表。 (1)tb_khxx(客户信息表) 客户信息表主要用于保存客户

温馨提示

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

评论

0/150

提交评论