欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    客户资源管理系统SQL Server数据库课程设计21页word文档.doc

    • 资源ID:34028003       资源大小:277.50KB        全文页数:21页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    客户资源管理系统SQL Server数据库课程设计21页word文档.doc

    如有侵权,请联系网站删除,仅供学习与交流客户资源管理系统SQL Server数据库课程设计【精品文档】第 21 页学院:数学与计算科学学院姓名:叶俊耀学号:1007010103专业:10信息技术一班指导老师:文一凭目录一、设计目的2二、系统设计2三、功能模块划分2四、系统流程分析3五、数据库设计3六、连接数据库6七、系统演示7八、相关代码展示12九、感想与总结72一、 设计目的随着新技术的广泛应用,全世界范围内的各个企业都在经历一场深刻的改革,尤其是在企业怎样与客户潜在客户进行互动交流这一点上体现的特别明显。从管理的角度来说,企业关注的焦点有改进内部运作转移到更多地关注客户上来。目前的CRM(客户关系管理)软件通过建立一个系统,是企业在客户服务,市场竞争,销售及支持方面彼此协调的全新关系实体,为企业带来长久地竞争优势,从而提高了生产率。本系统适合中小企业的客户资源管理,提供对客户的有效管理。二、 系统设计系统设计分以下几个方面:1) 进入系统前要身份验证,用户名,密码,输入正确后方可进入,2) 用户可以根据需要定义客户类型信息。3) 对客户类型信息进行修改和删除。4) 对用户的详细信息进行修改和删除。5) 用户可以定义客户的详细信息。6) 在系统对客户进行查询和编译。三、 功能模块划分客户资源管理系统身份验证客户信息管理类型管理查询管理增加新类型按姓名查询增加新客户详细信息查询修改新客户修改类型信息删除新客户删除类型信息客户资源管理系统功能模块示意图l 身份验证:提供了系统的访问控制功能。l 类型管理:即系统的配置信息管理,还包括的功能是添加,修改,删除客户类型信息,客户类型信息包括客户的地区,职位,行业等。l 客服信息管理:提供功能未添加,修改和删除客户基本信息。客户基本信息包括姓名,年龄,行业,职位,联系方式,爱好等信息。l 查询管理:包括按姓名查询,详细信息查询。这种查询接口可以方便利用SQL Server 数据库强大功能为客户提供服务。四、 系统流程分析前面分析中已经定义了系统各个功能模块,下面是系统运行的流程分析图: 登陆界面用户验证客户信息管理类型管理查询管理退出系统登陆成功登陆失败系统流程图五、 数据库设计创建数据库crm.l 数据库需求设计:系统的需求具体体现在福各种信息的保存,修改,和查询等方面,因此,一个满足系统要求的数据库必须总分照顾到对各种信息的输入输出,以免遗漏导致开发时返工。通过对系统的功能分析,客户资源管理需要包含以下数据信息。1. 地方信息:包括地方ID,地方名称。2. 结识途径:包括结识途径ID,结识途径名称。3. 职业信息:包括职业ID,职业名称。4. 行业信息:包括行业ID,行业名称。5. 客户信息:包括客户ID,姓名,所在地区,职业,行业,所在单位,结识途径,E-mail,地址,固定电话,移动电话,爱好,备注信息。l 数据库逻辑结构设计:通过需求分析创建了5个表,表之间的关系如下E-R图所示客户资源管理系统E-R图Approach表(结识途径)Profession表(职业)Area表(地区)Customer表(客户表)Vocation表(行业)为了提高数据库的存储效率和系统的功率,对customer_info_tab 创建存储过程add_customer_info_tab代码如下:USE crmgocreate procedure add_customer_info_tab param1 int,param2 varchar(24),param3 varchar(24),param4 varchar(24),param5 varchar(24),param6 varchar(24),param7 varchar(24),param8 varchar(24),param9 varchar(24),param10 varchar(24),param11 varchar(60),param12 varchar(1000)ASDELETE FROM customer_info_tab WHERE id='param1'INSERT INTO customer_info_tab (id,name,area,profession,vocation,company,approach,email,phone,mobile,interest,memo)VALUES('param1','param2','param3','param4','param5','param6','param7','param8','param9','param10','param11','param12');六、 连接数据库数据库用ODBC方式连接数据库crm,对数据库crm设置用户名为:CUSTOMERS,密码:123456.连接字段要三个参数:数据源名称,数据库用户名,数据库用户密码。系统登录窗口如下所示:登陆窗口输入crm数据源名称,用户名:CUSTOMERS,密码:123456,可以连接数据库。ODBC连接方式数据库在数据源名称点击crm会出现如下窗口:点击确定就可以连接到数据库了.七、 系统演示在登陆窗口上输入后连接完数据库后会出现一个住对话窗口,这个窗口如下所示:系统主对话窗口对于地区信息管理的模块,如在界面的“地区名称”文本框中输入“大同”,单击“添加”按钮,就可以在地区信息列表控件中看到新添加的“大同”如图所示:添加地区信息 对于地区信息管理的“修改”功能,如要修改下拉列表框中的“海口”为“三亚”就点击“海口”,在地区名称中修改海口为三亚,就完成对海口的修改,如图所示:选择修改信息信息修改完成对于地区信息管理的“删除”功能,如要删除列表框中的“湘潭”,只要点击“湘潭”之后,再点击“删除”,就会删除掉“湘潭”,如图所示:点击删除信息点击删除后:信息已删除。其他列表框中的添加,删除,修改的功能都是如此操作的。就不介绍了。对于客户信息管理模块,如在界面上的“姓名”文本框中输入“王力”在“所在地区”下拉列表框选择“武汉”,在“职业”下拉列表框中选择“教授”,在“行业”下拉列表框中选择“科研”,在“所在单位”文本框中输入“湖南科技大学”,在“结识途径“下拉列表框中选择“订单”,在email文本框中输入wangli在“固定电话”文本框中输入“027809895320”,在“移动电话”输入“15197211305”,在“爱好”文本框中输入钓鱼,在说明文本框输入“化学领域知名教授”。如图所示:输入信息页面单击添加按钮,客户信息就显示在列表控件上了,如图所示:如果要删除客户信息,点击你要删除的客户所在列,我们要删除12号客户,点击客户所在列,再单击删除,如图所示:点击删除后客户删除页面12号客户已经被删除。对于“详细查询”模块的使用,如在“所在地区”下拉菜单选择“贵阳”之后,会在列表控件中,列出所有在“贵阳”的用户消息,如图所示:选择地区方式查询页面八、 相关代码展示使用SQL Server2000创建的数据库,数据库的代码如下所示:1. 创建表的脚本如下:CREATE TABLE approach_info_tab (approach_id int NOT NULL ,approach_name varchar (24) COLLATE Chinese_PRC_CI_AS NOT NULL , PRIMARY KEY CLUSTERED approach_id) ON PRIMARY , UNIQUE NONCLUSTERED approach_name) ON PRIMARY ) ON PRIMARYGOCREATE TABLE area_info_tab (area_id int NOT NULL ,area_name varchar (24) COLLATE Chinese_PRC_CI_AS NOT NULL , PRIMARY KEY CLUSTERED area_id) ON PRIMARY , UNIQUE NONCLUSTERED area_name) ON PRIMARY ) ON PRIMARYGOCREATE TABLE customer_info_tab (id int IDENTITY (1, 1) NOT NULL ,name varchar (24) COLLATE Chinese_PRC_CI_AS NOT NULL ,area varchar (24) COLLATE Chinese_PRC_CI_AS NULL ,profession varchar (24) COLLATE Chinese_PRC_CI_AS NULL ,vocation varchar (24) COLLATE Chinese_PRC_CI_AS NULL ,company varchar (24) COLLATE Chinese_PRC_CI_AS NULL ,approach varchar (24) COLLATE Chinese_PRC_CI_AS NULL ,email varchar (24) COLLATE Chinese_PRC_CI_AS NULL ,phone varchar (24) COLLATE Chinese_PRC_CI_AS NULL ,mobile varchar (24) COLLATE Chinese_PRC_CI_AS NULL ,interest varchar (100) COLLATE Chinese_PRC_CI_AS NULL ,memo varchar (1000) COLLATE Chinese_PRC_CI_AS NULL , PRIMARY KEY CLUSTERED id) ON PRIMARY , UNIQUE NONCLUSTERED name) ON PRIMARY ,CONSTRAINT FK_customer_info_tab_area_info_tab FOREIGN KEY area) REFERENCES area_info_tab (area_nameCONSTRAINT FK_customer_info_tab_profession_info_tab FOREIGN KEY profession) REFERENCES profession_info_tab (profession_nameCONSTRAINT FK_customer_info_tab_vocation_info_tab FOREIGN KEY vocation) REFERENCES vocation_info_tab (vocation_name) ON PRIMARYGOCREATE TABLE profession_info_tab (profession_id int NOT NULL ,profession_name varchar (24) COLLATE Chinese_PRC_CI_AS NOT NULL , PRIMARY KEY CLUSTERED profession_id) ON PRIMARY , UNIQUE NONCLUSTERED profession_name) ON PRIMARY ) ON PRIMARYGOCREATE TABLE vocation_info_tab (vocation_id int NOT NULL ,vocation_name varchar (24) COLLATE Chinese_PRC_CI_AS NOT NULL , PRIMARY KEY CLUSTERED vocation_id) ON PRIMARY , UNIQUE NONCLUSTERED vocation_name) ON PRIMARY ) ON PRIMARYGO2. 登陆数据库的代码:用vc+6.0MFC的window编程,创建登陆窗口,同时添加命令响应,以下是登陆对话框的命令响应函数,连接数据库crm.void CLoginDlg1:OnOK() / TODO: Add extra validation hereUpdateData(true); CDatabase m_db; CString strConnect; strConnect.Format("DSN=%s;UID=%s;PWD=%s",m_bDSN,m_bUsername,m_bPassword); TRY m_db.OpenEx(strConnect); CATCH(CDBException,ex) AfxMessageBox(ex->m_strError);AfxMessageBox(ex->m_strStateNativeOrigin); AND_CATCH(CMemoryException,pEx)pEx->ReportError();AfxMessageBox("MEMORY EXCEPTION");AND_CATCH(CException,e)TCHAR szError100;e->GetErrorMessage(szError,100);AfxMessageBox(szError);END_CATCHCDialog:OnOK();3. 信息列表控件的控制函数:void CCRDBS1007010103Dlg:InitControl()DWORD dwExStyle=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_UNDERLINEHOT;m_listArea.SetExtendedStyle(dwExStyle);m_listApproach.SetExtendedStyle(dwExStyle);m_listProfession.SetExtendedStyle(dwExStyle);m_listVocation.SetExtendedStyle(dwExStyle);m_listCR.SetExtendedStyle(dwExStyle);m_listArea.InsertColumn(0,"地区ID",LVCFMT_CENTER,50);m_listArea.InsertColumn(1,"地区名称",LVCFMT_CENTER,90);m_listApproach.InsertColumn(0,"结识途径",LVCFMT_CENTER,50);m_listApproach.InsertColumn(1,"结识途径名称",LVCFMT_CENTER,90);m_listProfession.InsertColumn(0,"职位ID",LVCFMT_CENTER,50);m_listProfession.InsertColumn(1,"职位名称",LVCFMT_CENTER,90);m_listVocation.InsertColumn(0,"行业ID",LVCFMT_CENTER,50);m_listVocation.InsertColumn(1,"行业名称",LVCFMT_CENTER,90);m_listCR.InsertColumn(0,"客户ID",LVCFMT_CENTER,60);m_listCR.InsertColumn(1,"客户名称",LVCFMT_CENTER,80);m_listCR.InsertColumn(2,"所在地区",LVCFMT_CENTER,80);m_listCR.InsertColumn(3,"职业",LVCFMT_CENTER,80);m_listCR.InsertColumn(4,"行业",LVCFMT_CENTER,80);m_listCR.InsertColumn(5,"所在单位",LVCFMT_CENTER,80);m_listCR.InsertColumn(6,"结识途径",LVCFMT_CENTER,80);m_listCR.InsertColumn(7,"e-mail",LVCFMT_CENTER,80);m_listCR.InsertColumn(8,"固定电话",LVCFMT_CENTER,80);m_listCR.InsertColumn(9,"移动电话",LVCFMT_CENTER,80);m_listCR.InsertColumn(10,"爱好",LVCFMT_CENTER,80);m_listCR.InsertColumn(11,"说明",LVCFMT_CENTER,140);4. 向四个系统信息列表控件插入数据的控制函数:void CCRDBS1007010103Dlg:InitCtrlData()if(m_db.IsOpen()MessageBox("数据库未打开");return ;TRYCRecordset rs(&m_db);rs.Open(CRecordset:dynaset,"select *from area_info_tab order by area_id");while(!rs.IsEOF()int id;CString area;CDBVariant var;rs.GetFieldValue(short)0,var,SQL_C_SLONG);if(var.m_dwType!=DBVT_NULL)id=var.m_iVal;var.Clear();rs.GetFieldValue(1,area);InsertConfigItem(&m_listArea,id,area);rs.MoveNext(); rs.Close();rs.Open(CRecordset:dynaset,"select *from approach_info_tab order by approach_id");while(!rs.IsEOF()int id;CString approach;CDBVariant var;rs.GetFieldValue(short)0,var,SQL_C_SLONG);if(var.m_dwType!=DBVT_NULL)id=var.m_iVal;var.Clear();rs.GetFieldValue(1,approach);InsertConfigItem(&m_listApproach,id,approach);rs.MoveNext();rs.Close();rs.Open(CRecordset:dynaset,"select *from profession_info_tab order by profession_id");while(!rs.IsEOF()int id;CString profession;CDBVariant var;rs.GetFieldValue(short)0,var,SQL_C_SLONG);if(var.m_dwType!=DBVT_NULL)id=var.m_iVal;var.Clear();rs.GetFieldValue(1,profession);InsertConfigItem(&m_listProfession,id,profession);rs.MoveNext();rs.Close();rs.Open(CRecordset:dynaset,"select *from vocation_info_tab order by vocation_id");while(!rs.IsEOF()int id;CString vocation;CDBVariant var;rs.GetFieldValue(short)0,var,SQL_C_SLONG);if(var.m_dwType!=DBVT_NULL)id=var.m_iVal;var.Clear();rs.GetFieldValue(1,vocation);InsertConfigItem(&m_listVocation,id,vocation);rs.MoveNext();rs.Close();rs.Open(CRecordset:dynaset,"select *from customer_info_tab order by id");while(!rs.IsEOF()int id;CString name,area,profession,vocation,company;CString approach,email,phone,mobile,interest,memo;CDBVariant var;rs.GetFieldValue(short)0,var,SQL_C_SLONG);if(var.m_dwType!=DBVT_NULL)id=var.m_iVal;var.Clear();rs.GetFieldValue(1,name);rs.GetFieldValue(2,area);rs.GetFieldValue(3,profession);rs.GetFieldValue(4,vocation);rs.GetFieldValue(5,company);rs.GetFieldValue(6,email);rs.GetFieldValue(7,approach);rs.GetFieldValue(8,phone);rs.GetFieldValue(9,mobile);rs.GetFieldValue(10,interest);rs.GetFieldValue(11,memo);InsertCRInfoItem(id,name,area,profession,vocation,company,approach,phone,email,mobile,interest,memo);rs.MoveNext();rs.Close();RefreshAreaComboData();RefreshApprComboData();RefreshProfComboData();RefreshVocComboData();CATCH(CDBException,ex) AfxMessageBox(ex->m_strError);AfxMessageBox(ex->m_strStateNativeOrigin); AND_CATCH(CMemoryException,pEx)pEx->ReportError();AfxMessageBox("MEMORY EXCEPTION");AND_CATCH(CException,e)TCHAR szError100;e->GetErrorMessage(szError,100);AfxMessageBox(szError);END_CATCH5. 刷新列表信息控件的控制函数:void CCRDBS1007010103Dlg:RefreshApprComboData() m_comboApproach.ResetContent();TRYCRecordset rs(&m_db);rs.Open(CRecordset:dynaset,"select *from approach_info_tab");while(!rs.IsEOF()CString strName;rs.GetFieldValue(1,strName);m_comboApproach.AddString(strName);rs.MoveNext(); m_comboApproach.SetCurSel(0);CATCH(CDBException,ex) AfxMessageBox(ex->m_strError);AfxMessageBox(ex->m_strStateNativeOrigin); AND_CATCH(CMemoryException,pEx)pEx->ReportError();AfxMessageBox("MEMORY EXCEPTION");AND_CATCH(CException,e)TCHAR szError100;e->GetErrorMessage(szError,100);AfxMessageBox(szError);END_CATCHvoid CCRDBS1007010103Dlg:RefreshProfComboData()m_comboProfession.ResetContent();TRYCRecordset rs(&m_db);rs.Open(CRecordset:dynaset,"select *from profession_info_tab");while(!rs.IsEOF()CString strName;rs.GetFieldValue(1,strName);m_comboProfession.AddString(strName);rs.MoveNext();m_comboProfession.SetCurSel(0);CATCH(CDBException,ex) AfxMessageBox(ex->m_strError);AfxMessageBox(ex->m_strStateNativeOrigin); AND_CATCH(CMemoryException,pEx)pEx->ReportError();AfxMessageBox("MEMORY EXCEPTION");AND_CATCH(CException,e)TCHAR szError100;e->GetErrorMessage(szError,100);AfxMessageBox(szError);END_CATCHvoid CCRDBS1007010103Dlg:RefreshVocComboData()m_comboVocation.ResetContent();TRYCRecordset rs(&m_db);rs.Open(CRecordset:dynaset,"select *from vocation_info_tab");while(!rs.IsEOF()CString strName;rs.GetFieldValue(1,strName);m_comboVocation.AddString(strName);rs.MoveNext();m_comboVocation.SetCurSel(0);CATCH(CDBException,ex) AfxMessageBox(ex->m_strError);AfxMessageBox(ex->m_strStateNativeOrigin); AND_CATCH(CMemoryException,pEx)pEx->ReportError();AfxMessageBox("MEMORY EXCEPTION");AND_CATCH(CException,e)TCHAR szError100;e->GetErrorMessage(szError,100);AfxMessageBox(szError);END_CATCH6. 添加地区信息函数:void CCRDBS1007010103Dlg:OnBtnAreaAdd() / TODO: Add your control notification handler code hereif(!UpdateData()return ;if(m_strConfigArea.IsEmpty()AfxMessageBox("请填写你的地区名称");return;TRYCRecordset rs(&m_db);CString sql;rs.Open(CRecordset:dynaset,"Select max(area_id)from area_info_tab ");int newID=1;if(!rs.IsEOF()CDBVariant var;rs.GetFieldValue(short)0,var,SQL_C_SLONG);if(var.m_dwType!=DBVT_NULL)newID=var.m_iVal+1;sql.Format("Insert into area_info_tab(area_id," "area_name )""VALUES(" "%d,'%s')",newID,m_strConfigArea);TRACE(sql);m_db.ExecuteSQL(sql);InsertConfigItem(&m_listArea,newID,m_strConfigArea);RefreshAreaComboData();CATCH(CDBException,ex) AfxMessageBox(ex->m_strError);AfxMessageBox(ex->m_strStateNativeOrigin); AND_CATCH(CMemoryException,pEx)pEx->ReportError();AfxMessageBox("MEMORY EXCEPTION");AND_CATCH(CException,e)TCHAR szError100;e->GetErrorMessage(szError,100);AfxMessageBox(szError);END_CATCH7. 修改地区信息函数:void CCRDBS1007010103Dlg:OnBtnAreaMod() / TODO: Add your control notification handler code hereif(!UpdateData()return ;if(m_strConfigArea.IsEmpty()AfxMessageBox("请填写你要修改的地区");return;int nItem=m_listArea.GetNextItem(-1,LVNI_SELECTED);if(nItem=-1)AfxMessageBox("没有选择要修改的地区信息");return;int id=atoi(m_listArea.GetItemText(nItem,0);TRYCRecordset rs(&m_db);CString sql;sql.Format("update area_info_tab ""set area_name='%s' ""where area_id=%d",m_strConfigArea,id);TRACE(sql);m_db.ExecuteSQL(sql);m_listArea.SetItemText(nItem,1,m_strConfigArea); RefreshAreaComboData();CATCH(CDBException,ex) AfxMessageBox(ex->m_strError);AfxMessageBox(ex->m_strStateNativeOrigin); AND_CATCH(CMemoryException,pEx)

    注意事项

    本文(客户资源管理系统SQL Server数据库课程设计21页word文档.doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开