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