C语言程序设计销售管理系统
销售信息管理系统设计文档组号:第二组成员:汪品高 齐瑞智 欧阳鑫 赵飞锋 章森目录题目与要求 功能实现设计(模块化设计) 运行结果(附带抓图)报告正文1、题目与要求 :1-4 ),负责销售五种产品(编号:1-5 )。
每个销售员 汇总当天出售的每种产品的销售情况。
2 每天销售情况包括(销售员的代号、 产品的代号、这种产品当天的销售额)按销售额对销售员进行排序,输出排序结果(销售员代号)四.源程序1、 编写一个销售信息管理系统,读取上个月的销售情况1、 计算上个月没人每种产品的销售额2、某公司有四个销售员(编号: 2、3、 统计每种产品的总销售额,对这些产品从高到低的顺序输出结果(须输出产品的代号和销售额)2、需求分析本程序将用到文件系统 E://54321.doc 文件内容作为数据源,其中单行内容代表一张纸 条。
程序运行后首先将文件系统的原始数据读取并保存到程序的结构体数组当中,所以应 提供文件输入的操作;由于纸条数据零散,所以要对原始数据 进行分类操作并提供一个数 组用于保存分类信息;在程序中要进行统计工作,所以要提供显示、排序等操作;另外应 提供键盘式选择菜单实现功能选择。
3、功能实现设计3.1总体设计根据上面的分析,可以将这个系统分为如下五大模块: 查看每人每种产品的销售额对每种产品总销售额从高到低排序、 输出统计报表和退出。
其中主要模块是前四个模块。
3.2流程图推出系统3.3详细设计: 4、输出统计报表按销售额对销售员排序、 读取便条上的▼331【头文件和预定义】#in cludevstdio.h>#in clude<c oni o.h>#in clude<stdlib.h>主菜单#i ncludevstri ng.h>#defi ne M3.3.2【功能函数声明】vvoid detail();void foreach();void menu();每个人每销售员销售统计总销售输出统计表void P roduct();void readdata();void seller();void total();void choice();退出系返回主产品代号和销售额,所以定义一个全局结构体数组scriP 用于保存 原始数据。
然后定义全局变量n 保存纸条数目,定义数组s 用于保存分类后的信息。
struct ss333【数据结构】原始数据有销售员代号、 int sid; // 销售员代号int pid; // 产品代号int sn; // 销售额int n; // 纸条数目int s[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() // 入口函数,即主函数readdataO; // 读取文件数据foreach(); // 根据文件初始数据初始化便于操作的数组men u(); // 显示主菜单334-1【文件读取函数】readdataO读出便条中的内容, 并保存到文件结构体中void readdataO // 从文件读取数据FILE *fp; // 定义文件指针if((fp=fo pen( "list.txt","广))==NULL)prin tf("Ca n't o pen the file!\n");exit(0);elsefor(n=0; feof—;n++)case 1:fscan f(fp,"%d %d %d\n",&ss[ n].sid,&ss[ n].p id,&ss[ n].s n);} // 保存文件数据到结构体fclose(fp);334-2【文件读取函数】foreachO 将保存到结构体中的信息按产品分类,再根据销售员进行分类,将信息存到数组当中。
switch(ss[i]. pid)按产品分大类(例如就是case1--5),根据大类分销售员小类,累加各人各产品销售数量void foreach()// 从纸条读取数据并分类整理 int i;for(i=0;i< n; i++) // 遍历所有纸条//switch(ss[i].sid)case 1:s[0][0]+=ss[i].sn;break;case 2:s[1][0]+=ss[i].sn;break;case 3:s[2][0]+=ss[i].sn;break;case 4:s[3][0]+=ss[i].sn;break;break;case 2:switch(ss[i].sid)case 1:s[0][1]+=ss[i].sn;break;case 2:s[1][1]+=ss[i].sn;break;case 3:s[2][1]+=ss[i].sn;break;case 4:s[3][1]+=ss[i].sn;break;}break;case 3:switch(ss[i].sid)case 1:s[0][2]+=ss[i].sn;break;case 2:s[1][2]+=ss[i].sn;break;case 3:s[2][2]+=ss[i].sn;break;case 4:s[3][2]+=ss[i].sn;break;break;case 4:switch(ss[i].sid)case 1:s[0][3]+=ss[i].sn;break;case 2:s[1][3]+=ss[i].sn;break;case 3:s[2][3]+=ss[i].sn;break;case 4:s[3][3]+=ss[i].sn;break;break;case 5:switch(ss[i].sid)case 1:s[0][4]+=ss[i].sn;break;case 2:s[1][4]+=ss[i].sn;break;case 3: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{菜单 *********************\n\n");puts("\t\t*********puts("\n\n\t\t*********************************************\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");printf(" 请选择(1-5):[ ]\b\b");sea nf("%d",&c);case 1:case 2: seller();break;case 3: p roduct();break;if(cv1||c>5) // 错误输入则重新获取输入 w=1 else w=0; } while(w==1);switch(c) //根据输入实现相应函数调用.detail();break;//每个销售员每种产品的销售额统计case 4:total();break;case 5:exit(0);3.3.5 【功能函数】5-1【每人每种产品销售额统计函数】detail()计算上个月每个人每种产品的销售额void detail() // 显示销售情况int i,j;for(i=0;i<4;i++) // 遍历销售员printf("\n\t\t%d 号销售员销售情况 :\n",i+1);for(j=0;j<5;j++)// 按销售员分类遍历所有产品并显示信息号产品销售数量:%d\n",j+1, s[i][j]);choiceO;335-1【销售员销售业绩排序函数】sellerO 按销售额对销售员进行排序,输出排序结果(销售员代号) void sellerOint 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;iv4;i++) //比较四次,每次选出最大数{ k=0;//用于标记单轮最大数for(j=0;jv4;j++) if(s p[ k]vs p[j])k=j; // printf("\t\t 第%£|名是%4号销售员!\n",i+1,k+1);sp[k]=-1;//输出最大数和排名,将最大数标记为负choiceO;335-2【总销售额统计函数】void p roduct()统计每种产品的总销售额,对这些产品按从高到低的顺序输出排序int i,j,k; int p [5]={0,0,0,0,0};for(j=0;j<5;j++)for(i=0;i<4;i++)获取最大数标号void p roduct() // 与sellerO 原理一样,用于对产品进行统计第 %d 名 是 %d 号 产 品 !\t 销 量 为 %d!\n",j+1,k+1, p[k]); p[k]=-1;choice();3.3.5-3 【统计报表输出函数】 total() 统计每种产品的总销售额,对这些产品按从高到低的顺序输出排序结果(需输出产品代号和销售额){ int i,j;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("\n\t 销售员\t 产品\t 销量\n");printf("\t\t void total() //输出报表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() 选择退出系统或则返回主菜单void choice() // 用于输出信息功能选择int c;printf(" 请选择接下来想做什么 \t1> 返回菜单 \t2> 退出系统 [ ]\b\b"); scanf("%d",&c);if(c==1) menu();elseexit(0);puts('\n');4、运行结果(附带抓图)List.txt (便条)文件中数据如下:(提前建立文件或就将便条保存在文件中!!!!!)3 2 1 (这是个例子)运行结果显示主菜单:查看每人每种产品的销售额运行结果:按销售额对销售员按顺序排序(销售员代号)运行结果对每种产品销售额从高到低排序运行结果:统计报表运行结果:6源程序#in cludevstdio.h>#in clude<c oni o.h>#in clude<stdlib.h> /* 调用exit函数*/#in clude<stri ng.h>#defi ne M 155 /* 宏定义*/voiddetail();void foreach();void menu();void product();void readdata();voidseller();voidtotal();void choice();structss销售员代号int sid;//产品代号int pid;//销售额int sn;//}ss[M];int n; // 纸条数目用于保存员工ints[4][5]={{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}};}readdata(); //读取文件数据menu(); //显示主菜单FILE *fp;if((fp=fopen("list.txt","r"))==NULL)printf("Can't open the file!\n");exit(0);和产品信息void main() // 入口函数 , 即主函数foreach(); //根据文件初始数据初始化便于操作的数组void readdata()// 从文件读取数据{elsefor(n=0;!feof(fp);n++)fscanf(fp,"%d %d %d\n",&ss[n].sid,&ss[n].pid,&ss[n].sn);} // 保存文件数据到结构体fclose(fp);int i;switch(ss[i].pid)按产品分大类,根据大类分销售员小类,累加个人各产品销售数量for(i=0;i<n;i++) //遍历所有纸条void foreach()// 从纸条读取数据并分类整理//case 1:switch(ss[i].sid)case 1:s[0][0]+=ss[i].sn;break;case 2:s[1][0]+=ss[i].sn;break;case 3:s[2][0]+=ss[i].sn;break;case 4:s[3][0]+=ss[i].sn;break;break;case 2:switch(ss[i].sid)case 1:s[0][1]+=ss[i].sn;break;case 2:s[1][1]+=ss[i].sn;break;case 3:s[2][1]+=ss[i].sn;break;case 4:s[3][1]+=ss[i].sn;break;}break;case 3:switch(ss[i].sid)case 1:s[0][2]+=ss[i].sn;break;case 2:s[1][2]+=ss[i].sn;break;case 3:s[2][2]+=ss[i].sn;break;case 4:s[3][2]+=ss[i].sn;break;break;case 4:switch(ss[i].sid)case 1:s[0][3]+=ss[i].sn;break;case 2:s[1][3]+=ss[i].sn;break;}}}case 3:s[2][3]+=ss[i].sn;break;case 4:s[3][3]+=ss[i].sn;break;break;case 5:switch(ss[i].sid)case 1:s[0][4]+=ss[i].sn;break;case 2:s[1][4]+=ss[i].sn;break;case 3:s[2][4]+=ss[i].sn;break;case 4:s[3][4]+=ss[i].sn;break;};break;void menu()int w,c;do{puts("\t\t******************** 菜单 *********************\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(" 请选择(1-5):[ ]\b\b");scanf("%d",&c);if(c<1||c>5) // 错误输入则重新获取输入w=1;case 2:seller();break;case 3:product();break;case 4:total();break;case 5: exit(0);getchar();else w=0;} while(w==1);switch(c) // 根据输入实现相应函数调用 case 1: detail();break;//每个销售员每种产品的销售额统计{int i,j;printf("\n\t\t%d 号销售员销售情况 :\n",i+1); for(j=0;j<5;j++)void detail() // 显示销售情况for(i=0;i<4;i++) //遍历销售员// 按销售员分类遍历所有产品并显示信息choice();void seller()printf("\t\t%d 号产品销售数量 :%d\n",j+1,s[i][j]);for(j=0;j<4;j++)第%£名是%£|号销售员!\n",i+1,k+1);sp[k]=-1; // 输出最大数和排名,将最大数标记为负choice();}{ int i,j,k;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;// 用于标记单轮最大数if(sp[k]<sp[j])k=j; //获取最大数标号printf("\t\tvoid product()// 与 seller() 原理一样,用于对产品进行统计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;}choice();void total() // 输出报表{ int i,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();void choice() // 用于输出信息功能选择int c;printf(" 请选择接下来想做什么 \t1> 返回菜单 \t2> 退出系统 [ ]\b\b"); scanf("%d",&c);if(c==1) menu();else exit(0);puts('\n');}。
c语言课程设计销售管理系统
c语言课程设计销售管理系统一、教学目标本章节的教学目标旨在让学生掌握C语言编程基础,能够运用C语言设计销售管理系统。
具体目标如下:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基础知识,了解结构体和文件操作等相关概念。
2.技能目标:学生能够运用C语言进行程序设计,具备编写和调试C语言程序的能力。
学生能够运用结构体设计销售管理系统的相关数据结构,并使用文件操作实现数据的持久化存储。
3.情感态度价值观目标:学生能够体验到编程的乐趣,培养对计算机科学的兴趣。
通过完成销售管理系统的项目,培养学生的创新能力和团队合作意识。
二、教学内容本章节的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数等基础知识,以及结构体和文件操作等相关概念。
具体安排如下:1.C语言基本语法和数据类型:介绍C语言的基本语法规则,包括变量声明、数据类型、运算符等。
2.控制结构:讲解条件语句和循环语句的用法,包括if语句、switch语句、for循环、while循环等。
3.函数:介绍函数的定义和调用,包括主函数、参数传递、返回值等。
4.结构体:讲解结构体的定义和使用,包括结构体的声明、成员访问、结构体数组等。
5.文件操作:介绍文件操作的基本方法,包括文件的打开、读写、关闭等。
6.销售管理系统的实现:引导学生运用所学知识设计和实现一个简单的销售管理系统,包括数据结构的设计、功能的实现和文件的操作。
三、教学方法本章节的教学方法采用讲授法、案例分析法和实验法相结合的方式。
具体安排如下:1.讲授法:教师通过讲解C语言的基本语法、数据类型、运算符、控制结构、函数等基础知识,引导学生理解和掌握相关概念。
2.案例分析法:教师通过分析典型的销售管理系统的案例,引导学生运用所学知识进行系统设计和功能实现。
3.实验法:教师引导学生进行实验,让学生亲自动手编写和调试C语言程序,培养学生的编程能力和解决问题的能力。
C语言课程设计销售管理系统报告(大全五篇)
C语言课程设计销售管理系统报告(大全五篇)第一篇:C语言课程设计销售管理系统报告报告正文1、题目与要求:1.1 某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。
每个销售员都将当日出售的每种产品各写一张便条交上来。
每张便条内容有•销售员的代号•产品的代号•这种产品当天的销售额1.2 每位销售员每天可能上缴0-5张便条。
假设手机到了上个月的所有便条,编写一个处理系统,读取上月的销售情况(自己设定),进行如下处理:•计算上个月没人每种产品的销售额•按销售额对销售员进行排序,输出排序结果(销售员代号)•统计每种产品的总销售额,对这些产品从高到低的顺序输出结果(须输出产品的代号和销售额)•输出统计报表2、需求分析本程序将用到文件系统,list.txt文件内容作为数据源,其中单行内容代表一张纸条。
程序运行后首先将文件系统的原始数据读取并保存到程序的结构体数组当中,所以应提供文件输入的操作;由于纸条数据零散,所以要对原始数据进行分类操作并提供一个数组用于保存分类信息;在程序中要进行统计工作,所以要提供显示、排序等操作;另外应提供键盘式选择菜单实现功能选择。
3、功能实现设计3.1总体设计根据上面的分析,可以将这个系统分为如下五大模块:查看每人每种产品的销售额、按销售额对销售员排序、对每种产品总销售额从高到低排序、输出统计报表和退出。
其中主要模块是前四个模块。
3.2流程图3.3详细设计:3.3.1【头文件和预定义】 #include #include#include #include #define M 155 3.3.2【功能函数声明】 void detail(); void foreach(); void menu(); void product(); void readdata(); void seller(); void total(); void choice(); 3.3.3【数据结构】原始数据有销售员代号、产品代号和销售额,所以定义一个全局结构体数组scrip用于保存原始数据。
销售管理系统c语言课程设计
销售管理系统c语言课程设计一、课程目标知识目标:1. 理解C语言在销售管理系统中的应用场景和优势;2. 掌握C语言基本语法和数据结构,如数组、结构体、文件操作等;3. 学会使用C语言实现销售管理系统的基本功能,如商品信息管理、销售记录管理、数据查询等。
技能目标:1. 培养学生运用C语言解决实际问题的能力;2. 提高学生分析需求、设计系统、编写代码、调试程序的能力;3. 培养学生团队协作、沟通表达和解决问题的能力。
情感态度价值观目标:1. 培养学生对编程和计算机科学的兴趣,激发学生的创新意识;2. 增强学生的自信心,培养学生面对困难勇于挑战的精神;3. 引导学生关注社会热点问题,理解销售管理系统在现实生活中的应用,培养学生的社会责任感。
课程性质:本课程为实践性较强的课程,以项目为导向,结合实际应用场景,培养学生的编程能力和解决实际问题的能力。
学生特点:学生已经具备C语言基础知识和一定的编程能力,对实际项目有一定的了解,但可能缺乏项目实战经验。
教学要求:注重理论与实践相结合,以项目为主线,引导学生主动探究,培养其编程思维和实际操作能力。
将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. C语言基础回顾:数据类型、运算符、控制结构、函数等基本概念;2. 销售管理系统需求分析:介绍系统功能模块,如商品管理、销售记录、用户管理等;3. 数据结构设计:数组、结构体、链表等在销售管理系统中的应用;4. 文件操作:文件的打开、读取、写入和关闭,实现数据的持久化存储;5. 销售管理系统功能实现:分别实现商品信息管理、销售记录管理、数据查询等功能;- 商品信息管理:添加、修改、删除商品信息;- 销售记录管理:记录销售数据,实现销售统计;- 数据查询:根据需求查询商品信息和销售记录;6. 系统测试与优化:对销售管理系统进行功能测试、性能测试和优化;7. 项目总结与评价:总结项目实施过程中的经验和教训,进行自我评价和互相评价。
C语言编写的销售管理系统
printf("................................................................................");
printf(" 退出主界面请按 0\n");
int chushihua() //初始化函数
{
int i=0,j=0;
for(i=0;i<M;i++)
{
suml[i].number=lackl[i].number=base[i].number=-1;
base[i].amount=0;
#include<stdio.h> //头文件
#include<string.h> //头文件
#include<stdlib.h> //头文件
#define M 100 //货物种类
#define N 100 //顾客数目
struct goods //单个货物信息格式
fprintf(fp," 本销售系统仅是一个销售部门管理系统的的简单模型,功能少,不太稳定,不太安全。\n");
fprintf(fp," 主要分为三个模块。客户--销售部门--公司经理。\n");
fprintf(fp," 1--客户。客户主要是通过该系统进行订货。进入系统后,需要注册,登陆。系统会自主分配\n");
printf("\n");
printf("..............................................................................\n");
c语言销售管理系统
C语言销售管理系统—课设满分作品带报表和折线图显示#include<stdio.h>#include<windows.h>#include<wincon.h>#include<string.h>#include<stdlib.h>#include<conio.h>#include<math.h>#define NULL 0CONSOLE_SCREEN_BUFFER_INFO csbiInfo;extern WINBASEAPI HWND WINAPI GetConsoleWindow();void input();//实现手动输入销售信息void menu();//程序菜单主界面显示void daoru(); //函数声明void seek();//销售信息查询void save();//销售信息保存void del();//销售信息删除void def();//销售信息初始化void history(people);//实现销售历史查询void clear();//实现清屏void filepath();//判断是否为默认文件位置,及询问是否要求修改文件位置void baobiao();//打印报表void txt(zx);//折线图void sxt(g1, g2, g3, g4, g5);//扇形图int ghj = 1;int file_choose = 0;//文件导入初始状态 //全局变量char filename[30] = "sell.txt";//默认文件位置int price[5] = { 2, 2, 2, 2, 2 }; //默认商品价格struct good{int num;//产品编号int f_name[10];//产品名称float price;//产品价格商品属性int date;//销售日期int sum;//销售数量} good[5]; // 定义商品属性结构体,及五个商品struct seller{int num;//销售员编号char name[8];//销售员姓名char sex;//销售员性别struct good good[5]; //五种商品} sell[4]; //定义销售员结构体,及四个销售员struct day{struct seller sell[4];} d[31];struct year{struct day d[31];} m[12];int main(int argc, char* argv[]){int x = 0;x = MessageBox(NULL, "欢迎使用销售管理系统\n作者:xx\n班级:xxxx", "欢迎", MB_YESNO);if (x == 6) menu();return 0;}/************************************************************函数名:daoru()*描述:从文件导入数据*入口参数:无;*出口参数:无;******************************************************************/void daoru(){FILE *fp;int i, day, month;if ((fp = fopen(filename, "r")) == NULL){printf("文件不存在!");return;}for (month = 0; month<12; month++)for (day = 0; day<31; day++) //把文件读取到内存中for (i = 0; i<4; i++)fscanf(fp, "%6d%6d%6d%6d%6d\n", &m[month].d[day].sell[i].good[0].sum,&m[month].d[day].sell[i].good[1].sum, &m[month].d[day].sell[i].good[2].sum,&m[month].d[day].sell[i].good[3].sum, &m[month].d[day].sell[i].good[4].sum);fclose(fp);}/************************************************************函数名:inpit()*描述:数据的手动输入*入口参数:无;*出口参数:无;******************************************************************/void input(){int i = 0, day = 0, x = 0, month = 0;filepath();daoru();//文件导入及判断printf("请输入要查找的日期如1 1即一月一日:");scanf("%d%d", &month, &day);month--;day--;////保持实际时间与数组一致printf("请输入销售人员编号:\n1:xx 2:xx 3:xx 4:xx:");scanf("%d", &i);i--;printf("请输入具体要录入的商品种类1~5对应商品1-5:"); //用于查找所需的具体数据scanf("%d", &x);x--;printf("输入销售数量:");scanf("%d", &m[month].d[day].sell[i].good[x].sum);printf("完成!");save();}/************************************************************函数名:seek()*描述:查找*入口参数:无;*出口参数:无;******************************************************************/void seek(){char ch;int i = 0, j = 0, choose = 0, day = 0, t = 0, all = 0, month;filepath();daoru();printf("请输入要查找的日期如1 1即一月一日:");scanf("%d%d", &month, &day);month--;day--;//保持实际时间与数组一致printf("请输入销售人员编号:\n1:xx 2:xx 3:xx 4:xx:");scanf("%d", &i);i--;printf("请选择1,当天具体商品销售情况 2,当天该销售员销售情况:");scanf("%d", &choose);switch (choose){case 1:{printf("请输入具体要查找的商品种类1~5对应商品1-5\n");scanf("%d", &t);t--;printf("该销售员这天销售本商品的数量为:%d",m[month].d[day].sell[i].good[t].sum);}break;case 2:{printf(" 产品代号\n");printf("1.牛奶 2.西瓜 3.苹果 4.白菜 5.萝卜销售之和\n");for (j = 0; j<5; j++) all += m[month].d[day].sell[i].good[j].sum;printf("%-8d%-8d%-8d%-8d%-8d%-10d\n", m[month].d[day].sell[i].good[0].sum, m[month].d[day].sell[i].good[1].sum, m[month].d[day].sell[i].good[2].sum,m[month].d[day].sell[i].good[3].sum, m[month].d[day].sell[i].good[4].sum, all);}default:break;}}/************************************************************函数名:baobiao()*描述:打印报表*入口参数:无;*出口参数:无;******************************************************************/void baobiao(){char choose = 'y';int i, j, x = 0, a = 0, b = 0, mo = 0, th = 0, partsum = 0, month = 0, sj = 0;int day = 0, alldat = 0, partallsum[5] = { 0 };int mx[4][5] = { 0 }, mxsum = 0; //用于存放明细filepath();daoru(); //读取数据及判断printf("请选择1销售数量报表 2销售额报表:");scanf("%d", &i);if (i == 1){for (i = 0; i<5; i++)price[i] = 1;//利用价格为1时计算数量}else{sj = 1;x = MessageBox(NULL, "是否使用内置价格?", "提示", MB_YESNO);if (x == 7){printf("请依次输入五种商品价格:");scanf("%d%d%d%d%d", &price[0], &price[1], &price[2], &price[3], &price[4]);//上次输入作为内置价格}}printf("输入两个月份及日期:例如3 15 12 6(前者早上到后者晚上):");scanf("%d%d%d%d", &mo, &a, &th, &b);a--;b--;//保持实际时间与数组一致mo--;th--;clear();if (sj == 0){printf("时间段:%d月%d日--%d月%d日的销售数量汇总报表\n", mo + 1, a + 1, th + 1, 1 + b);}else{printf("时间段:%d月%d日--%d月%d日的销售额汇总报表\n", mo + 1, a + 1, th + 1, 1 + b);printf("五种商品对应价格为:%d %d %d %d %d\n", price[0], price[1], price[2], price[3], price[4]);}printf("\n 产品代号及名称\n");printf("姓名编号\t1.牛奶\t2.西瓜\t3.苹果\t4.白菜\t5.萝卜\t销售之和\n");//计算间隔整月if (th - mo>0){for (month = mo + 1; month <= (th - 1); month++){for (day = 0; day<31; day++){for (i = 0; i<4; i++){for (j = 0; j <= 4; j++){mx[i][j] = mx[i][j] + m[month].d[day].sell[i].good[j].sum*price[j];//累加计算所有他的所有销售情况}}for (i = 0; i<5; i++){for (j = 0, partsum = 0; j<4; j++){partsum += m[month].d[day].sell[j].good[i].sum*price[i];}//统计同种商品数目,一维数组当天4个销售员同种商品数目partallsum[i] += partsum;}}}//间隔整月前一段for (day = a; day<31; day++){for (i = 0; i<4; i++){for (j = 0; j <= 4; j++){mx[i][j] = mx[i][j] + m[mo].d[day].sell[i].good[j].sum*price[j]; //累加计算所有他的所有销售情况}}for (i = 0; i<5; i++){for (j = 0, partsum = 0; j<4; j++){partsum += m[mo].d[day].sell[j].good[i].sum*price[i];}partallsum[i] += partsum; //统计同种商品数目,一维数组当天4个销售员同种商品数目}}//间隔整月后一段for (day = 0; day <= b; day++){for (i = 0; i<4; i++){for (j = 0; j <= 4; j++){mx[i][j] = mx[i][j] + m[th].d[day].sell[i].good[j].sum*price[j]; //累加计算所有他的所有销售情况}}for (i = 0; i<5; i++){for (j = 0, partsum = 0; j<4; j++){partsum += m[th].d[day].sell[j].good[i].sum*price[i];}partallsum[i] += partsum; //统计同种商品数目,一维数组当天4个销售员同种商品数目}}}else if ((th - mo) == 0){for (day = a; day <= b; day++){for (i = 0; i<4; i++){for (j = 0; j <= 4; j++){mx[i][j] = mx[i][j] + m[mo].d[day].sell[i].good[j].sum*price[j]; //累加计算所有他的所有销售情况}}for (i = 0; i<5; i++){for (j = 0, partsum = 0; j<4; j++){partsum += m[mo].d[day].sell[j].good[i].sum*price[i];}partallsum[i] += partsum; //统计同种商品数目,一维数组当天4个销售员同种商品数目}}}//输出报表for (i = 0; i<4; i++){printf("%-6s ", sell[i].name);//销售员姓名for (j = 0; j<5; j++){printf("\t%d", mx[i][j]);mxsum += mx[i][j];//二维数组记录销售员}mxsum = 0;//用于下次循环的初始化}//输出表格同类商品总计printf("同类商品");for (i = 0; i<5; i++){printf("\t%d", partallsum[i]);//统计同种商品数目,一维数组alldat += partallsum[i];//合计所有的商品}printf("\t合计:%d", alldat);//所有商品合计x = MessageBox(NULL, "是否打印扇形形图?", "提示", MB_YESNO);if (x == 6){clear();printf("时间段:%d月%d日--%d月%d日", mo + 1, a + 1, th + 1, 1 + b);printf(" 销售扇形图");sxt(partallsum[0], partallsum[1], partallsum[2], partallsum[3], partallsum[4]);}}/************************************************************函数名:del()*描述:删除*入口参数:无;*出口参数:无;******************************************************************/void del(){int i = 0, day = 0, x = 0, month;int choose;filepath();daoru();printf("请输入要查找日期如1月1日输入1 1:");scanf("%d%d", &month, &day);month--;day--;//保持实际时间与数组一致printf("请输入销售人员编号:\n1:xx 2:xx 3:xx 4:xx:");scanf("%d", &i);i--;printf("请选择1.删除该销售员整天的销售信息 2.具体商品销售信息:");scanf("%d", &choose);switch (choose){case 1:{for (x = 0; x<5; x++) m[month].d[day].sell[i].good[x].sum = 0;}break;case 2:{printf("请输入具体要删除的商品种类1~5对应商品1-5 :");x--;m[month].d[day].sell[i].good[x].sum = 0;}break;default:break;}printf("已删除指定销售员信息");save();}/************************************************************函数名:def()*描述:销售数据初始化*入口参数:无;*出口参数:无;******************************************************************/void def(){FILE *fp;int i, day, month;filepath();fp = fopen(filename, "w");for (month = 0; month<12; month++)for (day = 0; day<31; day++){for (i = 0; i<4; i++) //保存信息到文件fprintf(fp, "%-6d%-6d%-6d%-6d%-6d\n", m[month].d[day].sell[i].good[0].sum = 0, m[month].d[day].sell[i].good[1].sum = 0, m[month].d[day].sell[i].good[2].sum = 0,m[month].d[day].sell[i].good[3].sum = 0, m[month].d[day].sell[i].good[4].sum = 0);fprintf(fp, "\n");//日期间隔}printf("初始化操作完成!");fclose(fp);}/************************************************************函数名:filepath()*描述:判断及修改文件位置*入口参数:无;*出口参数:无;******************************************************************/void filepath(){char choose;int x;clear();if (file_choose == 0){x = MessageBox(NULL, "现在为默认文件\n是否使用?", "提示", MB_YESNO);if (x == 7){printf("请输入文件绝对路径:");fflush(stdin);gets(filename);file_choose = 1;//其他位置文件标志}else{x = MessageBox(NULL, "不在提醒?", "提示", MB_YESNO);if (x == 6){file_choose = 2;//其他位置文件标志printf("设置成功\n");}}}}/************************************************************函数名:save()*描述:保存数据*入口参数:无;*出口参数:无;******************************************************************/void save(people){FILE *fp;int day, i, month;fp = fopen(filename, "w");for (month = 0; month<12; month++)for (day = 0; day<31; day++){for (i = 0; i<4; i++)fprintf(fp, "%-6d%-6d%-6d%-6d%-6d\n", m[month].d[day].sell[i].good[0].sum, m[month].d[day].sell[i].good[1].sum, m[month].d[day].sell[i].good[2].sum,m[month].d[day].sell[i].good[3].sum, m[month].d[day].sell[i].good[4].sum);fprintf(fp, "\n");}//写入文件fclose(fp);}/************************************************************函数名:clear()*描述:清屏*入口参数:无;*出口参数:无;******************************************************************/void clear(){int i;HWND hwnd;HANDLE hOut;HDC hdc, hdc1;HPEN ypn, p_pn, p1_pn, p2_pn, p3_pn, p4_pn, p5_pn;HPEN hPen, hOldPen;HBRUSH hBrush, hOldBrush, hbr;COORD pos = { 1, 4 };hwnd = GetConsoleWindow();hdc = GetDC(hwnd);hOut = GetStdHandle(STD_OUTPUT_HANDLE);hbr = CreateSolidBrush(RGB(0, 0, 0));SelectObject(hdc, hbr);Rectangle(hdc, 0, 65, 670, 470);SetConsoleCursorPosition(hOut, pos);for (i = 0; i<19; i++)printf(" \n ");SetConsoleCursorPosition(hOut, pos);Rectangle(hdc, 0, 65, 670, 470);ReleaseDC(hwnd, hdc);}/************************************************************函数名:history()*描述:历史销售查询*入口参数:people;*出口参数:无;******************************************************************/void history(people){int i, j, x = 0, a = 0, b = 0, mo = 0, th = 0, partsum = 0, month = 0;int day = 0, sumall = 0, more = 1;int mx[6] = { 0 }; //用于存放明细char choose;filepath();daoru();clear();printf("输入两个月份及日期:例如7 15 12 6(前者早上到后者晚上):");scanf("%d%d%d%d", &mo, &a, &th, &b);a--;b--;//保持实际时间与数组一致mo--;th--;printf("销售员:%s 时间段:%d月%d日--%d月%d日\n", sell[people].name, mo + 1, a + 1, th +1, 1 + b);printf("日期 \t1.牛奶\t2.西瓜\t3.苹果\t4.白菜\t5.萝卜\t销售之和\n");if (th - mo>0){//间隔整月前一段for (day = a; day<31; day++){if (more >= 16){x = MessageBox(NULL, "是否显示更多?", "提示", MB_YESNO);if (x == 6){clear();printf("日期 \t1.牛奶\t2.西瓜\t3.苹果\t4.白菜\t5.萝卜\t销售之和\n");}else goto end;}printf("%d月%d日 ", mo + 1, day + 1);for (j = 0; j <= 4; j++){sumall += m[mo].d[day].sell[people].good[j].sum;printf("\t%d", m[mo].d[day].sell[people].good[j].sum);mx[j] += m[mo].d[day].sell[people].good[j].sum;}printf("\t%d\n", sumall);more++;mx[5] += sumall;sumall = 0;}//计算间隔整月for (month = mo + 1; month <= (th - 1); month++){for (day = 0; day<31; day++){if (more >= 16){x = MessageBox(NULL, "是否显示更多?", "提示", MB_YESNO);if (x == 6){clear();printf("日期 \t1.牛奶\t2.西瓜\t3.苹果\t4.白菜\t5.萝卜\t销售之和\n");more = 0;}else goto end;}printf("\n%d月%d日 ", month + 1, day + 1);for (j = 0; j <= 4; j++){sumall += m[month].d[day].sell[people].good[j].sum;printf("\t%d", m[month].d[day].sell[people].good[j].sum);mx[j] += m[month].d[day].sell[people].good[j].sum;}printf("\t%d", sumall);more++;mx[5] += sumall;sumall = 0;}}//间隔整月后一段for (day = 0; day <= b; day++){{x = MessageBox(NULL, "是否显示更多?", "提示", MB_YESNO);if (x == 6){clear();printf("日期 \t1.牛奶\t2.西瓜\t3.苹果\t4.白菜\t5.萝卜\t销售之和\n");more = 0;}else goto end;}printf("\n%d月%d日 ", th + 1, day + 1);for (j = 0; j <= 4; j++){sumall += m[th].d[day].sell[people].good[j].sum;printf("\t%d", m[th].d[day].sell[people].good[j].sum);mx[j] += m[th].d[day].sell[people].good[j].sum;}printf("\t%d", sumall);more++;mx[5] += sumall;sumall = 0;}}//一个月内时间段else if ((th - mo) == 0){for (day = a; day <= b; day++){if (more >= 18){x = MessageBox(NULL, "是否显示更多?", "提示", MB_YESNO);if (x == 6){clear();printf("日期 \t1.牛奶\t2.西瓜\t3.苹果\t4.白菜\t5.萝卜\t销售之和\n");more = 0;}else goto end;}printf("%d月%d日 ", mo + 1, day + 1);for (j = 0; j <= 4; j++){sumall += m[mo].d[day].sell[people].good[j].sum;printf("\t%d", m[mo].d[day].sell[people].good[j].sum);mx[j] += m[mo].d[day].sell[people].good[j].sum;}printf("\t%d\n", sumall);more++;mx[5] += sumall;sumall = 0;}}end:printf("\n合计: ");for (j = 0; j <= 4; j++){printf("\t%d", mx[j]);}printf("\t总计:%d\n完成!", mx[5]);x = MessageBox(NULL, "是否打印条形图?", "提示", MB_YESNO);if (x == 6){clear();printf("销售员:%s 时间段:%d月%d日--%d月%d日\n", sell[people].name, mo + 1, a + 1, th + 1, 1 + b);printf("\n\n\n\n 历史销售统计条形图");for (j = 0; j <= 4; j++){txt(mx[j]);}}x = MessageBox(NULL, "是否打印扇形形图?", "提示", MB_YESNO);if (x == 6){clear();printf("销售员:%s 时间段:%d月%d日--%d月%d日", sell[people].name, mo + 1, a + 1, th + 1, 1 + b);printf(" \t销售扇形图");sxt(mx[0], mx[1], mx[2], mx[3], mx[4]);}}/************************************************************函数名:txt(zx)*描述:绘制折线图*入口参数:zx;*出口参数:无;******************************************************************/void txt(zx){static int i = 1;float sum;HWND hwnd;//窗口句柄HANDLE hOut;HDC hdc, hdc1;HPEN ypn, p_pn, p1_pn, p2_pn, p3_pn, p4_pn, p5_pn;HPEN hPen, hOldPen; //画笔HBRUSH hBrush, hOldBrush; //画刷hwnd = GetConsoleWindow();hdc = GetDC(hwnd);hOut = GetStdHandle(STD_OUTPUT_HANDLE);//得到标准的输出设备句柄(显示器等) ypn = CreatePen(PS_SOLID, 5, RGB(0, 200, 255));p_pn = CreatePen(PS_DASHDOTDOT, 1, RGB(255, 0, 0));p1_pn = CreatePen(PS_SOLID, 15, RGB(255, 0, 0));p2_pn = CreatePen(PS_SOLID, 15, RGB(0, 255, 0));p3_pn = CreatePen(PS_SOLID, 15, RGB(0, 0, 255));p4_pn = CreatePen(PS_SOLID, 15, RGB(255, 255, 0));p5_pn = CreatePen(PS_SOLID, 15, RGB(255, 0, 255));if (i == 1){hPen = CreatePen(PS_SOLID, 1, RGB(255, 0, 0)); //画笔hOldPen = (HPEN)SelectObject(hdc, hPen);hBrush = CreateHatchBrush(HS_CROSS, RGB(0, 100, 0)); //方格刷hOldBrush = (HBRUSH)SelectObject(hdc, hBrush);RoundRect(hdc, 20, 170, 530, 350, 5, 5); //画矩形}if (i == 1){SelectObject(hdc, p1_pn);}else if (i == 2){SelectObject(hdc, p2_pn);}else if (i == 3){SelectObject(hdc, p3_pn);}else if (i == 4){SelectObject(hdc, p4_pn);}else SelectObject(hdc, p5_pn);MoveToEx(hdc, i * 100, 344, NULL);LineTo(hdc, i * 100, 350 - zx * 30);SelectObject(hdc, p_pn);LineTo(hdc, 20, 350 - zx * 30);i++;SetTextColor(hdc, RGB(255, 0, 0));////设颜色TextOut(hdc, 1, 320, TEXT("1"), 1);//输出文本TextOut(hdc, 2, 290, TEXT("2"), 1);//输出文本TextOut(hdc, 2, 260, TEXT("3"), 1);//输出文本TextOut(hdc, 2, 230, TEXT("4"), 1);//输出文本TextOut(hdc, 2, 200, TEXT("5"), 1);//输出文本TextOut(hdc, 85, 360, TEXT("牛奶"), 4);//输出文本TextOut(hdc, 185, 360, TEXT("西瓜"), 4);//输出文本TextOut(hdc, 285, 360, TEXT("苹果"), 4);//输出文本TextOut(hdc, 385, 360, TEXT("白菜"), 4);//输出文本TextOut(hdc, 485, 360, TEXT("萝卜"), 4);//输出文本SelectObject(hdc, ypn);MoveToEx(hdc, 20, 170, NULL);LineTo(hdc, 20, 350);LineTo(hdc, 530, 350);ReleaseDC(hwnd, hdc);ReleaseDC(hwnd, hdc1);}/************************************************************函数名:sxt(zx)*描述:绘制扇形图*入口参数:g1,g2,g3,g4,g5;//五种商品数量*出口参数:无;******************************************************************/void sxt(g1, g2, g3, g4, g5){int sellsum = 0;//定义弧度统计总数量int time = 0, x = 0, y = 0, radian = 0;//int ex, ey, radius;//定义圆心半径int i, a, b, c, d, cx = 3;int smx1 = 450, smx2 = 500, smx3 = 510, smy = 175;//图解说明位置COORD pos = { 0, 5 };HWND hwnd;HANDLE hOut;HDC hdc;HPEN gpn, rpn, bpn, blue, yellow;hwnd = GetConsoleWindow();hdc = GetDC(hwnd);hOut = GetStdHandle(STD_OUTPUT_HANDLE);//得到标准的输出设备句柄(显示器等)rpn = CreatePen(PS_SOLID, cx, RGB(255, 0, 0));blue = CreatePen(PS_SOLID, cx, RGB(0, 0, 255));bpn = CreatePen(PS_SOLID, cx, RGB(255, 255, 255));gpn = CreatePen(PS_SOLID, cx, RGB(0, 255, 0));yellow = CreatePen(PS_SOLID, cx, RGB(255, 255, 0));sellsum = g1 + g2 + g3 + g4 + g5;a = g1 * 360 / sellsum;b = (g1 + g2) * 360 / sellsum;c = (g1 + g2 + g3) * 360 / sellsum;d = (g1 + g2 + g3 + g4) * 360 / sellsum;radius = 140;//半径ex = 240;ey = 240;time = 1;SelectObject(hdc, gpn);while (radian <= a){y = radius*sin(radian / 180.0*3.14);x = radius*cos(radian / 180.0*3.14);MoveToEx(hdc, ex, ey, NULL);LineTo(hdc, ex + x, ey + y);radian++;Sleep(time);}SelectObject(hdc, blue);while (radian <= b){y = radius*sin(radian / 180.0*3.14);x = radius*cos(radian / 180.0*3.14);MoveToEx(hdc, ex, ey + 1, NULL);LineTo(hdc, ex + x, ey + y);radian++;Sleep(time);}SelectObject(hdc, rpn);while (radian <= c){y = radius*sin(radian / 180.0*3.14);x = radius*cos(radian / 180.0*3.14);MoveToEx(hdc, ex, ey, NULL);LineTo(hdc, ex + x, ey + y);radian++;Sleep(time);}SelectObject(hdc, bpn);while (radian <= d){y = radius*sin(radian / 180.0*3.14);x = radius*cos(radian / 180.0*3.14);MoveToEx(hdc, ex, ey, NULL);LineTo(hdc, ex + x, ey + y);radian++;Sleep(time);}SelectObject(hdc, yellow);while (radian <= 359){y = radius*sin(radian / 180.0*3.14);x = radius*cos(radian / 180.0*3.14);MoveToEx(hdc, ex, ey - 2, NULL);LineTo(hdc, ex + x, ey + y);radian++;Sleep(time);}SelectObject(hdc, gpn);MoveToEx(hdc, smx1, smy, NULL);LineTo(hdc, smx2, smy);TextOut(hdc, smx3, smy, TEXT("牛奶"), 4);//输出文本SelectObject(hdc, blue);MoveToEx(hdc, smx1, smy += 40, NULL);LineTo(hdc, smx2, smy);TextOut(hdc, smx3, smy, TEXT("西瓜"), 4);//输出文本SelectObject(hdc, rpn);MoveToEx(hdc, smx1, smy += 40, NULL);LineTo(hdc, smx2, smy);TextOut(hdc, smx3, smy, TEXT("苹果"), 4);//输出文本SelectObject(hdc, bpn);MoveToEx(hdc, smx1, smy += 40, NULL);LineTo(hdc, smx2, smy);TextOut(hdc, smx3, smy, TEXT("白菜"), 4);//输出文本SelectObject(hdc, yellow);MoveToEx(hdc, smx1, smy += 40, NULL);LineTo(hdc, smx2, smy);TextOut(hdc, smx3, smy, TEXT("萝卜"), 4);//输出文本TextOut(hdc, smx3, smy, TEXT("萝卜"), 4);//输出文本SetConsoleCursorPosition(hOut, pos); // 设置光标位置printf("牛奶:%d %%%2.1f西瓜:%d %%%2.1f苹果:%d %%%2.1f白菜:%d %%%2.1f萝卜:%d %%%2.1f", g1, g1*100.0 / sellsum, g2, g2*100.0 / sellsum, g3, g3*100.0 / sellsum, g4, g4*100.0 / sellsum, g5, g5*100.0 / sellsum);ReleaseDC(hwnd, hdc);}/************************************************************函数名:menu()*描述:显示菜单*入口参数:无;*出口参数:无;******************************************************************/void menu(){int d1, d2, d, x, xy = 0, i, k;struct re{int top;int left;int right;int bottom;} rt[7];HWND hwnd;//窗口句柄HDC hdc, dc;//画图设备HBRUSH hbr;COORD pos3_1 = { 1, 4 }, pos2_1 = { 1, 4 }, pos2_2 = { 1, 5 }, pos2_3 = { 1, 6 }, pos2_4= { 1, 7 };INPUT_RECORD mouseRec;DWORD state = 0, res = 0;POINT pt;HPEN pn;HANDLE hOut, hIn;COLORREF c;//颜色c = RGB(0, 255, 0);hbr = CreateSolidBrush(c);hwnd = GetConsoleWindow();//得到控制台窗口句柄hdc = GetDC(hwnd); //得到画图设备句柄dc = GetDC(hwnd);//画刷hbr = CreateSolidBrush(RGB(255, 0, 0));SelectObject(dc, hbr);for (rt[1].left = 20, i = 2; i <= 6; i++) rt[i].left = rt[i - 1].left + 110;for (rt[1].right = 82, i = 2; i <= 6; i++) rt[i].right = rt[i - 1].right + 112; //绘制窗口for (i = 0; i <= 6; i++) rt[i].top = 40;for (i = 0; i <= 6; i++) rt[i].bottom = 60;strcpy(sell[0].name, "1 xx");sell[0].sex = 'M';strcpy(sell[1].name, "2xx");sell[1].sex = 'M';strcpy(sell[2].name, "3xx");sell[2].sex = 'M'; //初始化销售员姓名strcpy(sell[3].name, "4xx");sell[3].sex = 'M';hOut = GetStdHandle(STD_OUTPUT_HANDLE);//得到标准的输出设备句柄(显示器等)hIn = GetStdHandle(STD_INPUT_HANDLE);//得到标准的输入设备句柄(鼠标、键盘等)pn = CreatePen(PS_SOLID, 1, RGB(255, 0, 255));GetClientRect(hwnd, &rt);//得到控制台客户区的大小SelectObject(hdc, pn);//选画笔SetBkMode(hdc, TRANSPARENT);//设置背景保持方式MoveToEx(hdc, 1, 35, NULL);LineTo(hdc, 650, 35);LineTo(hdc, 650, 62);LineTo(hdc, 1, 62);LineTo(hdc, 1, 35);hbr = CreateSolidBrush(c);SelectObject(dc, hbr);for (i = 1; i <= 6; i++)Rectangle(dc, rt[i].left, rt[i].top, rt[i].right, rt[i].bottom);SetTextColor(hdc, RGB(255, 255, 0));////设颜色TextOut(hdc, 280, 10, TEXT("销售管理系统"), 12);//输出文本SetTextColor(hdc, RGB(255, 0, 0));////设颜色TextOut(hdc, 20, 40, TEXT("数据导入"), 8);//输出文本TextOut(hdc, 130, 40, TEXT(" 初始化"), 8);//输出文本TextOut(hdc, 240, 40, TEXT("数据查询"), 8);//输出文本TextOut(hdc, 350, 40, TEXT("删除修改"), 8);//输出文本TextOut(hdc, 460, 40, TEXT("打印报表"), 8);//输出文本TextOut(hdc, 570, 40, TEXT(" 退出"), 8);//输出文本TextOut(hdc, 8, 64, TEXT("若首次使用先点击初始化"), 22);//输出文本ShowWindow(hwnd, SW_SHOW);for (;;) // 循环{//读取输入的信息SetConsoleTextAttribute(hOut, 10);ReadConsoleInput(hIn, &mouseRec, 1, &res);Sleep(100);if (mouseRec.EventType == MOUSE_EVENT){//if (mouseRec.Event.MouseEvent.dwEventFlags == DOUBLE_CLICK) break; // 双击鼠标退出循环if (mouseRec.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED){GetCursorPos(&pt);ScreenToClient(hwnd, &pt);if (pt.x>rt[1].left && pt.x<rt[1].right &&pt.y>rt[1].top &&pt.y<rt[1].bottom){clear();printf("输入数据方式:1手动输入,2文件导入其他:返回");scanf("%d", &x);if (x == 1) input();else if (x == 2){printf("请输入要导入的文件及其位置:");fflush(stdin);gets(filename);daoru();file_choose = 1;//指定文件导入成功的标志printf("导入成功");}continue;}else if (pt.x>rt[2].left && pt.x<rt[2].right &&pt.y>rt[2].top &&pt.y<rt[2].bottom){clear();def();continue;}else if (pt.x>rt[3].left && pt.x<rt[3].right &&pt.y>rt[3].top &&pt.y<rt[3].bottom){clear();printf("输入数据查询方式:1具体查询,2报表输出 ,3历史查询,其他:返回:");scanf("%d", &x);if (x == 1) seek();if (x == 2) baobiao();if (x == 3){printf("请输入销售人员编号:\n1:xx 2:xx 3:xx 4:xx:");scanf("%d", &i);i--;history(i);};continue;}else if (pt.x>rt[4].left && pt.x<rt[4].right &&pt.y>rt[4].top && pt.y<rt[4].bottom){clear();printf("数据修改:1.删除 2.修改,其他:返回:");scanf("%d", &x);if (x == 1) del();else if (x == 2) input();continue;}else if (pt.x>rt[5].left && pt.x<rt[5].right &&pt.y>rt[5].top && pt.y<rt[5].bottom){clear();baobiao();continue;}else if (pt.x>rt[6].left && pt.x<rt[6].right &&pt.y>rt[6].top && pt.y<rt[6].bottom){x = MessageBox(NULL, "确定退出?", "是否退出", MB_YESNO);if (x == 6)break;if (x = 7)continue;}};}}ReleaseDC(hwnd, hdc);}。
销售管理系统程序设计——C语言
销售管理系统程序设计一,题目要求某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。
每个销售员都将当天出售的每种产品各写一张便条交上来。
每张便条包含内容:1)销售员的代号2)产品的代号3)这种产品的当天的销售额每位销售员每天可能上缴0-5张便条。
假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。
①计算上个月每个人每种产品的销售额。
②按销售额对销售员进行排序,输出排序结果(销售员代号)③统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)④输出统计报表二,需求分析1)最好采用结构体数组和文件系统2)结构体成员包括销售员代号,产品代号,销售额3)排序算法参照冒泡法或选择排序算法等4)输出统计报表形式按照题目给出的形式在屏幕上相应位置输出三,总体设计基本流程图如下:模块划分:整个运行系统流程:输入,运算,排序,输出,储存首先输入便条数据,自动创建文本文档,储存数据然后再运算,主要为排序,既而输出数据,储存。
四,详细设计具体步骤:1:声明结构体部分【程序如下】#include<stdio.h>#include<conio.h>#define max 155struct goods {int p_num;int num;int g_num;} s[max];struct persons {int num[7];}p[6],w;2:主函数部分【程序如下】int n;/*******全局变量********/main(){int input(), output1(),output2(),output3(),output4();int arg(),mulu();int save();puts("\t\t中国地质大学\n");puts("\t\t\t C 语言程序设计\n");puts("\t\t\t资源勘查工程李晓峰021081班\n\n");puts("\t\t********************MENU********************");printf(" \n\n\n \*******销售管理系统********\n\n\n");printf("请输入销售信息:(按-1结束)\n\n销售员代号1--4 产品代号1--5 销售额\n");for(n=0;n<max;n++){scanf("%d",&s[n].p_num);if(s[n].p_num==(-1))break;elsescanf("%d%d",&s[n].g_num,&s[n].num);}mulu();}3:目录部分【程序如下】int mulu(){ int choice;arg();do{printf(" \n\n\n \t\t\t *******销售管理系统********\n\n\n");printf(" 1.计算上个月每个人每种产品的销售额\n\n");printf("2.按销售额对销售员进行排序,输出排序结果(销售员代号)\n\n");printf(" 3.统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果\n\n");printf("4.输出统计报表\n\n");printf("0.退出系统\n\n");printf("请选择(0-4):");scanf("%d",&choice);switch(choice){case 1: output1();break;case 2: output2();break;case 3: output3();break;case 4: output4();break;case 0: exit(0);}}while(choice!=0);}int arg(){ int k,a,j;for(k=1;k<=5;k++){ p[0].num[k]=k;for(a=1;a<=6;a++)p[k].num[a]=0;}for(k=1;k<=4;k++)p[k].num[0]=k;for(k=1;k<=4;k++)for(a=1;a<=5;a++)for(j=0;j<n;j++)if(s[j].p_num==k && s[j].g_num==a)p[k].num[a]=p[k].num[a]+s[j].num;/*************每种产品的销售额*****************/for(a=1;a<=5;a++)for(k=1;k<=4;k++)p[5].num[a]=p[5].num[a]+p[k].num[a];/*************每个人的销售额*************/for(k=1;k<=5;k++)for(a=1;a<=5;a++)p[k].num[6]=p[k].num[6]+p[k].num[a];}4:模块一:计算上个月每个人每种产品的销售额【程序如下】int output1(){ int i,k;printf("******计算上个月每个人每种产品的销售额*******");printf("%d\t",p[0].num[k]);printf("\n\n");for(i=1;i<=4;i++){for(k=0;k<=5;k++)printf("%d\t",p[i].num[k]);printf("\n\n");}mulu();}5:模块二:该模块按销售额对销售员进行排序,输出排序结果(销售员代号)分析:调用函数,采用选择法对每个销售员的销售情况进行统计输出【程序如下】int output2(){int i,r,j;{r=i;for(j=i+1;j<=4;j++)if(p[r].num[6]<p[j].num[6])r=j;if(r!=i){ w=p[i];p[i]=p[r];p[r]=w;}}printf("*********按销售额对销售员排序情况如下**********\n\n");printf("销售员代码\t销售总额\n");for(i=1;i<=4;i++)printf(" %d\t\t%d\n",p[i].num[0],p[i].num[6]);mulu();}6:模块三:该模块统计输出每种产品的总销售额,按从高到底的顺序分析:同样是调用函数,采用选择法对每种产品的总销售额进行统计输出(从高到低)【程序如下】int output3(){int k,i,r,t;for(k=1;k<5;k++){r=k;for(t=k+1;t<=5;t++)if(p[5].num[r]<p[5].num[t]) r=t;if(r!=k)for(i=0;i<=5;i++){ p[i].num[6]=p[i].num[k];p[i].num[k]=p[i].num[r];p[i].num[r]=p[i].num[6];}}printf("*****每种产品的总销售额顺序情况如下*****\n\n");printf(" 产品代码总销售额\n");for(k=1;k<=5;k++)printf(" %d\t\t%d \n",p[0].num[k],p[5].num[k]);mulu();}7:模块四:输出统计报表分析:用二维数组的形式将统计的结果从屏幕上输出来【程序如下】int output4(){ int i,k;int flage=0;printf("\t\t****销售统计报表****\n\n\n");printf(" 产品代号\n销售员码1\t2\t3\t4\t5\t销售之和\n\n")for(i=1;i<=4;i++){ for(k=0;k<=6;k++)printf("%d\t",p[i].num[k]);printf("\n\n");}printf("总和\t");for(k=1;k<=6;k++)printf("%d\t",p[5].num[k]);if(flage==0) /********保证只存一次*******/{ save();printf("\n\n信息已成功保存!_(文件名:goods_information)");flage=1;}mulu();}8:保存统计结果分析:调用函数,采用文件和指针,将输出的结果用文本文档保存下来【程序如下】int save(){FILE *fp;int i,k;if((fp=fopen("goods_information.txt","w"))==NULL){printf("\n\n按任意键退出,重新开始");getch();exit(1);}fprintf(fp,"产品代号\n销售员码1\t2\t3\t4\t5\t销售之和\n\n");for(i=1;i<=4;i++){ for(k=0;k<=6;k++)fprintf(fp,"%d\t",p[i].num[k]);fprintf(fp,"\n\n");}fprintf(fp,"总和");for(k=1;k<=6;k++)fprintf(fp,"%d\t",p[5].num[k]);fclose(fp);getch();}运行结果分析如下:1:进入系统运行,按要求输入销售员代码,产品代码,销售额2:按确定运行,选择:1 如下3:按确定运行,再选择:2 如下(求出了上个月每个人每种产品的销售额情况)4:按确定运行,再选择:3 如下:求出了按销售额对销售员进行排序,输出排序结果(销售员代号)5:按确定运行,再选择:4 如下:求出了统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)6:按确定运行如下:统计输出了销售报表7:再按确定之后就保存了报表数据,然后就可以从电脑可移动磁盘中,找到文件名为GOODS INFORMATION的文本文档,从而差看其中的统计报表数据。
c课程设计销售管理系统
c 课程设计销售管理系统一、教学目标本章节的教学目标包括以下三个方面:1.知识目标:通过学习,学生能够理解销售管理系统的概念、组成及其在企业运营中的重要性。
掌握销售管理系统的核心功能,如客户管理、销售机会管理、销售预测等。
2.技能目标:学生能够熟练操作销售管理系统,进行客户信息的录入、查询和维护;能够运用销售管理系统进行销售机会的跟踪和管理;能够根据历史数据进行销售预测。
3.情感态度价值观目标:培养学生对销售管理工作的认同感,提高学生对销售管理系统的使用积极性和主动性;培养学生团队协作意识,强化学生在实际工作中运用销售管理系统解决问题的能力。
二、教学内容本章节的教学内容主要包括以下几个部分:1.销售管理系统的概念及其组成:介绍销售管理系统的定义、特点和作用,以及销售管理系统的基本组成部分。
2.销售管理系统的核心功能:详细讲解客户管理、销售机会管理、销售预测等功能,并通过实例进行分析。
3.销售管理系统的操作与应用:教授学生如何操作销售管理系统,进行客户信息录入、查询和维护;销售机会的跟踪和管理;根据历史数据进行销售预测。
4.销售管理系统的实际应用案例:分析销售管理系统在企业运营中的实际应用,让学生了解销售管理系统在实际工作中的重要性。
三、教学方法为了提高教学效果,本章节将采用以下教学方法:1.讲授法:教师讲解销售管理系统的概念、核心功能和实际应用,为学生提供系统的知识体系。
2.案例分析法:通过分析实际应用案例,让学生了解销售管理系统在企业运营中的重要作用,提高学生的实践能力。
3.实验法:安排课堂实验,让学生动手操作销售管理系统,培养学生的实际操作能力。
4.小组讨论法:分组讨论销售管理系统的应用场景和解决策略,培养学生的团队协作能力和解决问题的能力。
四、教学资源为了支持本章节的教学,我们将准备以下教学资源:1.教材:《销售管理系统教程》等相关教材,为学生提供理论知识的学习参考。
2.参考书:提供相关领域的参考书籍,丰富学生的知识体系。
c课课程设计销售管理系统
c 课课程设计销售管理系统一、教学目标本节课的教学目标是使学生掌握销售管理系统的核心概念和基本操作,培养学生运用信息技术解决实际问题的能力。
具体目标如下:1.知识目标:学生能够了解销售管理系统的定义、功能和基本框架,掌握系统的基本操作方法。
2.技能目标:学生能够运用销售管理系统进行销售数据的收集、分析和处理,提高销售管理效率。
3.情感态度价值观目标:学生认识到销售管理系统在现代商业运作中的重要性,培养学生的信息素养,激发学生对信息技术应用的兴趣。
二、教学内容本节课的教学内容主要包括销售管理系统的概念、功能、基本框架和操作方法。
具体安排如下:1.销售管理系统的概念和功能:介绍销售管理系统的定义,阐述其在企业运营中的重要作用,包括销售预测、销售计划、销售业绩评估等方面。
2.销售管理系统的基本框架:讲解销售管理系统的基本构成,包括客户管理、销售机会管理、销售订单管理、销售数据分析等模块。
3.销售管理系统的操作方法:通过实际操作演示,使学生掌握销售管理系统的基本操作方法,包括数据录入、查询、报表生成等。
三、教学方法为了提高教学效果,本节课将采用多种教学方法相结合的方式进行教学。
具体方法如下:1.讲授法:教师通过讲解销售管理系统的概念、功能和基本框架,使学生掌握基本知识。
2.案例分析法:教师提供实际案例,引导学生运用销售管理系统进行分析和解决问题,提高学生的实际操作能力。
3.实验法:学生在实验室进行销售管理系统的实际操作,巩固所学知识,提高操作技能。
四、教学资源为了支持本节课的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:销售管理系统的相关教材,为学生提供理论支持。
2.参考书:提供相关领域的参考书籍,丰富学生的知识体系。
3.多媒体资料:制作销售管理系统的教学课件和操作视频,提高教学的直观性和生动性。
4.实验设备:提供计算机和相关软件,为学生实际操作提供硬件支持。
五、教学评估为了全面、客观地评估学生的学习成果,本节课将采用多种评估方式相结合的方法。
c课程设计销售管理系统
c 课程设计销售管理系统一、教学目标本课程旨在让学生了解和掌握销售管理系统的基本概念、架构和操作流程,培养学生运用销售管理知识解决实际问题的能力。
具体目标如下:1.知识目标:(1)理解销售管理系统的定义、功能和分类。
(2)掌握销售管理系统的架构和关键技术。
(3)了解销售管理系统的应用场景和行业案例。
2.技能目标:(1)能够运用销售管理系统进行销售数据分析和决策。
(2)具备销售管理系统的搭建、配置和维护能力。
(3)能够根据实际需求,设计和优化销售管理业务流程。
3.情感态度价值观目标:(1)培养学生对销售管理工作的认识,提高其对销售管理职业的尊重。
(2)培养学生团队合作精神,增强其团队协作能力。
(3)培养学生创新意识,激发其对销售管理领域新技术、新理念的关注和研究。
二、教学内容本课程教学内容主要包括以下几个部分:1.销售管理系统概述:介绍销售管理系统的定义、功能、分类和应用场景。
2.销售管理系统架构:讲解销售管理系统的基本架构,包括前端展示、后端服务、数据库管理等。
3.销售管理系统关键技术:介绍销售管理系统中涉及的关键技术,如数据库技术、网络通信技术、信息安全技术等。
4.销售管理系统应用案例:分析销售管理系统的实际应用案例,让学生了解销售管理系统在企业运营中的作用。
5.销售管理业务流程设计:讲解如何根据企业需求,设计和优化销售管理业务流程。
6.销售数据分析与决策:教授如何运用销售管理系统进行销售数据分析,并据此做出决策。
三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:讲解销售管理系统的基本概念、架构和关键技术。
2.案例分析法:分析销售管理系统的实际应用案例,让学生了解销售管理系统在企业运营中的作用。
3.讨论法:学生就销售管理系统的应用、业务流程设计等方面展开讨论,提高学生的思考和表达能力。
4.实验法:安排实验室实践环节,让学生动手搭建、配置和维护销售管理系统,提高学生的实际操作能力。
c销售管理系统课课程设计
c 销售管理系统课课程设计一、教学目标本课程的目标是让学生掌握销售管理系统的基本概念、原理和应用。
通过本课程的学习,学生应能够:1.描述销售管理系统的组成部分和功能;2.分析销售管理系统的业务流程和操作步骤;3.应用销售管理系统进行销售预测、客户管理、订单处理等业务活动;4.评估销售管理系统的效果和改进措施。
二、教学内容本课程的教学内容主要包括以下几个部分:1.销售管理系统概述:介绍销售管理系统的定义、功能和作用;2.销售预测:讲解销售预测的方法和工具,如何利用销售管理系统进行销售预测;3.客户管理:介绍如何在销售管理系统中进行客户信息的录入、查询和维护;4.订单处理:讲解订单的创建、修改、查询和统计等功能;5.销售数据分析:利用销售管理系统进行销售数据的收集、整理和分析。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式进行教学,包括:1.讲授法:讲解销售管理系统的相关概念、原理和操作方法;2.案例分析法:分析实际案例,让学生更好地理解和应用销售管理系统;3.实验法:安排实验室实践环节,让学生亲手操作销售管理系统,提高实际操作能力。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:选用权威、实用的销售管理系统教材作为主要教学资料;2.参考书:提供相关领域的参考书籍,丰富学生的知识体系;3.多媒体资料:制作课件、教学视频等,以直观的方式展示销售管理系统的操作和应用;4.实验设备:提供销售管理系统软件和硬件设备,让学生进行实际操作练习。
五、教学评估本课程的评估方式包括以下几个方面:1.平时表现:通过课堂参与、提问、讨论等环节,评估学生的学习态度和积极性;2.作业:布置课后作业,评估学生对课程内容的理解和应用能力;3.考试:进行期中和期末考试,全面考察学生的知识掌握和运用能力。
六、教学安排本课程的教学安排如下:1.教学进度:按照教材和大纲进行教学,确保课程内容的系统性和连贯性;2.教学时间:合理安排课堂时间,保证教学内容的充分讲解和实践操作;3.教学地点:选择适宜的教室和实验室进行教学,提供良好的学习环境。
