客户资料管理系统毕业设计

客户资料管理系统毕业设计

ID:1396621

大小:2.01 MB

页数:78页

时间:2017-11-11

上传者:U-254
客户资料管理系统毕业设计_第1页
客户资料管理系统毕业设计_第2页
客户资料管理系统毕业设计_第3页
客户资料管理系统毕业设计_第4页
客户资料管理系统毕业设计_第5页
资源描述:

《客户资料管理系统毕业设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

客户资料管理系统毕业设计目录目录I客户资料管理系统1摘要1Abstract2前言3第一章绪论41.1社会背景41.2项目背景及目的51.3开发工具简介51.3.1VisualC#2008简介51.3.2数据库SQLServer20059第二章系统可行性研究122.1技术可行性研究122.2经济可行性研究122.3操作可行性研究13第三章系统需求分析143.1需求分析143.1.1任务分析143.1.2客户关系分析143.1.3客户管理系统分析14第四章系统概要设计164.1设计思想164.2设计原则164.3系统流程分析1776 4.4数据字典184.5功能设计18第五章系统详细设计195.1系统功能文件架构图195.2系统功能设计205.3系统数据库设计215.3.1数据库设计215.3.2存储过程设计235.4模块功能设计295.4.1系统登录模块295.4.2客户信息列表模块315.4.3客户信息增加模块335.4.4客户信息删除模块355.4.5客户信息修改模块365.4.6客户信息检索模块375.4.7客户信息报表打印模块385.4.8数据库访问层设计39第六章系统测试运行426.1模块测试426.2整体测试42总结与体会44谢辞46参考文献47附录4876 客户资料管理系统摘要客户是企业生存的前提和基础。随着市场体系的日益完善,客户随着买方经营的日益扩张,使买方的后台管理系统日益扩张,如何改善客户关系,掌握更多的客户信息,提高客户的满意度,如何在日益激烈的市场竞争中把握机会,占有更大的市场份额,如何建立高效业务的流程,降低运营成本,获取更多的利润,这些已成为每个企业所面临的首要问题。在这种情况下,企业要想在激烈的市场竞争中立于不败之地,就必须得找一种全新的管理概念和管理手段,对其内部和外部资源进行有效整合。新一代的ERP产品正在向客户端和供应端延伸,客户端的延伸是客户关系管理,而供应端的延伸则是跨企业链的同步管理。对于每个企业来说客户关系的管理得完善程度将对企业有着直接的影响。关键词:客户资料管理系统,水晶报表,C#,SQL200576 TheSystemofCustomerInformationManagementAbstractCustomeristhepremiseandfoundationofbusinesssurvival.Asthemarketsystemisincreasinglyperfect,thecustomeralongwiththeincreasingexpansionofbuyer'sbusiness,makethebackgroundmanagementsystemofthebuyerexpandincreasingly,howtoimprovecustomerrelationship,knowmorecustomerinformation,improvecustomersatisfaction,howtograspopportunitiesintheincreasinglyfiercemarketcompetition,andoccupyalargershareofthemarket:howtobuildeffectivebusinessprocesses,reduceoperatingcosts,obtainmoreprofits,thefearhasbecomeaprimaryproblemfacedbyeveryenterprise.Inthiscase,theenterprisetoimpregnableinthefiercemarketcompetition,itmusthavetofindakindofbrand-newmanagementconceptandmanagementmethods,toeffectivelyintegrateitsinternalandexternalresources.AnewgenerationofERPproductissupplyendextendstotheclientandtheclient'sextensioniscustomerrelationshipmanagement,andsupplytheextensionissynchronousmanagementacrosstheenterprisechain.Foreachenterprisecustomerrelationshipmanagementtoimprovedegreewilldirectlyaffecttheeconomicbenefitsofenterprises.Keywords:customerinformationmanagementsystem,Crystalreports,C#,SQL200576 前言信息化和网络化的发展,使得信息传递异常快捷,企业间的技术水平越来越接近,产品本身的优劣越来越不明显,一个新产品、新设计会很快被竞争者模仿,产品在功能上的细微差别己经不足以成为激烈竞争中的主要优势。市场结构的变化加剧了市场竞争,客户成为了稀缺资源。此时的市场主动权在客户手中,客户在市场中位于主导地位。企业再像以前那样从自身出发来提供商品和服务的方式己经无法满足客户现实存在的多样化需求。企业必须了解市场和客户的实际需求,在此基础上提供令客户满意的个性化产品和服务。逐渐认识到建立和维持客户关系的重要性是成为取得市场竞争优势的鼓有效手段。这些问题要解决,需要企业建立一套完善的客户管理体系。客户管理系统中需要处理大量的客户信息,还要时刻更新客户的销售信息,不断添加客户信息。面对不同种类的信息,需要合理的数据库结构来保存数据信息,更需要有效的程序结构支持各种数据的操作和执行。客户资料管理在欧美等国家早已经实现,也是零售业管理的基础。它最主要的特点是能够实时的和准确的控制客户资料的掌握情况。如果可以能够实时掌握销售流程及销售情况,则可以有效地加速与客户进行的商品的周转率并提高服务质量,而且可以减少客户信息不对等售价不符等所产生的问题。客户的消费要求的是希望在购物中基本上都能购得所需的所满意的合作商品,并且还要既保证商品质量还要享受优质,方便的服务。。第一章绪论1.1社会背景76 前言信息化和网络化的发展,使得信息传递异常快捷,企业间的技术水平越来越接近,产品本身的优劣越来越不明显,一个新产品、新设计会很快被竞争者模仿,产品在功能上的细微差别己经不足以成为激烈竞争中的主要优势。市场结构的变化加剧了市场竞争,客户成为了稀缺资源。此时的市场主动权在客户手中,客户在市场中位于主导地位。企业再像以前那样从自身出发来提供商品和服务的方式己经无法满足客户现实存在的多样化需求。企业必须了解市场和客户的实际需求,在此基础上提供令客户满意的个性化产品和服务。逐渐认识到建立和维持客户关系的重要性是成为取得市场竞争优势的鼓有效手段。这些问题要解决,需要企业建立一套完善的客户管理体系。客户管理系统中需要处理大量的客户信息,还要时刻更新客户的销售信息,不断添加客户信息。面对不同种类的信息,需要合理的数据库结构来保存数据信息,更需要有效的程序结构支持各种数据的操作和执行。客户资料管理在欧美等国家早已经实现,也是零售业管理的基础。它最主要的特点是能够实时的和准确的控制客户资料的掌握情况。如果可以能够实时掌握销售流程及销售情况,则可以有效地加速与客户进行的商品的周转率并提高服务质量,而且可以减少客户信息不对等售价不符等所产生的问题。客户的消费要求的是希望在购物中基本上都能购得所需的所满意的合作商品,并且还要既保证商品质量还要享受优质,方便的服务。。第一章绪论1.1社会背景76 计算机网络仅有几十年的发展历史,经历了从简单到复杂、从低级到高级、从地区到全球的发展过程。在卖方市场时代,市场供应的产品和服务无论在数量上还是品种上相对于客户需求都属于稀缺状态。作为生产者,只要产品能够生产出来就有市场,不用考虑产品的销售库存以及竞争问题长期以来,企业在没有市场压力的情况下,漠视客户的准确需要,更不用说个性化的需求。企业将管理的重点不是放在如何了解和满足客户需求,而是放在提高企业经营效率,降低生产成本,提高产品质最上。随着生产力的不断提高,在供求规律的作用下,更多的企业加入到这样的产业市场中来。当企业所提供的产品和服务数量超过了客户的需求能力时,市场逐渐由卖方市场转变为买方市场,竞争开始出现,并不断激化。了解市场和客户的实际需求,在此基础上提供令客户满意的个性化产品和服务实当务之急。由于市场境的变化,企业急需解决如何准确了解和把握客户的个性化需求,如何实现对客户信息和资源统一有效的管理,如何避免重复性工作,如何将产品信息有针对性地传递给目标客户等一系列问题,在不断的探索和实践中,企业逐渐认识到建立和维持客户关系的重要性是成为取得市场竞争优势的鼓有效手段。这些问题要解决,需要企业建立一套完善的客户管理体系。现如今随着现代科学技术的迅猛发展,计算机技术已经渗透到各个领域,成为各行业必不可少的工具,特别是Internet技术的推广和信息高速公路的建立,使IT产业在市场竞争中越发显示出其独特的优势,步入信息化时代,有巨大的数据信息等待加工处理和传输,这使得对书数据库的进一步开发和利用显得尤为迫切。客户资料管理(CustomerRelationshipManagement,CRM)是一个不断加强与顾客交流,不断了解顾客需求,并不断对产品及服务进行改进和提高以满足顾客的需求的连续的过程。要想得到完美的实施,就要把计算机技术应用到其中。企业利用信息技术(IT)和互联网技术实现对客户的整合营销,是以客户为核心的企业营销的技术实现和管理实现。客户关系管理注重的是与客户的交流,企业的经营是以客户为中心,而不是传统的以产品或以市场为中心。为方便与客户的沟通,客户关系管理可以为客户提供多种交流的渠道。1.2项目背景及目的随着互联网商业化的逐步深入,客户成了最重要的资源,客户价值提升到了一个前所未有的地步,企业必须寻找到与之相匹配的营销战略来适应市场的变化,因此客户关系管理应运而生。76 客户关系管理是利用现代技术手段,使客户、竞争、品牌等要素协调运作并实现整体优化的自动管理系统。其目标定位在提升企业的市场竞争能力,建立长期友好的客户关系,不断发现新的市场机会,帮助企业规避经营风险,获得高额、稳定利润。客户关系管理的产生,是市场需求和管理理念更新的需要,是企业管理模式和企业核心竞争力提升的要求,是电子技术和信息技术等因素推动的结果。当今社会,随着企业规模不断扩大,有关服务的各种信息也成倍增长,特别是一些比较大的服务性质的企业,而面对庞大的信息量,有必要开发一套与之相适应的信息管理系统来提高管理工作的效率。通过这样的系统,可以做到信息的规范管理、科学统计和快速查询,从而减少管理方面的工作量。在企业中,客户信息管理是客户管理中最基本的一项常规性工作。而长期以来,这一类型的管理都是依赖人工来进行管理的,面对如此众多的客户信息管理反溃信息,其工作量是相当巨大的。这样浪费了大量的人力物力,而且由于人工管理存在着大量的不可预知性,造成服务信息管理的一些不规范,使得信息管理陷入“事倍功半”的地步。开发本系统就是为了解决客户信息管理中的一些不规范,使客户信息管理向着规范化、简单化、有效化的方向发展。1.3开发工具简介系统开发平台:MicrosoftVisualStudio2008系统开发语言:C#数据库管理系统软件:SQLServer2005Web开发套件:DHTMLX1.3.1VisualC#2008简介VisualStudio是微软公司推出的开发环境,VisualStudio可以用来创建Windows平台下的Windows应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和Office插件。VisualC#2008是一个强大的开发工具,它的许多相对以前版本的新功能和新特点使软件开发变得更加方便、快捷,从而大大提高了软件的开发效率。VisualC#已成为在.NET平台上进行开发的首选语言。VisualC#2008融C++的灵活性和强大功能与VisualC#的简单性于一身。C#允许开发人员开发面向Windows、Web和移动设备等类型的程序。与所有其它面向Microsoft.NETFramework的语言一样,使用C#编写的程序都具有安全性和语言互操作性方面的优点。76 VisualC#2008自带的报表控件CrystalReports(水晶报表)是一款商务智能(BI)软件,主要用于设计及产生报表。水晶报表是业内最专业、功能最强的报表系统,它除了强大的报表功能外,最大的优势是实现了与绝大多数流行开发工具的集成和接口。在VS.Net平台做过报表开发的程序员,一定都对水晶报表强大、高效、集成等特性留下了深刻印象。除了开发新程序外,在工作中我们常需要接触到很多较早的软件系统报表功能升级的需求,如果能结合水晶报表这一强大的工具,往往能事半功倍。开发环境:VisualStudio2008是Microsoft推出的C#3.0开发工具,其强大的功能可以帮助开发人员进行快速简便的开发。单击“开始/程序/MicrosoftVisualStudio2008/MicrosoftVisualStudio2008”命令或单击桌面上的图标,就可以启动VisualStudio2008软件。1.新建项目启动VisualStudio2008软件后,单击菜单栏中的“文件/新建/项目”命令,弹出“新建项目”对话框,见图2-1。图2-1新建项目在“项目类型”中,可以设置开发语言如VisulaC++,也可以设置具体新建的项目。如果要创建Windows应用程序,只须采用默认即可。在“模板”项中,可以选择不同的模板,如类库、Windows控件库、控制台应用程序等,要创建Windows应用程序,要选择“Windows应用程序”项。接下来就可以设置项目的名称、位置及解决方案的名称。设置好后,单击“确定”按钮即可创建项目,见图2-2。76 图2-2创建Windows应用程序项目2.属性窗口属性窗口是用来显示和设置各种开发元素属性的。在默认情况下,每次启动VisualStudio2008时,属性窗口都会显示。属性窗口中显示的内容,随着选择开发元素的不同,而动态改变,从而及时反应所选择的开发元素的属性。如果在设计界面中,没有属性窗口,可以单击菜单栏中的“视图/属性窗口”命令,即可显示属性窗口。在VisualStudio2008中,属性窗口主要用来在设计窗体或Web表单时显示和设置可视控件的属性,在属性窗中直接修改开发元素的属性,这些修改直接体现在设计视图中。3.代码编辑器代码编辑器支持VisualStudio2008的所有编程语言,如C++、C#、VisualBasic等。代码编辑器主要由标题、类型、成员及代码编辑区组成。在窗体或窗体某个控件上双击就可以显示代码编辑器,见图2-3。图2-3代码编辑器76 代码编辑器各部分位置及意义如下:1)标题:位于窗口的最上方,默认显示为“Form1.cs”。2)类型:位于标题的下方,显示是那个项目的那个窗体。3)代码编辑区:在该区域,可以输入或修改代码,并且可以使用编辑器所提供的各种功能,如用不同的颜色显示不同的部分、自动换行及智能感知等。在代码编辑区的左侧边框中可以显示一些标识,如断点标识、书签标识等,还可以进行断点设置。VisualStudio2008中的代码编辑器功能相当强大,可以进行常规的插入、删除操作,并且能智能感知功能自动完成语句的输入。该代码编辑器结构清晰、层次分明、易于阅读,并且提供了查找与替换功能。4.命令窗口单击菜单栏中的“视图/其他窗口/命令窗口”命令,打开命令窗口,见图2-4。图2-4命令窗口在命令窗口中,可以直接输入并执行各种命令,包括菜单中命令,也包括没有在菜单中出现的命令。命令窗口常用于调试应用程序。在命令窗口中输入命令时,可以使用上下箭头键重复以前的输入命令,还可以利用Ctrl+箭头键来滚动命令窗口中显示的命令内容。5.控件在VisualStudio2008中,控件可分为两种,一种是标准控件,即工具箱中的控件,另一种是ActiveX控件,即能够实现特定功能的控件。利用“工具箱”,可以向Windows应用程序或Web应用程序添加标准控件。“工具箱”使用选项卡分类管理标准控件,打开“工具箱”将显示VisualStudio2008项目中使用的各个不同的控件列表。根据当前正在使用的设计器或编辑器,“工具箱”中可用的选项卡和控件会有所变化。ActiveX控件是对工具箱的扩充,ActiveX控件即可以添加到工具箱中,也能从工具箱中移除。使用ActiveX控件与使用标准控件的方法完全相同,在程序中加入ActiveX控件后,他就成为开发和运行环境的一部分。ActiveX控件通常保存在ocx或dll文件中。ActiveX控件不能单独运行,必须依赖某种应用程序,如Windows应用程序、Web应用程序等,这些程序称为76 ActiveX控件的宿主程序。下面来看一下添加ActiveX控件的方法。1)在“工具箱”中单击右键,在弹出的菜单中选择“选择项”命令。2)单击“选择项”命令,就会弹出“选择工具箱项”对话框,然后单击“COM组件”选项卡。3)选择要添加的控件前的复选框,然后单击“确定”按钮即可。1.3.2数据库SQLServer2005本系统使用的数据库管理系统为SQLServer2005,SQLServer作为微软公司在Windows系列平台上开发的数据库,一经推出就以其易用性得到了很多用户的青睐,相信大多数将自己的业务建立在Windows平台上的用户都会对它有相当的亲切感。2005年11月,微软公司发布了其数据库软件的又一个升级版本SQLServer2005。这是五年来微软公司首次发布新版本的数据库软件。用上千人的研发力量、大规模的团队开发、现代软件研发管理方式、耗时五年才打造出来的一个产品,无论对于微软公司还是任何一家软件企业来说,都是非常少见的。SQLServer2005是一个具备完全Web支持的数据库产品,提供了对可扩展标记语言(XML)的核心支持以及在Internet上和防火墙外进行查询的能力,提供了以Web标准为基础的扩展数据库编程功能。丰富的XML和Internet标准支持允许使用内置的存储过程以XML格式轻松存储和检索数据。SQLServer2005提供强大的开发工具和各类开发特性,在大大提高开发效率的同时,进一步拓展应用空间,带来新的商业应用机遇。例如,XML数据库与WebService的支持将使您的应用实现Internet数据互联,.Net集成极大的扩展了开发空间,异构数据集成、ServiceBroker使您的数据和其它应用无缝集成,各种新数据类型和T-SQL扩展带来了诸多灵活性。C#、VB.Net、XQuery、XMLA、ADO.Net2.0、SMO、AMO等都将成为SQLServer数据平台上开发数据相关应用的有力工具。存储过程的概念存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。76 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量、简单网络负担。存储过程的优点A、存储过程允许标准组件式编程存储过程创建后可以在程序中被多次调用执行,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,但对应用程序源代码却毫无影响,从而极大的提高了程序的可移植性。B、存储过程能够实现较快的执行速度如果某一操作包含大量的T-SQL语句代码,分别被多次执行,那么存储过程要比批处理的执行速度快得多。因为存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的存储计划。而批处理的T-SQL语句每次运行都需要预编译和优化,所以速度就要慢一些。C、存储过程减轻网络流量对于同一个针对数据库对象的操作,如果这一操作所涉及到的T-SQL语句被组织成一存储过程,那么当在客户机上调用该存储过程时,网络中传递的只是该调用语句,否则将会是多条SQL语句。从而减轻了网络流量,降低了网络负载。D、存储过程可被作为一种安全机制来充分利用系统管理员可以对执行的某一个存储过程进行权限限制,从而能够实现对某些数据访问的限制,避免非授权用户对数据的访问,保证数据的安全。DHTMLX简介:DHTMLX是一个提供了跨域构建、Ajax交互等基本功能的javascript框架,它丰富的组件极大的简化了RichWebUI应用的开发。世界很多著名公司都用到了DHTMLX,包括Amazon、Apple、Adobe、AMD等等。DHTMLX包含了具有客户端程序效果的界面组件,解决了常见的客户端操作要求。这套组件采用javascript、xml定义组件性征,某些组件甚至可以直接渲染HTML元素。76 常见的容器元素包括:布局(layout)、滑动窗口(accordion)、页签(tab)、窗口(window);常见的数据元素包括:表格(grid)、树(tree)、选择框(combo)、日历(calendar);常见的窗体元素包括:右键菜单(menu)、工具条(toolbar)。76 第二章系统可行性研究2.1技术可行性研究在IT行业中从业的工作人员一般都要求掌握计算机技术,具有一定的软硬件基础,会使用各种管理软件,熟悉IT产品。因为,有的公司对员工的素质要求比较高,从管理层到下面的销售人员,都要求具有一定的计算机基础,所以在新系统投入使用时,只要对员工进行少量的培训,系统的功能和使用方法就基本上能够是系统顺利运行。2.2经济可行性研究因为通过网络传递销售信息可以不受距离的限制,因此可以节约许多的人力和物力,方便管理,由此可以减少不必要的开支,同时该系统可以提高客户资料管理效率,所以从经济上完全是可行的。(1)有能力承担系统开发费用开发新系统的工作是一项间距复杂的工作,它的投资主要是人力和物力的投资。对于本系统的开发来说,其主要投资还是在人力和物力两个方面。如果是企业自己安排人手开发系统的话,其主要的投资还是在人力资源上,从系统的业务需求调查到系统的分析编码制作都是需要巨大的人力投入的。软件企业作为一个简短的高科技产业,其员工要求都比一般企业的要求要高,无论是产品的价格还是质量都比较高,而经营产品的经销商或者是商家都要求有雄厚的资金支持。所以,在系统的开发过程中,超市完全有能力承担开发费用。(2)新系统将带来经济效益客户资料管理系统是一个信息化、智能化和先进管理理念的集合体。而管理是一个动态过程,在其运行过程中要采取多项措施。所以在管理中获得经济效益是一个综合效益,要对它进行直接定量的分析是比较困难。一般新系统带来的经济效益是简介的,其最主要的表现就是减少了管理费用和人力开支。而其它一些繁琐的工作都通过新系统来加以分析解决,不仅节省了大量的时间,还为各项决策提供了宝贵的资料,带来巨大的经济效益。2.3操作可行性研究本系统采用基于Windows的图形用户界面,而该系统是大家熟悉的操作76 系统,对于那些有一般的计算机知识的人员就可以轻松上手。而整个管理系统采用最友好的交互界面,简洁明了,不需要对数据库进行深入的了解。综合以上三方面,该系统具有很高的开发可行性,无论是从技术上或者经济上还是操作上。因此,可以设计该系统的数据流程图,建立数据字典,建立水晶报表。76 第三章系统需求分析3.1需求分析3.1.1任务分析需求分析工作是软件生存期中重要的一步,也是起决定性的一步。我们在这个阶段主要考虑的问题是系统必须作什么。我们通过它来全面了解整个系统的软件功能和性能方面的要求,为软件设计打下坚实的基础。对目标系统提出完整、准确、清晰、具体的要求。需求分析的目标主要有:获得当前系统的物理模型,了解当前系统是如何运行的;抽象出客户资料管理系统的模型,应用软件建立数据库,得出数据字典,水晶报表等。3.1.2客户关系分析20世纪90年代以来,计算机的普及提高了工作效率,为企业客户关系管理提供了设备基础。大型关系数据库技术、数据挖掘技术的出现,提高了企业收集、粘理、加工和利用客户信息的能力,为企业分析、发现客户需求提供了必要的技术保障。特别是互联网技术的应用和普及,在互联网上,企业可以不受时空限制,每天24小时与客户进行更及时、更广泛的双向沟通,并且其成本又是如此低廉,为客户关系管理的大规模实施提供了有效场所。3.1.3客户管理系统分析客户信息管理系统是企业客户管理系统中重要的一个系统,该系统要求完成以下功能:1)用户管理部分:具有用户登录功能,用户分为主管超级用户和一般管理人员(简称管理员),用不同的身份登录,可以使用系统不同的功能;为了保证系统安全性,用户密码要求加密后保存数据库中;设置用户找回密码功能。2)客户管理部分:可以完成对客户编号、客户姓名、客户地址、客户电话等基本信息的录入、删除、修改、查询、检索和报表打印等功能。3)统计报表部分:利用水晶报表的最大优势实现了与绝大多数开发工具的集成和接口。76 第四章系统概要设计4.1设计思想(1)系统分成几个相对独立的模块,但这些模块都进行集中式管理。(2)分层的模块化程序设计思想,整个系统采用模块化结构设计。作为应用程序有较强的可操作性和扩展性。(3)合理的数据流设计,在应用系统设计中,相对独立的模块间以数据流相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性。4.2设计原则为了使本系统功能齐全完备,操作简便,最大限度的提高软件的质量,从而满足用户的实际需要,在设计开发过程中遵循了如下原则:(1)合法性原则:依据客户核算系统的工作规定以及要求,参照核算实际的工作情况进行。(2)实用性原则:适合客户信息管理工作的实际需求,并能够处理一些特殊情况的要求,此外,尽可能预留空间,以便扩充功能。(3)准确性原则:对输入的相关资料建立检错机制,及时报错,使用户能够及时准确的输入合法资料(如:类型匹配,长度不超限等)。(4)易操作原则:要求设计的系统功能齐全,界面友好,操作方便。(5)源程序可读性原则:为了便于其他设计,维护人员读懂代码或以后的代码修改,软件升级维护,即可能做好代码注释工作。(6)优化原则:为了达到优化的目的,合理的运用窗口,菜单,对象等的继承,自定义用户对象,事件,函数,减少不必要的重复性代码,使程序简介明了,也方便了将来的维护。(7)安全性原则:可以为该系统的用户设置用户权限。4.3系统流程分析客户管理系统主要是企业对客户信息进行有效管理的功能子系统,因此应该具有独立的客户信息的增删改等管理功能,并且能够为企业提供客户信息的76 快速定位与报表打印留档等操作。其功能流程分析如下流程图所示:开始N用户登陆判断用户和密码是否正确Y进入客户资料管理界面结束操作客户资料(增删改)查询、打印客户资料4.3-4系统功能流程图76 4.4数据字典数据字典(Datadictionary)是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。数据字典是一种用户可以访问的记录数据库和应用程序源数据的目录。主动数据字典是指在对数据库或应用程序结构进行修改时,其内容可以由DBMS自动更新的数据字典。被动数据字典是指修改时必须手工更新其内容的数据字典。4.5功能设计本系统采用自顶定向下方法开发,其功能模块主要有如下几个部分,具体的功能描述如下:1.用户登录功能:主要用于验证管理员的有效性。2.客户资料显示功能:主要实现客户资料信息的列表显示。3.客户资料新增功能:主要实现客户资料新增。4.客户资料修改功能:主要实现修改。5.客户资料删除功能:主要实现客户资料删除。6.客户资料检索功能:主要实现客户资料检索。7.客户资料打印功能:主要实现选定的客户资料进行报表打印操作。8.水晶报表功能:主要实现设计及产生报表。9.数据库访问层:主要用于统一各功能模块访问数据库的方式,使系统采用统一的方式访问数据库,如此设计,系统将更易于扩展和维护。76 第五章系统详细设计5.1系统功能文件架构图系统功能设计是使整个客户资料管理系统能基本实现客户信息的显示、增加、删除、修改、检索以及打印等管理功能,能让管理者更直观的了解客户信息的实时后台状况,如:客户是否激活,客户分类等。系统总体架构如图5-1所示:客户资料管理系统系统登录验证模块客户信息显示客户信息增加客户信息删除客户信息修改客户信息检索客户信息报表打印数据库访问层数据库图5-1客户资料管理系统功能架构图5.2系统功能设计系统功能设计是使整个系统能基本满足预定需求:76 1.用户登录功能:主要用于验证管理员的有效性。2.客户资料显示功能:主要实现客户资料信息的列表显示。3.客户资料新增功能:主要实现客户资料新增。4.客户资料修改功能:主要实现修改。5.客户资料删除功能:主要实现客户资料删除。6.客户资料检索功能:主要实现客户资料检索。7.客户资料报表打印功能:主要实现选定的客户资料按照分类进行分类报表打印操作。8.水晶报表功能:主要实现设计及产生报表。8.数据库访问层:主要用于统一各功能模块访问数据库的方式,使系统采用统一的方式访问数据库,如此设计,系统将更易于扩展和维护。本系统共包括八大八个功能模块,具体的功能描述如下:(1)用户登录功能模块:主要用于验证管理员的有效性。(2)客户资料显示功能模块:主要实现客户资料信息的列表显示。(3)客户资料新增功能模块:主要实现客户资料新增。(4)客户资料修改功能模块:主要实现修改。(5)客户资料删除功能模块:主要实现客户资料删除。(6)客户资料检索功能模块:76 主要实现客户资料检索。(7)客户资料报表打印功能:主要实现选定的客户资料进行报表打印操作。(8)数据库访问层:主要用于统一各功能模块访问数据库的方式,使系统采用统一的方式访问数据库,如此设计,系统将更易于扩展和维护。5.3系统数据库设计5.3.1数据库设计由数据模型利用SQLSERVER2005进行数据库的详细设计,其基本表的设计如下:表5-1wxzx_HY序号字段名称数据类型长度主键说明1IDuniqueidentifier16主键2会员编号nvarchar403会员类型nvarchar404会员密码nvarchar1005单位名称nvarchar1006电子邮件nvarchar1007联系电话nvarchar1008入会时间datetime89备注nvarchar100010状态nvarchar100说明:客户信息表表5-2wxzx_Prouct序号字段名称数据类型长度主键说明76 1IDuniqueidentifier16主键2产品编号nvarchar403产品类型nvarchar404产品名称nvarchar2005产品描述nvarchar10006产品规格nvarchar1007产品价格nvarcharmoney81008上市时间datetime89备注nvarchar1000说明:产品信息表表5-3wxzx_Sales序号字段名称数据类型长度主键说明1IDuniqueidentifier16主键2会员编号nvarchar403产品编号nvarchar404购买数量nvarcharint10045购买时间datetime86交易评价nvarchar1007备注nvarchar1000说明:客户购买产品的交易信息基础数据表的逻辑关系图如下所示:图5-1数据库表逻辑关系图76 5.3.2存储过程设计系统没有使用传统的T-SQL直接数据库访问方式,而是采用了存储过程来实现系统中所有的数据访问功能,主要出于以下几点考虑:系统运行在web环境下,采用存储过程可以有效减少网络通信量。调用一个行数不多的存储过程与直接调用SQL语句的网络通信量可能不会有很大的差别,可是如果存储过程包含上百行SQL语句,那么其性能绝对比一条一条的调用SQL语句要高得多。执行速度更快。有两个原因:首先,在存储过程创建的时候,数据库已经对其进行了一次解析和优化。其次,存储过程一旦执行,在内存中就会保留一份这个存储过程,这样下次再执行同样的存储过程时,可以从内存中直接调用。更强的适应性:由于存储过程对数据库的访问是通过存储过程来进行的,因此数据库开发人员可以在不改动存储过程接口的情况下对数据库进行任何改动,而这些改动不会对应用程序造成影响。分布式工作:应用程序和数据库的编码工作可以分别独立进行,而不会相互压制。系统的可扩展性和可维护性更强,简化了前端程序的复杂程度。5.3.2.1增加客户信息存储过程:该存储过程实现了对客户信息的增加功能,系统调用时,只需要传入指定的参数,就可以完成客户信息的增加操作,这里sqlserver2005存储过程会利用SET@sId=newid()自动生成一个唯一ID,避免重复。当存储过程由于某系原因执行出错时,将会回滚事务,并返回错误代码1,如:return176 CREATEPROCEDURE[dbo].[wxzx_HYAdd]@会员编号nvarchar(20),@会员类型nvarchar(20),@会员密码nvarchar(50),@单位名称nvarchar(50),@电子邮件nvarchar(50),@联系电话nvarchar(50),@入会时间datetime,@备注text,@状态nvarchar(10)ASBEGINDECLARE@sIDuniqueidentifierbegintransactionSET@sId=newid()insertintowxzx_HY(ID,会员编号,会员类型,会员密码,单位名称,电子邮件,联系电话,入会时间,备注,状态)values(@sId,@会员编号,@会员类型,@会员密码,@单位名称,@电子邮件,@联系电话,@入会时间,@备注,@状态if@@error<>0beginROLLBACKtransactionreturn1endCommittransactionselect0END5.3.2.2增加客户信息定位存储过程:该存储过程实现了对客户信息的定位,系统调用时,只需要传入指定的参数,就可以完成客户信息的定位操作。@会员编号nvarchar(50)做为定位的唯一条件,存储过程执行后,将取出指定编号的客户信息。76 CREATEPROCEDURE[dbo].[wxzx_HYByHYBH]@会员编号nvarchar(50)ASBEGINselect*,convert(char(10),入会时间,120)as入会时间sfromwxzx_HYwhere会员编号=@会员编号END5.3.2.3客户信息检索存储过程:该存储过程实现了对客户信息检索,系统调用时,只需要传入指定的参数,就可以完成客户信息检索操作。@IDnvarchar(50)做为定位的唯一条件,存储过程执行后,将取出指定编号的客户信息。CREATEPROCEDURE[dbo].[wxzx_HYByID]@IDnvarchar(50)ASBEGINselect*,convert(char(10),入会时间,120)as入会时间sfromwxzx_HYwhereID=@IDEND5.3.2.4删除客户信息存储过程:该存储过程实现了对客户信息删除的功能,系统调用时,只需要传入指定的参数,就可以完成客户信息删除操作。@IDnvarchar(50),@会员编号nvarchar(50)做为定位的唯一条件,存储过程执行后,将删除符合条件的客户信息。76 CREATEPROCEDURE[dbo].[wxzx_HYDelete]@IDnvarchar(50),@会员编号nvarchar(50)ASBEGINif@会员编号='Administrator'beginreturn1001endbegintransactiondeletefromwxzx_HYwhereID=@IDif@@error<>0beginROLLBACKtransactionreturn1endCommittransactionselect0END5.3.2.5客户信息列表存储过程:该存储过程实现了对客户信息进行列表的功能,系统调用时,只需要传入指定的参数,就可以完成客户信息列表操作。@会员编号nvarchar(20),@会员类型nvarchar(20)做为定位的唯一条件,存储过程执行后,将检索出所有符合条件的客户信息列表。存储过程中,已经将显示时所需要的格式与数据一并输出,减少前台程序的工作压力。CREATEPROCEDURE[dbo].[wxzx_HYList]@会员编号nvarchar(20),@会员类型nvarchar(20)ASBEGINselect*,convert(char(10),入会时间,120)as入会时间s,(case状态when0then'激活'when1then'停用'else''end)as状态s,'修改'as修改,(case状态when0then'停用用户'when1then'激活用户'else''end)as激活用户fromwxzx_HYwhere(@会员编号=''or会员编号like'%'+@会员编号+'%')and(@会员类型=''or会员类型=@会员类型)orderby会员类型DESCEND76 5.3.2.6客户信息状态改变存储过程:该存储过程实现了对客户信息状态进行改变的功能,系统调用时,只需要传入指定的参数,就可以完成客户信息状态进行改变的操作。@IDnvarchar(50)做为定位的唯一条件,存储过程执行后,将改变符合条件的客户信息的状态。CREATEPROCEDURE[dbo].[wxzx_HYStateChange]@IDnvarchar(50),@状态nvarchar(10)ASBEGINDECLARE@sIDuniqueidentifierbegintransactionupdatewxzx_HYset状态=@状态whereID=@IDif@@error<>0beginROLLBACKtransactionreturn1endCommittransactionselect0END5.3.2.7客户信息更新存储过程:该存储过程实现了对客户信息进行更新的功能,系统调用时,只需要传入指定的参数,就可以完成客户信息更新的操作。参数中@IDnvarchar(50)作为定位参数,是用来检索对应的客户信息的,其他参数是对该客户信息所要修改的内容,存储过程执行后,将改变符合条件的客户信息内容。76 CREATEPROCEDURE[dbo].[wxzx_HYUpdate]@IDnvarchar(50),@会员类型nvarchar(20),@单位名称nvarchar(50),@电子邮件nvarchar(50),@联系电话nvarchar(50),@备注textASBEGINDECLARE@sIDuniqueidentifierbegintransactionupdatewxzx_HYset会员类型=@会员类型,单位名称=@单位名称,电子邮件=@电子邮件,联系电话=@联系电话,备注=@备注whereID=@IDif@@error<>0beginROLLBACKtransactionreturn1endCommittransactionselect0END76 5.4模块功能设计5.4.1系统登录模块功能:本模块的主要功能是对用户身份进行验证,如果操作之前没有登录,则无法对里面的功能进行操作。只有系统的合法用户才能进入系统。其窗体如图5-4-1所示:图5-4-1系统登录图76 在进行系统登录过程中,登录模块将调用数据库里的管理员清单,并对账号和密码进行验证,只有输入了正确的账号和密码后,系统登录才会成功。例如输入用户名是:001;密码是:001;系统就登陆成功,如:图5-4-2图5-4-2登录成功图并在输入了错误的或者是不存在的账户和密码时,系统会给出出错信息提示,指明登录过程中的错误输入或者错误操作,以便用户进行正确的登录。例如输入用户名是:1234;密码是:111;系统就登陆失败,如下截图:图5-4-3登录失败图系统登录模块的主要代码如下表:76 代码如下:functionLogin(){varreturns=checkLogin($("#userID").val(),$("#passwords").val());if(returns=='true'){window.location.href="admin/main.htm";}else{alert(returns);return;}}

  • 用户名:
  • 密   码:
代码说明:以上代码完成了用户界面的登陆操作,数据库访问和用户信息是否正确的判断工作放在了checkLogin函数中进行实现。5.4.2客户信息列表模块该模块主要是实现客户信息列表,修改具体如下截图:图5-4-4客户列表图76 代码如下:functioninitGrid(){dhxLayout=newdhtmlXLayoutObject("parentId","3E");dhxLayout.items[0].hideHeader();dhxLayout.items[1].hideHeader();dhxLayout.items[2].hideHeader();dhxLayout.cells("a").attachObject("Search");mygrid=dhxLayout.cells("b").attachGrid();dhxLayout.cells("c").attachObject("btnDiv");dhxLayout.items[0].setHeight("20");dhxLayout.items[2].setHeight("20");dhxLayout.items[0].fixSize(true,true);dhxLayout.items[1].fixSize(true,true);dhxLayout.items[2].fixSize(true,true);mygrid.setImagePath("../js/imgs/");mygrid.setHeader(",用户名,名称,会员类型,入会时间,电子邮件,联系电话,状态,编辑,");mygrid.setColumnIds(",会员编号,单位名称,会员类型,入会时间s,电子邮件,联系电话,状态s,修改,激活用户");mygrid.setInitWidths("40,100,150,200,150,180,90,90,90,100");mygrid.setColAlign("center,left,left,center,center,center,center,center,center,center");mygrid.setColTypes("ch,ro,ro,ro,ro,ro,ro,ro,ro,ro");mygrid.setColSorting("na,str,str,str,str,str,str,str,str,str");mygrid.attachEvent("onRowSelect",doOnRowSelected);mygrid.setPagingSkin("bricks");mygrid.setSkin("light");mygrid.init();ExpertSearch();}代码说明:以上代码是DHTMLX组件的典型编程实现,完成了从数据库中读取客户信息及将读取到的信息绑定到Grid列表显示控件中,以及设置列表的样式等操作。76 5.4.3客户信息增加模块76 代码如下:functionExpertSave(){varvalidobj;validobj="'yonghuming':{'string':{'disptitle':'用户名','allownull':'false','max':'100','min':'0'}}";validobj+=","+"'hyleixing':{'string':{'disptitle':'会员类型','allownull':'false','max':'100','min':'0'}}";validobj+=","+"'hymima':{'string':{'disptitle':'会员密码','allownull':'false','max':'100','min':'0'}}";validobj+=","+"'hymc':{'string':{'disptitle':'单位名称','allownull':'false','max':'100','min':'0'}}";validobj+=","+"'email':{'email':{'disptitle':'电子邮件','allownull':'true','max':'100','min':'0'}}";validobj+=","+"'lianxidianhua':{'string':{'disptitle':'联系电话','allownull':'true','max':'20','min':'0'}}";validobj+=","+"'jianjie':{'string':{'disptitle':'备注','allownull':'true'}}";if(!checkObjsValid(validobj)){return;}param={};param.会员类型=$('#hyleixing').val();param.单位名称=$('#hymc').val();param.电子邮件=$('#email').val();param.联系电话=$('#lianxidianhua').val();param.备注=$('#jianjie').val();varret;if((returnsID!="")&&(returnsID!=undefined)){param.ID=returnsID;ret=CallSync("wxzx_HYUpdate",param,"","");if(ret.ok){alert("用户信息修改成功!");window.location.href="UserList.htm";return;}else{alert("用户信息修改失败!");return;}}else{param.会员密码=MD5($('#hymima').val());param.会员编号=$('#yonghuming').val();param.状态="0";param.入会时间=(newDate()).toLocaleDateString().replace(/年|月|/g,"-").replace(/日/g,"");ret=CallSync("wxzx_HYAdd",param,"","");if(ret.ok){alert("用户信息新增成功!");return;}else{alert("用户信息新增失败!");return;}}}76 代码说明:以上代码是实现了客户信息的增加功能,包括了对个别信息的有效性验证的处理,完成了将界面获取的输入信息保存到数据库中。5.4.4客户信息删除模块删除操作需要确认才能继续执行,执行成功后系统会给出成功提示。代码如下:76 functionExpertDel(){varcheckobj=mygrid.getCheckedRows(0);if(checkobj==""){alert("请选择要删除的用户!");return;}if(!confirm("你确定要删除吗?"))return;varcheckarr=checkobj.split(",");for(vari=0;i0)proc=proc.Substring(0,proc.IndexOf("+"));elseif(proc.IndexOf("-")>0)proc=proc.Substring(0,proc.IndexOf("-"));da.SelectCommand.CommandText=proc;da.SelectCommand.CommandType=CommandType.StoredProcedure;da.SelectCommand.Parameters.Add("@RETURN_VALUE",SqlDbType.Int);da.SelectCommand.Parameters["@RETURN_VALUE"].Direction=ParameterDirection.ReturnValue;if(paramstr==null)paramstr="";paramstr=paramstr.Replace("(~*~)","=");paramstr=paramstr.Replace("(_!_)","<");if(paramstr!=""){string[]param=paramstr.Split(newstring[]{"(~,~)"},StringSplitOptions.RemoveEmptyEntries);inti;for(i=0;i),更少超过或等于(<=)、大于或等于(>=),等效(==)和不等效(!=)。等价和非等价处理所有建造在数据类型,但是其他比较不会使用类型保龄球。测试对象等价关系运算符==和!=也作用于所有的物体,但他们的意义往往混淆了首次c#程序员。这里的一个例子://:c03:EqualsOperator.csnamespacec03{usingSystem;classMyInt{Int32i;publicMyInt(intj){i=j;}}///Demonstrateshandleinequivalence.publicclassEqualsOperator{publicstaticvoidMain(){MyIntm1=newMyInt(47);MyIntm2=newMyInt(47);System.Console.WriteLine("m1==m2:"+(m1==m2));}76 }}///:~表达系统控制台。WriteLine(n1==n2)将打印比较的结果在保龄球。当然输出应该真实然后假,因为两个对象具有相同值的耶。但是当对象的内容是相同的,引用是不一样的和运营商==和!=比较对象引用。所以输出其实假然后真实。自然,这惊喜的人起初。如果你想比较对象的实际内容等价?对象在一个设计良好的类库(例如。net框架),您只使用了等价运营商。然而,如果你创建你自己的类,您必须覆盖'=='在你的新类来获得期望的行为。不幸的是,你不会了解覆盖到第七章,但被意识到的方式“==”的行为可能会给您节省一些悲痛的同时。逻辑运算符每个逻辑运算符和(&&)、或(||),而不是(!)产生bool值正确或错误的逻辑关系的基础上的参数。下面的例子使用了关系和逻辑运算符://:c03:Bool.csnamespacec03{usingSystem;//Relationalandlogicaloperators.publicclassBool{publicstaticvoidMain(){Randomrand=newRandom();inti=rand.Next(100);intj=rand.Next(100);prt("i="+i);prt("j="+j);prt("i>jis"+(i>j));prt("i=jis"+(i>=j));prt("i<=jis"+(i<=j));prt("i==jis"+(i==j));prt("i!=jis"+(i!=j));//Treatinganintasabooleanis76 //notlegalC#//!prt("i&&jis"+(i&&j));//!prt("i||jis"+(i||j));//!prt("!iis"+!i);prt("(i<10)&&(j<10)is"+((i<10)&&(j<10)));prt("(i<10)||(j<10)is"+((i<10)||(j<10)));}staticvoidprt(Strings){System.Console.WriteLine(s);}}}///:~你可以申请,或者,或者不要弯曲件值只有。你不能使用非就像保龄球保龄球在一个逻辑表达式可以在其他一些语言。你可以看到失败的尝试做这个注释掉了用//!注释标记。随后的表情,然而,bool值产生使用关系的比较,然后使用逻辑操作结果。一个输出清单看起来像这样:i=85j=4i>jistruei=jistruei<=jisfalsei==jisfalsei!=jistrue(i<10)&&(j<10)isfalse(i<10)||(j<10)istrue注意,一个bool值是自动转换为一个适当的文本表单的使用一个字符串是预期。你可以取代定义为int在上面的程序与任何其他原始数据类型除了保龄球。然而,请注意,比较浮点数的是非常严格的。这一数字是最小的分数不同的从另一个号码仍然是“不平等。76 “一个号码,是极小的一点零度以上仍是零。短路当处理逻辑运算符你碰到一个现象叫做“短路。“这意味着表达式将仅仅评估直到真相或虚假的整个表达式可以明确下定决心。因此,所有的部分逻辑表达式可能不是评估。下面是一个示例,演示了短路://:c03:ShortCircuit.csnamespacec03{usingSystem;//Demonstratesshort-circuitingbehavior.//withlogicaloperators.publicclassShortCircuit{staticboolTest1(intval){System.Console.WriteLine("Test1("+val+")");System.Console.WriteLine("result:"+(val<1));returnval<1;}staticboolTest2(intval){System.Console.WriteLine("Test2("+val+")");System.Console.WriteLine("result:"+(val<2));returnval<2;}staticboolTest3(intval){System.Console.WriteLine("Test3("+val+")");System.Console.WriteLine("result:"+(val<3));76 returnval<3;}publicstaticvoidMain(){if(Test1(0)&&Test2(2)&&Test3(2))System.Console.WriteLine("expressionistrue");elseSystem.Console.WriteLine("expressionisfalse");}}}///:~每个测试执行比较反对论点和返回true或假。它还输出信息给你,这是被称为。这个测试是用于表达式:if(test1(0)&&test2(2)&&test3(2))你可能会很自然的认为所有的三个测试将被执行,但是输出显示了否则:test1(0)result:truetest2(2)result:falseexpressionisfalse第一个测试产生了真正的结果,所以表达式求值继续。然而,第二个测试产生了错误的结果。因为这意味着整个表达式必须是假的,为什么继续评估其余的表达?它可能是昂贵的。短期的原因电路,事实上,恰恰在于,你可以得到一个潜在的性能如果所有的部分增加一个逻表达式不需要被评估。76 76

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
最近更新
更多
大家都在看
近期热门
关闭