当前位置:文档之家› 销售管理系统

销售管理系统

C语言课程设计实验报告学院:计算机学院
专业:网络工程
班级:
题目:销售管理系统
学号:
姓名:
指导老师:
销售管理系统
母公司有四个销售员(编号1-4),负责销售五种产品(编号1-5)。

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

每张便条包含的内容:
1:销售员的代号。

2:产品的代号
3:这种产品当天的销售额。

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

假设收集到上个月的所有便条,;编写一个处理程序,读取上个月的销售情况,进行如下处理。

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

2:按销售额对销售员进行排序》
3:统计每种产品的总销售额,对这些产品按从高到低的顺序输出排序结果(需输出产品的代号和销售额)
4:输出统计报表。

用一个结构体scrip来保存每张便条,scrip[M]中的M为便条的个数,程序中采用宏定义的方式,#define N 20.
struct scrip
{ int sid; /*sid是销售员代号*/
int pid; /*pid是产品的代号*/
int sn; /*sn是销售额*/
}scrip[M];
可以用一个二维数组s[4][5]来保存每张便条具体信息,主函数分为三部分。

销售信息以文件的形式保存
main()
{
readdate(); /*读取文件信息*/
foreach(); /*处理*/
menu(); 显示主菜单
}
用函数readdate()来读取文件信息
readdate()
{
FILE *fp;
if((fp=fopen("list.txt","r"))==NULL)
printf("can't open the file !\n");
else
for(n=0;!feof(fp);n++)
{
fscanf(fp,"%d%d%d\n",&scrip[n].pid,&scrip[n].sid,&scrip[n].s
n);fclose(fp);}
}
用函数foreach()从便条读取数据并保存到二维数组s[4][5]
foreach()
{int i;
for(i=0;i<n;i++)
{
switch(scrip[i].sid)
{case 1:switch(scrip[i]
{case 1:s[0][0]+=scrip[i].sn;break;
case 2:s[1][0]+=scrip[i].sn;break;
case 3:s[2][0]+=scrip[i].sn;break;
case 4:s[3][0]+=scrip[i].sn;break;} break;
case 2:switch(scrip[i].sid)
{ case 1:s[0][1]+=scrip[i].sn;break;
case 2:s[1][1]+=scrip[i].sn;break;
case 3:s[2][1]+=scrip[i].sn;break;
case 4:s[3][1]+=scrip[i].sn;break;} break;
case 3:switch(scrip[i].sid)
{ case 1:s[0][2]+=scrip[i].sn;break;
case 2:s[1][2]+=scrip[i].sn;break;
case 3:s[2][2]+=scrip[i].sn;break;
case 4:s[3][2]+=scrip[i].sn;break;} break;
case 4:switch(scrip[i].sid)
{ case 1:s[0][3]+=scrip[i].sn;break;
case 2:s[1][3]+=scrip[i].sn;break;
case 3:s[2][3]+=scrip[i].sn;break;
case 4:s[3][3]+=scrip[i].sn;break;} break;
case 5:switch(scrip[i].sid)
{ case 1:s[0][4]+=scrip[i].sn;break;
case 2:s[1][4]+=scrip[i].sn;break;
case 3:s[2][4]+=scrip[i].sn;break;
case 4:s[3][4]+=scrip[i].sn;break;} break;
}
}
}
用menu()函数来显示主菜单
menu()
{
int w,c; /*c用来保存选择菜单数字*/
do{
puts("\t\t*************MENU******************\n\n"); puts("\t\t 1: 查看每人每种产品的销售额\n");
puts("\t\t 2:按销售额对销售员进行排序\n");
puts("\t\t 3:对每种产品总销售额冲高到低排序\n");
puts("\t\t 4:输出统计报表\n");
puts("\t\t 5: 退出\n");
puts("\n\n\t\t********************************\n"); printf("chose your number(1-5):[]\b\b");
scanf("%d",&c);
if(c<1||c>5) /*对选择数字做判断*/
{
w=1;
getchar();
}
else w=0;
}while( w==1);
switch(c)
{
case 1:detail() ; break;
case 2:seller(); break;
case 3:product();break;
case 4:total();break;
case 5:exit(0);
}
}
用detial()函数来显示每个人的销售情况。

detail()
{
int i,j;
void menu();
for(i=0;i<4;i++)
{printf("\n\t\t%d号销售员的情况是:\n",i+1);
for(j=0;j<5;j++)
printf("\t\t%d号产品销售数量:%d\n",j+1,s[i][j]);
}
wait();
}
用seller()来计算每个销售员的销售数量,并用选择排序法进行由大到小排序。

seller()
{
int i,j,k;
int sp[4]={0,0,0,0};
for(i=0;i<4;i++)for(j=0;j<5;j++)
sp[i]+=s[i][j];
for(i=0;i<4;i++)
{
k=0;
for(j=0;j<4;j++)if(sp[k]<sp[j]);k=j;
printf("\t\t第%d名是%d号销售员!\n",i+1,k+1);
sp[k]=-1;
}
wait();
}
用product()函数来计算产品的销售数量,并用选择法排序。

product()
{
int i,j,k;
void menu();
int p[5]={0,0,0,0,0};
for(j=0;j<5;j++)for(i=0;i<4;i++)p[j]+=s[i][j];
for(j=0;j<5;j++)
{
k=0;
for(i=0;i<5;i++)
if(p[k]<p[i])k=i;
printf("\t\t第%d名是%d号产品!\t销售量为%d!\n",j+1,k+1,
p[k]);p[k]=-1
wait();
}
用total()输出统计报表
total()
{
printf("\n\t销售员\t产品\t销售量\n");
int i,j;
for(i=0;i<4;i++)for(j=0;j<5;j++)
printf("\t%d\t%d",i+1,j+1,s[i][j]);;
wait();
}
Wait()用于输出信息后等待,通过getchar()等待输入并提供相关信息,完成后调用菜单menu.
wait()
{
menu();
printf("\n\t\t按回车键返回主菜单...\n\n");
getchar();
运行如下:
输入1,查看每人每种产品的销售额。

输入2,对销售员进行排序;
输入3对产品排序。

输入4 输出统计报表
然后退出程序。

程序中没有便条文件list.txt。

故未能显示运行的完整过程。

相关主题