这是一本面向零基础读者的编程入门教程;
这是一本帮助读者了解企业真实工作环境的求职参考书;
这是一本记录企业信息系统(CRM)项目完整开发过程的书;
这是一本实用的C#工具书;
这是一本关于企业信息化建设的书;
这是一本有丰富应用场景的书;
这是一本有全套源代码的开发指南;
这是一本关于开源项目HYAppFrame的开发指南;
这是一本在校生必备的职业培训教程;
这是一本市面上难得的就业和教学相结合的编程书。
本书作者从事十余年IT项目开发,实战经验丰富;全书以C#语言为主,同时还介绍了WinForm、ASP。NETWebService、SQLServer数据库等编程语言或工具;源代码资源丰富,下载后稍做修改即可应用到企业实践中。
《31天学会CRM项目开发》将用31天的时间,带领读者共同完成一套企业级客户关系管理系统(CRM)。本书共包括五大部分, 一部分为需求篇,讨论程序员职业需求、企业信息化需求、CRM需求及解决方案; 二部分为基础篇,带领读者熟悉软件开发环境、WinForm、C#及数据库编程; 三部分为提高篇,带领读者熟悉ASP.NET Web Service,开发C/S结构应用系统框架; 四部分为实战篇,讲解如何基于系统框架开发CRM业务功能模块,解决业务问题; 五部分为交付篇,讨论系统安装部署、运维及信息安全等。
《31天学会CRM项目开发》以企业管理信息系统常用功能为学习路线,适时讲解C#、WinForm、ASP.NET Web Service、SQL Server数据库等编程语言或工具,同时介绍了WinForm、C#、SQL编程基础,讲解文件操作、数据库操作、多窗体标签、组织架构、权限控制、计划任务、消息机制、系统框架、统计报表和系统安全等程序设计方法。《31天学会CRM项目开发》共包括1套CRM项目源代码、38个演示示例、31个拓展实例。《31天学会CRM项目开发》强调学以致用,书中所涉及代码均可在示例项目中找到,所安排的拓展练习也都是实际工作中经常会遇到的问题,实用性很强。
《31天学会CRM项目开发》适合初级程序员、企业IT人员及希望从事软件开发职业的人员阅读;适合作为在校大学生和应届毕业生的自学教程,积累项目经验,提升求职能力;适合作为高等院校、培训机构的职业化培训教材。
第一部分 需 求 篇 了解程序员职业需求、CRM项目需求及解决方案
第1天 程序员职业发展
1.1 为什么要成为一名程序员
1.1.1 程序员就业前景
1.1.2 程序员的理想抱负
1.2 优秀程序员应当具备的素质
1.2.1 强烈的求知欲望
1.2.2 较强的安全意识
1.2.3 较强的英语能力
1.2.4 对代码有较强的敏感性
1.2.5 有编写高品质代码的追求
1.3 求职建议
1.3.1 带着项目作品找工作
1.3.2 大平台成就人生大舞台
1.3.3 加入软件公司还是企业IT部门
1.3.4 及时获取招聘信息
1.4 程序员应当长期准备的三件事
1.4.1 写博客
1.4.2 参与开源项目
1.4.3 十年磨一剑
1.5 本章小结
第2天 CRM是什么
2.1 企业信息化概述
2.1.1 企业信息化是什么
2.1.2 企业管理信息系统组成
2.1.3 企业管理信息系统建设途径
2.1.4 企业管理信息系统建设误区
2.2 CRM概述
2.2.1 客户背景介绍
2.2.2 CRM建设步骤
2.3 CRM需求分析方法
2.3.1 业务场景梳理
2.3.2 了解管理者关心的问题
2.3.3 需求调研表
2.3.4 可行性分析
2.4 本章小结
第3天 CRM解决方案
3.1 CRM业务信息化解决方案
3.1.1 背景介绍
3.1.2 系统特点
3.1.3 功能模块
3.1.4 技术特点
3.1.5 运行环境
3.2 CRM系统设计方案
3.2.1 服务器端设计方案
3.2.2 客户端设计方案
3.2.3 数据库设计方案
3.2.4 应用系统框架设计方案
3.2.5 业务设计方案
3.3 本章小结
第二部分 基 础 篇 熟悉C#、WinForm、SQL编程,为编程打下基础
第4天 WinForm编程入门
4.1 Visual Studio 2013介绍
4.1.1 安装
4.1.2 熟悉开发环境
4.1.3 常用设置
4.2 WinForm项目
4.2.1 Hello World
4.2.2 调试
4.2.3 异常处理
4.2.4 编译及发布
4.3 认识公共控件
4.3.1 窗体Form
4.3.2 为控件添加事件
4.3.3 按钮Button
4.3.4 消息对话框MessageBox
4.3.5 文本框TextBox
4.3.6 下拉框ComboBox
4.3.7 复选框和单选按钮
4.3.8 日期时间选择框DateTimePicker
4.3.9 富文本框RichTextBox
4.3.10 进度条ProgressBar
4.3.11 树TreeView
4.3.12 图像PictureBox
4.3.13 浏览器WebBrowser
4.3.14 数据表格DataGridView
4.3.15 布局控件TableLayoutPanel
4.4 认识容器
4.5 认识菜单和工具栏
4.5.1 菜单栏MenuStrip
4.5.2 弹出菜单ContextMenuStrip
4.5.3 状态栏StatusStrip
4.6 认识对话框
4.6.1 选择文件对话框
4.6.2 浏览文件夹对话框
4.6.3 保存文件对话框
4.6.4 颜色选择对话框
4.6.5 字体选择对话框
4.7 认识定时器和图表
4.7.1 定时器Timer
4.7.2 图表Chart
4.8 其他控件
4.8.1 用户控件
4.8.2 使用COM控件
4.8.3 第三方控件DotNetBar
4.9 界面设计规范
4.10 本章小结
第5天 C#入门
5.1 C#基础知识
5.1.1 数据类型
5.1.2 变量
5.1.3 字符串操作
5.1.4 运算符
5.1.5 条件语句
5.1.6 循环
5.1.7 数组和泛型集合
5.1.8 类
5.1.9 函数
5.2 拓展练习
5.2.1 定时访问网页
5.2.2 执行CMD命令
5.2.3 使用JS图表
5.2.4 DataGridView拖动行
5.2.5 登录窗体设计
5.2.6 域账号弱密码检查工具
5.2.7 DES加解密
5.3 编码规范
5.4 本章小结
第6天 C#文件操作
6.1 文件及文件夹
6.1.1 路径
6.1.2 文件操作
6.1.3 文件夹操作
6.2 文本文件操作
6.2.1 读取文本文件
6.2.2 写入文本文件
6.3 图像文件操作
6.3.1 图像文件格式
6.3.2 加水印
6.3.3 修改图像文件格式
6.3.4 生成缩略图
6.4 配置文件
6.4.1 加入App.config文件
6.4.2 参数读写
6.4.3 连接字符串读写
6.5 拓展练习
6.5.1 小票打印
6.5.2 发送短信
6.5.3 来电弹屏
6.6 本章小结
第7天 SQL Server 数据库
7.1 SQL Server 2014 Express安装部署
7.1.1 安装过程
7.1.2 网络配置
7.1.3 熟悉SQL Server Management Studio
7.1.4 账号与权限控制
7.2 数据库基础
7.2.1 新建数据库
7.2.2 设计表
7.2.3 新建视图
7.2.4 数据库关系图
7.2.5 用户自定义函数
7.2.6 存储过程
7.2.7 触发器
7.2.8 临时表
7.3 SQL基础
7.3.1 查询语句
7.3.2 更新语句
7.3.3 动态执行SQL
7.3.4 数据分页
7.3.5 游标
7.3.6 调试
7.3.7 递归函数
7.4 SQL系统函数
7.4.1 字符串函数
7.4.2 日期函数
7.4.3 统计函数
7.4.4 数学函数
7.4.5 类型转换
7.5 拓展练习
7.5.1 自定义函数iszero
7.5.2 自定义加密函数MD5()
7.5.3 自定义函数split()
7.5.4 递归函数
7.5.5 在线人数
7.5.6 SQL Server区分大小写设置
7.6 本章小结
第8天 C#操作数据库
8.1 连接SQL Server数据库
8.2 SQL Server数据库连接池
8.3 记录操作
8.4 DataTable基础
8.5 DataTable查询和汇总
8.6 数据库配置工具
8.7 拓展练习
8.7.1 连接MySQL
8.7.2 SQLHelper
8.7.3 NHibernate
8.8 本章小结
第9天 ASP.NET Web Service入门
9.1 安装Internet 信息服务(IIS)
9.1.1 安装IIS 7
9.1.2 安装ASP.NET
9.2 Web Service项目入门
9.2.1 创建项目
9.2.2 调试项目
9.3 C#调用ASP.NET Web Service
9.4 Web Service连接数据库
9.5 拓展练习
9.5.1 全局热键
9.5.2 多窗体标签
9.5.3 人民币金额大写
9.5.4 客户端时间同步
9.5.5 代码样式生成器
9.6 本章小结
第三部分 提 高 篇 软件编程必经之路,应用系统框架开发
第10天 服务器端Web Service开发
10.1 自动添加版权信息
10.2 HYWS项目
10.2.1 配置文件
10.2.2 MyFuncLib类
10.2.3 登录和注销
10.2.4 数据库操作
10.2.5 文件管理
10.3 发布HYWS项目
10.4 非打印控制字符
10.5 本章小结
第11天 主窗体开发
11.1 准备工作
11.2 主窗体布局设计
11.3 TagData类
11.4 ListItem类
11.5 MyFuncLib类
11.6 登录Web Service
11.7 导航菜单
11.8 为多窗体标签添加关闭按钮
11.9 状态栏
11.10 本章小结
第12天 基础功能
12.1 消息对话框
12.2 输入框
12.3 登录窗体
12.4 修改密码
12.5 本章小结
第13天 树形结构和菜单管理
13.1 数据结构及演变过程
13.2 TreeView基本操作
13.3 菜单管理
13.3.1 表结构设计
13.3.2 显示数据
13.3.3 修改数据
13.4 窗体复用
13.5 调用子窗体的公共方法
13.6 本章小结
第14天 组织架构
14.1 部门管理
14.2 岗位管理
14.3 账号管理
14.4 组织架构选择框
14.5 本章小结
第15天 权限管理
15.1 权限概述
15.2 角色表
15.3 操作权限表
15.4 SQL语句表
15.5 角色关系表
15.6 权限分配
15.7 权限控制
15.8 本章小结
第16天 WinForm表单开发步骤总结
16.1 需求分析
16.2 表结构设计
16.3 窗体布局
16.4 编码实现
16.5 数据静态化
16.6 拓展练习之模拟键盘录入
16.7 本章小结
第17天 系统管理
17.1 基础数据
17.2 系统参数
17.3 字段设置
17.4 系统日志
17.5 本地配置文件
17.6 自动登录
17.7 锁定主窗体
17.8 开机启动
17.9 计划任务
17.10 本章小结
第18天 Excel导入导出
18.1 Excel读取
18.1.1 COM组件方式
18.1.2 OLEDB方式
18.2 Excel导出
18.3 拓展练习
18.3.1 年会抽奖软件
18.3.2 万能导入工具
18.4 本章小结
第19天 文件管理
19.1 表结构设计
19.2 文件上传
19.3 文件下载
19.4 文档管理
19.5 拓展练习
19.5.1 Lucene.Net全文检索
19.5.2 JSON序列化和反序列化
19.6 本章小结
第20天 客户端自动更新
20.1 C/S和B/S结构
20.2 自动更新工具运行原理
20.3 创建项目HYUpdate
20.4 检查进程
20.5 下载更新文件清单
20.6 下载更新文件
20.7 IIS 7文件下载限制
20.8 本章小结
第21天 消息机制
21.1 实现方法
21.2 站内消息
21.3 发送邮件提醒
21.4 发送即时消息提醒
21.5 发送短信提醒
21.6 拓展练习
21.6.1 二维码名片
21.6.2 反射与Dynamic效率比较
21.7 本章小结
第四部分 实 战 篇 基于应用系统框架解决CRM业务信息化问题
第22天 客户档案管理
22.1 系统设计
22.1.1 功能要求
22.1.2 表结构设计
22.1.3 程序界面设计
22.2 主要功能开发
22.3 本章小结
第23天 联系人管理
23.1 系统设计
23.1.1 功能要求
23.1.2 表结构设计
23.1.3 程序界面设计
23.2 主要功能开发
23.3 本章小结
第24天 拜访记录管理
24.1 系统设计
24.1.1 功能要求
24.1.2 表结构设计
24.1.3 程序界面设计
24.2 主要功能开发
24.3 本章小结
第25天 销售合同管理
25.1 系统设计
25.1.1 功能要求
25.1.2 表结构设计
25.1.3 程序界面设计
25.2 更新统计字段
25.3 本章小结
第26天 销售业绩管理
26.1 销售目标设定
26.1.1 功能要求
26.1.2 表结构设计
26.1.3 程序界面设计
26.1.4 仅显示销售部门的员工
26.2 销售目标统计
26.2.1 功能要求
26.2.2 程序界面设计
26.2.3 功能实现
26.3 本章小结
第27天 综合查询
27.1 客户查询
27.2 公海客户
27.3 个人销售业绩查询
27.4 客户统计
27.5 销售业绩统计
27.6 活动量统计
27.7 本章小结
第28天 群发邮件
28.1 群发邮件管理
28.1.1 功能要求
28.1.2 表结构设计
28.1.3 程序界面设计
28.2 主要功能开发
28.2.1 发送带附件的邮件
28.2.2 WinHtmlEditor编辑框
28.2.3 设置邮件模板
28.3 本章小结
第29天 销售统计报表
29.1 准备报表数据
29.2 准备数据对象
29.3 创建RDLC报表
29.4 新建数据源
29.5 设计RDLC报表
29.6 显示报表
29.7 本章小结
第五部分 交 付 篇 安装部署、系统运维及系统安全
第30天 HYCRM部署及运维
30.1 制作HYCRM安装包
30.2 生成数据库安装脚本
30.3 数据库基本操作
30.4 数据库日志
30.5 服务器防火墙设置
30.6 本章小结
第31天 CRM系统的安全可靠性
31.1 .NET代码安全
31.1.1 .NET反编译
31.1.2 .NET混淆加密
31.1.3 使用SecureString存储敏感信息
31.1.4 为程序集增加强名称
31.2 ASP.NET Web Service安全
31.2.1 以HTTPS发布Web Service
31.2.2 增加验证码功能
31.2.3 其他安全措施
31.3 SQL安全
31.3.1 SQL注入
31.3.2 隐藏数据库结构
31.3.3 SQL执行权限
31.4 文件管理策略
31.4.1 IIS 7启用或禁用目录浏览
31.4.2 文件存储策略
31.5 压力测试
31.6 本章小结
附录A 实例索引
附录B 学习路线
后记
参考文献
——腾讯国际事业部高级工程师 桑加贝
本书是国内图书市场上少有的CRM项目管理、实践类图书。作者不仅仅停留在讲解工程技术的层面,还站在行业视野的高度对读者进行启发性指导,从顶层设计到开发细节都有涉及,特别是最后章节加入了对系统安全设计与压力测试方法的讲解。非常适合初级用户作为项目实践参考用书。
——支付宝信息安全工程师 吴昕锴
本书以企业级客户关系管理系统为例,结合作者多年的软件开发经验,系统地介绍了管理信息系统的开发过程,是一本实用性很强的好书。该书对高等学校信息类与管理类专科生、本科生和研究生均有很大的参考价值,有助于专科生和本科生顺利完成相关课程的课程设计以及学位论文的毕业设计,也有助于研究生顺利开展涉及信息系统开发的科研项目。
——华中科技大学自动化学院副教授 欧阳敏
本书将原本抽象的项目开发过程拆分为多个短小精干的开发实例,同时结合作者多年的成长经历,在帮助初入行的读者迅速掌握基础的开发规范与方法的同时,也提出了诸多宝贵建议。
——IBM全球商业服务(GBS)高级工程师 庞江华
这是一本很有特色的程序员入门参考用书。全书以一个企业常用信息管理系统的完整实现过程来引领读者进入码农的世界。经验重于语法、实践胜过说教,本书既是一本C#编程语言教材,也是一本Windows平台管理信息系统开发参考手册。
——上海阶源信息科技有限公司总经理 宋如贵
作者深入浅出地为大家呈现了一个开发项目从需求了解到最终交付的完整的生命周期,读者可以从书中体会作者对项目的精细化管理思维。相信这些都是作者在大量项目开发中积累下来的宝贵经验,而这些宝贵经验,正是当前市场上大量开发人员所欠缺的。
——中国惠普有限公司华南区专业服务经理 严兴华
记得当初在大学学习计算机课程时,就特别希望能有一些实践机会来开发几套业务系统,以便于更好地理解计算机在社会生活中的应用,当时寻觅了好久都没能找到讲解开发业务系统步骤与方法的图书。
阅览本书后,顿时觉得当初如能有此书相助,定会少走很多弯路。一本好的书籍会带领读者快速叩开程序开发的大门。作者将多年的业务系统开发经验著作成书,使本书有了很强的实用性。
对于初入IT行业的程序员或者在校学生来说,系统性地介绍企业管理信息系统知识会加深他们对知识的理解与吸纳,作者别出心裁的背景介绍也迎合了读者在这方面的需求。在介绍了CRM系统的概念和设计方案后,作者又结合大量实验构建了C#编程的方方面面,让读者能够轻松地写出自己的案例。我相信通过对此书的学习,读者们能够迅速掌握C#的编程技巧,为日后真正融入IT行业打下坚实的基础。
——上海天旦网络科技有限公司资深解决方案顾问 熊掀
我接触程序开发工作是在1985年。当时,我在主持一个单片机工业过程控制系统开发项目,用MCS-51单片机汇编语言开发了该系统的全部控制程序。同时,根据项目需要还用BASIC写了微分方程求解的模型计算程序。在后来的项目中,还使用了dbase II进行了焊接工艺参数数据库的开发。此后,也用过Prolog语言进行了专家系统的开发。由于工作需要,还系统地学习了C语言。大体上,对软件和系统开发还算有一定了解。
我个人体会,学会一个软件的语言规则并不难,难的是把不同的技术有机地组合起来,去满足业务上的功能需求,从而解决实际问题。所以,学习软件开发的时候,如果能在一个较为完整的业务场景中结合对系统整体功能的思考来进行,往往会起到事半功倍的效果。
辗转了工厂、机关、外贸企业等不同类型的工作后,2007年,我开始做企业信息化管理工作,作为中国航空技术进出口总公司(简称中航技)信息技术部的总经理,负责整个中航技集团的信息化建设。企业信息化是一个结合了业务、管理和信息技术的综合性工作,要做好很不容易。这时候,多年前的系统开发经验派上了用场。在讨论重大问题的时候,过去的开发经验总是能帮助我较为准确地理解技术上的症结和具体开发人员的实际处境,这时作出的决策往往易于执行并且有助于解决问题。现在来看,企业的CIO如果能够对软件和系统开发工作有较为深入的了解的话,于企业于个人,都应该是一件幸事。
《31天学会CRM项目开发》一书作者早期的工作是一名程序员,后来作为CIO负责企业的信息化建设。有了这样的经历,能写出这样的一本书,我想是水到渠成的。书中按照一个较为完整的CRM系统功能需求,用31天时间,一步一步地带着读者经历开发的过程。这样的安排会使读者在掌握业务系统功能需求的背景下学习程序开发,这无疑比单纯学习语言效果更好。我相信,阅读此书,无论是对程序人员学习软件编程,还是对企业信息化管理者了解程序开发过程,都是会有所收获的。
——北京殷塞信息技术有限公司总经理兼首席架构师 朱东
这本书把对技术人员职业生涯发展的思考,对以CRM为代表的企业管理信息系统的深入理解和技术实现很好地结合在了一起。
——ITValue发起理事 《商业价值》出版人 刘湘明
目前,我国各企业的信息化建设水平存在参差不齐、差距甚大的局面,这是企业与IT厂家都需要深刻反思的,当然这也是信息化工作者之痛,本书作者以自己多年制造业信息化从业经验为基础,不但为初学者揭开了企业信息化建设的神秘面纱,同时也为他们开启了一扇大门。企业信息化建设虽路途坎坷,但前途依然光明,路在脚下,站得高必然可以看得远!
——中集青岛冷藏产业基地信息中心主任 耿峰