【SQL开源代码栏目提醒】:网学会员--在 SQL开源代码编辑为广大网友搜集整理了:SQLServer版呼叫中心PDF - 综合课件绩等信息,祝愿广大网友取得需要的信息,参考学习。
北京传智播客教育www.itcast.cn项目开发前说明??这个项目尽力避免讲太多WinForm特有的东西DataSet、NPOI等要讲的知识都不是只有Winform中才会用到的。
即使是Winform特有的TreeView也是和ASP.net中的树状控件、自定义SiteMap等相通的。
呼叫中心概述??什么是呼叫中心。
??记录客户活动先于客户说话就知道客户的意图。
好记性不如计算机。
??个性化营销??流程化跟进??提高服务质量??为企业决策提供参考数据??回答策略站在客户角度把计算机方式和人工方式进行对比。
术语??计算机与电信集成技术CTI??呼叫中心Call Center??CRM客户关系管理国际著名公司SalesForge、peoplesoft??IVRInteractive Voice Response互动式语音应答。
语音菜单。
术语2??座席。
??交换机应用于具有成百上千的座席的大型的呼叫中心PK 语音卡200人以下。
东进语音卡??智能路由和排队ACD根据客户按键选择接转到不同的坐席VIP优先接听优先选择上次服务的坐席系统管理坐席端行业无关头戴式耳机一边听手操作。
客户公司介绍??整车销售车辆维修汽车装具汽车俱乐部服务包括咨询、投诉、汽车维报修、保养、救援、售前、售中、保险、售后、回访等所有与汽车相关的服务处理汽车销售订单、预定单维修、保养等几方面的问题。
??总部在济南IT机房也在济南。
有淄博2 Seats、青岛2 Seats两个分公司共10名坐席人员。
功能简介??角色系统管理员、班长坐席管理坐席、专家坐席解答专业性问题、普通坐席??系统可以根据来电客户的客户编码和密码或主叫号码等识别客户身份。
??咨询转销售、报修、投诉如果产生销售机会话务员将按照客户的需求填写订单转给销售部门并进行跟进。
??利用系统的标准问题及知识库FAQ或汽车服务信息查询模块方便及时地答复。
??经销商回访、客户回访、投诉回访、维修回访现有系统分析??一个ERP系统三地分别运行三个独立的ERP系统。
有部分的客户、销售数据。
每天淄博、青岛分公司将当天的数据以文本文件形式放到自己的FTP服务器上。
要求这些数据要及时同步到CallCenter中。
系统对接。
??有一些遗留的客户数据以Excel形式存在??现有一台闲置服务器windows2003MSSQLServer2005。
项目组简介??公司规模15人开发人员6人。
项目组规模一个项目经理一个语音卡及服务端开发一个坐席端开发Me一个报表系统开发。
??合同额35万包含硬件费用??项目周期2个月最后80天验收。
估算的项目周期150别盼着按时完成技术架构??服务端Windows2003、东进语音卡16路、.Net3.5、WCF协议对比Socket、.NetRemoting、WebService??数据库服务器Windows2003、MSSQLServer2005。
没有单独的数据库服务器用的是ERP系统的数据库。
??坐席端Windows XP、.Net3.5、WinForm为什么用WinForm、短信猫??报表系统ASP.Net为什么用Asp.Net领导、销售人员要看、MSChart。
??提醒我每半天一个版本自己保存历史版本。
开发登陆界面暂时不用数据库做登录。
Application.Run的窗口不能作为登录界面因为Application.Run 起来的窗口是主窗口主窗口适合长期显示主窗口一旦关闭程序就终止了。
论坛上常问的问题。
专业化的界面??启动时窗口位于屏幕中央StartPositionCenterScreen??设定AcceptButton当点击回车键要响应的按钮这样不用很土的点击按钮才能触发。
??设定CancelButton当点击ESC键时要响应的按钮。
??设定按钮的DialogResult当点击按钮的时候窗口关闭并且执行操作。
??设定窗口的DialogResult即可关闭窗口并且让ShowDialog方法返回设置的值。
??选择的图片是以资源的形式嵌套在程序中的resx删掉源文件没关系。
MD5算法??MD5算法是一种散列算法计算摘要指纹算法不是一种加密算法易错。
任何长度的任意内容都可以用MD5计算出散列值??MD5算法不可逆也就是只能得到内容对应的MD5值无法由MD5值反推内容??Password字段保存用户输入密码的MD5值这样系统管理员也不知道用户的密码是什么也就避免了用户的其他系统密码被利用的问题很多人不同的系统密码一样。
这就是为什么很多网站只有密码重置没有找回原密码功能了。
??判断密码正确性的方法计算用户输入的密码的MD5值与数据库存储的MD5值进行比较如果相等则认为密码正确。
??两个不同的内容生成相同的MD5值这就叫碰撞。
MD5算法的碰撞概率非常小。
??计算文件的MD5值来检验文件没有被篡改过。
http://hi.baidu.com/9422e/blog/item/b6a7cb870d91513466096e65.html??MD5算法理论上是不可逆的因此攻击的唯一办法就是碰撞。
找到一个内容虽然不同但是产生同样MD5的内容即可。
MD5算法2??不要露怯王小云不是破解了MD5算法只是发现缩短枚举碰撞时间的理论而已http://www.360doc.com/content/10/0324/13/16546_20057032.shtml??那些破解MD5网站是怎么回事它是收集了大量常用的字符串的MD5值保存“字符串—MD5‖的对应关系本质上仍然是穷举法。
只能用于应付一下常见的问题对于文件、长字符串是没作用的。
记住密码要用长一点的带特殊字符让黑客哭去吧??计算字符串的MD5
代码备注中。
计算文件的MD
代码自己找。
??MD5的其他应用简介第三方支付用MD5对金额、订单号等进行散列计算来保证数据是对方发出的。
如鹏网项目会讲。
??和MD5类似的还有SHA等算法。
??黑客基地讲师来讲网站安全。
??说明类的名字不要和命名空间的名字重复否则会有很多麻烦。
设计坐席表??坐席表的设计主键、用户名、姓名、密码??用数据库方式修改登录功能暂时手动加入数据。
迭代式开发不是所有功能都一上来就全部写好而是添砖加瓦??修改密码功能。
如果得到当前登录用户Id在Form1中声明一个Guid类型的全局变量CurrentSeatIdpublic static Guid CurrentSeatId 登陆的时候将rowSeat中的Id保存在CurrentSeatId中这样在任何一个类中就都可以访问Form1.CurrentSeatId来得到当前的坐席主键了。
坐席管理??图标资源的使用两种方式的区别。
直接导入本地导入每个窗口都有一份将图标在Resources.resx中导入然后按钮选择Image的时候选择下面的“项目资源文件即可。
”??保存cCSeatBindingSource.EndEdit adapter.UpdatedataSetUsers??数据新增初始化DataRowView row DataRowViewtVendorsBindingSource.AddNew SeatEndApp.Vendor.DataSetVendors.T_VendorsRow vendorRow SeatEndApp.Vendor.DataSetVendors.T_VendorsRowrow.Row??vendorRow.BeginEdit??vendorRow.Id Guid.NewGuid vendorRow.EndEdit??怎么知道要转换为什么类型的用调试功能运行时看属性的真正类型。
用调试器探索是脱离老师、变为牛人的一个法宝。
探索坐席管理高级操作??删除BindingSource.RemoveCurrent??密码重置DataRowView rowView DataRowViewbindingSource.Currentvar userRow SeatEndApp.Seat.DataSetUsers.T_UsersRowrowView.Row//怎么知道要Cast成什么类型。
两种方式。
??BindingSource作用维护当前状态。
控件绑定到BindingSourceBindingSource连接到DataSet。
两个控件都绑定到LevelBindingSource看一起动的效果明白BindingSource的作用怎么不一起动呢建两个BindingSource连接到同一个DataSet。
坐席管理2??DataGridView的个性化修改Caption、删除列、调整列顺序??增加一个姓名字段数据库中增加一列重新配置DataSet手工编写
SQL或者用查询生成器在DGV中增加一列??增加级别列实验步骤–设计级别表管理坐席、专家坐席、普通坐席。
Id、Name两个字段。
Id是int类型就可以对于有限几个值的表应int做主键就可以这样也可以在其他表里引用整个表中的数据也可以轻松的看出数据的值。
–在Seat表中增加LevelId字段需要把原有数据清除再增加字段。
重新配置Seat结果集。
–增加SeatLevel对应的结果集。
–在DataGridView中增加LevelId对应的列注意列类型选择DataGridViewComboBoxColumn。
设定列的DataSource为SeatLevel结果集选择DisplayMember为NamevalueMember为Id。
–一个界面上两套DS、Adapter。
??对照文档讲需求项目开发流程??公司里开发还是现场开发坐在客户机房里开发–公司里开发是做产品的–现场开发是做项目的–做产品的公司实施阶段也是需要现场二次开发、实施、配置的。
??与客户不断沟通、修改的过程。
迭代式开发。
??唯一不会变的就是变化范式??SeatLevelId??Student ??Id Name Age Major??1 张三20 计算机??课程表??StudentName 课程名上课时间??张三数据库5月1日??StudentId 课程名??1 数据库??第二范式任何表都要有主键。
??数据库设计第三范式一张表A中引用另外一张表B的数据的时候是通过在这个表A中建立一个指向表B主键的字段。
表设计北京传智播客教育www.itcast.cn逻辑主键与业务主键的区别。
没有特殊理由都用逻辑主键这位大哥哥你恐怕认错认了吧我不是唐伯虎我叫华安别以为改了名字不通知我我就记不得你了我记得是你的身份证号9527表设计2北京传智播客教育www.itcast.cn第三范式通俗版通过主键引用其他表中的内容这就遵守了第三范式。
优点保证数据的更新缺点慢。
001sdu1Tom007sdu2Lily05-30sdu111-22sdu205-3000111-22007上学期间改了学号那么就找不到自己的记录了。
老生离校、新生入学也许过两年新同学John分到了sdu1这个学号那么他就会在两年前就有记录了能够避免上面的问题缺点是速度慢如果要查05-30的学生的学号还需要先查主键然后再去学生表中查学号。
第三范式旧数据的问题北京传智播客教育www.itcast.cn0013721王靖雯0078848谢霆锋0013721王菲0078848谢霆锋有缘的话001冠希好兄弟007改名前出的歌此时到数据库中查询出来的结果《有缘的话》王靖雯2008年到数据库中查询出来的结果《有缘的话》王菲。
那时候就叫王菲啦解决方案数据版本化、数据作废功能。
案例分析北京传智播客教育www.itcast.cn业务上、技术上的原因决定了必须做违反第三范式的事情分析论坛帖子昵称的问题fj001风间yyxzz小新mxd大家好呀yyxzz我叫新之助风间大家好呀小新我叫新之助fj001风间yyxzz小白改名后提问这两种实现方式有什么优缺点改名以后帖子中各显示什么符合第三范式表中引用其他表的时候都是通过主键引用就是符合第三范式。
编码规则4北京传智播客教育www.itcast.cn待解决问题并发、断号、编码回收Oracle中的Sequence美化??教大家做FormSQL避免在VS里混乱的问题。
–读取连接字符串的方法添加对System.Configration的引用添加引用就是引用别人提供的类所在的dll然后ConfigurationManager.ConnectionStrings―constri‖.ConnectionString 读取–根据输入的是不是以Select开头来判断是ExecuteQuery还是ExecuteNonQuery。
–对于危险性
SQL语句比如不带where语句的Update、Delete要提示用户。
??MDI–form.MdiParent this–把主窗口的IsMDIContainer设为true –todo每个界面只能打开一个这个放到讲完了泛型、反射以后再讲。
放到Oracle版中讲。
用户控件??函数、类是
代码复用的一种方式用户控件是界面复用的一种方式把一些控件组织在一起成为一个整体这个整体可以重复使用。
–输出属性–案例带计算器找现成的源码http://download.chinaprj.cn/detail/qsrEEiB项目版本转换??TelTexBox??可绑定属性标记为Bindable就可以进行数据绑定。
Bindabletrue//放到属性上属性就可以绑定了??public string TelNum客户资料管理??姓名Name、固定电话TelPhone带播出按钮、手机MobilePhone带播出按钮、邮编PostCode、Email、通讯地址Address、门店2位由总部顺序分配编号、购买日期BuyDate、车号CarNum、车架号BracketNum、品牌Brand、型号TypeNum、意见建议Suggestion、备注Remarks。
字段哪怕用拼音也别用拼音缩写你猜TXDZ是什么字段也不要用中文字段名。
表名T_Customers。
易错电话号码用什么字段类型这是业务人员提出来的人家不会说Id。
??编辑界面、列表界面分离。
一般情况下列表页面只能看不能改否则麻烦会很多。
??选择多个控件用设计器的功能进行批量的对齐不要像狗啃的。
以选中的第一个控件为排头。
??把客户资料管理完善意见建议、备注用多行TextBox。
双击表格跳转到详细列表TabPage。
??做企业信息系统的一个要求全键盘操作。
也就是不用鼠标就可以进行所有的操作。
有的财务系统完全用小键盘就可以完成。
??从左向右从上向下。
设置Tab键顺序全键盘操作视图→Tab键顺序鼠标按要设定的跳转顺序点设置完毕再点视图→Tab键顺序就可以了。
好神奇呀不神奇没有魔法TabIndex属性手改也可以。
??回车键焦点跳转。
锻炼解决问题的能力教大家上网搜。
关键字“WinForm 回车Tab‖补充1、解决mdf文件重新生成就覆盖的问题让程序去连接项目中的mdf文件而不是连接bin/Debug下那个。
修改方法在Program.cs文件Main函数最开始加入也就是修改DataDirectory宏的值string dataDir AppDomain.CurrentDomain.BaseDirectoryif dataDir.EndsWithquotbinDebugquot dataDir.EndsWithquotbinReleasequotdataDir System.IO.Directory.GetParentdataDir.Parent.Parent.FullNameAppDomain.CurrentDomain.SetDataquotDataDirectoryquot dataDir详细介绍http://www.rupeng.com/forum/thread-11988-1-1.html暂时不用理解原理生产环境如何切换到服务器方式运行将mdf文件Attach到SQLServer然后改连接字符串即可。
2、有同学发现编辑数据的时候只有移动焦点到其他行才能保存到数据库中这是我当时没有讲清请在调用Adapter.Update保存前调用bingdingsource的EndEdit方法来强制把当前页面中的值刷新到DataSet中这样就不会有这个问题了。
private void btnSave_Clickobject sender EventArgs e????tUsersBindingSource.EndEdit//请把界面中的修改立即同步到DataSet中??t_UsersTableAdapter.Updatethis.dataSetUsers.T_Users????在对和界面绑定的DataSet进行修改的时候需要BeginEdit、EndEdit3、刚才讲课的时候一个失误忘了讲门店的combobox控件要将SelectValue属性绑定到BranchId字段了只有这样绑定才能将门店的数据显示到界面中。
程序处理Excel的技术??OLE Automation能够使用Excel的所有功能要求装Excel微软最推荐这种用法因为可以促进Excel的销量。
会启动Excel进程不适合于服务器。
参考资料http://www.cnblogs.com/denylau/archive/2010/04/30/1725172.htmlhttp://www.cnblogs.com/xuanhun/archive/2010/04/29/1724500.html??把Excel当成数据库使用Microsoft.Jet.OleDb访问访问Excel 参考资料http://tieba.baidu.com/fkz331569890只适合于完全二维结构功能最弱很少用。
?? OpenXML微软提供的读写Excel的技术优点和NPOI差不多不过只能处理xlsx格式文件。
docx、pptx??NPOI、MyXls等能够进行常用Excel操作不依赖于Excel节省资源没有安全性、性能的问题在ASP.net中用最合适。
只能处理xls格式文件、不能处理xlsx这样的新版本Excel文件格式。
Excel基础??整个Excel表格叫工作表Workbook工作表包含的叫页Sheet行Row单元格Cell。
??Excel中的电话号码问题看起来像数字的字符串以半角单引号开头就没问题了。
??使用区域UsedRange用Excel表的时候不一定是从最左上角的单元格开始用为了减小文件尺寸有使用区域的概念Excel只存储使用区域。
NPOI组件的引入??我们平时调用的类是已经添加到引用的如果想调用系统内置的没有添加引用的其他dll严格的说是在GAC中的Assembly就要添加引用在【.Net】选项卡中选择对于另外一些第三方dll严格说是Assembly则需要点击【浏览】选项卡选择对应的dll文件。
??将NPOI包解压到硬盘中然后在项目中添加引用浏览将解压目录下的dll全部添加进来??POI是Apache的一个Java
开源项目NPOI是POI在.net下的移植版本很多.Net的移植版本
开源项目都是在原来的Java版本名称前加上N比如NHibernate、NDoc、NUnit、NAntNPOI起步1、读取暂时不用管FileStream具体含义“IO流”会讲using FileStream stream new FileStreamquotD:我的文档livemesh如鹏备课dotnet班级信息2010年4月20日机工班课件5-5客户资料.xlsquot FileMode.Open FileAccess.ReadHSSFWorkbook workbook new HSSFWorkbookstreamMessageBox.Showworkbook.GetSheetName02、遇到错误别慌仔细看错误信息。
可能遇到的问题文件被其他进程占用。
读取Excel??读取字符串类型数据MessageBox.Showsheet.GetRow3.GetCell4.StringCellValue 读取数字类型数据NumericCellValue。
??判断单元格数据类型读取GetCell4.CellType与HSSFCell类中定义的常量比较即可。
??判断使用区域结束行号LastRowNum写入ExcelHSSFWorkbook workbook new HSSFWorkbookHSSFSheet sheet workbook.CreateSheetHSSFRow row sheet.CreateRow0row.CreateCell0 HSSFCell.CELL_TYPE_STRING.SetCellValuequotHelloquotrow.CreateCell1 HSSFCell.CELL_TYPE_NUMERIC.SetCellValue3.14using FileStream stream new FileStreamquotc:1.xlsquot FileMode.OpenOrCreate FileAccess.ReadWriteworkbook.Writestream自己研究的东西格式化单元格文字插入图片客户资料导出??将客户资料导出到Excel文件格式顾客姓名、住宅电话、手机、详细通讯地址、邮政编码、车号、车架号、购买日期、分店编号。
??实验步骤–弹出文件保存对话框用户提供要保存文件的文件名–创建表头–通过tableAdapter.GetData读取所有数据遍历所有数据依次CreateRow添加到WorkSheet中–将文件保存到用户提供的文件名中–提示用户导出完毕。
–调用Process.StartExcel文件全路径自动打开文件。
客户资料导入??根据车号或车架号匹配客户资料如果数据已经存在则不作导入。
测试文件。
??实验步骤–tableAdapter中增加一个根据车号查询客户资料的方法GetDataByCarNum–tableAdapter中增加一个根据车架号查询客户资料的方法GetDataByFrameNum。
–弹出对话框要求用户选择要导入的Excel文件–遍历用户选择的Excel文件根据行中的车号、车架号匹配数据库中已有的客户资料如果车号或者车架号能够匹配上则不导入这条记录。
–提示用户导入完毕并且报告导入多少条如果存在跳过的行则还要报告跳过多少条。
优化TableAdapter插入速度1、测试常规插入模式插入5000条数据的速度用Stopwatch计时。
2、优化using adapter.Connectionadapter.Connection.Openfor int i 0 i lt 5000 iadapter.InsertConvert.ToStringi3、内部探究研究Insert方法。
强类型DataSet生成的tableAdapter的方法内部在执行前先判断连接是否打开如果没有打开则先打开执行完毕如果连接是方法内部打开的则关闭连接。
也就是默认状态是每次执行方法都会先打开连接再关闭连接。
4、数据库连接的打开关闭是非常消耗系统资源的现在是本地测试不是很明显远程连接就会发现性能差很多。
根据这个特点我们只要在批量操作前先手动打开连接这样就能保证操作都在一个连接中完成了。
5、避免连接的频繁Open/Close是一个常见的调优手段。
6、练习优化客户数据导入。
数据库事务概念难题设置字段最大长度为5执行adapter.Insertquot1quot adapter.Insertquot23333333333333333quotadapter.Insertquot3quot数据部分的成功插入。
从A帐户扣除100元然后向B帐户增加100元如果向B帐户增加100元时出错就会出现错账。
需要“一系列数据库操作要么全部成功要么全部失败”的机制这种机制就是事务。
参考资料《程序员的
SQL金典》10.3 事务概念??事务的三个操作开始事务Begin、提交事务Commit、回滚事务RollBack。
事务只有Commit以后才真正落实到数据库的改变中事务RollBack会导致之前的事务中的操作全部失败作废。
??事务没有提交之前在当前事务的连接中是可以看到数据库的改变的并且也只有在当前连接中才能看到改变。
默认情况下。
??如果事务长期既没有Commit也没有RollBack则会形.
上一篇:
idea快捷键
下一篇:
大学生汉语写作水平与英语水平相关性研究