湖北汽车工业学院C语言课程设计——商品销售信息管理系统源代码

合集下载

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语言课程设计商品销售管理系统商品销售管理系统目录一、需求分析 (2)二、概要设计 (2)三、详细设计 (4)四、调试分析 (14)五、用户手册 (14)六、测试数据 (15)七、附录 (18)—1—一、需求分析商品销售管理程序商品信息:商品编号、商品名称、商品类别(普通电视机、DVD、带DVD的电视机,带DVD的电视机的售价为普通电视机和DVD单价之和的80%)、商品进货价格、商品销售价格、商品数量、供应商名称等。

记录每一次销售商品的数量和价格,并提供对已售出商品的价格、数量进行统计、排序功能,但允许用户退商品。

(要求:1.源文件采用多文件的工程结构 2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)二、概要设计(一)按系统分析的功能要求将系统划分为以下几个主要功能模块:1、文件管理文件打开、关闭:对于刚输入或进行操作后的商品信息,在建立新的商品库存量后,能够把其保存在一个文件中,并对该文件可进行打开和关闭操作。

2、进出货管理(1)商品进货: 输入数据后商品信息能自动更新进行添加(2)商品销售: 输入数据后商品信息能自动更新进行减少3、商品数据管理(1)增加/删除商品: 添加或删除某条商品的信息(2)修改商品信息: 对某条商品的信息进行修改4、浏览商品信息管理(1)查询商品信息:可分别按商品编号、名称、类别或需要进货商品查询(2)排序商品信息: 可按商品编号、名称、类别分别排排序(3)浏览商品信息:可浏览输入、查询或排序后的数据。

(二)本程序结构(1)结构体设计struct goods{ long int num;char name[20];char sort[20];long int count;long int price;}goods[200];(2)各功能函数设计:void input() /*功能1:输入商品信息*/—2—void sequence() /*功能2:排序商品信息*/void purchase() /*功能3:进货商品信息*/void sell() /*功能4:销售商品信息*/void edit() /*功能5:添加或删除商品信息*/ void correct() /*功能6:修改商品信息*/void search() /*功能7:查询商品信息*/void scan() /*功能8:浏览商品信息*/void reserve() /*功能9:保存文件*/void quit() /*退出系统*/(3)主函数设计:void main (){void input();void sequence();void purchase();void sell();void edit();void correct();void search();void scan();void reserve();lp: for(i=0;i<1;i++)scanf("%d",&k);system("cls");switch(k) /*用switch语句实现功能选择*/。

课程信息管理系统(C语言)

课程信息管理系统(C语言)

课程信息管理系统源代码#include<stdio.h>#include<stdlib.h>#include<string.h>struct Class{int Number;int ClassNumber;char Name[10];float TeachTime;float PracticeTime;float Credit;char Semester[10];char TextWay[10];} Class[10],CL;/**********输入模块***********/void save()//定义函数save,向文件输出课程信息{FILE *fp;int i;if ((fopen("Class.txt", "r")) == NULL)//打开输出文件Class fp = fopen("Class.txt", "w+");elsefp = fopen("Class.txt", "r+");for (i = 0; i<10; i++){fprintf(fp, "%d", Class[i].Number);fputc('\n', fp);fprintf(fp, "%d", Class[i].ClassNumber);fputc('\n', fp);fprintf(fp, "%s", Class[i].Name);fputc('\n', fp);fprintf(fp, "%f",Class[i].TeachTime);fputc('\n', fp);fprintf(fp, "%f", Class[i].PracticeTime);fputc('\n', fp);fprintf(fp, "%f", Class[i].Credit);fputc('\n', fp);fprintf(fp, "%s", Class[i].Semester);fputc('\n', fp);fprintf(fp, "%s", Class[i].TextWay);fputc('\n', fp);}fclose(fp);}void Input(){int i = 0;char c;for (int t = 1; t;i++){printf("请输入要输入的课程的相关信息:\n");printf("请输入记录编号:");scanf("%d", &Class[i].Number);printf("请输入课程编号:");scanf("%d", &Class[i].ClassNumber);printf("请输入课程名:");scanf("%s", Class[i].Name);printf("请输入讲课学时:");scanf("%f", &Class[i].TeachTime);printf("请输入实践学时:");scanf("%f", &Class[i].PracticeTime);Class[i].Credit = (Class[i].TeachTime + Class[i].PracticeTime) / 16;printf("请输入开课学期:");scanf("%s", Class[i].Semester);printf("请输入考核方式:");scanf("%s", Class[i].TextWay);printf("是否继续输入Y/N\n");fflush(stdin);scanf("%c",&c);switch (c){case 'Y':break;case 'N':t = 0;break;default:printf("输入错误\n");}}save();}/*******修改模块*******/void Modification()int n,i;printf("请输入您要修改的课程的记录编号:");scanf("%d", &n);for ( i = 0; i < 10; i++){if (Class[i].Number == n)break;}FILE*fp;if ((fp = fopen("Class.txt", "r")) == NULL){printf("cannot open file\n");exit(0);}fscanf(fp, "%d%d%s%f%f%f%s%s\n",&Class[i].Number,&Class[i].ClassNumber, Class[i].Name, &Class[i].TeachTime, &Class[i].PracticeTime, &Class[i].Credit, Class[i].Semester, Class[i].TextWay);printf("请输入要修改的课程的相关信息:\n");printf("请输入课程编号:");scanf("%d", &CL.ClassNumber);Class[i].Number=CL.ClassNumber;printf("请输入课程名:");scanf("%s", );strcpy(Class[i].Name,);printf("请输入讲课学时:");scanf("%f", &CL.TeachTime);Class[i].TeachTime=CL.TeachTime;printf("请输入实践学时:");scanf("%f", &CL.PracticeTime);Class[i].PracticeTime=CL.PracticeTime;CL.Credit = (CL.TeachTime+ CL.PracticeTime) / 16;Class[i].Credit=CL.Credit ;printf("请输入开课学期:");scanf("%s", CL.Semester);strcpy(Class[i].Semester,CL.Semester);printf("请输入考核方式:");scanf("%s", CL.TextWay);strcpy(Class[i].TextWay,CL.TextWay);save();fclose(fp);}/***********统计模块***********/void Statistics()int i,n1=0,n2=0;float m1=0,m2=0;FILE*fp;if ((fp = fopen("Class.txt", "r")) == NULL){printf("cannot open file\n");exit(0);}for ( i = 0; i < 10; i++){fscanf(fp, "%d%d%s%f%f%f%s%s\n",&Class[i].Number,&Class[i].ClassNumber, Class[i].Name, &Class[i].TeachTime, &Class[i].PracticeTime, &Class[i].Credit, Class[i].Semester, Class[i].TextWay);if (strcmp(Class[i].Semester,"春季")==0){n1++;m1= m1 + Class[i].Credit;}else if (strcmp(Class[i].Semester,"秋季")==0){n2++;m2 = m2 + Class[i].Credit;}}printf("春季学期总课程数为%d\n", n1);printf("春季学期总学分数为%f\n", m1);printf("秋季学期总课程数为%d\n", n2);printf("秋季学期总学分数为%f\n", m2);}/**********查询模块**************/void Query(){int i, k,a;float b;char m[10];FILE*fp;if ((fp = fopen("Class.txt", "r")) == NULL){printf("cannot open file\n");exit(0);}for (i= 0; i<10; i++)fscanf(fp, "%d%d%s%f%f%f%s%s\n",&Class[i].Number,&Class[i].ClassNumber, Class[i].Name, &Class[i].TeachTime, &Class[i].PracticeTime, &Class[i].Credit, Class[i].Semester, Class[i].TextWay);printf("查询模块:");printf("\n");printf("***********************************************\n");printf("* *\n");printf("* 1:课程编号2:课程学分*\n");printf("* *\n");printf("* 3:开课学期*\n");printf("* *\n");printf("***********************************************\n");printf("\n\n请输入查询选项:");scanf("%d", &k);for (; k<1 || k>4;){printf("请输入1到4之间的整数:");scanf("%d", &k);}if (k==1){printf("请输入要查询的课程编号:");scanf("%d", &a);for ( i = 0; i < 10; i++){if (Class[i].ClassNumber == a)break;}printf("记录编号:%d\n",Class[i].Number);printf("课程编号:%d\n",Class[i].ClassNumber);printf("课程名:%s\n",Class[i].Name);printf("讲课学时:%f\n",Class[i].TeachTime);printf("实践学时:%f\n",Class[i].PracticeTime);printf("学分:%f\n",Class[i].Credit);printf("开课学期:%s\n",Class[i].Semester);printf("考核方式:%s\n\n",Class[i].TextWay);}else if (k==2){printf("请输入要查询的课程的学分:");scanf("%f", &b);for ( i = 0; i < 10; i++){if (Class[i].Credit == b){printf("记录编号:%d\n",Class[i].Number);printf("课程编号:%d\n",Class[i].ClassNumber);printf("课程名:%s\n",Class[i].Name);printf("讲课学时:%f\n",Class[i].TeachTime);printf("实践学时:%f\n",Class[i].PracticeTime);printf("学分:%f\n",Class[i].Credit);printf("开课学期:%s\n",Class[i].Semester);printf("考核方式:%s\n\n",Class[i].TextWay);}}}else{printf("请输入要查询的开课学期:");scanf("%s", m);for ( i = 0; i < 10; i++){if (strcmp(Class[i].Semester,m)==0){printf("记录编号:%d\n",Class[i].Number);printf("课程编号:%d\n",Class[i].ClassNumber);printf("课程名:%s\n",Class[i].Name);printf("讲课学时:%f\n",Class[i].TeachTime);printf("实践学时:%f\n",Class[i].PracticeTime);printf("学分:%f\n",Class[i].Credit);printf("开课学期:%s\n",Class[i].Semester);printf("考核方式:%s\n\n",Class[i].TextWay);}}}}/**********添加模块*************/void Add(){int i;FILE*fp;if ((fp = fopen("Class.txt", "r")) == NULL){printf("cannot open file\n");exit(0);}for (i=0; i<10; i++){fscanf(fp, "%d%d%s%f%f%f%s%s\n",&Class[i].Number,&Class[i].ClassNumber, Class[i].Name, &Class[i].TeachTime, &Class[i].PracticeTime, &Class[i].Credit, Class[i].Semester, Class[i].TextWay);if (Class[i].Number == 0)break;}printf("请输入要添加的课程的相关信息:\n");printf("请输入记录编号:");scanf("%d", &Class[i].Number);printf("请输入课程编号:");scanf("%d", &Class[i].ClassNumber);printf("请输入课程名:");scanf("%s", Class[i].Name);printf("请输入讲课学时:");scanf("%f", &Class[i].TeachTime);printf("请输入实践学时:");scanf("%f", &Class[i].PracticeTime);Class[i].Credit = (Class[i].TeachTime + Class[i].PracticeTime) / 16;printf("请输入开课学期:");scanf("%s", Class[i].Semester);printf("请输入考核方式:");scanf("%s", Class[i].TextWay);save();}/********删除模块**********/void Delete(){int n,i;printf("请输入要删除的课程的课程编号:");scanf("%d", &n);FILE*fp;if ((fp = fopen("Class.txt", "r")) == NULL){printf("cannot open file\n");exit(0);}for ( i = 0; i < 10; i++){fscanf(fp, "%d%d%s%f%f%f%s%s\n",&Class[i].Number,&Class[i].ClassNumber, Class[i].Name, &Class[i].TeachTime, &Class[i].PracticeTime, &Class[i].Credit, Class[i].Semester, Class[i].TextWay);if (Class[i].ClassNumber == n)Class[i].Number = 0;Class[i].ClassNumber=0;Class[i].Credit = 0;strcpy(Class[i].Name, "0");Class[i].PracticeTime = 0;strcpy(Class[i].Semester, "0");Class[i].TeachTime=0;strcpy(Class[i].TextWay, "0");break;}}save();fclose(fp);}/*******显示模块**********/void Display(){FILE*fp;if ((fp = fopen("Class.txt", "r")) == NULL){printf("cannot open file\n");exit(0);}for (int i = 0; i<10; i++)fscanf(fp, "%d%d%s%f%f%f%s%s\n",&Class[i].Number,&Class[i].ClassNumber, Class[i].Name, &Class[i].TeachTime, &Class[i].PracticeTime, &Class[i].Credit, Class[i].Semester, Class[i].TextWay);for (i = 0; i < 10&&Class[i].Number!='\0'; i++){printf("记录编号:%d\n",Class[i].Number);printf("课程编号:%d\n",Class[i].ClassNumber);printf("课程名:%s\n",Class[i].Name);printf("讲课学时:%f\n",Class[i].TeachTime);printf("实践学时:%f\n",Class[i].PracticeTime);printf("学分:%f\n",Class[i].Credit);printf("开课学期:%s\n",Class[i].Semester);printf("考核方式:%s\n\n",Class[i].TextWay);}fclose(fp);}/**********退出模块*************/{exit(0);}/**********主函数*************/int main(){char c;while(1){int n;printf("*********************MENU********************\n");printf("* *\n");printf("* 1:课程信息输入2:课程信息修改*\n");printf("* *\n");printf("* 3:课程信息统计4:课程信息查询*\n");printf("* *\n");printf("* 5:课程添加6:课程信息删除*\n");printf("* *\n");printf("* 7:浏览8:退出*\n");printf("* *\n");printf("*********************************************\n");printf("\n\n请选择功能序号:");scanf("%d", &n);/*对选择的数字进行判断*/for (; n<1 || n>8;){printf("请输入1到8之间的整数:");scanf("%d", &n);}/*选择功能*/switch (n){case 1:Input(); Display(); break;case 2:Modification(); Display(); break;case 3:Statistics(); break;case 4:Query(); break;case 5:Add(); Display(); break;case 6:Delete(); Display(); break;case 7:Display();break;case 8:Quit();}printf("是否继续Y/N\n");fflush(stdin);scanf("%c",&c);if(c=='N')Quit();system("cls");}return 0;}。

C语言实训商店商品管理信息系统

C语言实训商店商品管理信息系统
第三部分 课程设计总结…………………………………………………… 1. 个人总结…………………………………………………………………… 2. 结束语……………………………………………………………………
附录 A 程序清单……………………………………………………………… 附录 B 用户使用说明书……………………………………………………… 参考文献…………………………………………………………………………
销售量(用#结束输入):");
scanf("%d",&temp.xsl);
printf("
销售额(用#结束输入):");
scanf("%f",&z);
temp.xse=z;
printf("
剩余数(用#结束输入):");
scanf("%d",&temp.sys);
printf("
毛利(用#结束输入):");
为了实现上述功能,有关语句都应放在 do-while 循环体中。 设计算法时应考虑如何时程序具有容错能力。例如,当用户在应答是否继续时, 如果输入的是合法数据(即 y、Y、n 或 N),则程序继续下一步操作;如果输入 的是非法数据(即 y、Y、n 或 N 以外的字符),则应让用户重新输入,这时需要 在是否继续的问题上加一个循环判断,这种功能常用 do-while 实现。 (4)流程图(如下图所示):
|
1——按原来顺序显示
|
|
2——按销售额高低显示
|
|
3——按毛利高低显示
|
|
4——返回
|
|
0——退出系统
|

C语言销售管理系统设计(内含完整代码及附件)

C语言销售管理系统设计(内含完整代码及附件)

用户下载须知程序语言:C、C++、C#(红色字体表示本课设使用的程序设计语言)图形功能选项:Win32控制台程序(黑框、文本界面)、Win32程序、MFC、WinForm、DirectX10(红色字体表示本课设的程序图形类别,默认为非图形界面Win32控制台程序)数据结构:基础类型、数组、链表、双向链表、搜索树(非平衡二叉树)、平衡二叉树、链表与平衡二叉树相结合、堆栈、队列、串、图(红色字体表示本课设使用的数据结构)C++语言项:STL库(红色字体表示使用C++的STL库)编译环境:Windows 7 64位旗舰版(Linux及其他环境请谨慎下载)集成开发环境:Visual C++ 6.0、DEVC++、CodeBlocks、Visual Studio 2015(需进行修改)均可通过编译。

(若无法通过编译运行,则会用浅蓝色字体表示)分多头文件编译:否(所有代码基本都包含在一个文件内,如需试验头文件功能,请自行参考相关文献)内容说明:1、课设题目及预览内容将在第二页开始展示。

2、代码行数:304行3、目录所示内容,本文基本涵盖,如无内容,会在本页进行说明。

4、附录绝对包含用户使用手册及程序完整源代码和详细注释。

5、如需下载其他头文件(例如DirectX需另行配置),本文会在此进行说明。

6、未经平台、本人及相关法律法规允许,请勿用于其它商业行为,否则后果自负。

7、本文撰写内容仅供学习参考,另外,由于本人水平有限,编写之处难免存在错误和纰漏,恳请各位老师或同学批评指正。

销售管理系统设计某公司有四个销售员(编号:1-4),负责销售五种产品(编号:A-E)。

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

每张便条包含内容:1)销售员的代号,2)产品的代号,3)这种产品当天的销售额。

每位销售员每天上缴1张便条。

系统基本功能:1、系统以菜单方式工作2、便条信息录入功能(便条信息用文件保存)3、收集到了上个月的所有便条后,读取销售情况1)计算每个人每种产品的销售额。

C语言商店销售管理系统课程设计

C语言商店销售管理系统课程设计

商店销售管理系统#include <stdio.h>#include <time.h>#define N 1000 //N代表货物的最大种类struct goods{char name[10];//商品名称int amount;//商品数量int num;//商品编号float price;//商品价格}sp[N],sc[N];//定义全局变量int flag=1;FILE *fp;int i=0;int k=0;int b=0;chakan()//显示目前的库存{int zong=0;fp=fopen("chaoshi.txt","r");for(i=1;i<=(k+b);i++)fread(&sp[i],sizeof(struct goods),1,fp);fclose(fp);for(i=1;i<=k;i++){zong=zong+sp[i].num;}if(zong!=0){printf(" 目前库存情况为:名称数量价格编号\n");for(i=1;i<=(k+b);i++){printf(" %s %d %f %d\n",sp[i].name,sp[i].amount,sp[i].price,sp[i].num);}}else printf("\n #####目前库存为#####\n");}jinhuo()//进货模块{do{k++;i++;printf(" 请输入商品的名称.数量.价格.标号(>0)例如:a 1 2.5 111\n\t\t\t");scanf("%s %d %f %d%c",sp[i].name,&sp[i].amount,&sp[i].price,&sp[i]. num);printf(" 是否继续,是(1),否(0)\n\t\t\t");scanf("%d",&flag);}while(flag!=0);fp=fopen("chaoshi.txt","w");for(i=1;i<=k;i++)fwrite(&sp[i],sizeof(struct goods),1,fp);fclose(fp);chakan();}xiaoshou()//销售模块{float m[100];int z=1;int j[100];int a[100];int g=0;int y=0;int h=0;float zong=0;fp=fopen("chaoshi.txt","r");for(i=1;i<=k;i++)fread(&sp[i],sizeof(struct goods),1,fp);fclose(fp);do{g++;y++;loop: printf(" 请输入商品编号和数量,例如:(100 20)\n\t\t\t");scanf("%d %d",&j[y],&a[y]);for(z=1;z<=k;z++){if(j[y]==sp[z].num){h++;sp[z].amount=sp[z].amount-a[y];m[y]=(float)a[y]*sp[z].price;sc[y]=sp[z];}}if(h==0){printf(" 输入有误,请重新输入\n\t\t\t");goto loop;}fp=fopen("chaoshi.txt","wt");for(i=1;i<=k;i++)fwrite(&sp[i],sizeof(struct goods),1,fp);fclose(fp);printf(" 是否继续,是(1),否(0)\n\t\t\t");scanf("%d",&flag);}while(flag!=0);printf("\n############################################\n");printf(" 编号名称单价数量总计\n");for(y=1;y<=g;y++){printf(" %4d%10s%8.2f%6d%13.2f\n",sc[y].num,sc[ y].name,sc[y].price,a[y],m[y]);zong=zong+m[y];}printf(" 您此次一共消费%f 元,欢迎您下次光临\n",zong);shijian();}zengjia()//增加商品数量模块{float m;int z=1;int j[100],a[100];int g=0;int y=0;int zong=0;int h=0;fp=fopen("chaoshi.txt","r");for(i=1;i<=k;i++)fread(&sp[i],sizeof(struct goods),1,fp);fclose(fp);do{g++;y++;loop: printf(" 请输入商品编号和数量,例如:(100 20)\n\t\t\t");scanf("%d %d",&j[y],&a[y]);for(z=1;z<=k;z++){if(j[y]==sp[z].num){h++;sp[z].amount=sp[z].amount+a[y];m=a[y]*sp[z].price;sc[y]=sp[z];}}if(h==0){printf(" 输入有误,请重新输入\n\t\t\t");goto loop;}fp=fopen("chaoshi.txt","wt");for(i=1;i<=k;i++)fwrite(&sp[i],sizeof(struct goods),1,fp);fclose(fp);printf(" 是否继续,是(1),否(0)\n\t\t\t");scanf("%d",&flag);}while(flag!=0);chakan();}shanchu()//删除商品模块{int z;int j[100],a[100];int c=0;int y=0;int h=0;do{c++;loop: printf(" 请输入您想删除的商品编号\n\t\t\t");scanf("%d",&j[y]);for(z=1;z<=k;z++){h++;if(j[y]==sp[z].num)sp[z]=sp[z+1];}if(h==0){printf(" 输入有误,请重新输入\n\t\t\t");goto loop;}fp=fopen("chaoshi.txt","wt");for(i=1;i<=(k-1);i++)fwrite(&sp[i],sizeof(struct goods),1,fp);fclose(fp);printf(" 是否继续,是(1),否(0)\n\t\t\t");scanf("%d",&flag);}while(flag!=0);chakan();}shijian(){struct tm when;time_t now;time(&now);when=*localtime(&now);printf(" %s\n",asctime(&when));}main()//主函数{int choice;do{printf("\n\n\n ********超市管理系统*******\n\n");printf(" 1.进货\n");printf(" 2.销售\n");printf(" 3.增加商品数量\n");printf(" 4.删除商品\n");printf(" 5.查看目前库存\n");printf(" 0.返回主菜单\n");printf(" 请选择您要进行的操作\n\t\t\t");scanf("%d",&choice);switch(choice){case 1:jinhuo();break;case 2:xiaoshou();break;case 3:zengjia();break;case 4:shanchu();break;case 5:chakan();break;case 0:break;default :printf(" 输入有误,请重新输入\n\t\t\t");}}while(choice!=0);}。

销售管理系统源代码

销售管理系统源代码
{ FILE *fp;
char fname[10];
int i,j,sum[Z+1]={0};
system("cls"); /*清屏命令*/
printf("您想计算哪个月?\n");
printf("请输入月份:"); /*实为输入一个文件名,这样可以进行各个月份的信息读入*/
for(i=0;i<Z;) /*用于存储商品编号*/
bianhao[i]=i++;
for(i=0;i<Z;i++)
printf("%3d",bianhao[i]);
for(i=0;i<Z;i++) /*对产品从高到低排序,选择法排序*/
for(i=0;i<R;i++) /*按K种产品对销售员排序,选择法3;1;j<R;j++)
if((x+bianhao[t])->shangpin[k]<(x+bianhao[j])->shangpin[k])/*调用职工各自对应的结构体内的产品数量*/ t=j;
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) /*输出统计报表*/
{ system("cls"); /*清屏命令*/

C语言课程设计《商品销售管理系统》

C语言课程设计《商品销售管理系统》

C语言课程设计《商品销售管理系统》摘要本文介绍的是C语言课程设计《商品销售管理系统》,通过使用C语言编程制作的电脑程序,能实现商品销售入库、库存管理、采购管理、商品销售及库存查询功能,设计的目的是为了让电脑为商店的销售管理工作提供帮助。

关键词:C语言课程设计;商品销售管理系统;商品入库;库存管理;采购管理。

1 绪论商品销售管理系统是一种电脑信息系统,是通过计算机程序实现库存管理、采购管理、销售管理、库存查询等基本功能,以便更有效地管理货物出售,节省人力与财力的。

因此,本文将使用C语言开发一个基于计算机的商品销售管理系统,以实现商品销售入库、库存管理、采购管理、商品销售及库存查询等功能。

2 功能需求2.1主菜单程序的功能菜单由主菜单控制,主菜单主要有以下几项功能:(1)商品入库(2)库存管理(3)采购管理(4)库存查询(5)商品销售(6)退出系统2.2 商品入库此功能需要实现商品信息录入功能,比如商品名称、售价、单位、购买数量等。

2.3 库存管理此功能的功能是实现对商品库存的管理,可以实现对商品库存的查看和管理功能,方便商家明确库存量。

2.4 采购管理此功能是实现采购管理,功能包括供货商信息管理、商品采购管理、采购账务记账等。

2.6 商品销售此功能用于实现对商品的销售,可以实现商品信息的查看及购买,销售的同时可以实现商品库存的查看。

3 系统建模系统建模是用逻辑模型来描述系统信息流程,包括实体-实体关系模型、关系模型及功能模型,实体-实体关系模型可以描述系统中各实体之间关系的抽象结构;关系模型能将系统中的关键实体和关联分析结构表示出来;功能模型能实现各种功能以及功能之间的关系结构。

4 系统设计本系统的设计重点是编写C语言程序,以实现商品销售管理系统功能。

核心算法包括以下:(1)无源文件init_menu(),用于初始化主菜单,根据用户输入调用不同的程序完成功能;(2)商品入库文件proc_input(),主要实现商品信息录入功能,需要获取用户输入的商品信息并存储;(3)库存管理文件proc_manage(),实现对商品库存的查看和管理功能,若商品库存不足,则可以选择跳转到商品采购管理程序;(4)采购管理文件proc_buy(),主要实现采购管理功能,包括供货商信息管理、商品采购管理、采购账务记账等;(5)库存查询文件proc_search(),用于实现对商品库存数量查询;(6)商品销售文件proc_sale(),用于实现商品的销售,销售的同时可以实现商品库存的查看。

c语言销售管理系统

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语言课程设计销售管理系统报告代码

c语言课程设计销售管理系统报告代码

c语言课程设计销售管理系统报告代码This model paper was revised by the Standardization Office on December 10, 2020HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGY C语言程序设计课程设计报告课设题目:销售系统专业:电气工程及其自动化班级: T1123-6姓名:成绩:完成日期: 2012年6月18日-2012年6月22日指导教师: 胡宁亚目录1.课程设计目的1)通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。

2)通过课程设计,进一步掌握C语言中重要的数据结构。

掌握并熟练运用指针、链表、结构体、文件等数据结构。

3)通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。

4)通过课程设计,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。

5)通过课程设计,加强了自己的程序分析能力。

2.需求分析要求1)遵循软件开发过程的基本规范;能灵活应用,初步具备运用C程序解决实际问题的能力。

2)运用结构化程序设计方法,按照课程设计题目要求,完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试C程序等过程。

3)学会利用数组、结构体、链表进行相关信息表示。

4)功能模块划分清晰,系统结构图符合功能操作要求,且有详尽的功能描述5)各主要功能模块有详尽的流程图及描述,用函数的形式实现,且调用入口、功能、出口等关系正确。

6)所设计的C程序较好的可读性和可靠性;程序书写风格规范,注释清晰。

7)界面友好(良好的人机互交),凡需要输入信息时,都有较详尽的提示信息,并对输入信息有较完善的值域分析。

8)程序经上机调试通过,不应出现语法型、功能型错误,并获得满意的结果。

9)学会通过各功能性测试用例测试程序的能力,尽可能避免原则性错误的出现。

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

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

HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGY C语言程序设计课程设计报告课设题目:销售系统专业:电气工程及其自动化班级: T1123-6姓名:成绩:完成日期: 2012年6月18日-2012年6月22日指导教师: 胡宁亚目录1.课程设计目的.........................................................2.需求分析.............................................................2.1要求...........................................................2.2任务描述.......................................................2.3运行环境.......................................................2.4开发工具.......................................................3.总体设计.............................................................3.1系统流设计.....................................................3.2系统模块设计...................................................4.详细设计.............................................................4.1数据结构设计...................................................4.2模块接口设计...................................................4.3 以下是几个主要模块的流程图:...................................5.运行结果...........................................................5.1主菜单界面:...................................................5.2销售员信息录入界面:...........................................5.3销售产品信息录入界面:.........................................5.4销售信息录入界面:.............................................5.5销售信息查寻界面:.............................................5.6销售信息保存界面:.............................................5.7题目显示界面:.................................................5.8信息删除界面:.................................................5.9销售报表显示界面:.............................................6.程序调试与测试.......................................................6.1程序调试.......................................................6.2程序测试.......................................................7.问题与不足...........................................................8.建议.................................................................9.编程体会.............................................................10.程序源代码:........................................................11.参考文献............................................................12.用户使用手册........................................................1.课程设计目的1)通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。

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

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

C语言课程设计报告销售管理系统一、题目要求某公司有四个销售员,(编号1-4),负责销售五种产品(编号1-5).每个销售员都将当天出售的每种产品各写一张便条过来.每长便条包含内容:①销售人员的代号②产品的代号;③这种产品的当天的销售额;每位销售人员每天肯上缴的0—5张便条.假如收集到了上个月的所有便条,编写一个处理程序,读取上个月的销售情况(自己假设),进行如下处理。

①计算上个月每个人每种产品的销售额;②按销售额对销售人员进行排序,输出排序的结果(销售员代号);③统计每种产品的总销售额,对这些产品按从高到低的顺序,输出排序结果(需要输出产品的代号和销售额);④输出统计报表。

二、需求分析本程序将用到结构体数组来实现,结构体成员要包括销售员代号、产品代号、销售额。

待输入相关数据后,要将上个月每个人每种产品的销售额输出,然后按销售额参照冒泡法或选择排序算法对销售员进行排序,并输出排序结果。

最后,要统计每种产品的总销售额,对这些产品按销售额从高到低的顺序输出排序结果。

三、总体设计下面就以上的需求分析对程序进行总体设计,可以将这个系统的设计分为三个模块:计算上个月每个销售员每种产品的销售额、按销售额给销售员排序、按销售额给产品排序。

如图:销售管理系统↙↓↘每个销售员每种产品的销售额按销售额给销售员排序按销售额给产品排序四、程序分析:对输入的每个销售人员的信息用结构体实现;结构体成员包括销售人员代号,产品代号产品销售额,输入时候包含三个for循环,按月循环,按销售人员循环,按销售额循环.输入销售额由于按结构体控制输入,将销售额,销售人员,销售产品的信息联系在一起,便于后面的统计:#include<stdio.h>#define P 1struct message{int seller[4];int product[4][5];int sale[4][5];}sell[50];void menu(){printf("\t\t*****************销售管理系统*****************\n\n");printf("\t\t\t\t一:输入模块\n");printf("\t\t\t\t二:统计计算模块\n");printf("\t\t\t\t三:打印输出模块\n");}int main(){int i,j,k,n,m,p;int a[4][5],b[4]={0},c[10],d[10][2];int e[5]={0},f[10][2];message sell[50];menu();for(i=1;i<=P;i++)for(j=1;j<=4;j++){printf("请输入销售人员编号:\n");scanf("%d",&n);for(k=1;k<=5;k++){printf("请输入产品编号:\n");scanf("%d",&m);printf("请输入产品当天销售额:\n");scanf("%d",&sell[i].sale[n][m]);}}/*输入*/printf("\t\t*****************统计报表系统*****************\n\n");printf("\t\t\t一:上个月每个销售人员每种产品的销售额\n");for(i=1;i<=4;i++)/*计算上个月每个人每种产品的销售额*/for(j=1;j<=5;j++){for(k=1;k<=P;k++)a[i][j]+=sell[k].sale[i][j];printf("上个月销售人员%d销售产品%d的销售额为%d\n",i,j,a[i][j]);}printf("\n\t\t\t二:上个月每个销售人员销售额排序\n");for(i=1;i<=4;i++)for(j=1;j<=5;j++)b[i]+=a[i][j];/*每个销售员的销售额*/ for(i=1;i<=4;i++){c[i]=b[i];}for(i=1;i<=4;i++)for(j=i+1;j<=4;j++)if(c[i]<c[j]){p=c[i];c[i]=c[j];c[j]=p;}for(i=1;i<=4;i++){for(j=1;j<=4;j++)if(c[i]==b[j]){d[i][0]=j;d[i][1]=b[j];}/*按销售额给销售员排序*/printf("销售人员%d的销售额为%d\n",d[i][0],d[i][1]);}printf("\n\t\t\t三:上个月每种产品总销售额排序\n");for(i=1;i<=5;i++)for(j=1;j<=4;j++)e[i]+=a[j][i];/*每种产品总销额*/for(i=1;i<=5;i++){c[i]=e[i];}for(i=1;i<=5;i++)for(j=i+1;j<=5;j++)if(c[i]<c[j]){p=c[i];c[i]=c[j];c[j]=p;}for(i=1;i<=5;i++){for(j=1;j<=5;j++)if(c[i]==e[j]){f[i][0]=j;f[i][1]=e[j];}/*产品销售额排序*/printf("上个月产品%d的销售额为%d\n",f[i][0],f[i][1]);}printf("\t\t*****************统计报表系统尾端*****************\n\n"); return 0;五、运行结果输入程序部分截图输出程序截图六、学习心得四天紧张而快乐的上机实习,让我再次感受到了c语言的难度,也让我从本质上对c语言这门学科有了更深层次的认识。

c语言课程设计(销售管理系统)【完整版】

c语言课程设计(销售管理系统)【完整版】

enter(RECODE t[]): struct
2
清屏之后输出提示语“请输入便条的信息” ,按提示语输入便条信息,输入 数 据 的 同 时 , 已 将 该 信 息 存 入 开 始 已 定 义 的 结 构 体 数 组 typedef
RECORD
t[ ]中,以便在排序功能选项、统计功能选项、输出清单列表选项
三、输入数据类型、格式和内容限制:
数据名称 销售员代号 产品代号 功能键代号 所有产品总和 每个销售员的 总销售额 每个人每种产 品的总销售额 数据关联 name,s,m[] a1,a2,a3, a4,a5 n sum c[] 数据类型 int 整型变量 int 整型变量 int 整型变量 int 整型变量 int 整型变量 数据格式 %d,%d,%d %d%d%d%d%d %d %d %d %d%d%d%d%d 内容限制 大于 0 小于 5 大于 0 小于 6 大于等于 0 小 于8 大于 0 大于 0 大于 0
sum+=t[i].a1;sum+=t[i].a2;sum+=t[i].a3; sum+=t[i].a4;sum+=t[i].a5;
i++
排序函数 void list1 (RECODE t[],int n)流程图:
定义两个数组 c[4],m[4] i=0 i=0
假 真
i<4
i<4

i=0,j=i+1
i++
6
五、程序的源代码清单:
#include <stdio.h>/*输入输出函数*/ #include <stdlib.h>/*通用应用程序函数*/ typedef struct /*定义结构体变量*/ { int name; int a1; int a2; int a3; int a4; int a5; }RECODE; int menu_select();/*选择菜单函数声明*/ int enter(RECODE t[]);/*进入函数声明*/ void salor(RECODE t[],int n);/*声明函数*/ int sum(RECODE t[],int n,int m);/*统计函数声明*/ void list1(RECODE t[],int n);/*菜单 1 函数声明*/ void list2(RECODE t[],int n);/*菜单 2 函数声明*/ void list3(RECODE t[],int n);/*菜单 3 函数声明*/ void save(RECODE t[],int n);/*保存文件函数声明*/ int load(RECODE t[]);/*读取函数声明*/ void main()/*主函数*/ { RECODE rec[600]; int length; system("cls"); /*清屏*/ for( ; ; ) /*无限循环*/ {switch(menu_select()){ /*根据用户的选择判断该调用哪个功能函数*/ case 1:length=enter(rec);break; case 2:salor(rec,length);break; case 3:list1(rec,length);break; case 4:list2(rec,length);break; case 5:list3(rec,length);break; case 6:save(rec,length);break; case 7:length=load(rec);break; case 0:exit(0);} }} /***************************菜单函数**************************/ int menu_select() { int n;

C语言课程设计报告——《商品销售管理》

C语言课程设计报告——《商品销售管理》

湖北汽车工业学院电气与信息工程学院《C语言程序设计》课程设计课程设计题目:商品销售管理专业:电子信息科学与技术班级: T1023-11姓名:余勇成绩:目录一、需求分析 (3)1.2问题 (3)1.2系统 (3)1.3运行要求 (3)二、总体设计 (3)2.1系统流程设计 (3)2.2系统模块设计 (4)三、详细设计 (5)3.1数据结构设计 (5)3.2界面设计 (6)3.3模块实现 (13)四、功能模块的调试和测试 (21)五、课程设计总结 (24)六、致谢 (27)参考文献 (28)附录一、需求分析1、问题问题描述:已知一公司有10种产品(产品编号,产品名称,产品价格,产品产地,库存数量(最开始为1000个)),设计一程序,完成以下功能:①销售:从键盘输入顾客姓名,销售数量、销售日期,实现销售功能。

需要判断产品是否存在,销售数量是否小于库存数量,销售日期格式是否合法(格式为:YYYY-MM-DD,如2009-01-02))②计算时间段内各个产品的销售总额③能根据顾客姓名,查询购买历史④能显示所有顾客的姓名根据需求,该系统所应包含的信息有以下一些:商品销售的基本信息:顾客姓名、产品类型、销售数量、销售日期、库存数量、销售总额;根据需求,该系统所应实现的功能有以下一些:1. 各种基本数据的录入。

如:产品销售的基本信息的录入。

2. 基于各种基本数据的查询。

即允许对已经录入的数据进行查询。

例如根据产品编号查询产品的销售历史;根据顾客姓名,查询购买历史。

3. 各种基本数据的计算。

计算时间段内各个产品的销售总额。

4. 数据的显示:显示所有顾客的姓名。

5. 数据导出:将销售信息导出到指定文件。

6. 数据导入:从指定文件导入销售信息。

2、系统采用C语言实现,开发环境为VC6.0,可以运行在操作系统windows98及以上皆可。

3、运行要求1)能不受限制的录入销售信息;2)界面友好,操作方便,例如保存前需要提示用户是否保存;3)容错性强,例如数据导出时,如果文件不存在需要提示用户。

C语言设计实现销售管理系统源代码

C语言设计实现销售管理系统源代码

#include"stdio.h"#include"string.h"#include"stdlib.h"struct goods{char name[20];int price;char pro[20];int kc;int xs;}s[30];void add();void select();void update();void center(){int k;printf("----------------------欢迎登陆销售管理系统--------------------\n");printf(" \n");printf(" \n");printf(" \n");printf("请输入您要操作的功能:\n");printf("1,添加商品信息2,查找商品信息3,修改商品信息4,退出系统\n"); scanf("%d",&k);switch(k){case 1:system("CLS");add();break;case 2:system("CLS");select();break;case 3:system("CLS");update();break;case 4:exit(0);break;}}void add()FILE *fp;fp=fopen("goods.txt","a");printf("请输入商品名称单价生产厂家库存量销售量\n"); scanf("%s%d%s%d%d",&s[0].name,&s[0].price,&s[0].pro,&s[0].kc,&s[0].xs); fwrite(&s[0],sizeof(struct goods),1,fp);printf("添加成功\n");fclose(fp);center();}void select(){int i;char name[20];int money,k;FILE *fp;fp=fopen("goods.txt","rb");printf("您是要查找1;按商品名称2;生产厂家:\n");scanf("%d",&k);switch(k){case 1:printf("请输入商品名称:\n");scanf("%s",&name);for(i=0;i<30;i++){fread(&s[i],sizeof(struct goods),1,fp);if(strcmp(s[i].name,name)==0){printf("销售量金额库存量为:\n");money=s[i].price*s[i].xs;printf("%d\t%d\t%d\n",s[i].xs,money,s[i].kc);}}break;case 2:printf("请输入生产厂家:\n");scanf("%s",&name);for(i=0;i<30;i++){fread(&s[i],sizeof(struct goods),1,fp);if(strcmp(s[i].pro,name)==0){printf("销售量金额库存量为:\n");money=s[i].price*s[i].xs;printf("%d\t%d\t%d\n",s[i].xs,money,s[i].kc);}break;}fclose(fp);center();}void update(){int i;char name[20];int up,k;FILE *fp;fp=fopen("goods.txt","rb");for(i=0;i<30;i++){fread(&s[i],sizeof(struct goods),1,fp);}fclose(fp);if((fp=fopen("goods.txt","wb"))!=NULL)printf("请输入您要修改的商品名称:\n"); scanf("%s",name);printf("您要修改:1,库存量2,销售量\n"); scanf("%d",&k);switch(k){case 1:for(i=0;i<30;i++){if(strcmp(s[i].name,name)==0){printf("请输入您要修改的值:\n");scanf("%d",&up);s[i].kc=up;printf("修改成功\n");}fwrite(&s[i],sizeof(struct goods),1,fp);}break;case 2:for(i=0;i<30;i++){if(strcmp(s[i].name,name)==0){printf("请输入您要修改的值:\n");scanf("%d",&up);s[i].xs=up;printf("修改成功\n");}fwrite(&s[i],sizeof(struct goods),1,fp); }break;}fclose(fp);center();}int main(){center();}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言课程设计商品销售信息管理系统#include<stdio.h>#include<stdlib.h>#include<string.h>#include<malloc.h>struct product //定义商品数据结构{int num; //商品编号char productname[20]; //商品名称float price; //商品售价char place[30]; //商品产地int storage; //商品库存struct product *next;}*head,*p1,*p2; //定义主结构体数组和备用结构体数组及指针struct time //定义时间结构体{int year;int month;int day;};struct sell //定义销售数据结构{int ID; //顾客代码char customername[20]; //顾客姓名int num; //商品编号int count; //销售数量char date[10]; //日期struct sell * next1;}*head1; //定义头指针head,缓冲指针p1,以及尾指针p2/*************************函数申明****************************/ void Enter_productmessage(); //导入商品信息void Creat(); //输入销售记录void Search_num(); //按编号查询销售历史void Search_customername(); //按顾客姓名查询购买历史void Printf_customername(); //显示顾客信息void Search_date(); //计算时间段内销售总额void Save_product(); //保存销售信息void Save_customername(); //保存顾客信息void Exit(); //退出程序/***************************主菜单******************************/ int select(){int c;printf("\t\t************欢迎使用商品销售管理程序**************\n");printf("\t\t T1123-5班胡军一分耕耘一分收获\n");printf("\n--------------------------------------------------------------------------------\n");printf("\n");printf("\t\t********************************************\n");printf("\t\t**********欢迎使用商品销售管理系统**********\n");printf("\t\t** **\n");printf("\t\t** 1:导入商品信息**\n");printf("\t\t** 2:输入销售记录**\n");printf("\t\t** 3:按编号查询销售历史**\n");printf("\t\t** 4: 按顾客姓名查询购买历史**\n");printf("\t\t** 5:计算时段内各销售总额**\n");printf("\t\t** 6:显示顾客信息**\n");printf("\t\t** 7:保存销售信息**\n");printf("\t\t** 8:保存顾客信息**\n");printf("\t\t** 0:退出**\n");printf("\t\t********************************************\n");printf("\n--------------------------------------------------------------------------------\n");printf("\t\t请输入您的选择(0~8的整数): ");scanf("%d",&c);return c;}/********************************主函数***************************/int main(){for(;;){switch(select()){case 1:system("cls");Enter_productmessage();break;case 2:system("cls");Creat();break;case 3:system("cls");Search_num();break;case 4:system("cls");Search_customername();break;case 5:system("cls");Search_date();break;case 6:system("cls");Printf_customername();break;case 7:system("cls");Save_product();break;case 8:system("cls");Save_customername();break;case 0:system("cls");Exit();break;default :{ system("cls");printf("\n\n\n\n\n\n");printf("\t\t*******************************************************\n");printf("\t\t** 输入错误!!!请重新输入您的选择(0~8的整数)**\n");printf("\t\t** 请按Enter键返回!!! **\n");printf("\t\t*******************************************************\n");getchar();getchar();system("cls");}}}return 0;}/****************************************************************/int judgech(char *a) //判断是否为汉字{int i,flag;for(i=0;a[i]!='\0';i++)if(a[i]>=0){flag=0;break;}elseflag=1;return flag;}int judgedate(char date[10]) //判断日期是否合法{int i,year,month,day,s1=0; //日期格式输入正确则s1=1,否则s1=0for(i=0;i<10;i++)if(date[i]=='\0'){s1=0;break;}if(date[4]=='-'&&date[7]=='-'){if(strlen(date)==10){year=1000*(date[0]-48)+100*(date[1]-48)+10*(date[2]-48)+(date[3]-48);//年月日month=10*(date[5]-48)+(date[6]-48);day=10*(date[8]-48)+(date[9]-48);}}if(i==10){if(year%4==0&&month==2&&day>0&&day<=29) s1=1;else if(year%4!=0&&month==2&&day>0&&day<=28) s1=1;elseif((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&d ay>0&&day<=31) s1=1;else if((month==4||month==6||month==9||month==11)&&day>0&&day<=30) s1=1;}return s1;}void file() //读入文件操作{int i=0,m=0,k=1,j=1,c=1,o=1,v=1;FILE *fp;char filename[30];printf("请输入读入文件路径:");rewind(stdin);gets(filename);rewind(stdin);p1=p2=head=(struct product*)malloc(sizeof(struct product));if((fp=fopen(filename,"r+"))==NULL){printf("\t\t********************************************\n");printf("\t\t** 导入信息文件错误!请检查文件路径!!! **\n");printf("\t\t********************************************\n");getchar();system("cls");Enter_productmessage();}printf("********************************商品信息***********************************\n");printf("编号(1-10的整数) 名称(汉字) 价格(数字) 产地(汉字) 库存数量\n");printf("************************************************************************* **\n");while(!feof(fp)){p1=(struct product*)malloc(sizeof(struct product));p2->next=p1;p1->next=NULL;p2=p1;fscanf(fp,"%d%s%f%s%d",&p2->num,p2->productname,&p2->price,p2->place,&p2->storage );while(k==1){if(p2->num>10||p2->num<=0){printf("\t*******************************************************\n");printf("\t\t第%d个商品编码!请重新输入(1-10):",i+1);rewind(stdin);scanf("%d",&p2->num);k=1;}else k=0;}while(j==1){if(judgech(p2->productname)==0){printf("\t\t第%d个商品名称错误!请重新输入(汉字):",i+1);rewind(stdin);scanf("%s",p2->productname);j=1;}else j=0;}while(o==1){if(p2->price<=0){printf("\t\t第%d个商品价格错误!请重新输入价格(>0):",i+1);rewind(stdin);scanf("%f",&p2->price);o=1;}else o=0;}while(c==1){if(judgech(p2->place)==0){printf("\t\t第%d个商品产地格式错误!请重新输入(汉字):",i+1);rewind(stdin);scanf("%s",p2->place);c=0;}else c=0;}while(v==1){if(p2->storage!=1000){printf("\t*******************************************************\n");printf("\t\t第%d个商品数量错误!请输入1000:",i+1);rewind(stdin);scanf("%d",&p2->storage);v=1;}else v=0;}printf("\t%-12d%-15s %-15.2f%-15s%-12d\n",p2->num,p2->productname,p2->price,p2->pla ce,p2->storage);}fclose(fp);}void comp(){FILE *fp;int i=0,n,k=1,m=1,c=1,l=1,d=1;char filename[20],a;printf("\t请输入商品信息保存路径:");rewind(stdin);gets(filename);p1=p2=head=(struct product*)malloc(sizeof(struct product));if((fp=fopen(filename,"a+"))==NULL){printf("\t\t********************************************\n");printf("\t\t** 不能打开文件!请检查文件路径!!! **\n");printf("\t\t********************************************\n");getchar();system("cls");Enter_productmessage();}printf("\n\n\n");printf("\t\t********************************************\n");printf("\t\t** 若输入路径与从文件导入商品信息路径相同!**\n");printf("\t\t** 并已导入十个商品信息,请不要再导入!!! **\n");printf("\t\t** 注意商品编号不要和已导入的编码重复!!! **\n");printf("\t\t********************************************\n");printf("\n\n\n");getchar();system("cls");printf("\t已从文件导入的个数和要输入的个数和不超过十!!!\n\n");printf("\t请输入要导入的销售记录个数:");scanf("%d",&n);if(n>0){do{p1=(struct product*)malloc(sizeof(struct product));p2->next=p1;p1->next=NULL;p2=p1;printf("***********************************商品信息*****************************\n");printf(" 编号(整数) 名称(汉字) 价格(数字) 产地(汉字) 库存数量\n");scanf("%d%s%f%s%d",&p2->num,p2->productname,&p2->price,p2->place,&p2->storage);while(k==1){if(p2->num>10||p2->num<=0){printf("\t*******************************************************\n");printf("\t\t 商品编码!请重新输入(1-10):");rewind(stdin);scanf("%d",&p2->num);k=1;}else k=0;}while(m==1){if(judgech(p2->productname)==0){printf("\t\t商品名称错误!请重新输入(汉字):");rewind(stdin);scanf("%s",p2->productname);m=1;}else m=0;}while(l==1){if(p2->price<=0){printf("\t\t商品价格错误!请重新输入价格(>0):");rewind(stdin);scanf("%f",&p2->price);l=1;}else l=0;}while(c==1){if(judgech(p2->place)==0){printf("\t\t商品产地格式错误!请重新输入(汉字):");rewind(stdin);scanf("%s",p2->place);c=1;}else c=0;}while(d==1){if(p2->storage!=1000){printf("\t*******************************************************\n");printf("\t\t 商品数量错误!请输入1000:");rewind(stdin);scanf("%d",&p2->storage);d=1;}else d=0;}p2=head->next;fprintf(fp,"\n%-6d%-6s%-6.2f%-6s%-6d\n",p2->num,p2->productname,p2->price,p2->place, p2->storage);printf("\n%-6d%-6s%-6.2f%-6s%-6d\n",p2->num,p2->productname,p2->price,p2->place,p2->storage);printf("\t\t是否继续输入信息(Y/N)?\n");getchar();a=getchar();}while(a=='Y'||a=='y');}fclose(fp); //关闭文件夹if(n==0){printf("\t\t不从键盘输入入信息!!!");getchar();getchar();system("cls");}fclose(fp); //关闭文件夹}void Enter_productmessage() //导入销售信息{int a;printf("\t************************************************************\n");printf("\t** 请输入10种产品的信息--编号、名称、价格、产地、数量: **\n");printf("\t** 1:通过文件导入(推荐)! **\n");printf("\t** 2: 通过键盘输入! **\n");printf("\t************************************************************\n");printf("\t 请输入您的选择(1或2): ");scanf("%d",&a);getchar();system("cls");if(a!=1&&a!=2){printf("\t\t输入错误!!!请重新输入您的选择(1或2):");scanf("%d",&a);}switch(a){case 1:system("cls"); file();break;case 2:system("cls"); comp();break;}printf("************************************************************************* \n");printf("\t*******************************************************\n");printf("\t** 数据类信息操作成功!请按Enter键继续!!! **\n");printf("\t*******************************************************\n");getchar();getchar();system("cls");}void Creat() //输入销售信息函数{int i=0,k=1,code;char a;struct sell *p3,*p4;srand(0);code=1+rand()%90;p3=p4=head1=(struct sell *)malloc(sizeof(struct sell));p3=head1;printf("\t\t请输入销售记录:\n"); //提示输入记录printf("--------------------------------------------------------------------------------\n");do{p3=(struct sell *)malloc(sizeof(struct sell));p4->next1=p3;p3->next1=NULL;p4=p3;printf(" 顾客姓名(汉字) 商品编号(1-10的整数) 销售数量(数字) 销售日期(YYYY-MM-DD)\n");printf("--------------------------------------------------------------------------------\n");scanf("%s%d%d%s",p4->customername,&p4->num,&p4->count,p4->date); //输入记录do{if(judgech(p4->customername)==0){printf("\t*******************************************************\n");printf("\t\t顾客名字输入错!请重新输入顾客名字(汉字):");scanf("%s",p4->customername);rewind(stdin);k=1;}elsek=0;}while(k==1);do{if(p4->num>10||p4->num<=0){printf("\t*******************************************************\n");printf("\t\t 商品编码!请重新输入(1-10):");scanf("%d",&p4->num);rewind(stdin);k=1;}else k=0;}while(k==1);do{if(p4->count>1000||p4->count<0){printf("\t*******************************************************\n");printf("\t 销售商品数量错误!请输入(0-1000):");scanf("%d",&p4->count);rewind(stdin);}else k=0;}while(k==1);do{if(judgedate(p4->date)!=1){printf("\t*******************************************************\n");printf("\t 输入日期不合法!请重新输入(YYYY-MM-DD):");scanf("%s",p4->date);rewind(stdin);k=1;}else k=0;}while(k==1);p4->ID=code+i;i++;printf("\n\n");printf("是否继续输入销售记录(Y/N)?\n");getchar();a=getchar();}while(a=='Y'||a=='y');system("cls");printf("\n\n\n\n");printf("\t*******************************************************\n");printf("\t** 销售信息输入成功!按Enter键继续!!! **\n");printf("\t*******************************************************\n");getchar();getchar();system("cls");return;}void Search_num() //根据产品编号查询产品的销售历史{int num,flag=1,i=0;struct sell *p3;struct product *p;printf("\t\t请输入商品编号(1-10的整数):");scanf("%d",&num);getchar();system("cls");printf(" 顾客姓名商品编号销售数量销售总额销售日期\n");printf(" ------------------------------------------------------------------------------\n");p=head;while(p3!=NULL){if(p3->num==num){p=head;while(p!=NULL){if(p->num==num)break;elsep=p->next;}printf(" %-15s%-13d%-13d%-13.2f%-10s\n",p3->customername,p3->num,p3->count,p->pric e*p3->count,p3->date);flag=0;}p3=p3->next1;}if(flag==1){printf("\t\t*******************************************************\n");printf("\t\t** 无此编码商品销售记录!请查实后再输入!!! **\n");printf("\t\t** 请按Enter键返回!!! **\n");printf("\t\t*******************************************************\n");getchar();system("cls");return;}printf("-------------------------------------------------------------------------------\n");printf("\t\t********************************************\n");printf("\t\t** 销售记录查询完毕!请按Enter键返回!!! **\n");printf("\t\t********************************************\n");getchar();getchar();system("cls");return;}void Search_customername() //根据顾客姓名查询购买历史{int k=1,m=0;float a=0;char name[20],b;struct product *p;struct sell *p3;p3=head1;p=head;printf("\t\t********************************************\n");printf("\t\t\t请输入顾客姓名(汉字):");scanf("%s",name);getchar();system("cls");if(head1->next1==NULL){printf("\t\t*******************************************************\n");printf("\t\t** 销售记录为空!请按Enter键返回!!! **\n");printf("\t\t*******************************************************\n");getchar();getchar();system("cls");return ;}do{if(judgech(name)==0){printf("\t*******************************************************\n");printf("\t\t顾客名字输入错!请重新输入顾客名字(汉字):");rewind(stdin);scanf("%s",name);rewind(stdin);k=1;}elsek=0;}while(k==1);if(judgech(name)==1){printf("顾客姓名(汉字) 顾客代码商品编号购买数量购买总额购买日期(YYYY-MM-DD)\n");printf("-----------------------------------------------------------------------------\n");while(m!=1){if(strcmp(name,p3->customername)==0){m=1;while(p!=NULL){if(p3->num==p->num){printf("%5s%15d%10d%10d%15.2f%14s\n",p3->customername,p3->ID,p3->num,p3->count, p3->count*p->price,p3->date);break;}else p=p->next;}}else p3=p3->next1;if(p3==NULL)break;}}if(m==1){printf("------------------------------------------------------------------------------\n");printf("\t*******************************************************\n");printf("\t** 查询完毕!请按Enter键返回!!! **\n");printf("\t*******************************************************\n");getchar();system("cls");return;}if(m==0){printf("\t\t*******************************************************\n");printf("\t\t** 不存在此顾客!!!请按Enter键继续!!! **\n");printf("\t\t*******************************************************\n");printf("\t\t是否记录该顾客销售记录!!\n");printf("\t\t请输入选择(Y/N):");rewind(stdin);b=getchar();if(b=='n'||b=='N'){getchar();system("cls");return;}if(b=='y'||b=='Y')getchar();Creat();}}void Search_date() //计算时间段内各个商品的销售总额{int n=0;float temp=0;char a[10],b[10],c[10];struct sell *p3;struct product *p;p3=head1->next1;p=head->next;getchar();system("cls");if(head1->next1==NULL){printf("\t\t*******************************************************\n");printf("\t\t** 无销售记录!请按Enter键返回!!! **\n");printf("\t\t*******************************************************\n");getchar();system("cls");return ;}printf("\t\t请输入开始日期(YYYY-MM-DD):");gets(a);do{if(judgedate(a)!=1){printf("\t\t********************************************\n");printf("\t\t 输入日期不合法!请重新输入(YYYY-MM-DD):");gets(a);system("cls");n=1;}elsen=0;}while(n==1);printf("\t\t********************************************\n");printf("\t\t 请输入结束日期(YYYY-MM-DD):");gets(b);system("cls");do{if(judgedate(b)!=1){printf("\t\t********************************************\n");printf("\t\t 输入日期不合法,请重新输入(YYYY-MM-DD):");gets(b);system("cls");n=1;}elsen=0;}while(n==1);do{if((strcmp(a,p3->date)<=0)&&(strcmp(b,p3->date)>=0)){n=1;break;}else p3=p3->next1;if(p3==NULL)break;}while(n!=1);while(1){p3=head1->next1;if((strcmp(a,p3->date)>0&&strcmp(b,p3->date)>0)||(strcmp(a,p3->date)<0&&strcmp(b,p3-> date)<0)||(strcmp(a,b)>0)){printf("时间断不包括销售日期!!!");Search_date();getchar();return;}else p3=p3->next1;if(p3==NULL)break;}if(n==1){printf("\t\t销售记录如下:\n");printf("\t\t时间: %s至%s\n",a,b);printf("\t商品编号(1-10的整数) 商品名(汉字) 销售总额\n");printf("\n--------------------------------------------------------------------------------\n");}while(p!=NULL){p3=head1->next1;if(p3->num==p->num){temp+=(int)p3->count*(float)p->price;strcpy(c,p->productname);printf("\t\t%-20d%-20s%.2f\n",p3->num,c,temp);}p=p->next;}printf("\n--------------------------------------------------------------------------------\n");printf("\t\t**********************************************\n");printf("\t\t** 查询完毕!请按Enter键继续!! **\n");printf("\t\t**********************************************\n");getchar();getchar();system("cls");return;}void Printf_customername() //显示所有顾客的姓名{int n=1;struct sell *p3;p3=head1->next1;if(p3!=NULL){printf("\t\t顾客姓名如下:\n"); //用来显示所有顾客的姓名printf("\t\t*******************************************************\n");printf("\t\t\t\t\t姓名:\n");do{printf("\t\t\t\t\t %s\n",p3->customername);p3=p3->next1;}while(p3!=NULL);printf("\t\t*******************************************************\n");printf("\t\t*******************************************************\n");printf("\t\t**顾客姓名查询完毕!请按Enter键继续!!!**\n");printf("\t\t*******************************************************\n");getchar();getchar();system("cls");return;}else{printf("\t\t*******************************************************\n");printf("\t\t**顾客链表为空!!!没有顾客销售记录!!!**\n");printf("\t\t*******************************************************\n");getchar();system("cls");return;}}void Save_product() //保存销售信息记录{FILE *fp;//定义文件指针char filename[30];struct product *p;struct sell *p3;p3=head1->next1;p=head->next;printf("请输入保存路径:\n");rewind(stdin);gets(filename);rewind(stdin);if((fp=fopen(filename,"a+"))==NULL)//打开文件{printf("\t\t*******************************************************\n");printf("\t\t** 保存文件失败!按Enter键返回!!! **\n");printf("\t\t*******************************************************\n");getchar();getchar();system("cls");Save_product();}printf("\n--------------------------------------------------------------------------------\n");printf("\t商品编码商品品名字销售量剩余库存销售日期\n");while(p3!=NULL){if(p3->num==p->num){fprintf(fp,"%-5d%-20s%-8d%-8d%s\n",p3->num,p->productname,p3->count,p->storage-p3-> count,p3->date);printf("\t %-10d%-15s%-10d%-5d%15s\n",p3->num,p->productname,p3->count,p->storage-p3->c ount,p3->date);p3=p3->next1;}elsep=p->next;}printf("\n--------------------------------------------------------------------------------\n");printf("\t*******************************************************\n");printf("\t** 销售信息保存完毕!按Enter键返回!!! **\n");printf("\t*******************************************************\n");getchar();fclose(fp);getchar();system("cls");return;}void Save_customername(){FILE *fp;//定义文件指针char filename[30];struct sell *p3;p3=head1->next1;printf("请输入保存路径:\n");rewind(stdin);gets(filename);rewind(stdin);if((fp=fopen(filename,"a+"))==NULL)//打开文件{printf("\t\t*************************************************\n");printf("\t\t** 顾客信息保存失败!按Enter键返回!!! **\n");printf("\t\t*************************************************\n");getchar();getchar();system("cls");Save_customername();}else{while(p3!=NULL){fprintf(fp," %d %s \n",p3->ID,p3->customername);printf("\t\t*************************************************\n");printf("\t\t\t顾客编码:%d\t\t顾客名字:%s\n",p3->ID,p3->customername);printf("\t\t*************************************************\n");p3=p3->next1;}printf("\t\t*************************************************\n");printf("\t\t** 数据库中顾客信息保存完毕,按Enter键返回!!! **\n");printf("\t\t*************************************************\n");getchar();fclose(fp);getchar();system("cls");return;}}void Exit(){ printf("\n\n\n\n\n\n");printf("\t\t**********************************************\n");printf("\t\t**** 谢谢使用!!!请按Enter键退出!!! ****\n");printf("\t\t**********************************************\n");printf("\n\n");getchar();exit(0);}。

相关文档
最新文档