ASP.NET 客户关系管理系统的设计与实现(论文+源码)_Nueve

摘要

【摘要】

随着市场体系的日益完善,我们已经进入了一个买方市场时代。选择空间扩大、购买渠道拓宽、消费心态和购买行为越发成熟,使客户再不会对某一企业或者产品盲目地保持绝对忠诚,如何不断改善客户关系,掌据更多的客户信息,提高客户满意度;如何在日益激烈的市场竞争中把握机会,占有更大的市场份额;如何建立高效业务流程,降低运营成本,获取更多的利润,这些已成为每个企业怕面临的首要问题。这种情况下,企业要在激烈的市场竞争中立于不败之地,就必须找一种全新的管理理念和管理手段,对其内部和外部资源进行有效的整合。新一代一ERP产品正在向客户端和供应端延伸,客户端的延伸是客户关系管理,而供应端的延伸则是跨企业供应链的同步管理。对于每个企业来说客户管理的完善程度将直接影响企业的经济效益。

【关键词】 客户关系管理系统、库存管理、报表管理

目录

摘要

0  引言

1  系统分析

1.1  需求分析

1.2  可行性分析

2  总体设计

2.1  项目规划

2.2  系统功能结构图

3  系统设计

3.1  设计目标

3.2  开发及运行环境

3.3  数据库设计

4  客户管理模块设计

4.1  客户信息管理设计

4.2  联系人信息管理设计

4.3  合同信息管理

5  服务管理

5.1  反馈信息添加

5.2  反馈信息修改

6  报表管理

6.1  客户报表模块

6.2  联系人报表模块

附录A  参考文献

附录B  数据表

引言

信息时代的今天,各企业商家所关心的不再局限于自身的产品质量、生产设备、员工的素质,更多的是关心自己的销售群体(客户群),关心他们的想法、需求、购卖目的。

众所周知,顾客就是我们的上帝,我们只有满足了上帝的需求,上帝才能给我们带来一切。一个企业要生存、要发展,就是要不断的满足客户的需求,无论我们做出什么样的决策,最终都是为了这个的目。每个领域都有自身生存法则,但无论这个法则如何变化,为客户服务的宗旨是不会变的。作为企业,我们只有不断地挖掘新客户,维护好和老客户的关系,占领市场客户群体的绝大多数份额,才能在整个领域取得一席之地。海尔总裁张瑞敏指出:“客户资源决定企业核心竞争力”,上个世纪80年代是物品短缺的时代,而现在,信息时代是客户短缺的时代。企业发展所需的各种资源(包括人力、物力、生产力)都是可以创造的,但每个领域中的客户资源确是有限的,所以通过创新(产品的创新、企业管理的创新、服务的创新)来抢占有限的客户资源、维护好企业和客户之间的关系、了解客户的需求动向,成为企业生存发展面临的重大问题。

1  系统分析

1.1  需求分析

通过调查研究,要求系统满足有以下功能;

q由于操作人员的计算机知识普遍较差,要求有良好的人机界面。

q方便的数据选择查询,支持模糊查询功能。

q管理客户的详细信息:包括客户的基本信息、联系人信息、和客户签写的合同信息。

q记录产品出库、入库的详细信息。

q为更多的了解客户的需求,设计了服务模块,用以记录客户的反馈信息,并对反馈信息进行管理。

q和客户联系人之间通过邮件(e-mail)进行联系,对联系人邮件地址进行管理。

q提供信息数据导出Excel报表的功能,提供报表的打印功能。

q对用户信息进行管理,并为用户设置管理权限。

q数据计算自动完成,尽量减少人工干预。

q修改当前管理员密码的功能。

q系统退出。

1.2  可行性分析

q经济性

通过计算机网络对客户信息进行管理,使企业对自身拥有的客户有了一个更为深该的了解。不仅能全面的统计客户的购买数量,及时的了解客户的动态信息,还可以根据计算机记录的数据信息,不断的调整企业的生产发展动向。

q技术性

系统中设置了email管理模块,此模块大大的方便了企业和客户联系人之间的沟通。设置导入Excel功能、Web打印功能,方便用户报表打印。

2  总体设计

2.1  项目规划

客户关系管理系统是一个典型的数据库开发应用程序,由客户管理模块、库存管理模块、服务管理模块、报表管理模块、email管理模块、用户管理模块组成,规划系统功能模块如下:

q客户管理模块

该模块主要功能是对客户信息、客户联系人信息、合同信息进行添加、删除、查询等操作。

q库存管理模块

该模块的主要功能是管理入库、出库信息、产品信息进行管理,其中包括对库存信息、产品信息进行添加、删除、查询等操作。

q服务管理模块

该模块主要功能是对客户反馈信息进行添加、删除、查询等操作。

q报表管理模块

该模块主要通过查询条件,对各种信息进行查询,并将得到的结果导出Excul表、进行打印报表等操作(其中信息包括:客户信息、联系人信息、反馈客户信息、库存信息)。

qemail管理模块

该模块主要管理客户联系人email地址信息,对企业客户之间的email文件进行管理,向客户发送邮件。

q用户管理

该模块主要管理用户信息的添加、删除等操作,并设置用户的使用权限。

2.2  系统功能结构图

图1  数据表树型结构图

3  系统设计

3.1  设计目标

本系统是针对中小型企业通过网络实现对客户的管理而设计的,主要实现如下目标:

q对客户信息(客户基本信息、联系人信息、合同信息)进行全面管理。

q及时查看库存信息,并通过网站对入库、出库信息进行管理。

q强大的客户信息、联系人信息报表导出、打印功能

q及时了解客户的反馈信息,并对其进行管理。

q实现各种信息的选择查询、模糊查询功能等。

q实现了和客户通过网络在线沟通的功能,并对客户联系人的email地址进行管理。

q管理员可以添加操作员信息、设置操作员的权限。

q对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。

q要求系统的数据保密性强,通过为每个用户设置使用权限来实现。

q系统运行稳定、安全可靠。

q键盘操作,快速响应。

3.2  开发及运行环境

硬件平台:

qCPU:P41。8GHz;

q内存:256MB以上。

软件平台:

q操作系统:Windows xp/ Windows 2000/ Windows 2003;

q数据库:SQL Server 2000;

q浏览器:IE5.0,推荐使用IE6.0;

qWeb服务器:IIS5.0;

q分辨率:最佳效果1024*768。

3.3  数据库设计

本系统数据库采用SQLServer2000数据库,系统数据库名称为db_System。数据库db_ System中包含8张表。关于数据库中的数据表请参见附录B。

4  客户管理模块设计

客户管理模块的主要功能是对客户信息进行管理,主要包括客户信息管理、联系人信息管理和合同信息管理3个部分。

4.1  客户信息管理设计

客户信息管理设计主要包括对客户信息进行显示/查询、添加、修改和删除4个部分的功能。用户可以通过功能导航进入客户信息管理页面,页面设计效果如图3所示。

图3  客户信息管理页面的设计效果

在客户信息管理页面中,用户可以在查询区域输入查询条件,并选择查询方式,查找相关的客户信息;也可以单击客户信息,在展示区会显示此客户的详细信息,也可对客户信息进行修改;在选中每条信息前面的复选框,单击【删除】按钮,选中的客户信息将被删除。

1.客户信息显示/查询

用户可以在客户信息管理页面中的查询部分,输入一定的查询条件进行客户信息的查询。

当用户在查询部分输入条件后,并单击【查询】按钮,用户添加的查询条件将被提交给本页,本页将根据用户提交的表单信息对数据库进行检索,并将结果集通过操作区输出到浏览器中。

客户信息查询页面涉及的HTML表单元素如表1所示。

表1                      客户信息查询页面涉及的HTML表单元素

名称

类型

含义

重要属性

form1

Form

表单

method="post" action=""

post

hidden

判断表单是否提交

value="true"

tiao

select

查询类型

<option value="模糊查询" <%if request("tiao")="模糊查询" then%>selected<%end if%>>模糊查询</option>

<option value="精确查询" <%if request("tiao")="精确查询" then%>selected<%end if%>>精确查询</option>

sel

select

关键字类别

<option value="ClientName" <%if request("sel")="ClientName" then%>selected<%end if%>>客户名称</option>

……

<option value="ClientHabitude" <%if request("sel")="ClientHabitude" then%>selected<%end if%>>企业性质</option>

search

text

关键字

<input name="search" type="text" id="search" value="<%=request("search")%>">

Submit

submit

查询按钮

class="input" value=" 查 询 "

在表单提交之后,在本页将数据进行处理。程序代码如下:

<%

if request("post")<>"" then

if request("tiao")="模糊查询" then ‘条件输入为模糊查询时获得相应的记录集

set rs=server.CreateObject("adodb.recordset")

sql="select * from tb_Client where "&request("sel")&" like '%"&request("search")&"%' order by id desc"

rs.open sql,conn,1,1

else                              ‘条件输入为精确查询时获得相应的记录集

set rs=server.CreateObject("adodb.recordset")

sql="select * from tb_Client where "&request("sel")&"='"&request("search")&"' order by id desc"

rs.open sql,conn,1,1

end if

else                   ‘默认状态下获得相应的记录集

set rs=server.CreateObject("adodb.recordset")

sql="select * from tb_Client order by id desc"

rs.open sql,conn,1,1

end if

'实现分页

if not rs.eof then

tol=rs.recordcount             '总记录数

rs.pagesize=15                   '获取每页显示的记录数

maxpage=rs.pagecount             

requestpage=clng(request("p"))  '获取当前页

if requestpage="" or requestpage=0 then '当接收页码的值为空或者0时使其等于1

requestpage=1

end if

if requestpage>maxpage then '在接收页码的值大于最大页码时,使其等于最大页码

requestpage=maxpage

end if

if requestpage<>1 then  '向上或向下移动相应的记录

rs.move (requestpage-1)*rs.pagesize

end if

for i=1 to rs.pagesize and not rs.eof  '利用循环输出数据

if i mod 2=1 then

bg="#FFFFFF"

else

bg="#efefef"

end if

%>

          <tr align="center" bgcolor=<%=bg%> style="cursor: hand" onClick="window.parent.frames('bo').window.location = 'KeHu_ed.asp?id=<%=rs("id")%>'"onMouseOver="HLItem(this)" onMouseOut="Re(this)">

            <td height="22"><%=rs("ClientName")%></td>

            <td><%=rs("ClientCountry")%></td>

            <td><%=rs("ClientCity")%></td>

            <td><%=rs("ClientTel")%></td>

            <td><%=rs("ClientEmail")%></td>

          </tr>

<%

rs.movenext

if rs.eof then exit for      ’ 如果记录集为空那么跳出循环

next

else

response.Write("没有客户信息,请<a href='KeHu_add.asp' target='bo'>添加</a>")

end if%>

当鼠标在某条记录上悬停时,其记录所在行的背景颜色会发生改变,此功能用到的js代码如下:

<script language="javascript">

function HLItem(obj)//鼠标经过

{

obj.oldClassName=obj.className;

obj.className="List";

}

function Re(obj)//鼠标移开

{

 obj.className=obj.oldClassName

}

</script>

其调用的代码如下:

<tr align="center" bgcolor=<%=bg%> style="cursor:hand" onClick="window.parent.frames('bo').window.location = 'KeHu_ed.asp?id=<%=rs("id")%>'" onMouseOver="HLItem(this)" onMouseOut="Re(this)">

客户信息显示/查询页面的运行结果如图4所示:

图4  客户信息查询页面的运行结果

2.客户信息添加

客户信息添加的主要功能是用于用户添加客户信息。在查询页面中单击【添加】按钮,在展示区中会显示添加页面,其设计效果如图5所示。

如图5 客户信息添加页面设计效果

当单击添加页面中的【添加】按钮时,调用js编写的自定义函数(checks()),通过函数验证填写的数据是否正确,该函数的代码如下:

<script language="javascript">

function checks()

{

 if(form1.ClientName.value=="")

{

alert("公司名称不能为空");

return false;

}

……//中间过程不详细介绍,因为实现方法类似

 else if(form1.ClientCyc.value=="")

{

alert("需求周期不能为空");

return false;

}

}

</script>

表单提交之后,添加的数据将被提交到本页进行处理,本页数据处理的程序代码如下:

<%

if request("post")<>"" then

set rs=server.CreateObject("adodb.recordset")

sql="select * from tb_Client"

rs.open sql,conn,1,3

rs.addnew

rs("ClientName")=request("ClientName")      ‘添加公司名称

rs("ClientAddress")=request("ClientAddress")   ‘公司地址

rs("ClientTel")=request("ClientTel")          ‘公司电话

rs("ClientFax")=request("ClientFax")          ‘公司传真

rs("ClientNumber")=request("ClientNumber")   ‘邮政编码

rs("ClientPage")=request("ClientPage")         ‘公司网址

rs("ClientEmail")=request("ClientEmail")       ‘公司email

rs("ClientCountry")=request("ClientCountry")   ‘所属国家/地区

rs("ClientHabitude")=request("ClientHabitude")  ‘公司性质

rs("ClientSize")=request("ClientSize")          ‘公司规模

rs("ClientCity")=request("ClientCity")          ‘所属城市

rs("ClientPay")=request("ClientPay")           ‘结款方式

rs("ClientCredit")=request("ClientCredit")       ‘结款信用

rs("ClientList")=request("ClientList")           ‘最高订单‘

rs("ClientYear")=request("ClientYear")          ‘年度订单

rs("ClientCyc")=request("ClientCyc")           ‘需求周期

rs("SetTime")=now()         ‘创建时间

rs("EditTime")=now()                        ‘修改时间

rs("SetName")=session("admin_name")          ‘创建人

rs.update

rs.close

conn.close

response.Write("<script language=javascript>alert('客户信息添加成功')</script>")‘弹出成功对话框

end if%>

3.客户信息修改

在显示客户详细信息页面,用户可以浏览、修改其客户的详细信息。进行客户详细信息浏览和修改的页面设计效果如图6所示:

图6  客户信息修改页面设计效果

在客户信息修改页面,用户可以浏览客户详细的信息,也可以修改客户的信息(当用户有修改的权限时,那么用户可以进行修改,至于用户权限的实现,将在后面的章节中进行讲解)。当用户单击【修改】按钮后,修改的数据将被提交到本页进行处理。数据处理的代码如下:

<%

  if request("post")<>"" and (rsr("Client")="可写" or rsr("chaoji")="是") then

set rs=server.CreateObject("adodb.recordset")

sql="select * from tb_Client where id="&request("id")

rs.open sql,conn,1,3

rs("ClientName")=request("ClientName")      ‘添加公司名称

rs("ClientAddress")=request("ClientAddress")   ‘公司地址

rs("ClientTel")=request("ClientTel")          ‘公司电话

rs("ClientFax")=request("ClientFax")          ‘公司传真

rs("ClientNumber")=request("ClientNumber")   ‘邮政编码

rs("ClientPage")=request("ClientPage")         ‘公司网址

rs("ClientEmail")=request("ClientEmail")       ‘公司email

rs("ClientCountry")=request("ClientCountry")   ‘所属国家/地区

rs("ClientHabitude")=request("ClientHabitude")  ‘公司性质

rs("ClientSize")=request("ClientSize")          ‘公司规模

rs("ClientCity")=request("ClientCity")          ‘所属城市

rs("ClientPay")=request("ClientPay")           ‘结款方式

rs("ClientCredit")=request("ClientCredit")       ‘结款信用

rs("ClientList")=request("ClientList")           ‘最高订单‘

rs("ClientYear")=request("ClientYear")          ‘年度订单

rs("ClientCyc")=request("ClientCyc")           ‘需求周期

rs("EditTime")=now()                        ‘修改时间

rs("SetName")=session("admin_name")          ‘创建人

rs.update

rs.close

response.Write("<script language=javascript>alert('客户信息修改成功')</script>")‘弹出成功对话框

end if

%>

4.客户信息删除

在客户信息管理页面,用户可以点选任意一条客户信息前面的复选框,然后单击页面下方的【删除】按钮,被选择的客户信息将被删除。

客户信息删除主要是根据传递的参数(本例中的参数为客户信息的id),将数据库中对应id的客户信息和其他和客户相关的信息全部删除,程序代码如下:

<%

call client '验证是否有删除客户信息的权限

if request("del")<>"" then

kid=Split(Request("del"),",") ‘分解字符串成数组

for i=0 to ubound(kid)

sqld="delete from tb_Client where id="&clng(kid(i))'删除客户信息

conn.execute(sqld)

sqll="delete from tb_Linkman where LinkmanClient="&clng(kid(i))'删除客户的联系人信息

conn.execute(sqll)

sqlp="delete from tb_Pact where PactClient="&clng(kid(i))'删除客户的合同信息

conn.execute(sqlp)

sqlp="delete from tb_Feedback where FeedbackClient="&clng(kid(i))'删除客户反馈信息

conn.execute(sqlp)

sqlp="delete from tb_Product where ProductProvider="&clng(kid(i))'删除客户的产品信息

conn.execute(sqlp)

next

if request("p")="" then                                   '返回用户操作页

response.Redirect("KeHu_KeHu.asp")

else

response.Redirect("KeHu_KeHu.asp?p="&request("p"))

end if

else

response.Write("<script language=javascript>alert('请选择要删除的信息');location='javascript:history.go(-1)'</script>")

end if%>

4.2  联系人信息管理设计

联系人信息管理的主要功能包括显示/查询、添加、修改和删除联系人信息4个部分。用户可以通过功能导航进入联系人信息管理页面,页面设计效果如图7所示。

图7  联系人信息管理页面设计效果

1.联系人信息显示/查询

用户可以在联系人信息管理页面中的查询部分,输入一定的查询条件进行联系人信息的查询。

用户在查询部分输入条件后,单击【查询】按钮,用户添加的查询条件将被提交给本页,本页则将根据用户提交的表单信息对数据库进行检索,并将结果集通过操作区输出到浏览器中。

查询代码如下:

<%

if request("post")<>"" then

if request("tiao")="模糊查询" then’ 联系人模糊查询

set rs=server.CreateObject("adodb.recordset")

sql="select * from tb_Linkman where "&request("sel")&" like '%"&request("search")&"%' order by id desc"

rs.open sql,conn,1,1

else ‘联系人精确查询

set rs=server.CreateObject("adodb.recordset")

sql="select * from tb_Linkman where "&request("sel")&"='"&request("search")&"' order by id desc" 

rs.open sql,conn,1,1

end if

else’ 默认状态下显示联系人列表

set rs=server.CreateObject("adodb.recordset")

sql="select * from tb_Linkman order by id desc"

rs.open sql,conn,1,1

end if

%>

分页代码请参考4.1节中介绍的客户信息显示/查询中的相关代码。

也可在查看客户的详细信息中,单击“联系人信息”,就会产生此客户的联系人列表,传参代码如下:

<a href="KeHu_Linkman.asp?post=true&sel=LinkmanClient&search=<%=rsx("id")%>&dd=dd">联系人信息</a>

2.联系人信息添加

联系人信息添加的主要功能是添加客户的联系人信息。

在查询页面中单击【添加】按钮,在展示区中会显示添加页面。在添写表单选择所属客户时,所属客户是在数据库中直接读取出来的。其代码如下:

<%

set rsc=server.CreateObject("adodb.recordset")

sqlc="select * from tb_Client order by id desc"

rsc.open sqlc,conn,1,1

if not rsc.eof then

 %>

  <select name="LinkmanClient" id="LinkmanClient">

<%

for i=1 to rsc.recordcount and not rsc.eof

%>

        <option value="<%=rsc("id")%>"><%=rsc("ClientName")%></option>

<%

rsc.movenext

next%>

</select>

<%

else

response.Write("没有客户信息,请<a href='KeHu_add.asp' target='bo'>添加</a>")

end if%>

添加联系人页面的运行结果如图8所示。

图8  添加联系人的页面运行结果

也可在客户的详细信息中单击【新建】按钮,在此添加用户不用选择所属客户,直接就会生成所属客户,主要是根据传递的参数(本例中的参数为客户信息的id),传参代码如下:

<a href="KeHu_Linkman_addy.asp?id=<%=rsx("id")%>"><span class="style2">新建</span></a>

其显示代码如下:

<%

set rsc=server.CreateObject("adodb.recordset")

sqlc="select * from tb_Client where id="&request("id")&" order by id desc"

rsc.open sqlc,conn,1,1

response.Write(rsc("ClientName"))

%>

3.联系人信息修改

联系人信息修改的主要功能是用户修改联系人信息,方便用户和客户之间的联系和沟通。

在显示联系人详细信息页面,用户可以更改其联系人的信息。联系人信息修改页面运行结果如图9所示。

图9  联系人信息修改页面运行结果

4.联系人信息删除

联系人信息删除的主要功能是删除联系人的信息。,其程序代码如下:

<%

kid=Split(Request("del"),",") ‘分解字符串成数组

response.Write("正在删除...")

for i=0 to ubound(kid)

sqld="delete from tb_Linkman where id="&clng(kid(i)) ‘删除指定的记录

conn.execute(sqld)

next

%>

4.3  合同信息管理

合同信息管理设计主要包括显示/查询、添加、修改和删除合同信息4个部分。用户可以通过功能导航进入合同信息管理页面,页面设计效果如图10所示。

图10 合同信息管理页面的运行结果

图11  合同信息显示/查询页面运行结果

图12  合同信息添加页面运行结果

图13  合同信息修改页面运行结果

图20  服务管理页面的设计效果

图21  反馈信息添加页面的设计效果

图23  报表管理页面设计效果

图24  报表下载页面的运行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值