- 1.75 MB
- 2022-05-14 15:45:08 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
鸿达公司客户管理系统开发与实现摘要本课题所设计的系统能够统一管理与企业相关的客户及其联系人信息。客户与相关联系人信息是企业最重要的资源之一,通过客户管理系统能够有效地管理客户信息,提高企业客户管理效率。在此基础之上,进一步展开,才能对客户之间发生的活动、机会、销售、费用等进行详细管理。本课题实现了基础信息维护(包括:域信息设置、企业性质设置、企业类型设置、企业资信设置、客户级别设置、客户满意程度设置);客户信息维护(包括:客户信息、联系人信息、业务往来、发送邮件);客户服务(包括客户反馈、客户投诉、客户反馈满意程度分析、客户投诉满意程度分析);客户信息查询(包括:客户信息报表、联系人信息报表、业务往来报表、客户反馈报表、客户投拆报表);辅助工具以及管理模块,真正实现了客户资源管理的一体化。关键词:CRM;客户管理系统;MSSqlServer2005III
TheDevelopmentAndImplementationofHongdaCustomerManagementSystemABSTRACTDesignedbythesubjecttounifiedmanagementsystemassociatedwiththeenterprisecustomersandtheircontactinformation.Customerswithrelevantcontactinformationisoneofthemostimportantresource,throughthecustomermanagementsystemtoeffectivelymanagecustomerinformationandimprovetheefficiencyofenterprisecustomermanagement.Onthisbasis,furthertobetweencustomeractivities,opportunities,sales,management,etc.Toachievethistaskthemaintenanceofthebasicinformation(including:domaininformationsettings,thenatureofanenterprisesetup,businesstype,businesscreditestablishment,customer-levelsettings,setthelevelofcustomersatisfaction);maintenanceofcustomerinformation(including:customerinformation,contactinformation,businesscontacts,sende-mail);customerservice(includingcustomerfeedback,customercomplaints,customersatisfactionfeedbackanalysis,satisfactionwiththeanalysisofcustomercomplaints);customerinformation(including:customerinformationstatements,contactinformationstatements,businessreports,customerfeedbackstatements,statementsofcustomercomplaints);aidsaswellasthemanagementmodule,Customersrealizetheintegrationofresourcemanagement.Keywords:CRM;ManagementSystemCustomer;MSSqlServer2005III
目录引言1第1章系统分析21.1需求分析21.2可行性分析2第2章系统设计52.1设计目标52.2开发及运行环境52.3项目规划5第3章系统数据库设计73.1数据库概要设计73.2数据库物理设计9第4章主要功能模块设计174.1主窗体设计174.2数据模块204.3登录模块设计214.4客户信息模块244.5发送邮件模块284.6据库配置模块29第5章系统测试315.1鸿达公司客户管理系统单元测试315.2鸿达公司客户管理系统集成测试365.3测试总结37结束语38致谢39参考文献40附录42附录A文件架构图42附录B主要源程序44III
四川理工学院毕业设计(论文)引言在全球一体化、企业互动和以INTERNET为核心的时代,企业面临着如何发展潜在客户,如何将社会关系资源变为企业的销售和发展资源的一系列难办棘手的问题。在上述背景下,鸿达公司客户管理系统应运而生。本系统本着把握客户多样化和个性化的特点;以最快的速度响应客户需求;吸引新客户,留住老客户为原则。即从过去的以产品(Product-Centric)为中心的管理策略转向以客户为中心的(Customer-Centric)管理理念。系统旨在改善企业与客户之间的关系,建立新型的运营机制。本系统以企业级的整体客户管理为解决方案,帮助企业建立统一的客户资源、拓展销售渠道、寻求最佳市场方式、规范企业销售流程、提供科学分析方法,建立持久的客户体系。其大容量客户数据处理能力,让您的企业从多渠道收集信息,快速发现核心客户和潜在伙伴,进而给企业带来无限的利润。以客户为中心的理念在国外兴起于20世纪50年代,当时很多企业寄希望于通过改进技术、压缩生产周期、改善内部资源管理来提高生产增长率和利润,但事实上见效甚微。这样企业开始从强调降低经营成本的供应方发展策略转向了需求方策略。所谓需求方策略就是指与客户联系更加紧密,从客户关系方面挖掘新能源的策略,CRM应运而生。所不同的是,现在计算机可以帮助人们实现这些看似并不复杂而实际操作起来非常繁琐的工作。试想一下,当我们需要查找一个客户的电话号码时,只需敲几下键盘,就可以看到客户的详细资料(包括姓名、公司名称、电话、E-mail等),所有这些都是一个完善的鸿达公司客户管理系统所能完成的。1
四川理工学院毕业设计(论文)第1章系统分析现已确定系统开发的目标,系统需求规格。确定软件系统的总体结构,给出系统中各个组成模块间的联系。划分功能模块,将软件功能需求分配给所有单元模块。下一步工作就是在上述结果基础上,考虑怎样实现这个软件系统。1.1需求分析根据市场的需求,要求系统具有以下功能:完全人性化设计,无需专业人士指导,即可使用该系统。由于该系统的使用对象多,要求有较好的权限管理。系统具有数据备份及数据还原功能。能够保证系统数据的安全性。方便的全方位的数据查询。强大的报表打印功能。在相应的权限下,删除数据方便简单,数据稳定性好。强大的图表分析功能。退出系统。1.2可行性分析当接到客户管理系统开发任务,就进入客户管理开发的第一个阶段,即进行可行性的研究。并不是所有问题具有简单的解决办法,许多问题不能在预定的规模之内解决。因此通过可行性的研究分析可以知道问题。有可行性的解决方法,可以避免人力、物力和才力的浪费。在初步调查的基础上就可以提出系统目标,这是系统开发和评价的依据。系统目标应充分体现,直接为客户管理系统服务,并且,程序可以分期分批实现。但是,需要指出的是,系统目标是不可能在总体规划阶段就提得非常具体,它还将在开发过程中逐步明确和定量化。以达到更加出色的程序系统。可是,目标的提法不尽相同,例如:提高客户管理效率,减轻劳动强度;提高客户和联系人信息处理速度和准确性;为客户管理人员提供更方便、科学的服务项目。系统的目标确定后,就可以从以下两方面对能否实现新系统目标进行可行性分析:59
四川理工学院毕业设计(论文)一.技术可行性Borland公司的Delphi是一个非常优秀的数据库应用系统前端开发工具。这是由于BorlandDelphi自1995年2月诞生Version1.0以后,1996年3月,BorlandDelphiClient/ServerSuite2.0以其高效的数据重用功能得以在美国国家软件测试实验室进行的软件评估中获得了最高评价。随后,Borland又推出Delnhi的第三代版本——Delphi3.0多层Client/Server的32位快速开发工具。数据库应用系统是一种应用计算机技术完成数据处理的计算机应用系统,数据处理则指对各种形式的数据进行采集、存储、加工和传播的一系列活动的总和。进行数据处理的目的是为了从大量原始数据中获得对人类社会活动有价值的信息,以作为行动和采取对策的依据。因此,开发数据库应用系统需要选择一种数据库管理系统;然后,在其支持之下建立数据库;最后,使用一种开发工具编制数据库应用程序。鸿达公司客户管理系统所采用的BorlandDelphi就是一种可用于编制数据库应用程序的开发工具。采用二层C/S模式的数据库应用系统具有良好的应用性能,尤其适用于基于区域网络的网络数据库应用系统环境。在C/S模式数据库应用系统中,数据库服务器端的DBMS可以在多种产品中选用一种,常用的可以有:MicrosoftSQLServer,Oracle,SyBase,Informix等等。鸿达公司客户管理系统将以MicrosoftSQLServer作为数据库管理信息系统。所谓Delphi数据库应用系统是指,应用Delphi作为数据库应用系统前端程序开发工具形成的数据库应用系统。实际上,Delphi以面向对象的观点、可视化操作界面,提供开发C/S模式数据库应用系统的有效支持工具。Delphi在Windows操作系统环境下运行,提供两个版本供选择,标准版本和客户/服务器版本。应用Delphi开发数据库应用系统过程中,需要设置数据库访问和操作功能时,最基本的方法是使用Dephi提供的数据库操作控件。应用这些数据库操作控件,可以构建形成最基本的Dephi数据库应用系统功能。常用的数据库操作控件分别位于BorlandDephi可视化设计界面的三个组件页面上:ADO组件页(ADO)、数据访问组件页(DataAccess)和数据控制组件页(DataControls)。每一个组件页上汇集着一些具有相关功能的控件,当需要选用某一个控件时,应该先选定对应的组件页,然后在组件页上选取所需要的控件。59
四川理工学院毕业设计(论文)本系统开发环境为Delphi7.0,数据库为SQLServer2005数据库。Delphi7是用来快速开发Windows应用程序的应用程序开发工具,可以直观地使用图形化工具来创建Windows的应用程序。SQLServer2005是Microsoft公司推出的基于客户/服务器(C/S)模式的数据库系统,它提供了强大的企业数据库管理功能,是目前世界上的几个主流数据库管理系统之一。二.运行可行性系统的研制和开发是充分得考虑工作人员对人事信息的易于管理,管理者方便查询设备信息效率。从而在开发时我们用可视化界面,用户只需根据界面上的指示进行操作。59
四川理工学院毕业设计(论文)第2章系统设计2.1设计目标本系统属于小型的数据库系统,为了对中小型企业客户的管理,实现一些初步的计算机化的管理。通过本系统可以达到以下目标:灵活的运用表格批量输入数据,使信息传递更快捷。系统采用人机对话方式,界面美观友好、信息查询灵活、方便、快捷、准确、数据存储安全可靠。实现各种记录查询。操作员可以随时修改自己的口令。管理员可以设置操作员的权限对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。数据保密性强,为每个用户设置权限级别。系统最大限度地实现了易安装性、易维护性和易操作性。2.2开发及运行环境系统开发平台:Delphi7.0。数据库管理系统软件:SQLServer2005。运行平台:Windowsxp/Windows2000。分辨率:最佳效果1024*768。2.3项目规划鸿达公司客户管理系统是一个典型的数据库开发应用程序,由基础信息维护、客户信息维护、客户服务、客户信息查询、打印报表、辅助工具、系统管理等模块组成,规划系统功能模块如下:基础信息维护模块该模块主要负责区域信息设置、企业性质设置、企业类型设置、企业资信设置、客户级别设置、客户满意程度设置。客户信息维护模块该模块主要负责客户信息、联系人信息、业务往来、发送邮件(包括邮件群发设置)。59
四川理工学院毕业设计(论文)客户服务模块该模块主要负责客户反馈、客户投诉、客户反馈满意程度分析、客户投诉满意程度分析。客户信息查询模块该模块主要负责客户信息查询、联系人信息查询、根据客户反馈满意程度查询、根据客户投诉满意程序查询、客户反馈查询、客户投诉查询。打印报表模块该模块主要负责客户信息报表、联系人信息报表、业务往来报表、客户反馈报表、客户投拆报表。辅助工具模块该模块主要负责调用word、调用Excel、计算器、登录Internet、工作业务备忘、国内主要城市区号邮编查询。系统管理模块该模块主要负责操作员管理(包括权限设置与密码修改)、查看日志(包括日志清理)、数据备份与数据恢复、系统数据清理。图2.1系统功能架构图59
四川理工学院毕业设计(论文)第3章系统数据库设计数据库设计是整个软件开发的核心,数据库设计的合理否关系到整个软件的运行效率以及后期的可维护性与可操作性。数据库设计主要分为:数据库的概要设计与数据库的物理设计两个方面。3.1数据库概要设计在信息世界中,信息从客观事物出发流经数据库,通过决策机构最后又回到客观世界,信息的这一循环经历了三个领域:信息世界,数据世界,现实世界。现实世界的事物反映到人的头脑中,人的大脑对它有个认识过程,经过分析(选择、命名、分类等)进入信息世界。这些信息再进一步加工、编码,然后进入数据世界,而软件系统的开发工作需要考虑这两个方面的问题,也就是要考虑系统开发所需要的数据,以及如何对这些数据进行操作。这两个问题贯穿了整个软件系统的开发过程,这也就是数据库的设计问题,软件设计的一个核心。下面给出鸿达公司客户管理系统的数据库概念模型(使用PowerDesigner设计):图3.1联系人信息,客户反馈与客户满意度实体图图3.2客户反馈与客户投诉实体图59
四川理工学院毕业设计(论文)图3.3用户信息,客户信息,企业类型与省份资源实体图图3.4业务住来,区域信息,客户级别,城市信息与满意度统计实体图59
四川理工学院毕业设计(论文)图3.5企业性质,区域信息与本单位信息实体图3.2数据库物理设计经过数据库的概念设计后,就可以进入数据库的物理设计,本系统选用MSSQLServer2005来进行数据库的物理设计。首先创建17个基本的数据库表。(1)满意度统计表(tb_Client_mydtj)满意度统计表主要用于在客户满意度分析窗体中统计客户对企业满意程度的信息。该表结构如表3.1所示。表3.1满意度统计表字段名数据类型长度主键否功能描述mydtj_mydvarchar30满意度名称mydtj_slnumeric9满意度数量(2)本单位信息表(tb_bdwxx)本单位信息表,用于显示本单位的相关信息。该数据表的结构如表3.2所示。表3.2本单位信息表字段名数据类型长度主键否功能描述bdwxx_mcnvarchar50是单位名称bdwxx_lxdznvarchar50联系地址bdwxx_ybnvarchar50邮政编码bdwxx_cznvarchar50传真bdwxx_frdbnvarchar50法人代表bdwxx_lxdhnvarchar50联系电话bdwxx_khyhnvarchar50开户银行bdwxx_yhzhnvarchar50银行账号59
四川理工学院毕业设计(论文)bdwxx_wznvarchar50网址bdwxx_nshnvarchar50纳税号(3)城市邮编信息表(tb_Client_csxx)城市邮编信息表,用于显示全国各城市的邮编信息。该数据表的结构如表3.3所示。表3.3城市邮编信息表字段名数据类型长度主键否功能描述csxx_csjcvarchar6省份简称csxx_sfmcvarchar23省份名称csxx_csmcvarchar25城市名称csxx_ybvarchar10邮编csxx_dhqhvarchar10电话区号(4)工作备忘信息表(tb_Client_gzbw)工作备忘信息表,用于记录工作中的备忘信息。该数据表的结构如表3.4所示。表3.4工作备忘信息表字段名数据类型长度主键否功能描述gzbw_idvarchar10是工作备忘编号gzbw_btvarchar30记事标题gzbw_nrtext16记事内容gzbw_jsrqdatetime8记事日期gzbw_txrqdatetime8提醒日期gzbw_bzvarchar50备注信息(5)客户反馈信息表(tb_Client_khfk)客户反馈信息表,用于记录客户的返馈信息。该数据表的结构如表3.5所示。表3.5客户反馈信息表字段名数据类型长度主键否功能描述khfk_idvarchar30是客户反馈编号khfk_fkbtvarchar50反馈标题khfk_khmcvarchar50客户名称khfk_fknrvarchar50反馈内容59
四川理工学院毕业设计(论文)khfk_fkrqvarchar30反馈日期khfk_fkslrvarchar30反馈意见受理人khfk_khmydvarchar50反馈意见受理人khfk_bzvarchar100备注信息(6)客户投诉信息表(tb_Client_khts)客户投诉信息表,用于记录客户的投诉信息。该数据表的结构如表3.6所示。表3.6客户反馈信息表字段名数据类型长度主键否功能描述khts_idvarchar50是客户投诉编号khts_qymcvarchar50企业名称khts_tsrvarchar50投诉人khts_tsztvarchar80投诉主题khts_tsnrvarchar50投诉内容khts_tsrqvarchar30投诉日期khts_clbfvarchar100处理办法khts_khmydvarchar30客户满意程度khts_tsslrvarchar20投诉受理人khts_bzvarchar100备注信息(7)企业类型信息表(tb_Client_qylx)企业类型信息表,用于记录客户的投诉信息。该数据表的结构如表3.7所示。表3.7企业类型信息表字段名数据类型长度主键否功能描述qylx_idvarchar30是企业类型编号qylx_lxmcvarchar50类型名称qylx_bzvarchar100备注信息(8)区域信息表(tb_Client_qyxx)区域信息表,用于记录客户的区域信息。该数据表的结构如表3.8所示。表3.8区域信息表字段名数据类型长度主键否功能描述qyxx_idvarchar30是区域编号qyxx_qymcvarchar50区域名称qyxx_qyjbvarchar50区域级别59
四川理工学院毕业设计(论文)qyxx_zscdvarchar50区域重视程度qyxx_qygmltext16区域购买力描述qyxx_bzvarchar100备注信息(9)企业性质信息表(tb_Client_qyxz)企业性质信息表,用于记录客户的性质信息。该数据表的结构如表3.9所示。表3.9企业性质信息表字段名数据类型长度主键否功能描述qyxz_idvarchar30是企业性质编号qyxz_xzmcvarchar50性质名称qyxz_bzvarchar100备注信息(10)企业资信信息表(tb_Client_qyzx)企业资信信息表,用于记录客户的资信度信息。该数据表的结构如表3.10所示。表3.10企业资信信息表字段名数据类型长度主键否功能描述qyzx_idvarchar30是企业资信编号qyzx_zxjbvarchar50资信级别qyzx_bzvarchar100备注信息(11)省份资源信息表(tb_Client_sfzy)省份资源信息表,用于记录个省份的资源信息。该数据表的结构如表3.11所示。表3.11省份资源信息表字段名数据类型长度主键否功能描述sfzy_sfidvarchar30是省份编号sfzy_sfmcvarchar50省份名称sfzy_zymsvarchar2147483647省份资源描述(12)用户信息表(tb_user)用户信息表,用于记录操作用户的密码和操作权限。该数据表的结构如表3.12所示。59
四川理工学院毕业设计(论文)表3.12用户信息表字段名数据类型长度主键否功能描述user_idvarchar20是操作员编号user_namevarchar50操作员名称user_mmvarchar30密码user_yhjsvarchar20操作员权限user_msdatetime8时间1bit1权限2bit1权限3bit1权限4bit1权限5bit1权限6bit1权限7bit1权限8bit1权限9bit1权限10bit1权限11bit1权限12bit1权限13bit1权限14bit1权限15bit1权限16bit1权限17bit1权限18bit1权限19bit1权限20bit1权限21bit1权限22bit1权限23bit1权限24bit1权限25bit1权限26bit1权限59
四川理工学院毕业设计(论文)27bit1权限28bit1权限29bit1权限30bit1权限31bit1权限(13)客户级别表(tb_client_khjb)满意度统计表主要保存客户对企业满意度的信息。满意度统计结构表如表3.13所示。表3.13满意度统计表结构字段名数据类型长度主键否功能描述khjb_idvarchar50是客户级别编号khjb_jbmcvarchar50级别名称khjb_zdywlvarchar50该级别每月的最低业务量khjb_bzvarchar2147483647备注信息(14)联系人信息表(tb_client_lxrxx)联系人信息表主要保存联系人的详细信息。联系人信息表结构如表3.14所示。表3.14联系人信息表结构字段名数据类型长度主键否功能描述lxrxx_idvarchar20是联系人编号lxrxx_qymcvarchar20企业名称lxrxx_xmvarchar30联系人姓名lxrxx_xbvarchar5联系人性别lxrxx_csnydatetime8出生年月lxrxx_nlvarchar5联系人年龄lxrxx_zwvarchar30联系人职位lxrxx_bgdhvarchar30联系人办公电话lxrxx_Emailvarchar50联系人电子邮件lxrxx_sjvarchar20联系人手机lxrxx_grjjvarchar2147483647个人简介59
四川理工学院毕业设计(论文)lxrxx_djrqdatetime8登记日期lxrxx_xxdjrvarchar30信息登记人lxrxx_bzvarchar50备注(15)客户信息表(tb_khxx)客户信息表主要保存客户的详细信息。客户信息表结构如表3.15所示。表3.15客户信息表结构字段名数据类型长度主键否功能描述khxx_idvarchar30是客户编号khxx_mcvarchar50客户名称khxx_qyxzvarchar30企业性质khxx_qylxvarchar30企业类型khxx_qyzxvarchar30企业资信khxx_qydzvarchar50企业地址khxx_szsfvarchar30所属省份khxx_szcsvarchar30所属城市khxx_gsybvarchar6公司邮编khxx_frdbvarchar20法人代表khxx_khyhvarchar50开户银行khxx_yhzhvarchar50银行账号khxx_nshvarchar50纳税号khxx_ICcardvarchar50客户IC卡号khxx_gswzvarchar50公司网址khxx_gsdhvarchar20公司电话khxx_gsczvarchar20公司传真khxx_lxrvarchar30主要联系人khxx_lxrdhvarchar20联系人电话khxx_khjbvarchar20客户级别khxx_bzvarchar2147483647各注(16)客户满意度表(tb_Client_khmyd)客户满意度表主要保存客户满意度的信息。客户满意度表结构如表3.16所示。59
四川理工学院毕业设计(论文)表3.16客户满意度表结构字段名数据类型长度主键否功能描述Khmyd_idVarchar30是满意度编号Khmyd_mydVarchar50满意度名称Khmyd_bzVarchar2147483647备注(17)业务往来表(tb_Client_cpxs)业务往来表主要保存产品销售的详细信息。业务往来表结构如表3.17所示。表3.17业务往来表结构字段名数据类型长度主键否功能描述cpxs_idvarchar30是客户销售编号cpxs_mcvarchar50销售产品名称cpxs_cpdjvarchar50产品单价cpxs_xsslvarchar30销售数量cpxs_ywlvarchar50业务量cpxs_khmcdatatime8客户名称cpxs_xsrqdatatime8产品销售日期cpxs_bztext2147483647备注信息59
四川理工学院毕业设计(论文)第4章主要功能模块设计4.1主窗体设计主窗体主要是对鸿达公司客户管理系统的各模块进行调用,通过用户的正常登录,在主窗体的任务栏中显示操作员的姓名及日期。鸿达公司客户管理系统主窗体运行结果如图4.1所示。窗体设计步骤:(1)运行Delphi时,会自动创建一个窗体,设置该窗体为程序主窗体。命名窗体为“FRM_CRM”,设置Caption属性为“鸿达公司客户管理系统”。(2)在“Standard”组件页中点选“TmainMenu”组件,添加到窗体上,双击该组件打开菜单编辑器。(3)在“ObjectInspector”窗口中,设置Caption属性。(4)在“Win32”组件页中点选“TTreeView”组件,添加到窗体上。(5)在“TtreeView”编辑器中单击【NewItem】按钮,在Text文本框中输入相关的信息。(6)在“Win32”组件页中点选“TStatusBar”组件,添加到窗体上,双击TStatusBar组件,在弹出的对话框中单击【AddNew】按钮,添加面板。在“ObjectInspector”窗口中设置面板的Width属性和Caption属性。(7)在“Additional”组件页中点选“TImage”组件,在窗体上添加2个TImage组件。59
四川理工学院毕业设计(论文)图4.1主窗体运行结果主要程序代码:在窗体显示时,先调用登录窗体,如果登录成功则在主界面的任务栏上显示操作员名称及日期。窗体的OnShow事件代码如下:procedureTfrm_main.FormShow(Sender:TObject);beginFRM_YHDL.ShowModal;//调用登录窗体ifdl<4thenbegin//将当前时间赋给主窗体的任务栏上StatusBar1.Panels.Items[4].Text:=""+datetostr(now());StatusBar1.Panels.Items[1].Text:="操作员名称:"+yhmc;end;end;在窗体显示时,将实时的时间赋给主界面的任务栏。TTimer组件的OnTimer事件代码如下:procedureTfrm_main.Timer1Timer(Sender:TObject);59
四川理工学院毕业设计(论文)begin//将动态的时间赋给主界面的任务栏上StatusBar1.Panels[5].Text:=""+timetostr(gettime());end;在【区域信息设置】按钮的Onclick事件处理过程中,如果权限正确则调用“区域信息设置”窗体,否则显示“超出权限”对话框。其代码如下:procedureTfrm_main.submenu_qyxxszClick(Sender:TObject);varssp:string;beginifTrim(a[1])="True"thenbeginssp:="区域信息设置";setLogFile(ssp);application.CreateForm(TFrm_qyxx,frm_qyxx);frm_qyxx.Show;endelsebeginApplication.MessageBox("对不起,你的权限不够,请与管理员联系!","提示信息",0+64);end;end;在TtreeView组件的OnDblClick事件处理过程中,调用各窗体菜单按钮单击事件的处理过程。下面给出部分代码:procedureTfrm_main.TreViewDblClick(Sender:TObject);beginifTreView.Selected.Text="调用Word"thenbeginsubmenu_dyword.OnClick(Sender);//调用菜单中的"调用Word"事件...end;//--------------------------------------------------------------...59
四川理工学院毕业设计(论文)ifTreView.Selected.Text="客户投拆"thenbeginsubmenu_kfts.OnClick(Sender);end;//--------------------------------------------------------------...IfTreView.Selected.Text="系统数据清理"thenbeginsubmenu_xtsjql.OnClick(Sender);endend;在窗体的OnClose事件处理过程中关闭所有窗体。其代码如下:procedureTfrm_main.submenu_tcxtClick(Sender:TObject);beginApplication.Terminate;//退出系统end;4.2数据模块数据模块窗体主要功能是统一管理数据库访问组件,这也是本系统设计的关键所在,把所有要访问数据库的组件全放在DataModel模型中,这样可以统一管理,提高程序的可用性,也方便后期维护。数据模块如图4.2所示。图4.2数据模块59
四川理工学院毕业设计(论文)4.3登录模块设计登录模块主要是通过输入正确的操作员名称、密码和操作员级别进入主窗体,其基本流程为:用户输入自己的用户名,密码及级别,系统再对其输入进行判断,如果全都正确就进入系统,在用户输入密码的过程中,为了安全,在此设置了只能输入三次,这次就可以防止它人恶意进行系统。同时根据用户所选择的级别的不同提供相应的访问权限。登录模块如图4.3所示。图4.3登录模块运行结果主要程序代码:在窗体显示时,先通过变量jj来判断登录窗体的窗体名是“登录”还是“重新登录”,然后创建.ini文件,将窗体名和当前日期赋给.ini文件。窗体的OnShow事件代码如下:procedureTfrm_yhdl.FormShow(Sender:TObject);varini:Tinifile;ssp:string;//用于存储登录信息beginifjj=1thenbeginssp:="重新登录";frm_yhdl.Caption:="重新登录";endelsebegindl:=0;59
四川理工学院毕业设计(论文)ssp:="登录";frm_yhdl.Caption:="登录";end;ini:=Tinifile.Create("c:CRM_Log.ini");//在C盘创建记录文件ini.WriteString("one",datetimetostr(now),ssp);//写记录文件ini.Free;//释放记录文件ed_name.Clear;//用户名清空ed_password.Clear;cb_jb.Text:=cb_jb.Items[0];//使级别选择第一项ed_name.SetFocus;//用户名获得焦点end;在【确定】按钮的OnClick事件处理过程中,连接操作员数据库,并按操作员名称、密码和级别进行查询,如果有记录则把操作员的权限赋给数组a[],然后通过变量jj来判断是“登录”还是“重新登录”,如果是“登录”只能登录3次,否则将无限制。其代码如下:procedureTfrm_yhdl.Btn_dlClick(Sender:TObject);varP:integer;beginif(trim(ed_name.Text)="")or(trim(ed_password.Text)="")or(trim(cb_jb.Text)="")thenbeginapplication.MessageBox("用户名或密码不能为空,请重新输入!","提示",32);ed_name.Clear;ed_password.Clear;cb_jb.ItemIndex:=0;ed_name.SetFocus;endelsebeginwithfrm_dm.se_se_userdobeginclose;59
四川理工学院毕业设计(论文)parameters.ParamByName("@UserName").Value:=trim(ed_name.Text);parameters.ParamByName("@UserPassword").Value:=trim(ed_password.Text);parameters.ParamByName("@UserJb").Value:=trim(cb_jb.Text);open;ifRecordCount>0then//存在此用户记录beginyhmc:=FieldByName("user_name").AsString;forp:=1to31dobeginppl:=inttostr(p);a[p]:=booltostr(frm_dm.se_se_user.FieldByName(ppl).AsVariant,True);end;ifjj=1thenbeginfrm_yhdl.close;frm_main.Show;frm_Main.StaBar.Panels.Items[1].Text:="操作员名称:"+yhmc;endelsebeginfrm_yhdl.close;frm_main.Show;frm_Main.StaBar.Panels.Items[1].Text:="操作员名称:"+yhmc;end;endelsebeginshowmessage("操作员名称,密码或操作员级别不正确"+#13+"请重新输入.");ed_name.Clear;59
四川理工学院毕业设计(论文)ed_password.Clear;cb_jb.ItemIndex:=0;ed_name.SetFocus;dl:=dl+1;//登录次数加1end;end;ifjj<>1thenbeginifdl=4thenbeginfrm_csh.Close;end;end;end;end;4.4客户信息模块客户信息是企业最重要的资源,在鸿达公司客户管理系统中,对于客户信息的管理做到了全面,精确,容易。客户信息模块主要提供了添加、修改、删除、查询客户信息,上一条,下一条,上一条,末一条的功能。客户信息模块运行结果如图4.4所示。59
四川理工学院毕业设计(论文)图4.4客户信息模块运行结果主要程序代码:窗体显示时,通过存储过程,显示第一个关于客户信息的资料信息。窗体的OnShow事件代码如下:procedureTfrm_khxx.FormShow(Sender:TObject);beginwithfrm_dm.sp_se_khxxdo//调用存储过程beginClose;Open;First;//定位到第一条记录//客户编号edClientId.Text:=trim(FieldByName("khxx_id").AsString);//客户名称edClientName.Text:=Trim(FieldByName("khxx_mc").AsString);cbQyxz.Text:=Trim(FieldByName("khxx_qyxz").AsString);cbClientType.Text:=Trim(FieldByName("khxx_qylx").AsString);……end;end;59
四川理工学院毕业设计(论文)在【添加】按钮的OnClick事件处理过程中,先清空相关组件上的信息,打开客户信息表,通过存储过程自动生成客户编号,同时调用存储过程自动生成企业性质,客户类型,企业资信,客户级别,所属省份,所属城市供用户选择。其代码如下:procedureTfrm_khxx.btnAddClick(Sender:TObject);variTemp:Integer;beginxgbz:=1;//增加数据...edClientName.SetFocus;foriTemp:=ComponentCount-1downto0do//使所有文本框为空...beginifComponents[iTemp]isTEditthenbeginTEdit(Components[iTemp]).Clear;end;end;withsp_se_khxxIddo//客户编号自动增加...beginedClientId.Text:="KH"+FormatDateTime("yyyymm",Now)+Format("%.*d",[6,FieldByName("khxx_id").AsInteger+1]);end;withfrm_dm.sp_se_qyxzdo//增加企业性质以供选择...beginClose;Open;first;whilenotEofdobegincbQyxz.Items.Add(Trim(FieldByName("qyxz_xzmc").AsString));Next;end;cbQyxz.ItemIndex:=0;end;59
四川理工学院毕业设计(论文)……end;在【保存】按钮的OnClick事件处理过程中,通过全局变量的相应值做相应的操作,这儿的事件代码是最关键的,并对工具按钮可用度进行设置。其代码如下:procedureTfrm_khxx.btnSaveClick(Sender:TObject);beginwithfrm_dm.sp_in_khxxdo//调用插入客户信息存储过程beginClose;Parameters.ParamByName("@var_khxx_id").Value:=Trim(edClientId.Text);Parameters.ParamByName("@var_khxx_mc").Value:=Trim(edClientName.Text);Parameters.ParamByName("@var_khxx_qyxz").Value:=Trim(cbQyxz.Text);Parameters.ParamByName("@var_khxx_qylx").Value:=Trim(cbClientType.Text);……Parameters.ParamByName("@xgbz").Value:=xgbz;//通过修改标志做相应操作ExecProc;//执行存储过程end;在【第一条】按钮的OnClick事件处理过程中,使指针指向第一条记录(First),上一条(Prior),下一条(Next),末一条(Last)代码基本一样。代码如下:procedureTfrm_khxx.btnFirstClick(Sender:TObject);beginwithfrm_dm.sp_se_khxxdobeginFirst;//使记录指针移到第一条记录edClientId.Text:=trim(FieldByName("khxx_id").AsString);edClientName.Text:=Trim(FieldByName("khxx_mc").AsString);……end;end;59
四川理工学院毕业设计(论文)4.5发送邮件模块发送邮件模块主要是向客户发送邮件及群发邮件。为了能够发送邮件,使用了Delphi中Indy控件集中的TIdMessage控件与TIdSMTP控件实现邮件发送的功能。发送邮件模块运行结果如图4.5所示。图4.5发送邮件模块运行结果主要程序代码:在【发送邮件】按钮的OnClick事件处理过程中,通过TidMessage组件将联系人信息保存起来,再由TIdSMTP组件进行网络的连接和发送邮件。其代码如下:procedureTfrm_fsyj.bbtnFsyjClick(Sender:TObject);//发送邮件功能代码...beginif(trim(edFjrdz.Text)="")or(trim(edYfmc.Text)="")or(Trim(EdMm.Text)="")or(trim(edSjrdz.Text)="")or(trim(edYjzt.Text)="")or(trim(edYjfwq.Text)="")or(trim(edFj.Text)="")thenbeginShowMessage("请填写全部信息!");endelsebeginSelf.IdMessage1.Clear;Self.IdMessage1.From.Text:=trim(edFjrdz.Text);59
四川理工学院毕业设计(论文)Self.IdMessage1.Recipients.EMailAddresses:=edSjrdz.Text;Self.IdMessage1.Body.Assign(Memo1.Lines);Self.IdMessage1.Subject:=trim(edYjzt.Text);iftrim(edFj.Text)<>""thenbeginTIdAttachment.Create(IdMessage1.MessageParts,edFj.Text);end;Self.IdSMTP1.AuthenticationType:=atLogin;Self.IdSMTP1.Username:=trim(edYfmc.Text);Self.IdSMTP1.Password:=Trim(EdMm.Text);Self.IdSMTP1.Host:=trim(edYjfwq.Text);trySelf.IdSMTP1.Connect();trySelf.IdSMTP1.Send(IdMessage1);ShowMessage("E-Mail已经发送成功!");finallySelf.IdSMTP1.Disconnect;end;exceptOne:exceptiondobeginShowMessage("E-Mail发送失败:"+E.Message);end;end;end;end;4.6据库配置模块“数据库配置模块”主要完成的功能是当用户在不同的计算机上附加上鸿达公司客户管理系统的数据库后,不用去改源代码来连接数据库,软件在启动时会自动检测,若初始用户与密码还有主机名连接不到本机数据库,就会弹出这个窗口,让用户输入本机数据库的用户名与密码以及数据库服务器名称。这样有助于软件的灵活性与健壮性。59
四川理工学院毕业设计(论文)程序相关代码:“确定”按钮的单击事件代码如下:procedureTfrm_ljfwq.b_okClick(Sender:TObject);varzdszininame,ado:string;zdszini:tinifile;beginado:="Provider=SQLOLEDB.1;Password="+trim(ed_mm.Text)+";PersistSecurityInfo=True;UserID="+trim(ed_yh.Text)+";InitialCatalog="+trim(ed_sjk.Text)+";DataSource="+trim(ed_server.Text);zdszininame:=ExtractFilePath(Application.exename)+"connect.ini";zdszIni:=TIniFile.Create(zdszininame);zdszini.writeString("system","ado",ado);Application.MessageBox("保存成功,请重新运行程序!","提示信息",0+64);application.Terminate;end;59
四川理工学院毕业设计(论文)第5章系统测试当一个系统所有分析与编码完成后就进入了系统的测试阶段了,作为一个成品系统,系统的测试也是一个关键的环节,在测试阶段,我们将尽可能的找出系统的逻辑与语法错误,修补系统存在的Bug,做好系统的测试工作才能保证让用户用到一个安全、快速、便捷与高效的客户管理系统。鸿达公司客户管理系统测试的主要内容为:系统的单元测试与整个系统的集成测试。系统的单元测试主要目的是:1.测试各个功能模块是否运行正确。2.各个模块功能是否已经完全实现。系统的集成测试主要目的是:在运行可能是不完整的应用,保证软件单元被结合后能正常操作的测试执行的阶段。5.1鸿达公司客户管理系统单元测试单元测试集中检测软件设计的最小单元——模块,通常单元测试和编码属于软件过程的同一个阶段.在编写出源代码并通过了编译的语法检查后,就可以用详细设计描述作指南,对重要的执行通路进行测试,以便发现模块内部的错误。可以应用人工测试和计算机测试这样两种不同类型的测试方法,完成单元测试工作。这两种测试方法各有所长,互相补充,通常单元测试主要使用白盒测试技术。而且对多个模块的测试可以并行进行。当然对于本系统,我们采用人工测试方法进行单元测试,由于模块太多,要是一一在此都体现出测试报告,有点不太合适,所以只在此列三个模块的测试报告。一.系统登录测试。主要目的:测试是否可以正确登录,如果可以,那么正确登录后,系统是否可以通过登录时用户所选择的”级别”而进行相应的权限控制。1.以超级管理员登录系统。用户名:hy,密码:123,级别:高级用户,如图5.1系统登录测试,进入系统后测试各个模块是否都拥有相应权限.59
四川理工学院毕业设计(论文)图5.1系统登录测试通过各个模块测试,可知该用户拥有所有权限.2.以普通用户登录系统用户名:test,密码:123456,级别:普通用户,进行系统后,选择一个功能模块,系统就会提示用户“对不起,你的权限不够,请用管理员联系!”的提示信息,如图5.2普通用户登录测试:图5.2普通用户登录测试59
四川理工学院毕业设计(论文)企业性质设置单击“基础信息”à“企业性质设置”,打开“企业性质设置”窗口。“添加”功能:单击“添加”按钮,其它相应按钮置为不可用状态,适合要求。添加一条“企业性质”。可以看到,“企业性质编号”在自动增加,并用户不可更改,这样就可以保证数据的一至性,防止用户错误的输入,而使软件的可用性与稳定性降低。输入“企业性质名称”与“备注信息”后单击“保存”按钮后,其它相应按钮变为可用状态,并且提示用户“保存成功”,符合需求分析时的要求。如图5.3企业性质的添加:图5.3企业性质的添加单击确定,就可以在“企业性质列表”中看到新添加的信息。2.:“删除”功能选中一条“企业性质”信息,单击“删除”按钮,相应按钮可用状态改变,然后再单击“保存”按钮。弹出提示“保存成功”,可以在“企业性质列表“中看到,被删除的信息已经不存在。59
四川理工学院毕业设计(论文)3.“修改”功能选中一条“企业性质”信息,单击“修改”按钮,相应按钮可用状态改变,修改相应信息后,单击”保存”按钮,相应按钮可用性状态改变,系统弹出”保存成功”,可以在”企业性质列表”中看到被修改的企业性质。4.“查询”功能单击“查询”按钮,打开“查询”提示框,如图5.4企业性质的查询:图5.4企业性质的查询在“请选择企业性质名称”的列表中,选择一条“性质名称”,单击”查询”按钮后,就会在“企业性质设置”中相应其对应的信息,同时”查询”提示框消失.如果用户没有选择已有的“企业性质名称”,而自己输入一个不存在的“企业性质名称”,那么系统就会做出相应的提示,并且把数据移动到第一条记录以便显示,如图5.5企业性质查询不存在:59
四川理工学院毕业设计(论文)图5.5企业性质查询不存在5.“第一条”功能单击“第一条”按钮,就会显示”第一条“企业性质”信息,如果已经到第一条,则所显数据就不会有变化。6.“上一条”功能单击“上一条”按钮,如果当前数据不是第一条,就会向上移动一条数据。7.“下一条”功能单击“下一条”按钮,如果当前数据不是最后一条,就会向后移动一条数据。8.“末一条”功能单击”末一条”按钮,就会显示最后一条“企业性质”信息,如果已经到了最后一条,则所显信息不会变化。三.“联系人信息报表”模块单击“打印报表”à“联系人信息报表”,打开“联系人信息报表”窗口,在这儿可以打印“联系人信息报表”,如果联系人比较多,就会分布显示,如图5.6联系人信息报表。59
四川理工学院毕业设计(论文)图5.6联系人信息报表5.2鸿达公司客户管理系统集成测试集成测试是测试和组装软件的系统化技术,例如,子系统测试限使在把模块按照设计要求组装起来的同时进行测试,主要目标是发现与接口有关的问题(系统测试与此类似)。例如,数据穿过接口时可能丢失;一个模块对另一个模块可能由于疏忽而造成有害影响;把子功能组合起来可能不产生预期的主功能;个别看来是可以接受的误差可能积累到不能接受的程度;全程数据结构可能有问题等等。不幸的是,可能发生的接口问题多得不胜枚举。通过前面的模块测试,可以发现软件的各个模块的功能都已实现,并错误提示以及用户的友好性方面做得都比较不错,现在就看看各个模块的功能组合是否完美。1.添加一条“客户信息”,保存成功后,再在“打印报表”中选择“客户信息报表”,看看刚刚添加的客户信息是否存在在报表中。通过试验可以看到,对应成功。2.对于各个操作,看是否系统做了记录,打开“系统管理”à“查看日志”,打开“查看日志”窗口,单击查看日志按钮,可以看到我们做了都做了那些操作,如图5.7所示。59
四川理工学院毕业设计(论文)图5.7系统日志查看5.3测试总结经过以上的测试,系统总体来说运行稳定,界面友好性方面都基本能得到满足,本系统主要是用Delphi做界面,而后台用SqlServer2005,写了大量的存储过程,这样的好处很多,比如:如果有的功能改变了,可以不用更改应用程序,而直接去修改存储过程,并且存储过程由强大的MSSQLServer管理,性能,安全性方面不容置疑,不仅可以减小网络流量,而且在数据库方面更能体现模块化的程序设计。当然本系统也有不足之处,比如:数据库的概念设计等不佳,容易产生重复数据,这些在以后软件开发生涯中都会好好注意的。59
四川理工学院毕业设计(论文)结束语经过两个多月的设计和开发,基于Delphi的鸿达公司客户管理系统基本开发完毕。其功能基本符合需求。鸿达公司客户管理系统主要就是管理企业掌握的客户以及相关的联系人,实现对客户和客户相关联系人进行更新、查看、添加操作让企业在第一时间内得到客户最新的消息。通过所查阅的书刊和网页,了解了客户管理在现代企业管理中给企业所带来的便利,降低了企业的成本、提高了效率、改善了企业的服务,客户管理是以客户为中心的一个管理系统。与此同时在部分书中得了鸿达公司客户管理系统的总体设计框架与设计思想。由于本课题是面向企业内部管理人员所设计,所以在设计数据库时作者用SQLServer2005来做数据库,来适应公司里的管理人员、财务人员、销售人员、行政人员操作。通过对该系统的开发,使作者将课本学习与实际应用结合起来,在实际问题的解决中,培养独立思考的能力和勇于创新的精神,并从中学到许多知识,如现在用Delphi开发一些中小型的软件基本没有什么问题,特别是应用数据库的存储过程来做相应控制的开发有了更深入的理解,同时也加深了对软件设计过程的了解,为以后的工作打下了坚实的基础。但是由于毕业设计时间较短,所以该系统还有不尽如人意的地方,比如每次数据库的关联性设计得不佳,界面还有待美化等。59
四川理工学院毕业设计(论文)致谢在本次的毕业设计中,通过指导老师的耐心指导作者学会了如何利用Delphi开发一个中小型系统,感谢指导老师在理论和实践上给作者的帮助,老师认真负责的工作态度和严谨的治学精神都使作者收益匪浅。与此同时作者也感谢身边的同学和朋友提供给作者的一些资料,在这些资料帮助下这次毕业设计才能够顺利完成。另外,还要感谢同学四年来对作者的关心与支持,感谢各位老师在学习期间对作者的严格要求。同时也要感谢身边朋友的热心帮助,没有你们的支持与关心,就没有作者今天的毕业设计!59
四川理工学院毕业设计(论文)参考文献[1]JSP数据库系统开发完全手册[M].北京:人民邮电出版社,2006.3[2]Delphi数据库系统开发完全手册[M].北京:人民邮电出版社,2006.3[3]VisualBasic数据库系统开发完全手册[M].北京:人民邮电出版社,2006.3[4]VisualC++数据库系统开发完全手册[M].北京:人民邮电出版社,2006.3[5]王国辉.JSP信息系统开发实例精选[M].北京:机械工业出版社,2005.7[6]宋坤.VisualBasic信息系统开发实例精选[M].北京:机械工业出版社,2005.7[7]宋昆.SQLServer数据库开发实例解析[M].北京:机械工业出版社,2006.1[8]李俊民.Access数据库开发实例解析[M].北京:机械工业出版社,2006.1[9]赛奎春.VisualBasic精彩编程200例[M].北京:机械工业出版社,2003.1[10]李严.ASP数据库开发实例解析[M].北京:机械工业出版社,2004.12[11]宋坤.Delphi工程应用与项目实践[M].北京:机械工业出版社,2005.1[12]高春艳.VB工程应用与项目实践[M].北京:机械工业出版社,2005.1[13]张雨.VisualC++工程应用与项目实践[M].北京:机械工业出版社,2005.1[14]陈威.JSP工程应用与项目实践[M].北京:机械工业出版社,2005.2[15]王国辉.ASP工程应用与项目实践[M].北京:机械工业出版社,2005.4[16]高春艳.VisualBasic信息系统开发实例精选[M].北京:机械工业出版社,2005.7[17]王国辉.ASP信息系统开发实例精选[M].北京:机械工业出版社,2005.7[18]宋坤.Delphi信息系统开发实例精选[M].北京:机械工业出版社,2005.759
四川理工学院毕业设计(论文)[19]周桓.Visualfoxpro数据库开发关键技术与实例应用[M].北京:人民邮电出版社,2004.5[20]刘志铭.PoweBuilder数据库开发关键技术与实例应用[M].北京:人民邮电出版社,2004.5[21]赛奎春.Delphi数据库开发关键技术应用[M].北京:人民邮电出版社,2004.5[22]高春艳.VB数据库开发关键技术应用[M].北京:人民邮电出版社,2004.5[23]明日科技.VisualC++管理信息系统完整项目实例剖析[M].北京:人民邮电出版社,2005.7[24]明日科技.VisualBasic管理信息系统完整项目实例剖析[M].北京:人民邮电出版社,2005.7[25]明日科技.PowerBuilder管理信息系统完整项目实例剖析[M].北京:人民邮电出版社,2005.7[26]明日科技.VisualFoxPro管理信息系统完整项目实例剖析[M].北京:人民邮电出版社,2005.7[27]赛奎春.Delphi数据库开发实例解析[M].北京:机械工业出版社,2004.2[28]刘志铭.VisualBasic数据库开发实例解析[M].北京:机械工业出版社,2003.8[29]王晶莹.VisualFoxPro数据库开发实例解析[M].北京:机械工业出版社,2003.9[30]华传铭.PowerBuilder数据库开发实例解析[M].北京:机械工业出版社,2003.9[31]张振坤.PowerBuilder精彩编程200例[M].北京:机械工业出版社,2004.9[32]王国辉.VisualFoxPro精彩编程200例[M].北京:机械工业出版社,2004.959
四川理工学院毕业设计(论文)附录附录A文件架构图(1)程序主文件架构图,如图A..1所示。为了使读者能够对系统文件有更清晰的认识及使用,在此设计了程序主文件架构图。图A..1主文件架构图(2)基础信息维护文件架构图,如图A.2所示。图A..2基础信息维护文件架构图59
四川理工学院毕业设计(论文)(3)客户信息维护文件架构图,如图A..3所示。图A..3客户信息维护文件架构图(4)客户服务文件架构图,如图A..4所示。图A..4客户服务文件架构图(5)系统管理文件架构图,如图A..5所示。图A.5系统管理文件架构图59
四川理工学院毕业设计(论文)附录B主要源程序鸿达公司客户管理系统的源程序联系人信息模块功能代码:unitp_lxrxx;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,ExtCtrls,ComCtrls,ToolWin,ImgList,StdCtrls,cxStyles,cxCustomData,cxGraphics,cxFilter,cxData,cxDataStorage,cxEdit,DB,cxDBData,cxGridLevel,cxClasses,cxControls,cxGridCustomView,cxGridCustomTableView,cxGridTableView,cxGridDBTableView,cxGrid,ADODB;typeTfrm_lxrxx=class(TForm)Panel1:TPanel;Panel2:TPanel;ToolBar1:TToolBar;btnAdd:TToolButton;btnUpdate:TToolButton;btnDelete:TToolButton;btnSave:TToolButton;btnCancel:TToolButton;btnQuery:TToolButton;ToolButton7:TToolButton;btnFirst:TToolButton;btnPrior:TToolButton;btnNext:TToolButton;btnLast:TToolButton;ToolButton12:TToolButton;btnClose:TToolButton;ImageList1:TImageList;PageControl1:TPageControl;TabSheet1:TTabSheet;TabSheet2:TTabSheet;Panel3:TPanel;Label1:TLabel;59
四川理工学院毕业设计(论文)Label2:TLabel;Label3:TLabel;Label4:TLabel;Label5:TLabel;Label6:TLabel;Label7:TLabel;Label8:TLabel;Label9:TLabel;Label10:TLabel;Label11:TLabel;Label12:TLabel;Label13:TLabel;Label14:TLabel;edLxrId:TEdit;edLxrName:TEdit;dtpBirthday:TDateTimePicker;edAge:TEdit;edOfficeTel:TEdit;edLxrZw:TEdit;edSj:TEdit;edEmail:TEdit;edBz:TEdit;meGrjj:TMemo;edXxdjr:TEdit;dtpDjDate:TDateTimePicker;cbSex:TComboBox;edClientName:TEdit;lxrxxDs:TDataSource;cxLxrxxDBTableView1:TcxGridDBTableView;cxLxrxxLevel1:TcxGridLevel;cxLxrxx:TcxGrid;cxLxrxxDBTableView1DBColumn1:TcxGridDBColumn;cxLxrxxDBTableView1DBColumn2:TcxGridDBColumn;cxLxrxxDBTableView1DBColumn3:TcxGridDBColumn;cxLxrxxDBTableView1DBColumn4:TcxGridDBColumn;cxLxrxxDBTableView1DBColumn5:TcxGridDBColumn;cxLxrxxDBTableView1DBColumn6:TcxGridDBColumn;cxLxrxxDBTableView1DBColumn7:TcxGridDBColumn;59
四川理工学院毕业设计(论文)cxLxrxxDBTableView1DBColumn8:TcxGridDBColumn;cxLxrxxDBTableView1DBColumn9:TcxGridDBColumn;cxLxrxxDBTableView1DBColumn10:TcxGridDBColumn;cxLxrxxDBTableView1DBColumn11:TcxGridDBColumn;cxLxrxxDBTableView1DBColumn12:TcxGridDBColumn;cxLxrxxDBTableView1DBColumn13:TcxGridDBColumn;cxLxrxxDBTableView1DBColumn14:TcxGridDBColumn;sp_se_lxrxxId:TADOStoredProc;procedurebtnAddClick(Sender:TObject);procedurebtnUpdateClick(Sender:TObject);procedurebtnDeleteClick(Sender:TObject);procedurebtnCancelClick(Sender:TObject);procedureFormShow(Sender:TObject);procedurebtnSaveClick(Sender:TObject);procedurebtnFirstClick(Sender:TObject);procedurebtnPriorClick(Sender:TObject);procedurebtnNextClick(Sender:TObject);procedurebtnLastClick(Sender:TObject);procedurebtnCloseClick(Sender:TObject);procedureFormClose(Sender:TObject;varAction:TCloseAction);procedureedSjKeyPress(Sender:TObject;varKey:Char);procedureedClientNameKeyPress(Sender:TObject;varKey:Char);proceduredtpBirthdayChange(Sender:TObject);private{Privatedeclarations}publicxgbz:Integer;//全局变量1:增加数据,2:修改数据,3:删除数据{Publicdeclarations}end;varfrm_lxrxx:Tfrm_lxrxx;implementationusesdm;//引用数据模块{$R*.dfm}//增加按钮单击事件代码procedureTfrm_lxrxx.btnAddClick(Sender:TObject);var59
四川理工学院毕业设计(论文)iTemp:Integer;beginxgbz:=1;//增加数据...btnAdd.Enabled:=False;//增加按钮状态不可用btnUpdate.Enabled:=False;btnDelete.Enabled:=False;btnSave.Enabled:=True;btnCancel.Enabled:=True;btnQuery.Enabled:=False;btnFirst.Enabled:=False;btnPrior.Enabled:=False;btnNext.Enabled:=False;btnLast.Enabled:=False;foriTemp:=ComponentCount-1downto0do//使所有文本框为空...beginifComponents[iTemp]isTEditthenbeginTEdit(Components[iTemp]).Clear;end;end;meGrjj.Clear;edLxrName.SetFocus;withsp_se_lxrxxIddobeginClose;Open;edLxrId.Text:="LX"+FormatDateTime("yyyymm",Now)+Format("%.*d",[6,FieldByName("lxrxx_id").AsInteger+1]);//联系人Id号自动增加end;end;//修改数据单击事件代码procedureTfrm_lxrxx.btnUpdateClick(Sender:TObject);beginxgbz:=2;//修改数据...btnAdd.Enabled:=False;btnUpdate.Enabled:=False;btnDelete.Enabled:=False;btnSave.Enabled:=True;59
四川理工学院毕业设计(论文)btnCancel.Enabled:=True;btnQuery.Enabled:=False;btnFirst.Enabled:=False;btnPrior.Enabled:=False;btnNext.Enabled:=False;btnLast.Enabled:=False;edLxrName.SetFocus;end;//删除按钮单击事件代码procedureTfrm_lxrxx.btnDeleteClick(Sender:TObject);beginxgbz:=3;//删除数据...btnAdd.Enabled:=False;btnUpdate.Enabled:=False;btnDelete.Enabled:=False;btnSave.Enabled:=True;btnCancel.Enabled:=True;btnQuery.Enabled:=False;btnFirst.Enabled:=False;btnPrior.Enabled:=False;btnNext.Enabled:=False;btnLast.Enabled:=False;end;//取消按钮单击事件代码procedureTfrm_lxrxx.btnCancelClick(Sender:TObject);beginbtnAdd.Enabled:=True;btnUpdate.Enabled:=True;btnDelete.Enabled:=True;btnSave.Enabled:=False;btnCancel.Enabled:=False;btnQuery.Enabled:=True;btnFirst.Enabled:=True;btnPrior.Enabled:=True;btnNext.Enabled:=True;btnLast.Enabled:=True;FormShow(Sender);end;59
四川理工学院毕业设计(论文)procedureTfrm_lxrxx.FormShow(Sender:TObject);beginwithfrm_dm.sp_se_lxrxxdo//执行存储过程beginClose;//关闭连接Open;//打开连接First;//记录打针移到第一条记录edLxrId.Text:=Trim(FieldByName("lxrxx_id").AsString);edClientName.Text:=Trim(FieldByName("lxrxx_qymc").AsString);edLxrName.Text:=Trim(FieldByName("lxrxx_xm").AsString);cbSex.Text:=Trim(FieldByName("lxrxx_xb").AsString);dtpBirthday.Date:=FieldByName("lxrxx_csny").AsDateTime;edAge.Text:=Trim(FieldByName("lxrxx_nl").AsString);edOfficeTel.Text:=Trim(FieldByName("lxrxx_bgdh").AsString);edLxrZw.Text:=Trim(FieldByName("lxrxx_zw").AsString);edSj.Text:=Trim(FieldByName("lxrxx_sj").AsString);edXxdjr.Text:=Trim(FieldByName("lxrxx_xxdjr").AsString);dtpDjDate.Date:=FieldByName("lxrxx_djrq").AsDateTime;edEmail.Text:=Trim(FieldByName("lxrxx_Email").AsString);edBz.Text:=Trim(FieldByName("lxrxx_bz").AsString);meGrjj.Text:=Trim(FieldByName("lxrxx_grjj").AsString);end;end;//保存按钮单击事件代码(关键部分)procedureTfrm_lxrxx.btnSaveClick(Sender:TObject);beginbtnAdd.Enabled:=True;btnUpdate.Enabled:=True;btnDelete.Enabled:=True;btnSave.Enabled:=False;btnCancel.Enabled:=False;btnQuery.Enabled:=True;btnFirst.Enabled:=True;btnPrior.Enabled:=True;btnNext.Enabled:=True;btnLast.Enabled:=True;59
四川理工学院毕业设计(论文)withfrm_dm.sp_in_lxrxxdobeginParameters.ParamByName("@var_lxrxx_id").Value:=Trim(edLxrId.Text);Parameters.ParamByName("@var_lxrxx_qymc").Value:=Trim(edClientName.Text);Parameters.ParamByName("@var_lxrxx_xm").Value:=Trim(edLxrName.Text);Parameters.ParamByName("@var_lxrxx_xb").Value:=Trim(cbSex.Text);Parameters.ParamByName("@var_lxrxx_csny").Value:=dtpBirthday.Date;Parameters.ParamByName("@var_lxrxx_nl").Value:=Trim(edAge.Text);Parameters.ParamByName("@var_lxrxx_zw").Value:=Trim(edLxrZw.Text);Parameters.ParamByName("@var_lxrxx_bgdh").Value:=Trim(edOfficeTel.Text);Parameters.ParamByName("@var_lxrxx_Email").Value:=Trim(edEmail.Text);Parameters.ParamByName("@var_lxrxx_sj").Value:=Trim(edSj.Text);Parameters.ParamByName("@var_lxrxx_grjj").Value:=Trim(meGrjj.Text);Parameters.ParamByName("@var_lxrxx_djrq").Value:=dtpDjDate.Date;Parameters.ParamByName("@var_lxrxx_xxdjr").Value:=Trim(edXxdjr.Text);Parameters.ParamByName("@var_lxrxx_bz").Value:=Trim(edBz.Text);Parameters.ParamByName("@xgbz").Value:=xgbz;ExecProc;//执行存储过程ifParameters.ParamByName("@cgbz").Value=0thenbeginApplication.MessageBox("成功保存客户信息","提示信息",0+64);endelsebeginifParameters.ParamByName("@cgbz").Value=1thenbeginApplication.MessageBox("增加客户信息失败!","失败信息",0+16);endelseifParameters.ParamByName("@cgbz").Value=2thenbeginApplication.MessageBox("修改客户信息失败!","失败信息",0+16);endelsebeginApplication.MessageBox("删除客户信息失败!","失败信息",0+16);end;end;end;59
四川理工学院毕业设计(论文)//刷新数据...frm_dm.sp_se_lxrxx.Active:=False;frm_dm.sp_se_lxrxx.Active:=True;frm_dm.sp_se_lxrxx.First;FormShow(Sender);end;procedureTfrm_lxrxx.btnFirstClick(Sender:TObject);beginwithfrm_dm.sp_se_lxrxxdobeginFirst;edLxrId.Text:=Trim(FieldByName("lxrxx_id").AsString);edClientName.Text:=Trim(FieldByName("lxrxx_qymc").AsString);edLxrName.Text:=Trim(FieldByName("lxrxx_xm").AsString);cbSex.Text:=Trim(FieldByName("lxrxx_xb").AsString);dtpBirthday.Date:=FieldByName("lxrxx_csny").AsDateTime;edAge.Text:=Trim(FieldByName("lxrxx_nl").AsString);edOfficeTel.Text:=Trim(FieldByName("lxrxx_bgdh").AsString);edLxrZw.Text:=Trim(FieldByName("lxrxx_zw").AsString);edSj.Text:=Trim(FieldByName("lxrxx_sj").AsString);edXxdjr.Text:=Trim(FieldByName("lxrxx_xxdjr").AsString);dtpDjDate.Date:=FieldByName("lxrxx_djrq").AsDateTime;edEmail.Text:=Trim(FieldByName("lxrxx_Email").AsString);edBz.Text:=Trim(FieldByName("lxrxx_bz").AsString);meGrjj.Text:=Trim(FieldByName("lxrxx_grjj").AsString);end;end;//上一条单击事件procedureTfrm_lxrxx.btnPriorClick(Sender:TObject);beginwithfrm_dm.sp_se_lxrxxdobeginPrior;edLxrId.Text:=Trim(FieldByName("lxrxx_id").AsString);edClientName.Text:=Trim(FieldByName("lxrxx_qymc").AsString);edLxrName.Text:=Trim(FieldByName("lxrxx_xm").AsString);cbSex.Text:=Trim(FieldByName("lxrxx_xb").AsString);59
四川理工学院毕业设计(论文)dtpBirthday.Date:=FieldByName("lxrxx_csny").AsDateTime;edAge.Text:=Trim(FieldByName("lxrxx_nl").AsString);edOfficeTel.Text:=Trim(FieldByName("lxrxx_bgdh").AsString);edLxrZw.Text:=Trim(FieldByName("lxrxx_zw").AsString);edSj.Text:=Trim(FieldByName("lxrxx_sj").AsString);edXxdjr.Text:=Trim(FieldByName("lxrxx_xxdjr").AsString);dtpDjDate.Date:=FieldByName("lxrxx_djrq").AsDateTime;edEmail.Text:=Trim(FieldByName("lxrxx_Email").AsString);edBz.Text:=Trim(FieldByName("lxrxx_bz").AsString);meGrjj.Text:=Trim(FieldByName("lxrxx_grjj").AsString);end;end;procedureTfrm_lxrxx.btnNextClick(Sender:TObject);beginwithfrm_dm.sp_se_lxrxxdobeginNext;edLxrId.Text:=Trim(FieldByName("lxrxx_id").AsString);edClientName.Text:=Trim(FieldByName("lxrxx_qymc").AsString);edLxrName.Text:=Trim(FieldByName("lxrxx_xm").AsString);cbSex.Text:=Trim(FieldByName("lxrxx_xb").AsString);dtpBirthday.Date:=FieldByName("lxrxx_csny").AsDateTime;edAge.Text:=Trim(FieldByName("lxrxx_nl").AsString);edOfficeTel.Text:=Trim(FieldByName("lxrxx_bgdh").AsString);edLxrZw.Text:=Trim(FieldByName("lxrxx_zw").AsString);edSj.Text:=Trim(FieldByName("lxrxx_sj").AsString);edXxdjr.Text:=Trim(FieldByName("lxrxx_xxdjr").AsString);dtpDjDate.Date:=FieldByName("lxrxx_djrq").AsDateTime;edEmail.Text:=Trim(FieldByName("lxrxx_Email").AsString);edBz.Text:=Trim(FieldByName("lxrxx_bz").AsString);meGrjj.Text:=Trim(FieldByName("lxrxx_grjj").AsString);end;end;//末一条按钮单击事件procedureTfrm_lxrxx.btnLastClick(Sender:TObject);beginwithfrm_dm.sp_se_lxrxxdo59
四川理工学院毕业设计(论文)beginLast;//记录指针移到最后一条edLxrId.Text:=Trim(FieldByName("lxrxx_id").AsString);edClientName.Text:=Trim(FieldByName("lxrxx_qymc").AsString);edLxrName.Text:=Trim(FieldByName("lxrxx_xm").AsString);cbSex.Text:=Trim(FieldByName("lxrxx_xb").AsString);dtpBirthday.Date:=FieldByName("lxrxx_csny").AsDateTime;edAge.Text:=Trim(FieldByName("lxrxx_nl").AsString);edOfficeTel.Text:=Trim(FieldByName("lxrxx_bgdh").AsString);edLxrZw.Text:=Trim(FieldByName("lxrxx_zw").AsString);edSj.Text:=Trim(FieldByName("lxrxx_sj").AsString);edXxdjr.Text:=Trim(FieldByName("lxrxx_xxdjr").AsString);dtpDjDate.Date:=FieldByName("lxrxx_djrq").AsDateTime;edEmail.Text:=Trim(FieldByName("lxrxx_Email").AsString);edBz.Text:=Trim(FieldByName("lxrxx_bz").AsString);meGrjj.Text:=Trim(FieldByName("lxrxx_grjj").AsString);end;end;//关闭按钮单击事件procedureTfrm_lxrxx.btnCloseClick(Sender:TObject);beginifbtnSave.Enabledthen//如果保存按钮可用,说明没有保存beginifApplication.MessageBox("你还没有保存数据,是否保存后再退出(是/否)?","提示信息",MB_OKCANCEL)=ID_OKthenbeginbtnSave.OnClick(Sender);//保存数据endend;frm_lxrxx.Close;end;//在窗体关闭事件中同样进行判断是否保存数据procedureTfrm_lxrxx.FormClose(Sender:TObject;varAction:TCloseAction);beginifbtnSave.EnabledthenbeginifApplication.MessageBox("你还没有保存数据,是否保存后再退出(是/否)?","提示信息",MB_OKCANCEL)=ID_OKthen59
四川理工学院毕业设计(论文)beginbtnSave.OnClick(Sender);endend;frm_lxrxx.Close;end;//手机号码文本框只能输入数据procedureTfrm_lxrxx.edSjKeyPress(Sender:TObject;varKey:Char);beginifnot(keyin["0".."9","-",#8])thenkey:=#0;end;//用户按回车键时选择下一个可得到焦点的控件procedureTfrm_lxrxx.edClientNameKeyPress(Sender:TObject;varKey:Char);begininherited;ifkey=#13thenselectnext((senderasTwincontrol),True,True);end;//用户选择出生年月后自动计算出年龄procedureTfrm_lxrxx.dtpBirthdayChange(Sender:TObject);beginifdtpBirthday.Date<=now()thenbeginedAge.Text:=inttostr(strtoint(formatdatetime("yyyy",now()))-strtoint(formatdatetime("yyyy",dtpBirthday.Date)));edOfficeTel.SetFocus;endelsebeginshowmessage("出生年月输入错误!");dtpBirthday.Date:=now();end;end;end.数据备份与恢复功能代码:unitp_dataBackupRestore;interface59
四川理工学院毕业设计(论文)usesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,ExtCtrls,StdCtrls,Buttons;typeTfrm_dataBackupRestore=class(TForm)Panel1:TPanel;lbHint:TLabel;btnDataBackup:TBitBtn;btnDataRestore:TBitBtn;btnCancel:TBitBtn;openDiaBackData:TOpenDialog;saveDiaBackdata:TSaveDialog;lbDataBackUp:TLabel;lbDataRestore:TLabel;procedurebtnCancelClick(Sender:TObject);procedurebtnDataBackupClick(Sender:TObject);procedurebtnDataRestoreClick(Sender:TObject);private{Privatedeclarations}public{Publicdeclarations}end;varfrm_dataBackupRestore:Tfrm_dataBackupRestore;implementationusesdm,DB,ADODB;{$R*.dfm}procedureTfrm_dataBackupRestore.btnCancelClick(Sender:TObject);beginfrm_dataBackupRestore.Close;end;procedureTfrm_dataBackupRestore.btnDataBackupClick(Sender:TObject);varsDir:string;begintryifsaveDiaBackdata.Executethen//判断用户是否单击了数据备份按钮beginlbHint.Visible:=False;lbDataBackUp.Visible:=True;sDir:=saveDiaBackdata.FileName+".bak";//自动添加扩展名.bakwithfrm_dm.ado_publicdobeginClose;SQL.Clear;59
四川理工学院毕业设计(论文)SQL.Add("backupdatabasedb_clienttodisk="+""""+sDir+"""");//备份SQL语句ExecSQL;//执行SQL语句end;Application.MessageBox("数据备份成功!","恭喜!",0+64);lbHint.Visible:=True;lbDataBackUp.Visible:=False;end;exceptlbHint.Visible:=True;lbDataBackUp.Visible:=False;Application.MessageBox("数据备份失败!","失败信息!",0+16);end;end;//数据恢复单击事件代码procedureTfrm_dataBackupRestore.btnDataRestoreClick(Sender:TObject);varsDir:String;beginfrm_dataBackupRestore.DoubleBuffered:=True;//TomaketheFormin-memoryfirstifApplication.MessageBox("数据一但恢复就不能撤消,请谨慎操作,确定进行数据恢复(是/否?)","询问信息",MB_OKCANCEL)=idokthenbeginlbHint.Visible:=False;//显示与隐藏提示信息...lbDataRestore.Visible:=True;trybeginifopenDiaBackData.Executethenbegin//在这儿就不用加扩展名了,因为在保存时已有扩展名...sDir:=openDiaBackData.FileName;withfrm_dm.ado_publicdobeginClose;SQL.Clear;//通过master 数据库来进行DB的恢复,,,SQL.Add("usemasterrestoredatabasedb_Clientfromdisk="+""""+sDir+"""");ExecSQL;Close;SQL.Clear;SQL.Add("useDb_Client");//最后再把当前数据库置为DB_CLIENT...ExecSQL;end;end;Application.MessageBox("数据恢复成功!","提示信息",0+64);59
四川理工学院毕业设计(论文)lbHint.Visible:=True;lbDataRestore.Visible:=False;end;exceptlbHint.Visible:=True;lbDataRestore.Visible:=False;Application.MessageBox("数据恢复失败!","提示信息",0+16);end;endelsebeginfrm_dataBackupRestore.Close;end;end;end.联系人信息模块所需存储过程:Ⅰ.查询联系人信息存储过程:createprocedure[dbo].[Client_se_lxrxx]asSELECT[lxrxx_id],[lxrxx_qymc],[lxrxx_xm],[lxrxx_xb],[lxrxx_csny],[lxrxx_nl],[lxrxx_zw],[lxrxx_bgdh],[lxrxx_Email],[lxrxx_sj],[lxrxx_grjj],[lxrxx_djrq],[lxrxx_xxdjr],[lxrxx_bz]FROM[db_Client].[dbo].[tb_Client_lxrxx]GOⅡ.查询联系人信息编号的最大值:createprocedure[dbo].[Client_se_lxrxxid]asselectmax(convert(int,substring(lxrxx_id,9,6)))lxrxx_idfromtb_Client_lxrxxGO59
四川理工学院毕业设计(论文)Ⅲ.联系人信息的添加,修改与删除存储过程:createprocedure[dbo].[Client_in_lxrxx]@var_lxrxx_idvarchar(20),--联系人编号@var_lxrxx_qymcvarchar(40),--企业名称@var_lxrxx_xmchar(30),--姓名@var_lxrxx_xbchar(5),--性别@var_lxrxx_csnydatetime,@var_lxrxx_nlvarchar(5),@var_lxrxx_zwvarChar(30),@var_lxrxx_bgdhvarchar(30),@var_lxrxx_Emailvarchar(30),@var_lxrxx_sjvarchar(20),@var_lxrxx_grjjvarchar(1000),@var_lxrxx_djrqdatetime,@var_lxrxx_xxdjrchar(30),@var_lxrxx_bzvarchar(50),@xgbzint,--1:增加数据,:修改数据,:删除数据@cgbzintoutputasbeginselect@cgbz=0begintran--事务开始if@xgbz=1begin--增加数据insertintodbo.tb_Client_lxrxx(lxrxx_id,lxrxx_qymc,lxrxx_xm,lxrxx_xb,lxrxx_csny,lxrxx_nl,lxrxx_zw,lxrxx_bgdh,lxrxx_Email,lxrxx_sj,lxrxx_grjj,lxrxx_djrq,lxrxx_xxdjr,lxrxx_bz)values(@var_lxrxx_id,@var_lxrxx_qymc,@var_lxrxx_xm,@var_lxrxx_xb,@var_lxrxx_csny,@var_lxrxx_nl,@var_lxrxx_zw,@var_lxrxx_bgdh,@var_lxrxx_Email,@var_lxrxx_sj,@var_lxrxx_grjj,@var_lxrxx_djrq,@var_lxrxx_xxdjr,@var_lxrxx_bz)if@@error<>0or@@rowcount=0beginselect@cgbz=1rollbacktran--事务回滚returnendend59
四川理工学院毕业设计(论文)--修改数据if@xgbz=2beginupdatedbo.tb_Client_lxrxxsetlxrxx_qymc=@var_lxrxx_qymc,lxrxx_xm=@var_lxrxx_xm,lxrxx_xb=@var_lxrxx_xb,lxrxx_csny=@var_lxrxx_csny,lxrxx_nl=@var_lxrxx_nl,lxrxx_zw=@var_lxrxx_zw,lxrxx_bgdh=@var_lxrxx_bgdh,lxrxx_Email=@var_lxrxx_Email,lxrxx_sj=@var_lxrxx_sj,lxrxx_grjj=@var_lxrxx_grjj,lxrxx_djrq=var_lxrxx_djrq,lxrxx_xxdjr=@var_lxrxx_xxdjr,lxrxx_bz=@var_lxrxx_bzwherelxrxx_id=@var_lxrxx_idif@@error<>0or@@rowCount=0beginselect@cgbz=2rollbacktran--事务回滚returnendend--删除数据if@xgbz=3begindeletedbo.tb_Client_lxrxxwherelxrxx_id=@var_lxrxx_idif@@error<>0or@@rowCount=0beginselect@cgbz=3rollbacktran--事务回滚returnendendcommittran--提交事务returnendGO59