销售管理终端数据结构课设c++.docx

上传人:b****5 文档编号:5633551 上传时间:2022-12-29 格式:DOCX 页数:22 大小:112.16KB
下载 相关 举报
销售管理终端数据结构课设c++.docx_第1页
第1页 / 共22页
销售管理终端数据结构课设c++.docx_第2页
第2页 / 共22页
销售管理终端数据结构课设c++.docx_第3页
第3页 / 共22页
销售管理终端数据结构课设c++.docx_第4页
第4页 / 共22页
销售管理终端数据结构课设c++.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

销售管理终端数据结构课设c++.docx

《销售管理终端数据结构课设c++.docx》由会员分享,可在线阅读,更多相关《销售管理终端数据结构课设c++.docx(22页珍藏版)》请在冰豆网上搜索。

销售管理终端数据结构课设c++.docx

销售管理终端数据结构课设c++

学号09770223

 

数据结构课程设计

设计说明书

销售管理系统

起止日期:

2011年12月12日至2011年12月16日

 

学生姓名

徐婷婷

班级

软件2班

成绩

指导教师(签字)

电子与信息工程系

2011年12月16日

天津城市建设学院

课程设计任务书

2011—2012学年第1学期

电子与信息工程系软件工程专业09级2班级

课程设计名称:

数据结构课程设计

设计题目:

销售管理系统

完成期限:

自2011年12月12日至2011年12月16日共1周

设计依据、要求及主要内容(可另加附页):

一、设计目的

熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。

二、设计要求

(1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;

(2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩。

凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入本课程设计成绩;

(3)学生在接受设计任务后,首先要按设计任务书的要求编写设计进程表;

(4)认真编写课程设计报告。

三、设计内容

销售管理系统

1)问题描述

 某公司有四个销售员(编号:

1-4),负责销售五种产品(编号:

1-5)。

每个销售员都将当天出售的每种产品各写一张便条交上来。

每张便条包含内容:

 

1)销售员的代号 

2)产品的代号 

3)这种产品的当天的销售额

  每位销售员每天可能上缴0-5张便条。

假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。

 

2)基本要求

1)计算上个月每个人每种产品的销售额。

2)按销售额对销售员进行排序,输出排序结果(销售员代号)

3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)

目录

一、需求分析3

二、问题求解4

三、总体设计5

四、详细设计6

五、调试与测试8

六、关键源程序清单和执行结果8

七、参考文献18

 

一、需求分析

程序的功能:

1)计算上个月每个人每种产品的销售额。

2)按销售额对销售员进行排序,输出排序结果(销售员代号)

3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)

输入:

销售情况

输出:

就是程序所要完成的功能

二、问题求解

1.输入销售情况

首先我会在纸上画出这样的一个表(表一),这个可以在程序中定义为结构体数组structBiantiaodata[N]。

然后对应着结构体里面的属性将销售情况的数据输入到结构体数组中。

这便是函数f1()的功能。

Sno

Pno

sum

month

1

2

3

10

4

3

8

1

2

5

9

1

3

1

11

1

2

4

12

1

3

4

6

7

表一

2.计算上个月每个人每种产品的销售额。

然后对这个结构体数组进行对每个销售员每种产品进行销售额的统计,这就是程序中的这块代码:

for(i=1;i<=R;i++)

for(j=1;j<=Z;j++)

{

intsum=0;

for(intk=0;k

if(data[k].month==m&&data[k].Sno==i&&data[k].Pno==j)

{

sum=sum+data[k].sum;所做的事情。

然后我将计算的结果存放在下面的一个表(表二)里。

这个表在程序中可以定义成一个二维数组:

intSum[R+1][Z+1];然后将数组里面的数据输出。

这便是函数f2()的功能。

产品代号(Pno)

销售员代号

(Sno)

1

2

3

4

5

1

0

3

0

0

0

2

0

0

0

12

9

3

11

0

0

6

0

4

0

0

8

0

0

表二

3.按销售额对销售员进行排序,输出排序结果(销售员代号)

然后题目中要求我按销售额对销售员进行排序,输出排序结果(销售员代号),于是我对上面的二维数组进行计算求每个销售员(行)的销售额。

这便是程序中这块代码for(i=1;i<=R;i++)

{

s=0;

for(j=1;j<=Z;j++)

{

s=s+Sum[i][j];所做的事情。

然后我将计算的结果按照销售员编号又写入到表一里,这就是程序中这块代码data[i].sum=s;所做的事情。

然后对结构体数组中按销售额进行排序,这就是程序中这块代码for(j=1;j<=R;j++)

{

data[j].Sno=j;

}

for(j=1;j<=R;j++)//使用冒泡排序法进行排序

{

for(i=1;i<=R-j;i++)

{

if(data[i].sum>data[i+1].sum)

{

k=data[i].Sno;//对销售员编号进行排序

data[i].Sno=data[i+1].Sno;

data[i+1].Sno=k;

temp=data[i].sum;//对销售额进行排序

data[i].sum=data[i+1].sum;

data[i+1].sum=temp;

}

}

}所的事情。

以上就是函数f3()完成的功能。

4.统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)

然后题目中要求我按每种产品进行销售额统计,其实这个跟第三个功能很类似,这是对二维数组里面的每种产品(列)进行销售额的统计。

只要将功能三的程序中行列换一下就行。

这便是f4()完成的功能。

三、总体设计

1.程序设计组成框图

 

2.程序设计流程图

 

四、详细设计

1、功能函数f1()

函数的功能:

计算上个月每个人每种产品的销售额

函数的入口:

从main()的switch()开关结构中进入,即choice的值为1时进入该函数,然后提示用户通过键盘对该月的员工销售情况进行数据的读入。

函数调用关系:

被主函数调用。

由switch()开关结构中进入,并在文中无返回值的空值void函数。

函数的出口:

当输入完数据,直接调用菜单,进行下一步的选择。

2、功能函数f2()

函数的功能:

计算上个月每个人每种产品的销售额

函数的入口:

从main()的switch()开关结构中进入,即choice的值为2时,进入该函数对数据的处理。

函数调用关系:

被主函数调用。

由switch()开关结构中进入,并在文中无返回值的空值void函数。

函数的出口:

处理完数据后,结果已经输出到屏幕上时,直接调用菜单,进行下一步的选择。

3、功能函数f3()

函数的功能:

按销售额对销售员进行排序,输出排序结果。

函数的入口:

程序从main()的switch()开关结构中进入,即choice的值为3时,开始进入该函数,进入函数后,利用冒泡排序法,按销售员的所选产品的总销售额对销售员进行排序。

函数调用关系:

被主函数调用。

由switch()开关结构中进入,并在文中无返回值的空值void函数。

函数的出口:

当输出排序结果显示在屏幕上,直接调用菜单,进行下一步的选择。

4、功能函数f4()

函数的功能:

统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)

函数的入口:

从main()的switch()开关结构中进入,即choice的值为4的时侯,进入该函数,然后统计每种产品的总销售额。

将计算后的总销售额进行排序,最终把排序的结果输出在屏幕上。

函数调用关系:

被主函数调用。

由switch()开关结构中进入,并在文中无返回值的空值void函数。

函数的出口:

当排序结果输出到屏幕上,直接调用菜单,进行下一步的选择。

图-写入销售数据界面

5、功能函数主菜单menu()

图-主菜单界面

函数的功能:

主要作用是提示用户操作,体现模块化思想,主要是显示出菜单让用户选择要进行的任务。

函数的入口:

从主函数main()中的system("pause");/*清屏命令*/menu();/*菜单函数提示用户怎样选择*/进入函数,这是直接被主函数main()调用的。

函数调用关系:

被主函数调用。

并在文中无返回值的空值void函数。

函数的出口:

执行完所有函数后选择菜单里面的选择操作可以退出该函数。

6、功能函数主函数main()

软件进入提示页面

函数的功能:

用于联系各个功能函数模块,以及退出程序时的退出画面提示。

函数的入口:

整个程序是从主函数开始的。

函数的出口:

当从main()的switch()开关结构中进入,即choise的值为5时通过break;跳出for循环,然后退出main()函数,即:

退出整个程序。

函数调用关系:

该函数不被其它函数调用

五、调试与测试

在写程序的过程中,大大小小的问题其实是很多的,然后进行不断的修改,才使程序最终几乎达到完美。

在写程序时,有些错误是一眼就能看出的,但也有很多是很难发现的,于是我就使用单步调试法进行调试。

六、关键源程序清单和执行结果

源程序:

#include

usingnamespacestd;

#defineN100

#defineZ5//定义宏常量便于程序的一般化,Z表示产品的个数

#defineR4//R表示销售员个数

structBiantiao

{

intSno;

intPno;

intsum;

intmonth;

};

intSum[R+1][Z+1];

structBiantiaodata[N];

intNUM=0;

intA[R];

voidmenu()

{

cout<<"\t┏━━━━━━━━━━━━主菜单━━━━━━━━━━┓\n"<

cout<<"\t┃1.输入销售情况┃\n"<

cout<<"\t┃2.计算上个月每个人每种产品的销售额┃\n"<

cout<<"\t┃3.按销售量对销售员进行排序,输出排序结果┃\n"<

cout<<"\t┃4.统计每种产品的总销售额,输出排序结果┃\n"<

cout<<"\t┃5.结束操作┃\n"<

cout<<"\t┗━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"<

}

voidf1()

{

intj;//用于定义职工序号,产品序号,产品数量,月份

cout<<"请输入便条数目:

"<

cin>>NUM;//输入便条数目

for(j=0;j

{

cout<<"请输入:

\n职工编号产品编号销售数量月份\n"<

cin>>data[j].Sno>>data[j].Pno>>data[j].sum>>data[j].month;

}

}

voidf2()

{

inti,j,m;

cout<<"你想计算哪个月?

"<

cout<<"请您输入月份:

"<

cin>>m;//输入月份

//对每个人每种产品进行销售额统计

for(i=1;i<=R;i++)

for(j=1;j<=Z;j++)

{

intsum=0;

for(intk=0;k

if(data[k].month==m&&data[k].Sno==i&&data[k].Pno==j)

{

sum=sum+data[k].sum;

Sum[i][j]=sum;//统计的结果存放在二维数组Sum里面

}

}

cout<<"输出该月每个人每种产品的销售额如下:

\n"<

cout<<"销售员代号产品代号销售之和\n"<

for(i=1;i<=R;i++)

for(j=1;j<=Z;j++)

{

cout<

}

}

 

voidf3()

{

intk=0;

inti,j,m,temp;

cout<<"你要哪个月的?

\n"<

cout<<"请输入月份:

"<

cin>>m;//输入月份

ints=0;

for(i=1;i<=R;i++)

{

s=0;

for(j=1;j<=Z;j++)

{

s=s+Sum[i][j];//对二维数组里面的每个销售员进行销售额统计

data[i].sum=s;//计算的销售额之和存放在结构体数组中

}

}

for(j=1;j<=R;j++)

{

data[j].Sno=j;

}

for(j=1;j<=R;j++)//使用冒泡排序法进行排序

{

for(i=1;i<=R-j;i++)

{

if(data[i].sum>data[i+1].sum)

{

k=data[i].Sno;//对销售员编号进行排序

data[i].Sno=data[i+1].Sno;

data[i+1].Sno=k;

temp=data[i].sum;//对销售额进行排序

data[i].sum=data[i+1].sum;

data[i+1].sum=temp;

}

}

}

cout<<"从低到高的排序结果为:

"<

for(intl=1;l<=R;l++)

{cout<<"员工"<

销售额为:

"<

}

}

 

voidf4()

{

intk=0;

inti,j,m,temp;

cout<<"你要哪个月的?

\n"<

cout<<"请输入月份:

"<

cin>>m;

ints=0;

for(i=1;i<=Z;i++)

{

s=0;

for(j=1;j<=R;j++)

{

s=s+Sum[j][i];//对二维数组里面的每个产品进行销售额统计

data[i].sum=s;//计算的销售额之和存放在结构体数组中

}

}

for(j=1;j<=Z;j++)

{

data[j].Pno=j;

}

for(i=1;i<=Z;i++)//使用冒泡排序法进行排序

{

for(j=1;j<=Z-i;j++)

{

if(data[j].sum

{

k=data[j].Pno;//对产品编号进行排序

data[j].Pno=data[j+1].Pno;

data[j+1].Pno=k;

temp=data[j].sum;//对销售额进行排序

data[j].sum=data[j+1].sum;

data[j+1].sum=temp;

}

}

}

cout<<"从高到低的排序结果为:

"<

for(intl=1;l<=Z;l++)

{cout<<"产品号"<

销售额为:

"<

}

}

 

voidmain()

{

inti,choice;

cout<<"\n\n\n\n\n\n\t━━━━━━━━━━━━━━━━━━━━━━━━━\n"<

cout<<"\t---------------欢迎进入商品销售系统!

-------------\n"<

cout<<"\t━━━━━━━━━━━━━━━━━━━━━━━━━\n"<

cout<<"\n\n\n\n\n\n\t\t\t按任意键进入主菜单!

"<

system("pause");

for(i=0;;i++)

{

menu();//主菜单函数提示用户怎样选择

cout<<"你想做什么?

\n"<

cout<<"请选择:

"<

cin>>choice;

if(choice==5)

{

cout<<"\n\n\n\n\n\n\t━━━━━━━━━━━━━━━━━━━━━━━━━\n\n"<

cout<<"\t---------------谢谢使用商品销售系统!

-------------\n\n"<

cout<<"\t━━━━━━━━━━━━━━━━━━━━━━━━━\n\n"<

cout<<"\n\n\n\n\n\n\t\t\t按任意键退出!

(^.^)"<

break;//退出整个程序

}

else

switch(choice)

{

case1:

f1();break;//输入销售情况

case2:

f2();break;//计算上个月每个人每种产品的销售额

case3:

f3();break;//按销售量对销售员的销售情况进行排序,并且输出排序的结果

case4:

f4();break;//统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)

}

}

}

执行结果:

 

七、参考文献

1.王红梅.数据结构.清华大学出版社

2.王红梅.数据结构学习辅导与实验指导.清华大学出版社

3.严蔚敏,吴伟民.数据结构(C语言版).清华大学出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1