![VS2008客户管理系统设计及论大学生写作能力_第1页](http://file4.renrendoc.com/view/550f76e39409f9ecc93c37737a97266a/550f76e39409f9ecc93c37737a97266a1.gif)
![VS2008客户管理系统设计及论大学生写作能力_第2页](http://file4.renrendoc.com/view/550f76e39409f9ecc93c37737a97266a/550f76e39409f9ecc93c37737a97266a2.gif)
![VS2008客户管理系统设计及论大学生写作能力_第3页](http://file4.renrendoc.com/view/550f76e39409f9ecc93c37737a97266a/550f76e39409f9ecc93c37737a97266a3.gif)
![VS2008客户管理系统设计及论大学生写作能力_第4页](http://file4.renrendoc.com/view/550f76e39409f9ecc93c37737a97266a/550f76e39409f9ecc93c37737a97266a4.gif)
![VS2008客户管理系统设计及论大学生写作能力_第5页](http://file4.renrendoc.com/view/550f76e39409f9ecc93c37737a97266a/550f76e39409f9ecc93c37737a97266a5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要在瞬息万变的市场环境中,企业要立于不败之地。必须依托现代化的管理思想和手段,其中客户管理尤为重要。企业客户管理系统作为ERP软件中的CRM组件的一个功能模块,本系统实现了企业客户管理的信息化,可对企业所有客户的相关信息进行有效管理,并可以通过邮件与客户进行沟通,交流。本文详细阐述了使用C#及LINQ开发该系统的设计、分析、实施的过程。C#是微软公司发布的一种面向对象的、运行于.NETFramework之上的高级程序设计语言,是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性。LINQ是VisualStudio2023中的领军人物。借助于LINQ技术,我们可以使用一种类似SQL的语法来查询任何形式的数据。目前为止LINQ所支持的数据源有SQLServer、XML以及内存中的数据集合。本文所选的课题涉及的知识知识与技术都是微软近些年的新技术,力图在CRM软件的技术上有自己的创新,并将其应用到现实生产实践中,有利于调动学生学习实践积极性,全面提高学生的软件开发能力和综合素质。关键词:客户关系管理;C#;LINQ
AbstractInarapidlychangingmarketenvironment,enterprisesmustbeinvincible.Mustrelyonmodernmanagementideasandtools,includingcustomermanagementisparticularlyimportant.EnterpriseCustomerManagementSystemasERPsoftwareintheCRMcomponentofafunctionalmodule,thesystemrealizedtheenterprisecustomermanagementinformation,businessescanallcustomerinformationforeffectivemanagement,andcancommunicatewithcustomersviae-mailexchange.ThispaperdescribestheuseofC#andLINQdevelopmentofthesystemdesign,analysis,implementationprocess.C#isMicrosoft'sreleaseofanobject-oriented,runningon.NETFrameworkonthehigh-levelprogramminglanguage,isasafe,stable,simple,elegant,fromtheCandC++derivedforobjectprogramminglanguage.ItinheritsCandC++powerwhileremovingthecomplexityofsomeoftheircharacteristics.LINQisaVisualStudio2023intheleader.WithLINQtechnology,wecanuseasyntaxsimilartoSQLtoquerydataofanykind.LINQsofarsupportedbythedatasourcewithSQLServer,XML,andmemorydatasets.ThisknowledgeofselectedtopicsrelatedtoknowledgeandtechnologyareMicrosoft'snewtechnologyinrecentyears,inabidtohavetheirownCRMsoftware,technicalinnovationandapplyittorealproductionpractice,toarousingtheenthusiasmofthestudentsstudyandpracticecomprehensivelyimprovetheirsoftwaredevelopmentcapabilityandoverallquality.Keywords:CRM;C#;LINQ
目录TOC\o"1-2"\h\z\u引论 PAGEREFToc260904764\h1(一) 项目背景 PAGEREFToc260904765\h1(二) 项目技术简介 PAGEREFToc260904766\h4一、企业客户管理系统系统分析 PAGEREFToc260904767\h7(一) 需求分析 PAGEREFToc260904768\h7(二) 系统总体流程图分析 PAGEREFToc260904769\h7(三) 系统功能结构 PAGEREFToc260904770\h8(四) 系统模块功能分析 PAGEREFToc260904771\h9二、企业客户管理系统系统设计 PAGEREFToc260904772\h10(一) 设计目标 PAGEREFToc260904773\h10(二) 开发运行环境 PAGEREFToc260904774\h10(三) 编码规范 PAGEREFToc260904775\h11(四) 数据库设计 PAGEREFToc260904776\h12(五) 对象模型的建立 PAGEREFToc260904777\h17(六) 界面设计 PAGEREFToc260904778\h19(七) 关键性代码解析 PAGEREFToc260904779\h23三、系统的测试与纠错 PAGEREFToc260904780\h29后记 PAGEREFToc260904781\h30主要参考文献 PAGEREFToc260904782\h31引论项目背景随着Internet技术的蓬勃发展,全世界范围内,所有企业都在经历着一场变革。企业在扩大市场、提高效率和保持客户的原始商业驱动力不变的情况下,如何从浩如烟海的信息中,获取最有效的市场情况和客户信息,并及时作出反应,方能提高企业的竞争力。与此同时,客户的期望也在发生着变化,客户完全可以决定选择哪位供应商。随着网络、通讯技术的发展,客户选择可摆脱传统地域的限制。因此如何最大程度的留住客户,积极发展新客户,成为了企业竞争的一个重要方面。关于ERPERP(EnterpriseResourcePlanning,企业资源计划)是上个世纪90年代美国一家IT公司根据当时计算机信息、IT技术发展及企业对供应链管理的需求,预测在今后信息时代企业管理信息系统的发展趋势和即将发生变革,而提出的概念。ERP是针对物资资源管理(物流)、人力资源管理(人流)、财务资源管理(财流)、信息资源管理(信息流)集成一体化的企业管理软件。一个由GartnerGroup开发的概念,描述下一代制造商业系统和制造资源计划(MRPII)软件。它将包含客户/服务架构,使用图形用户接口,应用开放系统制作。除了已有的标准功能,它还包括其它特性,如品质、过程运作管理、以及调整报告等。特别是,ERP采用的基础技术将同时给用户软件和硬件两方面的独立性从而更加容易升级。ERP的关键在于所有用户能够裁剪其应用,因而具有天然的易用性。ERP不仅仅是一个单一的系统,而是许多复杂系统的集合体(如图1所示),本文所述的客户资源管理只是其中的极小一部分。图SEQ图\*ARABIC1关于CRM一、CRM的含义CRM(CustomerRelationshiopManagement,客户关系管理)是一种以客户为中心的经营策略。它以信息技术为手段,并对工作流程进行重组,赋予企业更完善的客户交流能力,最大化客户的收益。客户关系管理是旨在改善企业与客户之间关系的新型管理机制,它主要实施于企业的市场营销、销售、服务与技术支持等与客户相关的领域。通过向企业的销售、市场和客户服务的专业人员提供全面、个性化的客户资料,并强化跟踪服务、信息分析的能力,使他们能够协同建立和维护一系列与客户和生意伙伴之间卓有成效的“一对一关系”,从而使企业得以提供更快捷和周到的优质服务、提高客户满意度、吸引和保持更多的客户,从而增加营业额;另一方面则通过信息共享和优化商业流程来有效地降低企业经营成本。客户关系管理也是一种管理软件和技术。它将最佳的商业实践与数据挖掘、数据仓库、一对一营销、销售自动化以及其它信息技术紧密结合在一起,为企业的销售、客户服务和决策支持等领域提供一个业务自动化的解决方案,使企业有了一个基于电子商务的面对客户的前沿。它主要包含以下几个主要方面(简称7P):客户概况分析(Profiling)包括客户的层次、风险、爱好、习惯等;客户忠诚度分析(Persistency)指客户对某个产品或商业机构的忠实程度、持久性、变动情况等;客户利润分析(Profitability)指不同客户所消费的产品的边缘利润、总利润额、净利润等;客户性能分析(Performance)指不同客户所消费的产品按种类、渠道、销售地点等指标划分的销售额;客户未来分析(Prospecting)包括客户数量、类别等情况的未来发展趋势、争取客户的手段等;客户产品分析(Product)包括产品设计、关联性、供应链等;客户促销分析(Promotion)包括广告、宣传等促销活动的管理。图SEQ图\*ARABIC2二、CRM的目标客户关系管理的目标就是提高效率、拓展市场和保留客户。利用信息技术,结合企业现有的管理系统如MIS系统、ERP系统,将分散在企业各部门的信息加以统计、分析,为企业的市场开拓提供支持。客户服务是客户关系管理中的核心内容之一。企业提供的客户服务是能否保留满意的客户,提升客户忠诚度的关键。据统计,93%的CEO认为,客户关系管理是企业成功和更有竞争能力的重要因素,2/3的客户离开其供应商是因为企业对客户关怀不够。一个非常满意的客户其购买意愿将六倍于一个满意的客户。而客户满意度方面的5%的提高将使企业利润加倍。由此可见,客户的满意度与忠诚度是企业取得竞争优势的关键。此外,随着上网用户的增加,客户服务的自动化还应能够处理客户各种类型的询问,包括有关产品报价信息,定单请求,定单执行情况等等。三、客户关系管理系统建立的原则1.为客户提供多样化、个性化的服务。客户关系管理的核心思想,就是吸引客户、方便客户、满足客户、为客户提供多样化和个性化的服务。2.巩固和发展客户群体,提高企业的竞争力。印刷企业应朝着符合现代企业管理制度要求的现代企业发展。只有巩固忠诚客户群,不断发展新客户群,打造品牌效应,方能提高企业竞争力。3.适度超前和创新的原则。在建立客户关系管理系统同时,提供充分的扩展功能,满足企业未来业务经营与发展的需要。项目规划该系统主要由资料管理、我方信息管理、统计分析、用户管理、系统维护和帮助等模块组成,具体规划如下:资料管理模块:该模块主要用于实现区域信息管理、客户资料管理和竞争对手信息等功能。我方信息管理模块:本企业基本信息管理、员工信息管理、货物信息管理和重大历史历程管理等功能。统计分析模块:该模块主要用于实现客户的级别分析和来源分析等功能。用户管理模块:该模块主要用于实现用户管理、更改密码和权限设置等功能。帮助模块:该模块主要用于实现更改窗体布局、重新登陆和退出等功能。项目技术简介本文所述的企业客户管理系统使用C#作为编程语言,采用目前比较新的MicrosoftSQLServer2023作为前台数据库。该数据库系统在安全性、准确性和运行速度方面有绝对的优势,并且处理数据量大、效率高;后台使用微软的新技术LINQ作为程序访问数据库的接口,简化了繁琐的SQL语句的编写过程,提高了代码的编写效率。编程语言C#C#是一门简单、现代、面向对象和类型安全的编程语言,由C和C++发展而来。在C#之前,C和C++已经成为在软件的开发领域中使用最广泛的语言。它们为程序员提供了十分灵活的操作,但也因此牺牲了一定的效率及相应的易用性,比如与MicrosoftVisualBasic等语言相比,同等级别的C/C++应用程序往往需要更长时间来开发。也正由于C/C++语言的复杂性,C++也只有专业的程序员才能掌握,而对于一般用户而言,C++确实有些沉重。对于信息化社会的今天而言,单纯的软件开发甚为少见,但更多的注重于实际应用,许多程序员都试图寻找一种新的语言,希望能在功能与效率之间找到一个更为理想的权衡点。对于某些有些语言来说,也许以牺牲灵活性的代价来提高效率是可以接受,但是这些灵活性正是C/C++程序员所需要的,另外这些解决方案对编程人员的限制过多(如屏蔽一些底层代码控制的机制),其所提供的功能难以令人满意。这些语言无法方便地同早先的系统交互,也无法很好地和当前的网络编程相结合。对于C/C++用户来说,最理想的解决方案无疑是在快速开发的同时又可以调用底层平台的所有功能。他们想要一种和最新的网络标准保持同步并且能和已有的应用程序良好整合的环境。另外,一些C/C++开发人员还需要在必要的时候进行一些底层的编程。C#(Csharp)是微软对这一问题的解决方案。C#是一种最新的、面向对象的编程语言。它使得程序员可以快速地编写各种基于Microsoft.NET平台的应用程序,Microsoft.NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。正是由于C#面向对象的设计,使它成为构建各类组件的理想之选--无论是高级的商业对象还是系统级的应用程序。使用简单的C#语言结构,这些组件可以方便的转化为XML网络服务,从而使它们可以由任何语言在任何操作系统上通过Internet进行调用。最重要的是,C#使得C++程序员可以高效的开发程序,而绝不损失C/C++原有的强大的功能。因为这种继承关系,C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。或者这么说生产信息化的今天,也就产生了C#。数据库前后台链接组件LINQLINQ,即语言级集成查询(LanguageIntegratedQuery),它是VisualStudio2023中的领军人物。借助于LINQ技术,我们可以使用一种类似SQL的语法来查询任何形式的数据。目前为止LINQ所支持的数据源有SQLServer、XML以及内存中的数据集合。开发人员也可以使用其提供的扩展框架添加更多的数据源,例如MySQL、Amazon甚至是GoogleDesktop。简单来说,通过使用LINQ,开发人员可以以一个统一的方式访问包括内存数据集合、数据库、XML等在内的各类数据源。如下图所示:图SEQ图\*ARABIC3上图中,向我们展示了LINQ在实际的开发中所处的地位,我们可以从两方面来理解LINQ,首先他是一个工具集(Toolset),因为它为我们访问各类不同的数据源提供了可能。另一方面,它又扩展了原有的如C#,VB等语言语法,不用以前我们使用的SQL语句或者XML控制语句即可完成数据的访问和持久化操作。数据报表生成系统——水晶报表插件水晶报表(CrystalReport)是业内最专业、功能最强的报表系统,它除了强大的报表功能外,最大的优势是实现了与绝大多数流行开发工具的集成和接口。CrystalReports用于处理数据库,帮助用户分析和解释重要信息。使用CrystalReports可以方便地创建简单报表,同时它也提供了创建复杂或专用的报表所需的整套工具。CrystalReports几乎可以从任何数据源生成您需要的报表。内置报表专家在您生成报表和完成一般的报表任务过程中,会一步一步地指导您进行操作。报表专家通过公式、交叉表、子报表和设置条件格式帮助表现数据的实际意义,揭示可能被隐藏掉的重要关系。水晶报表的使用是数据的统计结果更为直观,实为数据分析的一大利器。一、企业客户管理系统系统分析需求分析经了解,本系统应该具有如下的功能:由于操作人员的计算机知识有限,因此要求系统具有良好的人机界面;对不同的使用用户,要求系统具有良好的权限管理;方便的数据查询功能;方便的添加和修改数据功能;使用水晶报表分析、显示客户级别和来源情况;在相应的权限下,可方便的删除数据。系统总体流程图分析企业客户管理系统的业务流程如下图所示。图SEQ图\*ARABIC4系统功能结构系统的总体功能图如图5所示。图SEQ图\*ARABIC5系统模块功能分析资料管理及我方信息管理该部分要求能够快速的查询所需信息,便捷的插入新的信息和删除无用信息,为了整个程序的易用性,由于各个小模块都是对数据库表的简单操作,具有类比性,因此可以使用统一的模板进行设计,再根据不同的字段设计不同的项目。统计分析该部分要求系统能够根据数据库里的数据自动的生成报表,并提供打印服务。用户管理该部分要求系统能够根据用户权限的不同提供修改密码和权限的功能系统维护该部分要求能通过程序客户端完成数据库的备份,恢复及清理工作。帮助该部分包含系统说明、注销登录等功能。二、企业客户管理系统系统设计设计目标本系统属于小型的数据库系统,可以对中、小型企业客户进行有效的管理。通过本系统期望达到以下的目标:灵活的录入数据,使信息传递更快捷。系统采用人机交互方式、界面美观友好,信息查询灵活。数据存储安全可靠。实现后台监控功能。实现客户级别和来源分析功能。实现各种查询,支持模糊查询。实现企业客户及其内部资源的信息化管理。对用户输入的数据进行严格的数据检验,尽可能避免人为错误。系统最大限度的实现了易维护性和易操作性。开发运行环境系统开发平台:MicrosoftVisualStudio2023系统开发语言:C#数据库管理软件:MicrosoftSQLServer2023运行平台:WindowsXP(SP2以上),Windows2023(SP4),WindowsServer2023运行环境:Microsoft.NETFrameworkSDKV3.5编码规范数据库命名规范数据库名以db开头,后面接相关英文单词,首字母大写;数据表以tb开头,后面接相关英文单词;数据表以英文单词或组合表示,首字母大写;视图以view开头、存储过程以proc开头、触发器以trig开头,后面接相关英文单词。如图表1所示。图表SEQ图表\*ARABIC1 数据库命名规范类别名称相关命名举例描述说明数据库dbCRM企业客户资源管理数据库表tbUser用户信息表字段UserID用户编号视图viewGoodInfo查看货物信息存储过程procLogin实现登录功能触发器triginGoods插入商品信息变量命名规范变量名由其变量类型加上英文缩写构成,如图表2所示。图表SEQ图表\*ARABIC2 变量命名规范数据类型简写规则整形(int)int字符串(string)str浮点型(double)dbl布尔型(bool)bl长整型(long)lnt控件命名规范空间一般以其英文缩写为前缀,在代码编写过程中不涉及具体编程的,可以以控件的默认名称为其命名。具体如图表3所示。图表SEQ图表\*ARABIC3 控件命名规范控件缩写形式FormfrmTextBoxtxtButtonbtnComboBoxcboxLabellabDateTimePickerdtpErrorProvidererrorPrGroupBoxgboxDataGridViewdgvDataSetdsListBoxlbTimertmrCheckBoxchbMenuStripmstripOpenFileDialogofDialogPictureBoxpicboxRichTextBoxrtboxStatusStripsstripToolStriptstripTreeViewtv数据库设计数据表概要说明数据库名为:dbCRM,其中包含了8张数据表,如下图所示。图SEQ图\*ARABIC6重要表的E-R图企业基本信息实体E-R图如图7所示。图SEQ图\*ARABIC7客户信息实体E-R图如图8所示。图SEQ图\*ARABIC8员工信息实体E-R图如图9。图SEQ图\*ARABIC9竞争对手实体E-R图如图10。图SEQ图\*ARABIC10主要表的结构tbCInfo(企业基本信息表),用于保存企业的基本信息,其结构如图表4所示。图表SEQ图表\*ARABIC4 企业基本信息表字段名数据类型长度主键否描述Cnamevarchar50否企业名称CManagervarchar20否法人代表Cphonevarchar20否联系电话CPostCodebigint8否邮政编码CFaxvarchar20否号码CEmailvarchar50否E-mail地址CNAddressvarchar50否企业网址CAddressvarchar100否Cremarkvarchar1000否备注tbClientInfo(客户信息表),用于保存企业客户的详细资料,其结构如图表5所示。图表SEQ图表\*ARABIC5 客户信息表字段名数据类型长度主键否描述ClientIDvarchar20是客户编号CNamevarchar50否客户名称CStepvarchar20否客户级别CRootvarchar20否客户来源CTradevarchar20否所属行业CTypechar10否客户类别CAreavarchar50否所在区域CPhonevarchar20否联系电话CFaxvarchar20否号码CPostCodebigint8否邮政编码CAddressvarchar50否CEmailvarchar50否E-mail地址CRemarkvarchar1000否备注tbEmployss(员工信息表),用于保存企业内部员工的详细资料,其结构如图表6所示。图表SEQ图表\*ARABIC6 员工信息表字段名数据类型长度主键否描述EIDvarchar20主键员工编号ENamevarchar20否员工姓名ESexchar4否员工性别EBirthdayvarchar20否员工生日EWDatevarchar20否工作日期EDiplomachar10否员工学历EDepartmentvarchar50否所在部门EPositionvarchar20否当前职务ETypevarchar20否员工类别tbGoodsInfo(货物信息表),用于保存企业内部货物的详细信息,其结构如图表7所示。图表SEQ图表\*ARABIC7 货物信息表字段名数据类型长度主键否描述GIDvarchar20主键货物编号GNamevarchar50否货物名称GTypevarchar50否货物类型GSpecvarchar50否货物规格GIPricemoney8否进货价格GOPricemoney8否售货价格GUnitchar10否计量单位Gremarkvarchar1000否备注tbUser(用户信息表),用于保存本系统用户的基本信息及权限其结构如图表8所示。图表SEQ图表\*ARABIC8 用户信息表字段名数据类型长度主键否描述UserIDvarchar20主键用户编号UserNamevarchar20否用户名称UserPwdvarchar20否仓库名称UserRightchar10否货物规格对象模型的建立数据库对象的建立打开“服务器资源管理器”,选择新建连接。图SEQ图\*ARABIC11使用VisualStudio2023建立实体类建立实体类的方式有很多种,例如手动编码建立、使用XML文件映射、使用命令行工具SqlMetal生成、使用LINQtoSQL设计器等。其中最方便的方法就是使用LINQtoSQL设计器。步骤如下。在专用于数据处理的命名空间下选择“新建项”,添加一个名称为“CRMClasses”的“LINQtoSQL类”,如下图。图SEQ图\*ARABIC12在“服务器资源管理器”窗口需要使用的表格拖入左边,把设计好的函数和存储过程等方法拖入右边,如图。图SEQ图\*ARABIC13保存“CRMClasses”之后,实体类就这样建立完毕了,若需要还可以从“属性”窗口修改实体类的属性名称、存储过程映射的方法名,以及实体类的添加、删除、修改行为中使用的方法等。使用LINQtoSQL设计器设计出来的实体类是代码自动生成的,如果需要修改,过程是比较麻烦的,对于本文所述系统,由于其本身复杂度不够,系统自动生成的实体类已经足够,如果对更复杂的系统,手动编码建立、使用XML文件映射等方法建立的实体类更加的简介,也更符合具体系统的要求。界面设计登录系统的设计系统登录主要用于对进入企业客户资源管理系统的用户进行安全性检查,以防止非法用户进入该系统。在登录时,只有合法的用户才可以进入该系统,同事,系统根据登录用户的级别,给予其不同的操作权限,系统登录窗体运行结果如下所示图SEQ图\*ARABIC14根据用户选择的用户名,系统自动判断用户权限,并且比较密码是否与数据库内纪录一致,如果是则可以进入系统主界面。主界面的设计系统主界面由三部分构成,分别为菜单栏、导航栏和底部的状态栏,其中在制作导航栏的时候,使用了第三方的控件“NavNarControl”,做出来的效果还是相当的不错,其运行结果如下图。图SEQ图\*ARABIC15菜单栏和导航栏的功能基本一致,只是从两种途径来实现,底部的状态栏通过一系列字符串的合并显示用户名,登录时间等信息。通过点击菜单栏或者导航栏的相应功能,开启子窗口就可以进行子项目的操作了。通用信息管理界面的设计资料管理和我方信息管理里的7个小项目都具有一个共同的特点,都是对数据库进行的插入、删除及修改的操作,不同的只是针对的具体数据库表和字段的不同,以客户资料管理为例,预期的运行结果如下图。图SEQ图\*ARABIC16整个界面由三个部分组成:最上方的工具栏:提供新建及删除资料的服务,并且可以根据查询条件进行查询,还能调用邮件相关组件给客户发送E-mail。中间的组合框:使用了textbox和combobox完成每一条记录详细显示,以供用户添加新信息或者修改现有信息。其中的联系电话,E-mail等还应设置正则表达式来检验数据输入的合法性。下面的DataGridView列出了符合当前查询的所有条目,供用户查看,双击其条目可以在中间的组合框内显示改条目的详细内容,供用户修改。联系客户窗体的设计联系客户窗体用来实现企业与客户的交流、沟通功能。实现该功能时调用了System.Net.Mail命名空间下的MailMessage类和SmtpClient类。界面设计如下图所示。图SEQ图\*ARABIC17在窗体Load的时候自动载入客户的编号、名称和邮箱。如果选择了上传附件,则会打开一个OpenFileDialog对话框,供用户选择文件,并返回该文件的路径。点击发送后,调用系统函数发送邮件。水晶报表的设计客户级别分析窗体主要反映不同级别的客户情况,操作人员可以通过选择客户等级,查看制定级别的客户详细信息。客户级别分析窗体运行结果如下图所示。图SEQ图\*ARABIC18关键性代码解析邮件的发送在联系客户的窗体中,实现了通过客户端发送邮件的功能,在事先给客户发送邮件时,需要制定邮件的发送者、接受者、主题、内容、发送邮件的SMTP服务器的地址及端口号。特别的,如果有附件的存在,还需要声明一个ContentDispotion类的对象,并通过其属性,完成附件属性的设置,其运行代码如下。
usingSystem;usingSystem.Collections.Generic;usingSystemponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Data.SqlClient;usingSystem.Net.Mail;namespaceCRM.DataManage{publicpartialclassfrmRClient:Form{CRM.BaseClass.BaseOperateboperate=newCRM.BaseClass.BaseOperate();CRM.BaseClass.OperateAndValidateopAndvalidate=newCRM.BaseClass.OperateAndValidate();publicfrmRClient(){InitializeComponent();}privatevoidfrmRClientLoad(objectsender,EventArgse){opAndvalidate.cboxBind("selectdistinctClientIDfromtbClientInfo","tbClientInfo","ClientID",cboxCID);}privatevoidcboxCIDSelectedIndexChanged(objectsender,EventArgse){SqlDataReadersqlread=boperate.getread("selectCName,CEmailfromtbClientInfowhereClientID='"+cboxCID.Text.Trim()+"'");sqlread.Read();if(sqlread.HasRows){txtCName.Text=sqlread["CName"].ToString().Trim();txtCEmail.Text=sqlread["CEmail"].ToString().Trim();}sqlread.Close();}//选择附件privatevoidbtnUPClick(objectsender,EventArgse){oFDialogSFile.InitialDirectory="C:\\";oFDialogSFile.Filter="allfiles(*.*)|*.*";oFDialogSFile.RestoreDirectory=true;oFDialogSFile.ShowDialog();cboxAccessories.Items.Add(oFDialogSFile.FileName.Trim());}//删除附件privatevoidbtnDelClick(objectsender,EventArgse){if(cboxAccessories.Text==""){MessageBox.Show("没有附件可删!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);}else{cboxAccessories.Items.Remove(cboxAccessories.Text.Trim());}}//发送邮件privatevoidbtnSendClick(objectsender,EventArgse){//邮箱格式验证if(!opAndvalidate.validateEmail(txtSEmail.Text.Trim())){errorSEmail.SetError(txtSEmail,"输入的邮箱格式不正确!");}else{errorSEmail.Clear();try{//创建MailMessage对象,使用邮件功能stringfile=Application.StartupPath+"testXML.xml";System.Net.Mail.MailMessagemyMail=newSystem.Net.Mail.MailMessage();myMail=newSystem.Net.Mail.MailMessage(txtSEmail.Text.Trim(),txtCEmail.Text.Trim());myMail.Subject=txtETitle.Text.Trim();myMail.Body=txtEContent.Text.Trim();if(cboxAccessories.Items.Count>0){for(inti=0;i<cboxAccessories.Items.Count;i++){System.Net.Mail.AttachmentmyAttachment=newSystem.Net.Mail.Attachment(cboxAccessories.Items[i].ToString(),System.Net.Mime.MediaTypeNames.Application.Octet);System.Net.Mime.ContentDispositiondisposition=myAttachment.ContentDisposition;disposition.CreationDate=System.IO.File.GetCreationTime(file);disposition.ModificationDate=System.IO.File.GetLastWriteTime(file);disposition.ReadDate=System.IO.File.GetLastAccessTime(file);myMail.Attachments.Add(myAttachment);}}System.Net.Mail.SmtpClientclient=newSystem.Net.Mail.SmtpClient(txtSService.Text.Trim(),Convert.ToInt32(txtServicePort.Text.Trim()));client.Credentials=newSystem.Net.NetworkCredential(txtUName.Text.Trim(),txtUPwd.Text.Trim());client.Send(myMail);MessageBox.Show("邮件发送成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);}catch(Exceptionex){MessageBox.Show(ex.Message,"提示",MessageBoxButtons.OK,MessageBoxIcon.Information);}}}privatevoidbtnExitClick(objectsender,EventArgse){this.Close();}}}数据库的自动备份与还原如下图,数据库的备份与还原的界面并不复杂,难点在在通过客户端完成数据库后台的工作。图SEQ图\*ARABIC19其代码如下:usingSystem;usingSystem.Collections.Generic;usingSystemponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.IO;namespaceCRM.SysManage{publicpartialclassfrmDataStore:Form{CRM.BaseClass.BaseOperateboperate=newCRM.BaseClass.BaseOperate();publicfrmDataStore(){InitializeComponent();}//设置备份文件的位置privatevoidbtnSelClick(objectsender,EventArgse){fbDialogFile.ShowDialog();txtDSPath.Text=fbDialogFile.SelectedPath.ToString().Trim()+"\\";}privatevoidbtnDStoreClick(objectsender,EventArgse){try{//判断其是否已经存在if(File.Exists(txtDSPath.Text.Trim()+".bak")){MessageBox.Show("该文件已经存在!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);txtDSPath.Text="";txtDSPath.Focus();}//数据库的备份仍然使用的是SQL语句,LINQ更适合于数据的控制而不是数据库的底层操作else{boperate.getcom("backupdatabasedbCRMtodisk='"+txtDSPath.Text.Trim()+".bak'");MessageBox.Show("数据备份成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);}}catch(Exceptionex){MessageBox.Show(ex.Message,"提示",MessageBoxButtons.OK,MessageBoxIcon.Information);}}privatevoidbtnExitClick(objectsender,EventArgse){this.Close();}}}在程序中调用其他的软件(如记事本)在帮助功能中,还可以快速的打开记事本、WORD的软件,以下为C#中调用外部程序的代码:privatevoid启用记事本toolStripMenuItemClick(objectsender,EventArgse){System.Diagnostics.Process.Start("notepad.exe");}privatevoid启用WordtoolStripMenuItemClick(objectsender,EventArgse){System.Diagnostics.Process.Start("winword.exe");}privatevoid启用ExceltoolStripMenuItemClick(objectsender,EventArgse){System.Diagnostics.Process.Start("excel.exe");}三、系统的测试与纠错在测试系统的过程中,系统出现了如下的几个问题:使用的第三方导航栏插件NavBar由于是试用版,有时候只能显示却不能展开,即导航栏有时会失效。但由于没有找到其他的免费的第三方导航栏插件,就没有做改动,但这个问题也影响了整个程序的完整性。在使用水晶报表的时候,第一次使用需要再次输入数据库的登录名和密码,显然这是一个系统设计的错误,能查看报表的用户不一定都有数据库的后台密码,在对水晶报表属性中的集成安全性就行了设置以后,该问题圆满解决。在对系统的查询系统进行测试的时候发现,有一些应该有结果的查询查询出来的结果居然为空,检查代码后发现,是编写代码的时候部分正则表达式书写出错,修改后再次测试,显示正常。邀请了同宿舍的同学帮忙使用系统,未再发现重大的程序错误,程序设计完成。后记毕业设计的系统至今已然完成,回想从选题、需求分析、代码编写、系统测试等过程中的收获,我感到收获良多。系统设计不是一件简单的事情,从需求分析开始就要做大量的调查与规划,由于时间急促,本系统的逻辑结构并不复杂,但代码的编写量确实不小,有时候越是心急反而越发现不了不应该的小错误。由于本人对新技术较为感兴趣,因此选择了C#为编程语言,LINQ为数据库操作方法。在做毕业设计以前我编写过的几个系统一直使用的是JAVA语言,这次第一次用C#来做系统。基础知识的不牢固导致我需要不停的翻看参考书目里的案例,代码编写效率较低,同时也让我明确了精通一门语言的重要性。在设计过程中我也仔细体会了JAVA与C#的异同,体验了VS2023的代码编写的强大辅助。由于存在大量的控件,因此一个好的命名规范能够节省大量的检查代码的时间,也能够避免找不到控件的尴尬。通过此次毕业设计,回顾了大学四年的所学所得,感到学有所成,愿自己在将来的工作中能不枉大学四年的所学,创出自己的天地。毕业设计(论文)网.56QQ:306826066优秀毕业设计网.2计算机毕业设计网.papersay毕业设计资料网.163毕业设计论文网.think58
主要参考文献刘腾红,孙细明.信息系统分析与设计.北京:科学出版社,2023.董金祥,陈刚,尹建伟.客户关系管理(CRM).浙江:浙江大学出版社,2023.程控,革扬.MRP2\ERP原理与应用.北京:清华大学出版社,2023.王小科,梁冰,吕双VisualC#项目开发实例自学手册.北京:人民邮电出版社,2023王的强,张晓娜,周静.LINQ入门及应用.北京:清华大学出版社,2023.赖文群,张蓬等.ERP/CRM/SCM/BI协同商务建设指南,北京:北京希望电子出版社,2023..(美国)内格尔(ChristianNagel),(美国)billEvjen,(美国)JayGlynn.C#高级编程(第6版)(ProfessionalC#2023).李铭,译北京:清华大学出版社,2023.(法国)马格里(Marguerie.F.),(美国)艾歇特(Eichert.S.),(美国)伍利(Wooley.J.).LINQ实战(图灵程序设计丛书·微软技术系列)(LINQinAction).陈黎夫,译.北京:人民邮电出版社,2023.(美)米凯利斯.EssentialC#2.0.北京:人民邮电出版社,2023.H.M.Deitel,P.J.Deitel等.C#程序员教程(英文版).北京:电子工业出版社,2023.ganemploymenttribunalclaimEmploymenttribunalssortoutdisagreementsbetweenemployersandemployees.Youmayneedtomakeaclaimtoanemploymenttribunalif:youdon'tagreewiththedisciplinaryactionyouremployerhastakenagainstyouyouremployerdismissesyouandyouthinkthatyouhavebeendismissedunfairly.Formoreinformationaboutdismissalandunfairdismissal,see
Dismissal.Youcanmakeaclaimtoanemploymenttribunal,evenifyouhaven't
appealed
againstthedisciplinaryactionyouremployerhastakenagainstyou.However,ifyouwinyourcase,thetribunalmayreduceanycompensationawardedtoyouasaresultofyourfailuretoappeal.Rememberthatinmostcasesyoumustmakeanapplicationtoanemploymenttribunalwithinthreemonthsofthedatewhentheeventyouarecomplainingabouthappened.Ifyourapplicationisreceivedafterthistimelimit,thetribunalwillnotusuallyacceptit.Ifyouareworriedabouthowthetimelimitsapplytoyou,takeadvicefromoneoftheorganisationslistedunder
Furtherhelp.Employmenttribunalsarelessformalthansomeothercourts,butitisstillalegalprocessandyouwillneedtogiveevidenceunderanoathoraffirmation.Mostpeoplefindmakingaclaimtoanemploymenttribunalchallenging.Ifyouarethinkingaboutmakingaclaimtoanemploymenttribunal,youshouldgethelpstraightawayfromoneoftheorganisationslistedunder
Furtherhelp.Ifyouarebeingrepresentedbyasolicitoratthetribunal,theymayaskyoutosignanagreementwhereyoupaytheirfeeoutofyourcompensationifyouwinthecase.Thisisknownasa
damages-basedagreement.InEnglandandWales,yoursolicitorcan'tchargeyoumorethan35%ofyourcompensation
ifyouwinthecase.Ifyouarethinkingaboutsigningupfor
adamages-basedagreement,youshouldmakesureyou'reclearaboutthetermsoftheagreement.Itmightbebesttogetadvicefromanexperiencedadviser,forexample,ataCitizensAdviceBureau.
TofindyournearestCAB,includingthosethatgiveadvicebye-mail,clickon
nearestCAB.Formoreinformationaboutmakingaclaimtoanemploymenttribunal,see
Employmenttribunals.The(lackof)airupthereWatchmCaymanIslands-basedWebb,theheadofFifa'santi-racismtaskforce,isinLondonfortheFootballAssociation's150thanniversarycelebrationsandwillattendCity'sPremierLeaguematchatChelseaonSunday."IamgoingtobeatthematchtomorrowandIhaveaskedtomeetYayaToure,"hetoldBBCSport."Formeit'sabouthowhefeltandIwouldliketospeaktohimfirsttofindoutwhathisexperiencewas."Uefahas
openeddisciplinaryproceedingsagainstCSKA
forthe"racistbehaviouroftheirfans"during
City's2-1win.MichelPlatini,presidentofEuropeanfootball'sgoverningbody,hasalsoorderedanimmediateinvestigationintothereferee'sactions.CSKAsaidtheywere"surprisedanddisappointed"byToure'scomplaint.InastatementtheRussiansideadded:"WefoundnoracistinsultsfromfansofCSKA."Agehasreachedtheendofthebeginningofaword.Maybeguiltyinhisseemstopassingalotofdifferentlifebecametheappearanceofthesameday;Maybebackinthepast,tooneselftheparanoidweirdbeliefdisillusionment,thesedays,mymindhasbeenverymessy,inmymindconstantly.Alwaysfeeloneselfshouldgotodosomething,orwritesomething.Twentyyearsoflifetrajectorydeeplyshallow,suddenlyfeelsomething,doit.一字开头的年龄已经到了尾声。或许是愧疚于自己似乎把转瞬即逝的很多个不同的日子过成了同一天的样子;或许是追溯过去,对自己那些近乎偏执的怪异信念的醒悟,这些天以来,思绪一直很凌乱,在脑海中不断纠缠。总觉得自己自己似乎应该去做点什么,或者写点什么。二十年的人生轨迹深深浅浅,突然就感觉到有些事情,非做不可了。Theendofourlife,andcanmeetmanythingsreallydo?而穷尽我们的一生,又能遇到多少事情是真正地非做不可?Duringmychildhood,thinkluckymoneyandnewclothesarenecessaryforNewYear,butastheadvanceoftheage,willbemoreandmorefoundthatthosethingsareoptional;Juniorhighschool,thoughttohaveacrushonjustmeansthattherealgrowth,butoverthepastthreeyearslater,hiswritingofalumniinpeace,suddenlyfoundthatisn'treallygrowup,itseemsisnotsoimportant;Theninhighschool,thinkdon'twanttogiveventtooutyourinnervoicecanbeinthehighschoolchildrenofthefeelingsinaperiod,butwaseventuallyinfarctionwhengraduationpartyinthethroat,lateragainstoodonthepitchhehassweatprofusely,lookedathisthrownabasketballhoops,suddenlyfoundhimselfhasalreadycan'trememberhisappearance.童年时,觉得压岁钱和新衣服是过年必备,但是随着年龄的推进,会越来越发现,那些东西根本就可有可无;初中时,以为要有一场暗恋才意味着真正的成长,但三年过去后,自己心平气和的写同学录的时候,突然就发现是不是真正的成长了,好像并没有那么重要了;然后到了高中,觉得非要吐露出自己的心声才能为高中生涯里的懵懂情愫划上一个句点,但毕业晚会的时候最终还是被梗塞在了咽喉,后来再次站在他曾经挥汗如雨的球场,看着他投过篮球的球框时,突然间发现自己已经想不起他的容颜。Originally,thisworld,canproduceachemicalreactiontoanevent,inadditiontoresolutely,havetodo,andtime.原来,这个世界上,对某个事件能产生化学反应的,除了非做不可的坚决,还有,时间。Aperson'stime,yourideasarealwaysspecialtoclear.Want,want,lineisclear,asifnothingcouldshakehis.Alsoonceseemedtobedeterminedtodosomething,butmoreoftenishebackedoutatlast.Dislikehiscowardice,finallyfoundthattherearealotoflove,therearealotofmiss,likeshadowreallyhavebeendoomed.Thosewhodo,justgreenyearsoneselfgiveoneselfanarminjection,orisaself-righteousspiritual.一个人的时候,自己的想法总是特别地清晰。想要的,不想要的,界限明确,好像没有什么可以撼动自己。也曾经好像已经下定了决心去做某件事,但更多的时候是最后又打起了退堂鼓。嫌恶过自己的怯懦,最终却发现有很多缘分,有很多错过,好像冥冥之中真的已经注定。那些曾经所谓的非做不可,只是青葱年华里自己给自己注射的一支强心剂,或者说,是自以为是的精神寄托罢了。Atthemoment,theskyisdark,theairisfreshfactorafterjustrained.Suddenlythoughtofblueplaidshirt;Thosewerebrokenintovariousshapesofstationery;Fromthecorneratthebeginningofdeepfriendship;Havedeclared
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 喷砂处理服务行业发展前景与机遇展望报告
- 土地施工组织设计一标
- 引水式综合水电站施工组织设计
- 基因工程抑肽酶药材发酵基地项目可行性研究报告
- 竣工验收施工管理工作报告
- 智能照明控制行业深度分析与战略规划研究报告
- 秸秆固化成型燃料生产项目可行性研究报告
- 光学测量技术研究行业发展前景与机遇展望报告
- 家庭法律服务行业发展前景与机遇展望报告
- 地板防滑安全保护层涂刷行业发展前景与机遇展望报告
- 冷链物流管理教学大纲
- 学术论文写作与学术规范PPT课件
- 青少年科技创新大赛获奖案例.ppt
- 七氟丙烷灭火系统点检表
- (完整word版)加药装置说明书
- 《日记(小练笔)对习作教学的影响》微型课题结题报告(共5页)
- 中等职业学校学生日常行为规范
- 自动消防系统操作规程
- 第2课时5的乘法口诀练习课
- Bobath技术PPT参考课件
- 市场调查与预测(庄贵军教材)教学资料
评论
0/150
提交评论