2023年6月21日发(作者:)
Web程序开发技术实训报告
题 目 企业客户管理系统
班 级 0931 班
学 号 2
姓 名 焦艳艳
实训地点 C507
实训日期 2011.12.19 - 2011.12.23
实训目的
主要目的是熟练掌握Microsoft Visual Studio 2008+SQL后台数据库开发应用程序的流程,熟悉基本电子商务程序的开发方法。为以后开发电子商务网站打下基础。同时强化实践意识,提高实际动手能力和创新能力。
小组成员及分工情况
小组成员:焦艳艳,朱宝真
分工情况:焦艳艳负责登录,用户信息,客户信息,产品信息三个界面。
朱宝真负责销售统计,合同管理,修改密码三个界面。
评语
学生成绩:
2 1. 总体设计
根据客户管理的基本需求,本系统需要完成以下任务。
公司不同部门的人员在本系统中具有不同的管理功能,通过用户信息维护功能维护员工的信息。
企业面对很多的客户,因为必须对这些客户进行管理。
企业的产品信息也需要进行维护。
能够查询某客户的销售情况。
能够统计企业的销售情况。
能够添加和维护企业的合同
1.1需求分析
客户关系管理的焦点是自动化并改善与销售、市场销售、客户服务和支持等领域的与客户关系有关的商业流程。它的目标是缩减销售周期和销售成本,增加收入,寻找扩展业务所需的新市场、新渠道,以及提高客户的价值满意度、盈利性和重视度。利用此系统可以方便成各类管理,为销售人员提供相关信息,更好的与客户的各种信息有效的结合起来。
1.2 系统的体系结构设计
3 企业客户管理系统
管理员用户 其他部门用户
否
否
登陆 登陆
是
是
管理员可以进行一切的管理、维护网站以及添加管理用户合销客等信息!
同售户
部部部用用用户户户
负责合同的签负责销负责客户的订和管售的管售前及售后理。有合理和维服务、维护,同添加护。 添加客户及等页面。
显示客户信息页面。
1.3系统的功能模块设计
企业客户管理系统
登客合销信陆 户同售息
界管管管管面 理 理 理
理
编添删添编删添客产辑
加 除
加 辑 除 加
户品信信息 息
4
1.4 数据库设计与实现
企业客户管理系统中包括用户、客户、产品、合同和销售情况等信息,并需要相应的表存储这些信息。
用户信息表:存放管理员和员工的信息。
客户信息表:存放企业客户的信息。
产品信息表:存放企业产品的信息。
销售情况信息表:存放企业销售情况的信息。
合同信息表:存放企业合同的签署信息。
合同明细信息表: 存放企业合同的明细信息。
由系统功能分析和需求总结,可设计如下的数据项和数据结构。
用户信息表包括用户编号、账号、密码和权限等数据项。
客户信息表包括客户的编号、名称、负责人和描述等数据项。
产品信息表包括产品编号,名称和特征等数据项。
合同信息表包括合同编号、客户编号、执行状态、签署日期、和负责人等数据项。
合同明细表包括记录编号、产品编号和订货数据量等数据项。
销售情况明细表包括编号、客户编号、产品编号和销售数量等数据项。
1.4.1 数据库概念结构设计
根据设计好的数据项和数据结构,可设计满足需求的各种实体及相互关系,即E-R图的逻辑结构设计界面如下:
CMS系统用户信息实体图,如4.1所示:
用户信息
用户编号
用户类密码
联系地址
图4.1
CMS系统产品信息实体图,如4.2所示:
5 产品编号
用户编号
特征
名称 产品编号
图4.2
CMS系统客户信息实体图,如图4.3所示:
客户信息
客户编号
名称 级别
负责人
图4.3
CMS系统合同信息实体图,如图4.4所示:
合同信息
合同编号
总金额
……客户编号
图4.4
CMS系统合同明细表实体图,如图4.5所示:
合同明细表
记录编号
产品编单价
订货数量
图4.5
CMS系统客户销售情况实体图,如图4.6所示:
6
客户销售情况
客户编号
编号 销售量
产品数量
图4.6
1.4.3 数据库的逻辑设计
企业客户管理系统数据库managers包括6张表:用户信息表、客户信息表、产品信息表、合同信息表、合同明细表和客户销售情况表。
1.用户信息表
字段名
User_id
User_password
User_name
User_power
附:表图
数据类型
char
char
varchar
int
大小
10
10
50
4
字段类型
用户名,设主键
用户密码
用户名称
用户类型
2客户基本信息表
字段名
Custom_id
Custom_name
Custom_charge
数据类型
Char
Char
Char
大小
10
10
10
50
4
字段描述
客户编号,主键
客户名
记录负责人
客户的描述
客户级别
Custom_introduce Varchar
Custom_level
int
7 附:表图
3产品信息表
字段名 数据类型 大小 字段描述
Produce_id Char 10
产品编号,主键
produce_name varchar 50
产品名称
Produce_describe varchar 50
对产品的描述
附:表图
4合同信息表
字段名 数据类型 大小 字段描述
Contract_id Char 10
客户编号,主键
Custom_id Char 10
客户编号,外键
Contract_state int 4
合同执行状态
Contract_start Varchar 50
合同签署日期
Contrct_send Datatime 8
合同执行日期
Contract_finish Datatime 8
合同完成日期
Contract_person Char 10
合同负责人
Contract_price money 8
记录总金额
附:表图
8
5.合同明细表
字段名 数据类型 大小 字段描述
Contract_id Char 10
客户编号,主键
Produce_id Char 10
产品编号,外键
Produce_book int 4
订货数量
Produce_send Int 4
已发货数量
Produce_price money 8
产品单价
附:表图
6客户销售明细表
字段名 数据类型 大小 字段描述
ID
— — 唯一ID号,主键
Custom_id char 10
客户编号
Produce_id Char 10
产品编号
Produce_sale int 4
订货数量
Produce_data datatime 8
产品生产日期
Produce_allprice money 8
产品单价
附:表图
9
1.4.4 视图
使用视图可以方便查询两个表中的用户所需要的记录,可以优化系统,提供查询效率,因此构建好表之后,就可以创键综合两个表中的信息的视图。本例使用一个视图,视图编写及界面如下:
视图VIEW 1创建代码如下:
CREATE VIEW 1
AS
SELECT act_ct_id AS contract_id,
_id AS custom_id,
act_e_id AS produce_id,
act_state AS constract_state,
act_start AS constract_start,
act_send AS constract_send,
act_finish AS constract_finish,
act_allprice AS constract_allprice,
act_person AS constract_person,
act_e_booknum AS produce_booknum,
act_e_sendnum AS Expr11,
act_e_price AS Expr12
FROM act INNER JOIN
act_detail ON
ct_id = act_ct_id
10 2.1系统界面以及实现代码
8.销售统计界面:
实现代码:
public partial class showconstract :
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button2_Click(object sender, EventArgs e)
{
ct("");
}
}
9添加销售界面:
11 实现代码:
public partial class addsale :
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string settings =
ng(tionStrings["ConnectionString"]);
SqlConnection cn0 = new SqlConnection(settings);
string strsql = "insert into
customsale(ID,custom_id,produce_id,produce_sale,produce_price,produce_date)values(@ID,@custom_id,@produce_id,@produce_sale,@produce_price,@produce_date)";
SqlCommand cm = new SqlCommand(strsql, cn0);
try
{
(new SqlParameter("@ID", ,
10));
ters["@ID"].Value = ;
(new SqlParameter("@custom_id",
, 10));
ters["@custom_id"].Value = ;
(new SqlParameter("@produce_id",
, 10));
ters["@produce_id"].Value = ;
(new SqlParameter("@produce_sale",
12 , 4));
ters["@produce_sale"].Value = ;
(new SqlParameter("@produce_price",
, 8));
ters["@produce_price"].Value = ;
(new SqlParameter("@produce_date",
, 10));
ters["@produce_date"].Value = ;
();
eNonQuery();
= "添加成功,请返回";
}
catch
{
= "添加失败,请检查输入!";
["color"] = "red";
}
}
protected void Button2_Click(object sender, EventArgs e)
{
ct("");
}
}
10合同管理界面:
13 实现代码:
public partial class contact :
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void quit_Click(object sender, EventArgs e)
{
ct("");
}
protected void add_Click(object sender, EventArgs e)
{
string settings =
ng(tionStrings["ConnectionString"]);
SqlConnection cn0 = new SqlConnection(settings);
string strsql = "insert into
VIEW1(contract_id,custom_id,produce_id,contract_state,contract_start,constract_send,constract_finish,constract_person,constract_allprice,produce_booknum,produce_sendnum,produce_price)
values(@contract_id,@custom_id,@produce_id,@produccontract_state,@contract_start,@constract_send,@constract_finish,@constract_person,@constract_allprice,@produce_booknum,@produce_sendnum,@produce_price)";
SqlCommand cm = new SqlCommand(strsql, cn0);
try
{
(new SqlParameter("@contract_id",
, 10));
14 ters["@contract_id"].Value = ;
(new SqlParameter("@produce_id",
, 10));
ters["@produce_id"].Value = edValue;
(new SqlParameter("@custom_id",
, 10));
ters["@custom_id"].Value = edValue;
(new SqlParameter("@contract_state",
, 4));
ters["@constract_state"].Value =
edValue;
(new SqlParameter("@contract_start",
r, 50));
ters["@constract_start"].Value = ;
(new SqlParameter("@constract_send",
me, 8));
ters["@constract_send"].Value = ;
(new SqlParameter("@constract_finish",
me, 8));
ters["@constract_finish"].Value = ;
(new SqlParameter("@constract_person",
, 10));
ters["@constract_person"].Value = ;
(new SqlParameter("@constract_allprice",
, 8));
ters["@constract_allprice"].Value = ;
(new SqlParameter("@produce_booknum",
, 4));
ters["@produce_booknum"].Value = ;
15 (new SqlParameter("@produce_sendnum",
, 4));
ters["@produce_sendnum"].Value = ;
(new SqlParameter("@produce_price",
, 8));
ters["@produce_price"].Value = ;
();
eNonQuery();
= "添加成功,请返回";
}
catch
{
= "添加失败,请检查输入";
["color"] = "red";
}
}
}
11.修改密码界面:
实现代码:
public partial class edit :
{
protected void Page_Load(object sender, EventArgs e)
16 {
}
protected void Button1_Click(object sender, EventArgs e)
{
string settings =
ng(tionStrings["ConnectionString"]);
SqlConnection cn0 = new SqlConnection(settings);
string usname=;
string pw =;
string strsql = "select * from userinfo where user_name = '" +
username + "' and user_password = '" + pw + "'";
string s1 = ;
string s2 = ;
if (s1 != s2)
{
("");
}
else
{
strsql = "update userinfo set user_password='" + s2 + "'
where user_name='" + username + "'";
}
("");
}
protected void Button2_Click(object sender, EventArgs e)
{
17 ct("");
}
}
3 实训总结
经过一周的实训与学习,我们终于把这个图书销售系统做出来了,虽然做得不是很完美,但是却是我们这个小组的每一个成员辛苦了一个星期的成果,我们为此感到开心。
我们这一组的都学得不是很好,上课听得也不是很明白,所以在刚开始做的时候,我们每一个人都认为这是一个不可能完成的任务,刚开始我们也想过要不要随便做点。可是后来看到其他组都在认真的做,我们想想也不能就这样放弃,至少也得试试,如果不会的话,就去请教会的同学和老师,学习不就是从不会到会的。
就这样,就这样我们开始了为期一星期的奋战。在这一周中也让我重新认识了这门课,让我对它产生了兴趣。
这次的实训让我学到了很多,同时也让我意识到我们要学的更多。从程序的设计到编写、调试、修改、完善、到最后的实训报告,每个人都付出了时间和精力去做好自己的任务帮助队友,所以团队的合作和队友之间的相互协助非常重要。通过实训让我们更深一步的对自己的专业,对自己的能力,对自己所学的有正确的认识,并且能在以后的学习工作中不断提高和完善自己。
18
2023年6月21日发(作者:)
Web程序开发技术实训报告
题 目 企业客户管理系统
班 级 0931 班
学 号 2
姓 名 焦艳艳
实训地点 C507
实训日期 2011.12.19 - 2011.12.23
实训目的
主要目的是熟练掌握Microsoft Visual Studio 2008+SQL后台数据库开发应用程序的流程,熟悉基本电子商务程序的开发方法。为以后开发电子商务网站打下基础。同时强化实践意识,提高实际动手能力和创新能力。
小组成员及分工情况
小组成员:焦艳艳,朱宝真
分工情况:焦艳艳负责登录,用户信息,客户信息,产品信息三个界面。
朱宝真负责销售统计,合同管理,修改密码三个界面。
评语
学生成绩:
2 1. 总体设计
根据客户管理的基本需求,本系统需要完成以下任务。
公司不同部门的人员在本系统中具有不同的管理功能,通过用户信息维护功能维护员工的信息。
企业面对很多的客户,因为必须对这些客户进行管理。
企业的产品信息也需要进行维护。
能够查询某客户的销售情况。
能够统计企业的销售情况。
能够添加和维护企业的合同
1.1需求分析
客户关系管理的焦点是自动化并改善与销售、市场销售、客户服务和支持等领域的与客户关系有关的商业流程。它的目标是缩减销售周期和销售成本,增加收入,寻找扩展业务所需的新市场、新渠道,以及提高客户的价值满意度、盈利性和重视度。利用此系统可以方便成各类管理,为销售人员提供相关信息,更好的与客户的各种信息有效的结合起来。
1.2 系统的体系结构设计
3 企业客户管理系统
管理员用户 其他部门用户
否
否
登陆 登陆
是
是
管理员可以进行一切的管理、维护网站以及添加管理用户合销客等信息!
同售户
部部部用用用户户户
负责合同的签负责销负责客户的订和管售的管售前及售后理。有合理和维服务、维护,同添加护。 添加客户及等页面。
显示客户信息页面。
1.3系统的功能模块设计
企业客户管理系统
登客合销信陆 户同售息
界管管管管面 理 理 理
理
编添删添编删添客产辑
加 除
加 辑 除 加
户品信信息 息
4
1.4 数据库设计与实现
企业客户管理系统中包括用户、客户、产品、合同和销售情况等信息,并需要相应的表存储这些信息。
用户信息表:存放管理员和员工的信息。
客户信息表:存放企业客户的信息。
产品信息表:存放企业产品的信息。
销售情况信息表:存放企业销售情况的信息。
合同信息表:存放企业合同的签署信息。
合同明细信息表: 存放企业合同的明细信息。
由系统功能分析和需求总结,可设计如下的数据项和数据结构。
用户信息表包括用户编号、账号、密码和权限等数据项。
客户信息表包括客户的编号、名称、负责人和描述等数据项。
产品信息表包括产品编号,名称和特征等数据项。
合同信息表包括合同编号、客户编号、执行状态、签署日期、和负责人等数据项。
合同明细表包括记录编号、产品编号和订货数据量等数据项。
销售情况明细表包括编号、客户编号、产品编号和销售数量等数据项。
1.4.1 数据库概念结构设计
根据设计好的数据项和数据结构,可设计满足需求的各种实体及相互关系,即E-R图的逻辑结构设计界面如下:
CMS系统用户信息实体图,如4.1所示:
用户信息
用户编号
用户类密码
联系地址
图4.1
CMS系统产品信息实体图,如4.2所示:
5 产品编号
用户编号
特征
名称 产品编号
图4.2
CMS系统客户信息实体图,如图4.3所示:
客户信息
客户编号
名称 级别
负责人
图4.3
CMS系统合同信息实体图,如图4.4所示:
合同信息
合同编号
总金额
……客户编号
图4.4
CMS系统合同明细表实体图,如图4.5所示:
合同明细表
记录编号
产品编单价
订货数量
图4.5
CMS系统客户销售情况实体图,如图4.6所示:
6
客户销售情况
客户编号
编号 销售量
产品数量
图4.6
1.4.3 数据库的逻辑设计
企业客户管理系统数据库managers包括6张表:用户信息表、客户信息表、产品信息表、合同信息表、合同明细表和客户销售情况表。
1.用户信息表
字段名
User_id
User_password
User_name
User_power
附:表图
数据类型
char
char
varchar
int
大小
10
10
50
4
字段类型
用户名,设主键
用户密码
用户名称
用户类型
2客户基本信息表
字段名
Custom_id
Custom_name
Custom_charge
数据类型
Char
Char
Char
大小
10
10
10
50
4
字段描述
客户编号,主键
客户名
记录负责人
客户的描述
客户级别
Custom_introduce Varchar
Custom_level
int
7 附:表图
3产品信息表
字段名 数据类型 大小 字段描述
Produce_id Char 10
产品编号,主键
produce_name varchar 50
产品名称
Produce_describe varchar 50
对产品的描述
附:表图
4合同信息表
字段名 数据类型 大小 字段描述
Contract_id Char 10
客户编号,主键
Custom_id Char 10
客户编号,外键
Contract_state int 4
合同执行状态
Contract_start Varchar 50
合同签署日期
Contrct_send Datatime 8
合同执行日期
Contract_finish Datatime 8
合同完成日期
Contract_person Char 10
合同负责人
Contract_price money 8
记录总金额
附:表图
8
5.合同明细表
字段名 数据类型 大小 字段描述
Contract_id Char 10
客户编号,主键
Produce_id Char 10
产品编号,外键
Produce_book int 4
订货数量
Produce_send Int 4
已发货数量
Produce_price money 8
产品单价
附:表图
6客户销售明细表
字段名 数据类型 大小 字段描述
ID
— — 唯一ID号,主键
Custom_id char 10
客户编号
Produce_id Char 10
产品编号
Produce_sale int 4
订货数量
Produce_data datatime 8
产品生产日期
Produce_allprice money 8
产品单价
附:表图
9
1.4.4 视图
使用视图可以方便查询两个表中的用户所需要的记录,可以优化系统,提供查询效率,因此构建好表之后,就可以创键综合两个表中的信息的视图。本例使用一个视图,视图编写及界面如下:
视图VIEW 1创建代码如下:
CREATE VIEW 1
AS
SELECT act_ct_id AS contract_id,
_id AS custom_id,
act_e_id AS produce_id,
act_state AS constract_state,
act_start AS constract_start,
act_send AS constract_send,
act_finish AS constract_finish,
act_allprice AS constract_allprice,
act_person AS constract_person,
act_e_booknum AS produce_booknum,
act_e_sendnum AS Expr11,
act_e_price AS Expr12
FROM act INNER JOIN
act_detail ON
ct_id = act_ct_id
10 2.1系统界面以及实现代码
8.销售统计界面:
实现代码:
public partial class showconstract :
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button2_Click(object sender, EventArgs e)
{
ct("");
}
}
9添加销售界面:
11 实现代码:
public partial class addsale :
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string settings =
ng(tionStrings["ConnectionString"]);
SqlConnection cn0 = new SqlConnection(settings);
string strsql = "insert into
customsale(ID,custom_id,produce_id,produce_sale,produce_price,produce_date)values(@ID,@custom_id,@produce_id,@produce_sale,@produce_price,@produce_date)";
SqlCommand cm = new SqlCommand(strsql, cn0);
try
{
(new SqlParameter("@ID", ,
10));
ters["@ID"].Value = ;
(new SqlParameter("@custom_id",
, 10));
ters["@custom_id"].Value = ;
(new SqlParameter("@produce_id",
, 10));
ters["@produce_id"].Value = ;
(new SqlParameter("@produce_sale",
12 , 4));
ters["@produce_sale"].Value = ;
(new SqlParameter("@produce_price",
, 8));
ters["@produce_price"].Value = ;
(new SqlParameter("@produce_date",
, 10));
ters["@produce_date"].Value = ;
();
eNonQuery();
= "添加成功,请返回";
}
catch
{
= "添加失败,请检查输入!";
["color"] = "red";
}
}
protected void Button2_Click(object sender, EventArgs e)
{
ct("");
}
}
10合同管理界面:
13 实现代码:
public partial class contact :
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void quit_Click(object sender, EventArgs e)
{
ct("");
}
protected void add_Click(object sender, EventArgs e)
{
string settings =
ng(tionStrings["ConnectionString"]);
SqlConnection cn0 = new SqlConnection(settings);
string strsql = "insert into
VIEW1(contract_id,custom_id,produce_id,contract_state,contract_start,constract_send,constract_finish,constract_person,constract_allprice,produce_booknum,produce_sendnum,produce_price)
values(@contract_id,@custom_id,@produce_id,@produccontract_state,@contract_start,@constract_send,@constract_finish,@constract_person,@constract_allprice,@produce_booknum,@produce_sendnum,@produce_price)";
SqlCommand cm = new SqlCommand(strsql, cn0);
try
{
(new SqlParameter("@contract_id",
, 10));
14 ters["@contract_id"].Value = ;
(new SqlParameter("@produce_id",
, 10));
ters["@produce_id"].Value = edValue;
(new SqlParameter("@custom_id",
, 10));
ters["@custom_id"].Value = edValue;
(new SqlParameter("@contract_state",
, 4));
ters["@constract_state"].Value =
edValue;
(new SqlParameter("@contract_start",
r, 50));
ters["@constract_start"].Value = ;
(new SqlParameter("@constract_send",
me, 8));
ters["@constract_send"].Value = ;
(new SqlParameter("@constract_finish",
me, 8));
ters["@constract_finish"].Value = ;
(new SqlParameter("@constract_person",
, 10));
ters["@constract_person"].Value = ;
(new SqlParameter("@constract_allprice",
, 8));
ters["@constract_allprice"].Value = ;
(new SqlParameter("@produce_booknum",
, 4));
ters["@produce_booknum"].Value = ;
15 (new SqlParameter("@produce_sendnum",
, 4));
ters["@produce_sendnum"].Value = ;
(new SqlParameter("@produce_price",
, 8));
ters["@produce_price"].Value = ;
();
eNonQuery();
= "添加成功,请返回";
}
catch
{
= "添加失败,请检查输入";
["color"] = "red";
}
}
}
11.修改密码界面:
实现代码:
public partial class edit :
{
protected void Page_Load(object sender, EventArgs e)
16 {
}
protected void Button1_Click(object sender, EventArgs e)
{
string settings =
ng(tionStrings["ConnectionString"]);
SqlConnection cn0 = new SqlConnection(settings);
string usname=;
string pw =;
string strsql = "select * from userinfo where user_name = '" +
username + "' and user_password = '" + pw + "'";
string s1 = ;
string s2 = ;
if (s1 != s2)
{
("");
}
else
{
strsql = "update userinfo set user_password='" + s2 + "'
where user_name='" + username + "'";
}
("");
}
protected void Button2_Click(object sender, EventArgs e)
{
17 ct("");
}
}
3 实训总结
经过一周的实训与学习,我们终于把这个图书销售系统做出来了,虽然做得不是很完美,但是却是我们这个小组的每一个成员辛苦了一个星期的成果,我们为此感到开心。
我们这一组的都学得不是很好,上课听得也不是很明白,所以在刚开始做的时候,我们每一个人都认为这是一个不可能完成的任务,刚开始我们也想过要不要随便做点。可是后来看到其他组都在认真的做,我们想想也不能就这样放弃,至少也得试试,如果不会的话,就去请教会的同学和老师,学习不就是从不会到会的。
就这样,就这样我们开始了为期一星期的奋战。在这一周中也让我重新认识了这门课,让我对它产生了兴趣。
这次的实训让我学到了很多,同时也让我意识到我们要学的更多。从程序的设计到编写、调试、修改、完善、到最后的实训报告,每个人都付出了时间和精力去做好自己的任务帮助队友,所以团队的合作和队友之间的相互协助非常重要。通过实训让我们更深一步的对自己的专业,对自己的能力,对自己所学的有正确的认识,并且能在以后的学习工作中不断提高和完善自己。
18
发布评论