C语言销售管理系统
C语言课程设计报告--销售管理系统设计

1.设计内容1、程序设计(包括框图设计、源程序编辑、编译、调试)2、对问题有完整的分析过程,要求把分析设计过程写入报告3、编写设计报告本程序设计的主要内容:1.1销售管理系统该系统是一个销售管理系统,即对某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)进行合理管制。
每个销售员都将当天出售的每种产品各写一张便条交上来。
每张便条包含内容:1)销售员的代号2)产品的代号3)这种产品的当天的销售额每位销售员每天可能上缴0-5张便条。
假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。
1)计算上个月每个人每种产品的销售额。
2)按销售额对销售员进行排序,输出排序结果(销售员代号)3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)4)输出统计报表2.设计目的与要求2.1设计目的1.进一步掌握运用C进行程序设计的能力;3.进一步理解和运用面向过程程序设计的思想和方法;3.初步掌握开发一个小型实用系统的基本方法;4.学会调试一个较长程序的基本方法;5.学会利用互联网查找相关的知识并学习;2.2要求含设计中用到的相关技术的解释或讲解介绍和正文两大部份。
正文包括以下7个内容:1.需求分析以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?并明确规定:(1) 输入的形式和输入值的范围;(2) 输出的形式;(3) 程序所能达到的功能;(4) 测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。
2.概要设计说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。
3.详细设计实现概要设计中定义的所有类,对每个操作只需要写出伪码算法;可采用流程图等进行描述,画出函数和过程的调用关系图。
4.调试分析内容包括:a.调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;b.改进设想;c.经验和体会等。
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.理解销售管理系统的业务流程和需求分析。
2.掌握C语言的基本语法和数据结构。
3.学会使用C语言进行程序设计和调试。
4.能够独立完成销售管理系统的模块设计和实现。
5.培养学生的团队协作能力和问题解决能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.销售管理系统的需求分析:介绍销售管理系统的业务流程,让学生了解销售管理系统的基本功能和需求。
2.C语言基础:讲解C语言的基本语法、数据类型、运算符、控制结构等,为学生进行程序设计打下基础。
3.数据结构:介绍常用的数据结构,如数组、链表、栈和队列等,让学生学会如何选择合适的数据结构来解决实际问题。
4.销售管理系统的模块设计:引导学生运用C语言和数据结构知识,分模块设计销售管理系统。
5.程序调试与优化:讲解程序调试的方法和技巧,让学生能够独立发现和解决问题。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式进行教学:1.讲授法:讲解基本概念、原理和方法,让学生掌握销售管理系统的设计思路。
2.案例分析法:分析实际案例,让学生了解销售管理系统的应用场景。
3.实验法:让学生动手实践,培养实际编程能力和问题解决能力。
4.讨论法:学生进行小组讨论,促进学生之间的交流与合作。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C语言程序设计》等相关教材,为学生提供理论基础。
2.参考书:提供一些销售管理系统的经典案例和源代码,供学生参考学习。
3.多媒体资料:制作课件、教学视频等,丰富教学手段,提高学生的学习兴趣。
4.实验设备:提供计算机、编程环境等,让学生能够进行实际编程和调试。
五、教学评估本课程的评估方式将包括以下几个方面:1.平时表现:评估学生在课堂上的参与程度、提问和回答问题的表现等,占总评的20%。
c语言销售管理系统

C语言销售管理系统简介C语言销售管理系统是一个专业的软件工程,旨在为销售管理提供高效率的解决方案。
该系统涵盖了许多商业中心的核心需求,包括但不限于客户关系管理、产品销售、销售分析以及数据可视化。
此外,该系统还具有用户友好性、稳定性和可扩展性等特性。
功能C语言销售管理系统包含多个功能,主要包括以下几个方面:登录C语言销售管理系统使用用户名和密码来验证用户身份。
用户可以在登录页面进行登录,也可以使用忘记密码功能来找回密码。
客户管理客户管理是销售管理系统中最重要的功能之一。
客户基础信息包括客户姓名、公司、电话、地址等信息,预测出未来可能的需求。
客户管理能够帮助您更好地管理客户,更直接地向目标市场和潜在顾客推销商品。
产品销售产品销售是销售管理系统的另一个重要组成部分。
它可以跟踪和记录产品相关信息,例如产品代码、基本描述、分类、单价、库存等信息,并可以通过销售表来记录产品的销售历史记录。
能够实现对于销售量,销售额等数据的统计和后续分析处理。
销售分析销售分析是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语言课程设计______销售管理系统
语言程序设计报告姓名:班级:学号:指导教师:课题:目录1 设计目标........................................................................................................... .21.1 管理系统概述........................................................................................ .21.2 主要功能................................................................................................ .22 程序原代码 (4)3 详细设计 (10)4 程序运行情况 (12)5 结束语 (18)6参考文献 (19)一、设计目标设计一个C语言程序(销售管理系统),具体要求:某公司有四个销售员(编号:1-4),负责销售五种产品(编号1-5)。
每个销售员都将当天出售的每种产品各写一张便条交上来。
每张便条包含内容:1. 销售员的代号2.产品的代号3.这种产品当天的销售额每位销售员每天的可能上交0-5张便条。
假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况,进行如下处理:1.2 主要功能:1、计算上个月每个人每种产品的销售额。
2、按销售额对销售员进行排序,输出排序结果(销售员代号)3、统计每种产品的总销售额,对这些产品按从高到底的顺序输出排序结果(需输出产品的代号和销售额)4、输出统计报表二程序原代码#include <stdio.h>#include <string.h>#include <conio.h>#include <stdlib.h>#define Z 5#define R 4typedef struct{int shangpin[Z];}data;void menu(){ system("cls");printf("\n\n");printf("\t ┏━━━━━━━━━━━━主菜单━━━━━━━━━━┓\n");printf("\t ┃ 1.计算上个月每个人每种产品的销售额┃\n");printf("\t ┃ 2.按销售额对销售员进行排序,输出排序结果┃\n");printf("\t ┃ 3.统计每种产品的总销售额,输出排序结果┃\n");printf("\t ┃ 4.输出统计报表┃\n");printf("\t ┃ 5.结束操作┃\n"); printf("\t ┗━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");}void f1(data *x){ FILE *fp;char fname[10],hitkey;int j,t;int i,k,s;system("cls");printf("您想计算哪个月?\n");printf("请输入月份:");scanf("%s",fname);strcat(fname,".dat");if((fp=fopen(fname,"wb"))==NULL){printf("不能打开文件!!!\n");exit(0);}for(j=0;j<R;j++)for(t=0;t<Z;t++)(x+j)->shangpin[t]=0;printf("请输入:\n职工编号产品编号销售数量\n");for(j=0;hitkey!=27;j++){ scanf("%d%d%d",&i,&k,&s);if(i>R||i<0||k>Z||k<0){printf("信息错误!\n");continue;}else(x+i-1)->shangpin[k-1]=(x+i-1)->shangpin[k-1]+s;printf("继续输入请按回车,结束输入请按esc\n");printf("━━━━━━━━━━━━━━━━━━━━━━\n");hitkey=getch();for (;hitkey!=13&&hitkey!=27;)hitkey=getch();}for(j=0;j<R;j++)if(fwrite((x+j),sizeof(data),1,fp)!=1)printf("write error!\n");fclose(fp);printf("\n\n\n\n\n\n\t\t\t保存成功,按任意键返回主菜单!");getch();}void f2(data *x){FILE *fp;char fname[10];int i,k,j,t,bianhao[R]={0},z;system("cls");printf("你要哪个月的?\n");printf("请输入月份:");scanf("%s",fname);strcat(fname,".dat");if((fp=fopen(fname,"rb"))==NULL){printf("不能打开文件!!!\n");exit(0);}for(i=0;i<R;i++)if(fread(x+i,sizeof(data),1,fp)!=1)printf("读入信息出错!");for(i=0;i<R;)bianhao[i]=i++;printf("请输入按何种产品排序\n");scanf("%d",&k);k=k-1;for(i=0;i<R;i++){t=i;for(j=i+1;j<R;j++)if((x+bianhao[t])->shangpin[k]<(x+bianhao[j])->shangpin[k]) t=j;if(t!=i){ z=bianhao[i];bianhao[i]=bianhao[t];bianhao[t]=z;}}printf("\t\t\t按%d产品对销售员排序为:\n",k+1);printf("━━━━━━━━━━━━━━━━━━━━━\n");for(i=0;i<R;i++)printf("\t\t\t第%d名是:员工%d\n",i+1,bianhao[i]+1);printf("\n\n\n\t\t\t按任意键返回上一主菜单!");getch();fclose(fp);}void f3(data *x){ FILE *fp;char fname[10];int i,j,sum[Z]={0},bianhao[Z]={0},z,t,k;system("cls");printf("您想计算哪个月的?\n");printf("请输入月份:");scanf("%s",fname);strcat(fname,".dat");if((fp=fopen(fname,"rb"))==NULL){ printf("不能打开文件!!!\n");exit(0);}for(i=0;i<R;i++)if(fread(x+i,sizeof(data),1,fp)!=1)printf("读入信息出错!");for(i=0;i<Z;i++)for(j=0;j<R;j++)sum[i]=sum[i]+(x+j)->shangpin[i];for(i=0;i<Z;)bianhao[i]=i++;for(i=0;i<Z;i++)printf("%3d",bianhao[i]);for(i=0;i<Z;i++){ t=i;for(j=i+1;j<Z;j++)if(sum[t]<sum[j])t=j;if(t!=i){ k=sum[i];sum[i]=sum[t];sum[t]=k;z=bianhao[i];bianhao[i]=bianhao[t];bianhao[t]=z;}}printf("输出产品排序\n");printf("产品编号数量\n");printf("━━━━━━━━━━━━━\n");for(i=0;i<Z;i++)printf(" 产品%-7d%-1d\n",bianhao[i]+1,sum[i]);printf("\n\n\n\t\t\t按任意键返回主菜单!");getch();fclose(fp);}void f4(data *x){FILE *fp;char fname[10];int i,j,sum[Z+1]={0};system("cls");printf("您想计算哪个月?\n");printf("请输入月份:");scanf("%s",fname);strcat(fname,".dat");if((fp=fopen(fname,"rb"))==NULL){printf("不能打开文件!!!\n");exit(0);}for(i=0;i<R;i++)if(fread(x+i,sizeof(data),1,fp)!=1)printf("读入信息出错!");for(i=0;i<Z;i++)for(j=0;j<R;j++)sum[i]=sum[i]+(x+j)->shangpin[i];for(i=0;i<Z;i++)sum[Z]=sum[Z]+sum[i];printf("━━━━━━━━━━━━━━━━━━━━━━━━━━━\n");printf("输出统计报表如下:\n");printf("销售员代号产品代号销售之和\n");for(i=0;i<R;i++)for(j=0;j<Z;j++)printf(" 员工%-8d产品%-6d数量%-10d\n",i+1,j+1,(x+i)->shangpin[j]);printf("━━━━━━━━━━━━━━━━━━━━━━━━━━━\n");for(i=0;i<Z;i++){if(i==0)printf("产品%d之和%-10d 总和%-10d\n",i+1,sum[i],sum[Z]);elseprintf("产品%d之和%-10d\n",i+1,sum[i]);}printf("\n\n\n\t\t\t按任意键返回主菜单!");getch();}void main(){int i,choice;data sxy[R];printf("\n\n\n\n\n\n\t━━━━━━━━━━━━━━━━━━━━━━━━━\n");printf("\t---------------欢迎进入商品销售系统!-------------\n");printf("\t━━━━━━━━━━━━━━━━━━━━━━━━━\n");printf("\n\n\n\n\n\n\t\t\t按任意键进入主菜单!");getch();for(i=0;;i++){ system("cls");menu();printf("你想做什么?\n");printf("请选择:");scanf("%d",&choice);if(choice==5){ system("cls");printf("\n\n\n\n\n\n\t━━━━━━━━━━━━━━━━━━━━━━━━━\n\n");printf("\t---------------谢谢使用商品销售系统!-------------\n\n");printf("\t━━━━━━━━━━━━━━━━━━━━━━━━━\n\n");printf("\n\n\n\n\n\n\t\t\t按任意键退出!(^.^)");getch();break;}elseswitch(choice){ case 1 : f1(sxy); break;case 2 : f2(sxy); break;case 3 : f3(sxy); break;case 4 : f4(sxy); break;}}}三、详细设计1、功能函数f1()函数的功能:计算上个月每个人每种产品的销售额函数的入口:从main()的switch()开关结构中进入,即choice的值为1时进入该函数,打开.dat数据文件,然后提示用户通过键盘对该月的员工销售情况进行数据的读入。
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语言-销售管理系统报告书.doc
C语言课程设计报告一、题目设计一个C语言程序(销售管理系统)二、内容1、每一记录包括销售员的编号、产品编号、产品当天的销售额、上个月每个人每种产品的销售额、每种产品的总销售额。
2、输入功能:可以完成记录的输入3、显示功能:完成所要求员工的记录的显示4、查找功能:完成按员工编号查找员工记录,并显示。
5、排序功能: 按销售额对销售员进行排序, 对这些产品按从高到底的顺序输出排序结果。
6、保存功能:将员工记录保存在自定义的文件中。
三、设计要求1、整个系统均用C语言实现;2、利用指针、链表来实现员工销售情况的数据结构设计3、系统具有输入、显示、查询、删除、排序、插入、保存、读取基本功能4、系统的各个功能模块都用函数的形式来实现。
5、可以将员工的销售情况从文件当中读取出来。
具体要求:某公司有四个销售员(编号:1-4),负责销售五种产品(编号1-5)。
每个销售员都将当天出售的每种产品各写一张便条交上来。
每张便条包含内容:1)销售员的代号2)产品的代号3)这种产品当天的销售额每位销售员每天的可能上交0-5张便条。
假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况,进行如下处理:主要功能:1、计算上个月每个人每种产品的销售额。
2、按销售额对销售员进行排序,输出排序结果(销售员代号)3、统计每种产品的总销售额,对这些产品按从高到底的顺序输出排序结果(需输出产品的代号和销售额)4、输出统计报表四、总体设计1、程序设计组成框图`五、详细设计1、功能函数f1()——本函数由梁俊贤设计函数的功能:计算上个月每个人每种产品的销售额函数的入口:从main()的switch()开关结构中进入,即choice的值为1时进入该函数,打开.dat数据文件,然后提示用户通过键盘对该月的员工销售情况进行数据的读入。
函数调用关系:被主函数调用。
由switch()开关结构中进入,并在文中无返回值的空值void函数。
函数的出口:当程序执行提示语“printf("继续输入请按回车,结束输入请按esc\n");”的时候,对用户的操作进行提示,如果用户选择了按“ESC”键,则用户选择了结束数据的录入,将结束该函数,而执行主函数main()中“break;”跳出switch()开关函数,继续执行for循环结构。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(一)、设计内容与设计要求1.设计内容:设计课题四:销售管理系统一、问题描述:通过本系统实现对N个销售员信息的录入、显示、添加、删除,以及对产品销售额的排序等操作的管理。
二、功能描述:1、本系统采用一个包含n个数据的结构体数组,每个数据的结构应当包括:姓名、身份、产品1销售额、产品2销售额、总产品销售额。
2、本系统显示这样的菜单:销售管理系统1、销售员信息输入2、销售员信息输出3、删除销售员4、添加销售员5、销售额排序6、统计产品销售额7、保存销售额信息0、退出系统3、执行一个具体的功能之后,程序将重新显示菜单。
4、将系统信息保存在文件中。
三、算法提示:1、数据结构:结构体类型数组2、数据库结构:下表构成该系统的基本数据库四、测试数据:记录数20。
2.设计要求:1).设计正确,方案合理。
2).界面友好,使用方便。
3).程序精炼,结构清晰。
4).设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。
5).上机演示。
(二)、进度安排第一周课题讲解,查阅资料总,体设计,详细设计周日:8:00——12:0014:00-—18:00周一:8:00——12:00周三:14:00——18:00第二周编程,上机调试,修改程序,完善程序,答辩撰写课程设计报告周二:8:00——12:00周五:14:00——18:00附:课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。
正文总字数要求在5000字以上(不含程序原代码)目录一、需求分析 (1)二、概要设计 (1)三、详细设计 (5)四、调试分析以及设计体会 (6)五、使用说明 (6)六、附录 (7)一、需求分析1、程序的功能。
程序要完成的功能有:(1)销售员信息录入 (2)销售员信息显示(3)销售额信息保存(4)产品总销售额由大到小排序(5)统计产品销售额信息(6)插入销售员及其信息(7)删除销售员及其信息(0)退出销售管理系统2、输入输出的要求。
输入运用了scanf和gets函数;输出运用了printf函数。
二、概要设计1、程序由哪些模块组成以及一个模块之间的层次结构、模块的调用关系;每个模块的功能。
程序由主函数void main()、输入void input()、显示void show()、删除void del()、排序void sort()、添加void insert()、统计void statistic()、保存void save()、退出void exit()等九个模块组成。
本系统涉及的知识点:分支,循环,函数,数组,结构体,文件等。
各个函数模块的实现如下:(1)关于void main():采用switch分支控制语句,通过键盘输入值作为开关值,用以调用主菜单各大函数,从而实现主控职能。
C语言的函数调用遵循先定义后引用的原则,在程序的最开始就定义了众多的全局变量,如int i。
其调用关系如下:switch(i){case 0:printf("o 退出销售管理系统 o\n");exit(0);break;case 1:printf("-----销售员信息录入-----\n");input();break;case 2:printf("-----销售员信息显示-----\n");show();break;case 3:printf("-----销售额信息保存-----\n");save();break;case 4:printf("-----总销售额信息排序-----\n");sort();break;case 5:printf("-----统计产品销售额信息-----\n");statistics_sailer();break;case 6:printf("-----插入销售员及其信息-----\n");insert();break;case 7:printf("-----删除销售员及其信息-----\n");del();break;default:printf("输入错误,请重新选择!!");break;}}}(2) 录入函数void inprint ()的实现:由主菜单按‘1’键进入。
利用循环方式,将相关信息存入结构体数组,结构体组根据实际的纪录条数,建立销售员信息。
按照要求,分步依次录入信息:销售员个数,销售员姓名,销售员工号,产品一销售额,产品二销售额,实现途径为:void input(){int i;printf("请输入销售员个数\n");scanf("%d",&n);for(i=0;i<n;i++){printf("输入销售员姓名:\n");scanf("%s",seller[i].name);printf("输入销售员工号:\n");scanf("%s",seller[i].num);printf("请分别输入产品一和产品二的销售额:\n");scanf("%d%d",&seller[i].sailerl,&seller[i].sailerm);}system("cls");}(3) 显示函数void show()的实现:该功能是输出销售员中的所有信息: void show (){struct seller *p;system("cls");printf("姓名工号产品一销售额产品二销售额:\n");for(p=seller;p<seller+n;p++)printf("%-8s %2s %6d %12d\n",p->name,p->num,p->sailerl,p->sailerm) ;printf("\n\n");}(4)排序函数void sort()的实现:void sort(){struct seller temp;int i,j;for(i=0;i<n;i++)seller[i].sum=seller[i].sailerl+seller[i].sailerm;for(j=0;j<n-1;j++)for(i=0;i<n-1-j;i++)if(seller[i].sum<seller[i+1].sum){temp=seller[i];seller[i]=seller[i+1];seller[i+1]=temp;}system("cls");printf("姓名工号产品一销售额产品二销售额产品总销售额:\n");for(i=0;i<n;i++)printf("\n%s\t%s\t%d\t%8d\t%8d\n",seller[i].name,seller[i].num,se ller[i].sailerl,seller[i].sailerm,seller[i].sum);}(5)统计函数void statistics_sailer ()的实现:运用的语句是:void statistics_sailer (){int i,sum1,sum2,sum;sum1=0;sum2=0;sum=0;for(i=0;i<n;i++){sum1+=seller[i].sailerl;sum2+=seller[i].sailerm;sum=sum1+sum2;}system("cls");printf("产品一的销售额:%d\n",sum1);printf("产品二的销售额:%d\n",sum2);printf("产品总的销售额:%d\n",sum);}(6)保存函数void save ()运用以下语句实现:void save (){FILE *fp;int i;fp=fopen("seller.txt","w");for(i=0;i<n;i++)fwrite(&seller[i],sizeof(struct seller),1,fp);system("cls");printf("\n\n");printf("保存成功!\n");printf("\n\n");}(7)删除函数void del()的实现:输入要删除的销售员的姓名。
运用的语句是:void del(){char seller_name[20];int i,j;printf("输入要删除销售员的姓名:");fflush(stdin);scanf("%s",seller_name);for(i=0;i<n;i++){if(strcmp(seller_name,seller[i].name)==0){for(j=i;j<n;j++)seller[i]=seller[i+1];n=n-1;}break;}save();system("cls");}2、此程序的数据库存储的数据为:销售员的姓名、工号(身份)、产品一的销售额、产品二的销售额、产品总的销售额。
三、详细设计1、采用C语言定义相关的数据类型。
struct seller{char num[10];char name[20];int sailerl;int sailerm;int sum;}seller[200];2、画出函数的调用关系图。
四、调试分析以及设计体会1、问题以及解决问题的方法。
在开始编程时我就遇到了问题,首先是心理问题,心里感到一个系统那么复杂要编出来真是太难了。
然后在程序编写过程中我遇到了函数没有定义就运行的问题,一开始我还不知道,但通过向老师和同学询问终于改正了这个问题。