C语言程序设计销售管理系统.docx
- 文档编号:25854451
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:23
- 大小:89.85KB
C语言程序设计销售管理系统.docx
《C语言程序设计销售管理系统.docx》由会员分享,可在线阅读,更多相关《C语言程序设计销售管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
C语言程序设计销售管理系统
销售信息管理系统设计文档
组号:
第二组
成员:
汪品高齐瑞智 欧阳鑫赵飞锋章森
一.题目与要求
二.功能实现设计(模块化设计)
三.运行结果(附带抓图)
四.源程序
报告正文
1、题目与要求:
2、某公司有四个销售员(编号:
1-4),负责销售五种产品(编号:
1—5)。
每个销售员汇总当天出售得每种产品得销售情况。
2每天销售情况包括(销售员得代号、产品得代号、这种产品当天得销售额)
1、编写一个销售信息管理系统,读取上个月得销售情况
1、计算上个月没人每种产品得销售额
2、按销售额对销售员进行排序,输出排序结果(销售员代号)
3、统计每种产品得总销售额,对这些产品从高到低得顺序输出结果(须输出产品得代号与销售额)
4、输出统计报表
2、需求分析
本程序将用到文件系统E:
//54321、doc文件内容作为数据源,其中单行内容代表一张纸条.程序运行后首先将文件系统得原始数据读取并保存到程序得结构体数组当中,所以应提供文件输入得操作;由于纸条数据零散,所以要对原始数据进行分类操作并提供一个数组用于保存分类信息;在程序中要进行统计工作,所以要提供显示、排序等操作;另外应提供键盘式选择菜单实现功能选择。
3、功能实现设计
3、1总体设计
根据上面得分析,可以将这个系统分为如下五大模块:
查瞧每人每种产品得销售额、按销售额对销售员排序、对每种产品总销售额从高到低排序、输出统计报表与退出。
其中主要模块就是前四个模块.
3、2流程图
推出系统
ﻩ
3、3详细设计:
3、3、1【头文件与预定义】
#include〈stdio、h〉
#include
#include<stdlib、h〉
#include #define M 3、3、2【功能函数声明】 vvoiddetail(); voidforeach(); voidmenu(); voidproduct(); voidreaddata(); voidseller(); voidtotal(); voidchoice(); 3、3、3【数据结构】 原始数据有销售员代号、产品代号与销售额,所以定义一个全局结构体数组scrip用于保存原始数据。 然后定义全局变量n保存纸条数目,定义数组s用于保存分类后得信息。 structss { intsid;//销售员代号 int pid; //产品代号 intsn; //销售额 }ss[M]; intn; //纸条数目 ints[4][5]={{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}};//用于保存员工与产品信息 3、3、4【主函数】 显示程序设计者相关信息与调用文件读取函数、数据初始化函数与主菜单函数 void main()//入口函数,即主函数 { readdata();//读取文件数据 foreach();//根据文件初始数据初始化便于操作得数组 menu(); //显示主菜单 } 3、3、4-1【文件读取函数】readdata() 读出便条中得内容,并保存到文件结构体中 voidreaddata() //从文件读取数据 { ﻩFILE *fp;//定义文件指针 ﻩif((fp=fopen("list、txt”,"r”))==NULL) ﻩ{ ﻩprintf("Can'topenthe file! \n"); ﻩexit(0); ﻩ} else ﻩfor(n=0;! feof(fp);n++) ﻩ{ ﻩﻩfscanf(fp,”%d%d %d\n”,&ss[n]、sid,&ss[n]、pid,&ss[n]、sn); ﻩ}//保存文件数据到结构体 fclose(fp); } 3、3、4-2【文件读取函数】foreach() 将保存到结构体中得信息按产品分类,再根据销售员进行分类,将信息存到数组当中。 voidforeach() //从纸条读取数据并分类整理 { ﻩint i; ﻩfor(i=0;i〈n;i++) //遍历所有纸条 { ﻩswitch(ss[i]、pid) ﻩﻩ //按产品分大类(例如就就是case1-—5),根据大类分销售员小类,累加各人各产品销售数量 ﻩﻩ{ ﻩ case1: ﻩﻩﻩswitch(ss[i]、sid) ﻩ{ ﻩﻩﻩ case1: s[0][0]+=ss[i]、sn;break; case2: s[1][0]+=ss[i]、sn;break; ﻩﻩ case3: s[2][0]+=ss[i]、sn;break; ﻩ case4: s[3][0]+=ss[i]、sn;break; ﻩ} ﻩ break; ﻩﻩﻩ case2: ﻩﻩswitch(ss[i]、sid) ﻩﻩ{ ﻩﻩﻩcase 1: s[0][1]+=ss[i]、sn;break; ﻩ case2: s[1][1]+=ss[i]、sn;break; ﻩcase3: s[2][1]+=ss[i]、sn;break; ﻩcase 4: s[3][1]+=ss[i]、sn;break; ﻩﻩ} ﻩbreak; ﻩﻩcase 3: switch(ss[i]、sid) ﻩ{ ﻩ case1: s[0][2]+=ss[i]、sn;break; ﻩﻩcase2: s[1][2]+=ss[i]、sn;break; case3: s[2][2]+=ss[i]、sn;break; ﻩ case 4: s[3][2]+=ss[i]、sn;break; ﻩﻩ } ﻩﻩbreak; ﻩcase4: ﻩﻩﻩﻩswitch(ss[i]、sid) { ﻩﻩcase1: s[0][3]+=ss[i]、sn;break; ﻩ case 2: s[1][3]+=ss[i]、sn;break; ﻩﻩﻩ case3: s[2][3]+=ss[i]、sn;break; ﻩﻩ case4: s[3][3]+=ss[i]、sn;break; ﻩ} ﻩ break; ﻩﻩcase 5: ﻩﻩﻩswitch(ss[i]、sid) ﻩﻩﻩ{ ﻩﻩﻩ case1: s[0][4]+=ss[i]、sn;break; ﻩﻩﻩ case 2: s[1][4]+=ss[i]、sn;break; ﻩﻩ case3: s[2][4]+=ss[i]、sn;break; ﻩﻩ case 4: s[3][4]+=ss[i]、sn;break; ﻩ}; ﻩﻩbreak; } } } 3、3、4-3【主菜单函数】menu() 显示系统功能菜单以供用户选择相关功能使用,根据用户选择分别可调用 detail(): 计算上个月每个人每种产品得销售额 seller(): 按销售额对销售员进行排序,输出排序结果(销售员代号) product(): 统计每种产品得总销售额,对这些产品按从高到低得顺序输出排序结果(需输出产品代号与销售额) exit(0): 退出系统 void menu() { ﻩint w,c; ﻩdo{ puts("\t\t*********菜单*********************\n\n”); puts(”\t\t1、查瞧每人每种产品得销售额\n”); puts("\t\t 2、按销售额对销售员排序(销售员代号)\n"); puts(”\t\t3、对每种产品总销售额从高到低排序(产品代号与销售额)\n”); puts("\t\t4、输出统计报表\n"); puts("\t\t5、退出\n”); puts(”\n\n\t\t*********************************************\n”); printf(”请选择(1-5): []\b\b"); scanf("%d”,&c); if(c<1||c>5)//错误输入则重新获取输入 ﻩ { w=1 } elsew=0; }while(w==1); switch(c) //根据输入实现相应函数调用 { case1: detail();break;//每个销售员每种产品得销售额统计 case 2: seller();break; case 3: product();break; case 4: total();break; case5: exit(0); } } 3、3、5【功能函数】 5—1【每人每种产品销售额统计函数】detail() 计算上个月每个人每种产品得销售额 voiddetail() //显示销售情况 { inti,j; 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]); ﻩ} ﻩchoice(); } 3、3、5—1【销售员销售业绩排序函数】seller() 按销售额对销售员进行排序,输出排序结果(销售员代号) voidseller() { int i,j,k; intsp[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; ﻩﻩﻩﻩ//输出最大数与排名,将最大数标记为负 ﻩ} ﻩchoice(); } 3、3、5—2【总销售额统计函数】void product() 统计每种产品得总销售额,对这些产品按从高到低得顺序输出排序 voidproduct() //与seller()原理一样,用于对产品进行统计 { int i,j,k; ﻩintp[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; ﻩﻩ} ﻩchoice(); } 3、3、5-3【统计报表输出函数】total() 统计每种产品得总销售额,对这些产品按从高到低得顺序输出排序结果(需输出产品代号与销售额) void total() //输出报表 { inti,j; printf("\n\t销售员\t产品\t销量\n"); ﻩfor(i=0;i〈4;i++) ﻩfor(j=0;j〈5;j++) ﻩﻩprintf(”\t%d\t %d\t%d\n”,i+1,j+1,s[i][j]);ﻩ ﻩchoice(); } 3、3、6【公共函数】 【选择函数】choice() 选择退出系统或则返回主菜单 voidchoice()//用于输出信息功能选择 { intc; printf(”请选择接下来想做什么\t1〉返回菜单\t2>退出系统 [ ]\b\b”); scanf("%d",&c); if(c==1) menu(); else exit(0); puts('\n'); } 4、运行结果(附带抓图) List、txt(便条)文件中数据如下: (提前建立文件或就将便条保存在文件中! ! ! ! ! ) 111 1 2 2 133 1 48 159 21 3 2 23 2 34 24 5 25 6 31 1 321 (这就是个例子) 3 34 345 356 412 423 434 445 4 56 运行结果 显示主菜单: 查瞧每人每种产品得销售额运行结果: 按销售额对销售员按顺序排序(销售员代号)运行结果 对每种产品销售额从高到低排序运行结果: 统计报表运行结果: 6、源程序 #include<stdio、h> #include<conio、h〉 #include #include<string、h> #define M155/*宏定义*/ void detail(); voidforeach(); void menu(); voidproduct(); voidreaddata(); voidseller(); voidtotal(); voidchoice(); structss { intsid; //销售员代号 int pid;//产品代号 intsn; //销售额 }ss[M]; intn; //纸条数目 ints[4][5]={{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}};//用于保存员工与产品信息 voidmain()//入口函数,即主函数 { p readdata();//读取文件数据 foreach();//根据文件初始数据初始化便于操作得数组 menu(); //显示主菜单 } voidreaddata() //从文件读取数据 { ﻩFILE *fp; if((fp=fopen("list、txt","r"))==NULL) ﻩ{ ﻩprintf("Can'topenthefile! \n"); exit(0); } ﻩelse ﻩfor(n=0;! feof(fp);n++) ﻩ{ ﻩﻩfscanf(fp,”%d %d%d\n",&ss[n]、sid,&ss[n]、pid,&ss[n]、sn); ﻩ}//保存文件数据到结构体 fclose(fp); } voidforeach() //从纸条读取数据并分类整理 { ﻩinti; for(i=0;i { switch(ss[i]、pid) ﻩ //按产品分大类,根据大类分销售员小类,累加个人各产品销售数量 ﻩﻩ{ ﻩ case 1: ﻩ switch(ss[i]、sid) { ﻩﻩﻩcase1: s[0][0]+=ss[i]、sn;break; ﻩ case 2: s[1][0]+=ss[i]、sn;break; ﻩ case3: s[2][0]+=ss[i]、sn;break; ﻩ case4: s[3][0]+=ss[i]、sn;break; ﻩﻩ} ﻩﻩbreak; ﻩﻩcase2: ﻩﻩ switch(ss[i]、sid) ﻩﻩﻩ{ ﻩﻩﻩﻩcase1: s[0][1]+=ss[i]、sn;break; ﻩ case2: s[1][1]+=ss[i]、sn;break; ﻩ case3: s[2][1]+=ss[i]、sn;break; ﻩﻩﻩ case4: s[3][1]+=ss[i]、sn;break; ﻩﻩﻩ} ﻩﻩﻩbreak; ﻩﻩcase 3: ﻩﻩﻩswitch(ss[i]、sid) ﻩﻩ { ﻩﻩ case1: s[0][2]+=ss[i]、sn;break; ﻩ case2: s[1][2]+=ss[i]、sn;break; ﻩﻩcase3: s[2][2]+=ss[i]、sn;break; ﻩcase 4: s[3][2]+=ss[i]、sn;break; ﻩ} ﻩﻩﻩﻩ break; ﻩﻩcase4: ﻩﻩﻩswitch(ss[i]、sid) ﻩ{ ﻩﻩ case1: s[0][3]+=ss[i]、sn;break; ﻩﻩﻩ case2: s[1][3]+=ss[i]、sn;break; ﻩﻩ case3: s[2][3]+=ss[i]、sn;break; ﻩ case 4: s[3][3]+=ss[i]、sn;break; ﻩﻩﻩ} ﻩbreak; ﻩ case5: ﻩﻩ switch(ss[i]、sid) { ﻩﻩﻩcase 1: s[0][4]+=ss[i]、sn;break; ﻩcase2: s[1][4]+=ss[i]、sn;break; case 3: s[2][4]+=ss[i]、sn;break; ﻩ case4: s[3][4]+=ss[i]、sn;break; ﻩﻩ }; ﻩbreak; ﻩ} ﻩ} } voidmenu() { ﻩintw,c; do{ puts(”\t\t********************菜单*********************\n\n"); puts(”\t\t 1、查瞧每人每种产品得销售额\n"); puts(”\t\t2、按销售额对销售员排序(销售员代号)\n”); puts("\t\t3、对每种产品总销售额从高到低排序(产品代号与销售额)\n"); puts("\t\t4、输出统计报表\n"); puts("\t\t 5、退出\n"); puts("\n\n\t\t*********************************************\n”); printf(”请选择(1-5): [ ]\b\b"); scanf(”%d",&c); if(c<1||c〉5) //错误输入则重新获取输入 { w=1; getchar(); } elsew=0; }while(w==1); switch(c) //根据输入实现相应函数调用 { case1: detail();break;//每个销售员每种产品得销售额统计 case2: seller();break; case3: product();break; case4: total();break; case5: exit(0); } } voiddetail() //显示销售情况 { ﻩinti,j; 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]); } choice(); } void seller() { inti,j,k; ﻩintsp[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] ﻩﻩprintf("\t\t第%d名就是%d号销售员! \n",i+1,k+1);sp[k]=—1; ﻩﻩ //输出最大数与排名,将最大数标记为负 ﻩ} ﻩchoice();} voidproduct() //与seller()原理一样,用于对产品进行统计 {inti,j,k; ﻩintp[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;} ﻩchoice(); } voidtotal() //输出报表 {inti,j; ﻩprintf("\n\t销售员\t产品\t销量\n"); for(i=0;i<4;i++) ﻩfor(j=0;j<5;j++) printf(”\t%d\t%d\t%d\n",i+1,j+1,s[i][j]);ﻩ choice(); } voidchoice() //用于输出信息功能选择 { int c; printf(”请选择接下来想做什么\t1>返回菜单\t2>退出系统 [ ]\b\b"); scanf("%d”,&c); if(c==1) menu(); else exit(0); puts(’\n’); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 销售 管理 系统