客户管理模块.docx
- 文档编号:25183233
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:65
- 大小:193.84KB
客户管理模块.docx
《客户管理模块.docx》由会员分享,可在线阅读,更多相关《客户管理模块.docx(65页珍藏版)》请在冰豆网上搜索。
客户管理模块
第17章客户管理模块
客户管理模块是整个客户关系管理系统中的关键部分,要求能详细的描述客户的信息,并能通过各种方式,方便的查询客户。
整个客户管理模块的流程如图17-1所示。
图17-1客户管理模块的流程图
17.1客户资料的管理
客户资料的管理主要实现对客户资料的添加、修改和查询等功能。
17.1.1客户资料中常用的用户控件
客户资料包括区域、行业类型、客户状态、客户等级4个属性,这些属性会出现在添加、修改和查询等很多功能中,而且这些属性的值都来源于数据库,本着软件重用性原则,将其设计成用户控件,实现一次设计,多次使用。
前面已经设计好了“选择区域”用户控件,本节将采用相同的方法设计其他3个属性。
行业类型不允许普通用户输入,只能通过下拉框选择,设计步骤如下:
(1)打开本例的网站项目SoftCRM。
(2)在controls目录下,添加一个用户控件,命名为UserTypeUC。
(3)在设计界面中,添加一个DropDownList控件。
(4)为DropDownList控件新建数据源。
数据源类型为“数据库”,数据连接选择“SoftERMConnnectionString”,表选择的是UserType,字段只选择一个:
TypeName。
(5)按F7切换到代码视图,为该控件添加一个公共属性值,用来表示选择的值。
具体代码可参考随书光盘。
(6)按“Ctrl+S”保存该用户控件。
同样的步骤,再完成客户状态和客户等级2个用户控件。
不同之处是客户状态选择的表是UserState,字段是StateName,客户等级选择的表是UserGrade,字段是GradeName。
由于客户资料的属性繁多,而且涉及到的操作也很多,本章将使用业务实体类实现对客户资料的管理。
17.1.2设计客户资料实体类
生成客户实体类的方法有很多,本书推荐使用CodeSmith模板自动生成实体类。
模板可以从网络下载,也可以参考随书光盘。
首先在App_Code目录下,添加一个文件夹,命名为“EntityClass”,用于存放实体类。
其次在EntityClass文件夹下,添加一个类,命名为“UserInfoEntity”。
最后打开UserInfoEntity.cs文件,添加代码。
本例客户资料实体类的代码如清单17-1所示。
代码清单17-1客户资料实体类
usingSystem;
///
///客户资料实体信息
///
publicclassUserInfoEntity
{
//定义私有变量
privatestring_username="";
privatestring_softversion="";
privatestring_usertype="";
privatestring_usergrade="";
privatestring_userstate="";
privatestring_city="";
privatestring_address="";
privatestring_linkman="";
privatestring_phone="";
privatestring_fax="";
privatestring_mail="";
privatestring_qq="";
privateint_peopleamount=0;
//无参数的构造函数
publicUserInfoEntity()
{
}
///
///有参数的构造函数,初始化客户资料
///
///
///
///
///
///
///
///
///
///
///
///
///
///
publicUserInfoEntity(stringusername,stringsoftversion,stringusertype,
stringuserstate,stringusergrade,stringcity,stringaddress,
stringlinkman,stringphone,stringfax,stringmail,stringqq,stringpeopleamount)
{
//为私有变量赋值
this._username=username;
this._softversion=softversion;
this._usertype=usertype;
this._userstate=userstate;
this._usergrade=usergrade;
this._address=address;
this._linkman=linkman;
this._phone=phone;
this._fax=fax;
this._mail=mail;
this._qq=qq;
//注意类型的匹配
this._peopleamount=int.Parse(peopleamount);
}
//客户名称属性
publicstringUserName
{
get{return_username;}
set{_username=value;}
}
//软件版本属性
publicstringSoftVersion
{
get{return_softversion;}
set{_softversion=value;}
}
//业务类型属性
publicstringUserType
{
get{return_usertype;}
set{_usertype=value;}
}
//客户等级属性
publicstringUserGrade
{
get{return_usergrade;}
set{_usergrade=value;}
}
//客户状态属性
publicstringUserState
{
get{return_userstate;}
set{_userstate=value;}
}
//客户所在城市属性
publicstringCity
{
get{return_city;}
set{_city=value;}
}
//客户地址属性
publicstringAddress
{
get{return_address;}
set{_address=value;}
}
//客户联系人属性
publicstringLinkMan
{
get{return_linkman;}
set{_linkman=value;}
}
//客户电话属性
publicstringPhone
{
get{return_phone;}
set{_phone=value;}
}
//客户传真属性
publicstringFax
{
get{return_fax;}
set{_fax=value;}
}
//客户Mail属性
publicstringMail
{
get{return_mail;}
set{_mail=value;}
}
//客户QQ属性
publicstringQQ
{
get{return_qq;}
set{_qq=value;}
}
//客户单位软员数量属性
publicintPeopleAmount
{
get{return_peopleamount;}
set{_peopleamount=value;}
}
}
17.1.3设计客户资料实体方法
客户资料的主要方法有添加、修改和获取3个,而由于GridView控件可以无代码实现修改和获取,所以本例只有1个添加的方法。
由于客户资料表与客户状态表、客户业务类型表、客户等级表、联系人表和城市表,通过ID有关联,所以实体中还有几个通过名称获取ID的私有方法。
首先在App_Code目录下,添加一个文件夹,命名为EntityDA。
用于存放实体方法类。
其次在EntityDA文件夹下,添加一个类,命名为UserInfoDA。
最后打开UserInfoDA.cs文件,添加所需要的代码。
整个实体方法的工作流程如图17-2所示。
客户资料实体方法的代码如清单17-2所示。
图17-2实体方法工作的流程图
代码清单17-2客户资料实体方法类
usingSystem;
usingSystem.Data;
usingSystem.Text;
usingSystem.Data.SqlClient;
///
///客户资料实体的方法
///
publicclassUserInfoDA
{
//定义常量表示字段名称或SQL语句。
privateconststringSQL_INSERT_USERINFO="INSERTINTOuserinfoVALUES(@cityid,@gradeid,@stateid,@typeid,@username,@useraddress,@softversion,@linkman,@phone,@mail,@qq,@fax,@peopleamount)";
//privateconststringSQL_UPDATE_USERINFO="updatememberinfosetcustname=@custname,custphone=@custphone,custaddress=@custaddress";
privateconststringPARM_USER_NAME="@username";
privateconststringPARM_USER_ADDRESS="@useraddress";
privateconststringPARM_USER_SOFTVERSION="@softversion";
privateconststringPARM_USER_LINKMAN="@linkman";
privateconststringPARM_USER_PHONE="@phone";
privateconststringPARM_USER_MAIL="@mail";
privateconststringPARM_USER_QQ="@qq";
privateconststringPARM_USER_FAX="@fax";
privateconststringPARM_USER_PEOPLEAMOUNT="@peopleamount";
privateconststringPARM_USER_CITYID="@cityid";
privateconststringPARM_USER_STATEID="@stateid";
privateconststringPARM_USER_GRADEID="@gradeid";
privateconststringPARM_USER_TYPEID="@typeid";
privateconststringPARM_USER_CITY="@city";
privateconststringPARM_USER_STATE="@state";
privateconststringPARM_USER_GRADE="@grade";
privateconststringPARM_USER_TYPE="@type";
privateconststringSQL_SELECT_CITYNAME="SELECTcityidFROMcityWHEREcityname=@city";
privateconststringSQL_SELECT_STATENAME="SELECTstateidFROMuserstateWHEREstatename=@state";
privateconststringSQL_SELECT_GRADENAME="SELECTgradeidFROMusergradeWHEREgradename=@grade";
privateconststringSQL_SELECT_TYPENAME="SELECTtypeidFROMusertypeWHEREtypename=@type";
//privateconststringSQL_SELECT_BYSOFTVERSION="";
publicUserInfoDA()
{
}
///
///添加客户资料
///
///
///
publicboolInsertUser(UserInfoEntityuser)
{
StringBuilderstrSQL=newStringBuilder();
SqlParameter[]userParms=GetParameters();
SqlCommandcmd=newSqlCommand();
//依次给实体参数赋值
userParms[0].Value=user.UserName;
userParms[1].Value=user.Address;
userParms[2].Value=user.SoftVersion;
userParms[3].Value=user.LinkMan;
userParms[4].Value=user.Phone;
userParms[5].Value=user.Mail;
userParms[6].Value=user.QQ;
userParms[7].Value=user.Fax;
userParms[8].Value=user.PeopleAmount;
//因为客户资料表中存储的是以下几个属性的ID
//所以必须通过名称先获取这几个属性的ID
//获取城市的ID
intcityid=GetCityID(user.City);
//获取用户状态的ID
intstateid=GetStateID(user.UserState);
//获取用户等级的ID
intgradeid=GetGradeID(user.UserGrade);
//获取用户业务类型的ID
inttypeid=GetTypeID(user.UserType);
userParms[9].Value=cityid;
userParms[10].Value=stateid;
userParms[11].Value=gradeid;
userParms[12].Value=typeid;
//遍历所有参数,并将参数添加到SqlCommand命令中
foreach(SqlParameterparminuserParms)
cmd.Parameters.Add(parm);
//获取数据库的连接字符串
using(SqlConnectionconn=newSqlConnection(SqlHelper.ConnectionStringLocalTransaction))
{
strSQL.Append(SQL_INSERT_USERINFO);
//打开数据库连接,执行命令
conn.Open();
//设置Sqlcommand命令的属性
cmd.Connection=conn;
cmd.CommandType=CommandType.Text;
cmd.CommandText=strSQL.ToString();
//执行添加的SqlCommand命令
intval=cmd.ExecuteNonQuery();
//清空SqlCommand命令中的参数
cmd.Parameters.Clear();
//判断是否添加成功,注意返回的是添加是否成功,不是影响的行数
if(val>0)
returntrue;
else
returnfalse;
}
}
#region私有方法-获取ID
///
///获取城市ID的方法(私有方法)
///
///
///
privateintGetCityID(stringcityname)
{
intcityid=0;
//创建新参数并给参数赋值,用来指定城市名称
SqlParameterparm=newSqlParameter(PARM_USER_CITY,SqlDbType.NVarChar,20);
parm.Value=cityname;
//调用SqlHelper访问组件的方法返回第一行第一列的值
cityid=(int)SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction,CommandType.Text,SQL_SELECT_CITYNAME,parm);
returncityid;
}
///
///获取用户状态ID的方法(私有方法)
///
///
///
privateintGetStateID(stringstatename)
{
intstateid=0;
//创建新参数并给参数赋值,用来指定用户状态的名称
SqlParameterparm=newSqlParameter(PARM_USER_STATE,SqlDbType.NVarChar,20);
parm.Value=statename;
//调用SqlHelper访问组件的方法返回第一行第一列的值
stateid=(int)SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction,CommandType.Text,SQL_SELECT_STATENAME,parm);
returnstateid;
}
///
///获取用户等级ID的方法(私有方法)
///
///
///
privateintGetGradeID(stringgradename)
{
intgradeid=0;
//创建新参数并给参数赋值,用来指定用户等级的名称
SqlParameterparm=newSqlParameter(PARM_USER_GRADE,SqlDbType.NVarChar,20);
parm.Value=gradename;
//调用SqlHelper访问组件的方法返回第一行第一列的值
gradeid=(int)SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction,CommandType.Text,SQL_SELECT_GRADENAME,parm);
returngradeid;
}
///
///获取用户业务类型ID的方法(私有方法)
///
///
///
privateintGetTypeID(stringtypename)
{
inttypeid=0;
//创建新参数并给参数赋值,用来指定用户等级的名称
SqlParameterparm=newSqlParameter(PARM_USER_TYPE,SqlDbType.NVarChar,20);
parm.Value=typename;
//调用SqlHelper访问组件的方法返回第一行第一列的值
typeid=(int)SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction,CommandType.Text,S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 客户 管理 模块
![提示](https://static.bdocx.com/images/bang_tan.gif)