Winform开发框架之客户关系管理系统(CRM)的开发总结系列1-界面功能展示
一直以来,都希望整合一个以客户为中心的平台,有两个方面的考虑:一是实现客户数据、客户关系、客户管理等方面的整合,以便更好利用好客户的相关资源,发挥最大的营销效益;二是整合目前我的开发框架的所有模块和技术,包括权限管理和控制、字典管理模块、分页控件、公用类库、自动更新模块、附件管理模块、邮件短信的信息通知模块、工作流模块,以及来电显示记录模块、群发邮件营销模块、日历管理模块等方面的内容。本随笔系列主要介绍在开发我的CRM系统中的各种场景问题的解决思路,以及相关的功能实现,力求在逐步完善这个CRM系统模块过程中,介绍我目前基于我的Winform开发框架套件和Database2Sharp代码生成工具的CRM系统的开发历程和经验总结,希望记录下的点点滴滴,对自己,对同行都有着一定的借鉴、参考作用,同时也希望吸纳更多的批评指导意见,逐步提高自己整个Winform开发框架体系的深度和广度。
1)CRM系统功能的借鉴和设计
在实际开发之初很长一段时间,都很留意CRM系统的相关信息,包括从华军、天空网站下载了一些不错的CRM系统,以及一些急于B/S的在线CRM系统,吸收其中的一些思路和功能,同时也在Google、Baidu上搜索一些别人设计文档或者介绍文档,了解整个CRM系统可能包含的模块和关联的关系。
主要的功能模块包括:客户管理、服务管理、商品及销售、报表数据等几大块。
其中客户管理包括的内容有:客户管理、客户跟进、联系人管理、客户文档、合同文档、维护记录、售后服务、客户投诉、客户活动、销售机会、产品报价、销售记录、客户拜访、客户来电、发票记录、客户分组、联系人分组等方面的管理,基本上就是,以客户为中心的相关数据的管理。当然,后面还可以扩展添加,客户往来邮件、客户往来短信,以及和客户相关等各方面的数据。例如下面是我设计的客户往来的总体界面,包括了一切和客户相关的模块展示,主界面源自我的《Winform开发框架》的布局效果,整合了主体框架的内容,在主界面里面,也整合了Winform分页控件实现数据的合理高效的展示,并且通过把界面拆分多个可以调整的部分,使得更加友好。
2)客户分类管理
a、常规字典模块的动态加载
一般情况下,我们对客户的分类都需要动态加载,对这个客户分类的管理,我希望能给使用者提供足够的方便,如下面的客户状态、客户类型等节点里面的数据来源数据字典,用户调整对应字典模块的数据,这个树形列表也应该跟着变化。
上面的节点数据来自数据字典模块的内容,字典模块直接利用《Winform开发框架》现成的模块即可,界面如下所示。
b、客户省份、客户城市的动态加载
除了从数据字典中加载的节点数据,还有一种如客户省份、客户城市,我们知道这些数据很大,我们如果在树列表里面展示全国的城市,那么肯定是不好的用户体验,想想要在全国几百个城市找一个出来可不容易。
于是,我们应该换一种方法,试着从已有客户所在的省份、所在的城市,把他们动态加载出来,数据就少很多,友好很多,基本上我们看任何一个节点都会有数据,这就是贴心的设计,友好的体验。
以下就是从客户数据里面提取客户所在省份、客户所在城市,然后再在节点中列出。
c、客户分组的管理
除了上面两种,还有一种来自个人的客户组别的数据表数据,我们从其中获取到对应的客户分组信息,然后在客户分组节点中展示出来,选择对应的个人分组就可以获取对应的客户
上面的个人分组来自对客户的个人分组表里面,它的管理界面如下所示。
d、客户分类的配置管理
从上面对客户的分类,我们看到已经有很多大的类别了,每个类别展开还有好几项,这样就构成了一个很大的树,但是有时候有些客户可能不一定对所有的分类节点都感兴趣,如果能够给客户一个选择配置的机会,会显得更加友好,因此客户分类的功能需求也就应运而生,我们把这些预先设定一个系统节点表,然后每个用户存储在另外一张用户表里面,这样就可以实现了。
3)客户管理模块的动态加载
以客户为中心的数据管理,就会分为很多名目, 如上面提到的客户管理、客户跟进、联系人管理、客户文档、合同文档、维护记录、售后服务、客户投诉、客户活动、销售机会、产品报价、销售记录、客户拜访、客户来电、发票记录。
管理这些模块,我们在开发的时候,如果在一个TabControl集成那么多模块,也是可以的,不过不够弹性化,比较僵硬死板,而且可能不好动态调整,如果整合一起,字段控件的命名也成问题。
因此,我设计这些模块的时候,每个业务模块作为一个控件,然后再在统一在界面中动态整合,这样还可以实现本节所说的动态加载和配置管理,这里面也用到了Winform分页控件模块,使用代码生成工具Database2Sharp实现所有子模块的列表展示和数据编辑界面的快速开发,具体可以参考上一篇随笔《利用代码生成工具Database2Sharp设计数据编辑界面》。
和上面的客户分类一样,我觉得不是每个人都可能关注所有的相关资料,有些可能只需要关心几项内容,那么应该提供一个模块配置的界面给客户进行必要的调整,配置界面如下所示
4)数据编辑界面的设计
处理上面的分类设计要求,对每项数据的编辑界面,我也希望能给设计符合一般用户的使用习惯,如下面的客户信息的数据编辑界面和联系人数据编辑界面效果。这里面的界面效果,是使用代码生成工具Database2Sharp实现列表展示和数据编辑界面的快速开发,然后进行适当的调整,具体可以参考上一篇随笔《利用代码生成工具Database2Sharp设计数据编辑界面》。
客户联系人数据编辑界面如下所示。
以上就是这个CRM系统模块里面,涉及到的一些比较典型的界面设计,本篇不设计技术代码的研究,后续的文章将对这些设计的细节和实现思路进行分析介绍,希望大家多多支持,提供更多的批评意见,相互促进。
我的该CRM系统系列的几篇随笔链接如下,供阅读。
Winform开发框架之客户关系管理系统(CRM)的开发总结系列1-界面功能展示
Winform开发框架之客户关系管理系统(CRM)的开发总结系列2-基于框架的开发过程
Winform开发框架之客户关系管理系统(CRM)的开发总结系列3-客户分类和配置管理实现
Winform开发框架之客户关系管理系统(CRM)的开发总结系列4-Tab控件页面的动态加载
Winform开发框架之客户关系管理系统(CRM)的开发总结系列1-界面功能展示的更多相关文章
- Winform开发框架之客户关系管理系统(CRM)的开发总结系列4-Tab控件页面的动态加载
在前面介绍的几篇关于CRM系统的开发随笔中,里面都整合了多个页面的功能,包括多文档界面,以及客户相关信息的页面展示,这个模块就是利用DevExpress控件的XtraTabPage控件的动态加载实现的 ...
- Winform开发框架之客户关系管理系统(CRM)的开发总结系列3-客户分类和配置管理实现
我在本系列随笔的开始,介绍了CRM系统一个重要的客户分类的展示界面,其中包含了从字典中加载分类.从已有数据中加载分类.以及分组列表中加载分类等方式的实现,以及可以动态对这些节点进行配置,实现客户分类的 ...
- Winform开发框架之客户关系管理系统(CRM)的开发总结系列2-基于框架的开发过程
在上篇随笔<Winform开发框架之客户关系管理系统(CRM)的开发总结系列1-界面功能展示>中介绍了我的整个CRM系统的概貌,本篇继续本系列的文章,介绍如何基于我的<winform ...
- Winform开发框架之客户关系管理系统(CRM)的报价单和销售单的处理
在前面介绍了很多CRM相关的界面和实现思路的随笔文章,本篇继续介绍一下系统中用到的一些经验和技巧片段.本篇随笔主要介绍客户关系管理系统(CRM)的报价单和销售单的处理界面效果,使用列表内置的选择代替弹 ...
- 客户关系管理系统(CRM)的开发过程中使用到的开发工具总结
开发<客户关系管理系统(CRM)>软件过程,也就是一个标准的Winform程序的开发过程,我们可以通过这个典型的软件开发过程来了解目前的开发思路.开发理念,以及一些必要的高效率手段.本篇随 ...
- Java高级项目实战02:客户关系管理系统CRM系统模块分析与介绍
本文承接上一篇:Java高级项目实战之CRM系统01:CRM系统概念和分类.企业项目开发流程 先来CRM系统结构图: 每个模块作用介绍如下: 1.营销管理 营销机会管理:针对企业中客户的质询需求所建立 ...
- 客户关系管理系统CRM
http://www.cnblogs.com/Michael2397/tag/SSH%E9%A1%B9%E7%9B%AE-CRM/ 客户关系管理系统
- 客户关系管理系统-CRM源码
QQ:2112326142 邮箱:jxsupport@qq.com 本公司开发的CRM源代码系统一份,附源代码,本公司产品唯一销售客服QQ号:2112326142 请联系此QQ号,以免给您的工作 ...
- AEAI CRM V1.6.0 升级说明,开源客户关系管理系统
1 升级说明 AEAI CRM v1.6.0版是AEAI CRM v1.5.2版客户关系管理系统的升级版本,本次版本是基于AEAI DP v3.8.0_20170228进行打包部署的,升级内容主要是针 ...
随机推荐
- 单源最短路径算法---Dijkstra
Dijkstra算法树解决有向图G=(V,E)上带权的单源最短路径问题,但是要求所有边的权值非负. 解题思路: V表示有向图的所有顶点集合,S表示那么一些顶点结合,从源点s到该集合中的顶点的最终最短路 ...
- centos中 mysql 5.7安装
以免授权模式启动 编辑 /etc/my.cnf,添加以下内容: linux环境中:vi /etc/my.cnf 在[MySQL(和PHP搭配之最佳组合)d]配置段添加如下两行: user=mysql ...
- xsocks 64位平台下编译问题小记
1.src/common/public.h uint32_t lpParameter 改为 void* lpParameter; 2.SocksMgr.cpp DWORD WINAPI CSocksM ...
- SAP S4 Finance6个支持企业实时财务管理的主要创新领域
本文将讲述下 SAP Simple Finance里面6个支持企业实时财务管理的主要创新领域. Simple Finance 在以下几个方面具有自己独特的优势: ● 更加简洁的用户体验,可以让用户在任 ...
- Unitils集成DBUnit、Spring-单元测试
Unitils集成DBUnit.Spring-单元测试 1.maven-pom文件中引入相关jar包 <!-- Unitils -dbunit.Spring --> <depende ...
- truncate/drop表非常慢,怎么办?用硬链接,极速体验
这个这个,我必须花巨大篇幅,记录下今天清空表记录的英雄壮举,可知道一个drop操作,执行了一下午啊一下午,这是要急出翔的节奏..呵呵,下面开始 我的需求:某表因历史原因,积压了1亿条记录,约占360G ...
- c++ 职责链模式(Chain of Responsibility)
职 责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处 理它为止.其思想很简单,考虑员工要求加薪.公司的管 ...
- NSURLSession与AFNetworking3.0
下面是用GET方式请求一个页面数据的示例: AFNetworking 2.x NSString *siteUrl = @"http://webinar.ofweek.com/readDemo ...
- c# socket 框架学习 SocketAsyncEventArgsPool 封装
public class SocketAsyncEventArgsPool{ //已使用记录 private List<Int32> usedRecord; //未使用记录 private ...
- [Android Studio 权威教程]断点调试和高级调试
好了开始写一个简单的调试程序,我们先来一个for循环 ? 1 2 3 4 5 6 7 8 <code class="language-java hljs ">for ( ...