当前位置:文档之家› 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语句实现功能选择*/system("cls"); /*清屏*/goto lp; /*返回主界面*/}三、详细设计(1)各功能函数:void input() /*功能1:输入商品信息*/{printf("\n 请输入需要建立新库存的商品种类数量:");scanf("%d",&n);system("cls");printf("\n …………………………………………………………………………………………………\n");for(i=0;i<n;i++) /*用循环实现输入n个商品*/{printf("\n\t*请输入商品的编号:");scanf("%ld",&goods[i].num);printf("\n\t 请输入商品的名称:");—3—scanf("%s",goods[i].name);printf("\n\t 请输入商品的种类:");scanf("%s",goods[i].sort);printf("\n\t 请输入商品的数量:");scanf("%d",&goods[i].count);printf("\n\t 请输入商品的单价:");scanf("%d",&goods[i].price);printf("\n …………………………………………………………………………………………………\n");}printf("\tPlease press any key to continue:");getch();return; /*返回主界面*/}void sequence() /*功能2:排序商品信息*/{long temp;char p1[30],p2[30];for(k=0;k<n-1;k++) /*(1): 按编号排序*/for(i=0;i<n-k-1;i++) /*用起泡法排序*/if(goods[i].num>goods[i+1].num) /*按编号由小到大排序*/{temp=goods[i].num;goods[i].num=goods[i+1].num;goods[i+1].num=temp;strcpy(p1,goods[i].name);strcpy(goods[i].name,goods[i+1].name);strcpy(goods[i+1].name,p1);strcpy(p2,goods[i].sort);strcpy(goods[i].sort,goods[i+1].sort);strcpy(goods[i+1].sort,p2);}printf("--------------------------------------------------------------------------------\n");printf("\n\t\t按商品编号排序后的商品信息\n\n");printf("\t商品编号商品名称商品类别商品数量商品单价\n"); /*输出排序后商品信息*/for(i=0;i<n;i++){printf("\t %5ld %5s %5s %5ld %5ld\n",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price) ;—4—}for(k=0;k<n-1;k++) /*(2): 按商品名称排序*/for(i=0;i<n-k-1;i++)if(strcmp(goods[i].name,goods[i+1].name)>0){strcpy(p1,goods[i].name);strcpy(goods[i].name,goods[i+1].name);strcpy(goods[i+1].name,p1);temp=goods[i].num;goods[i].num=goods[i+1].num;goods[i+1].num=temp;strcpy(p2,goods[i].sort);strcpy(goods[i].sort,goods[i+1].sort);strcpy(goods[i+1].sort,p2);}printf("--------------------------------------------------------------------------------\n");printf("\n\t\t按商品名称排序后的商品信息\n");printf("\n\t商品名称商品编号商品类别商品数量商品单价\n"); /*输出排序后商品信息*/for(i=0;i<n;i++){printf("\t %5s %5ld %5s %5ld %5ld\n",goods[ i].name,goods[i].num,goods[i].sort,goods[i].count,goods[i].price); }for(k=0;k<n-1;k++) /*(3): 按商品类别排序*/for(i=0;i<n-k-1;i++) /*用起泡法排序*/if(strcmp(goods[i].sort,goods[i+1].sort)>0){strcpy(p2,goods[i].sort);strcpy(goods[i].sort,goods[i+1].sort);strcpy(goods[i+1].sort,p2);temp=goods[i].num;goods[i].num=goods[i+1].num;goods[i+1].num=temp;strcpy(p1,goods[i].name);strcpy(goods[i].name,goods[i+1].name);strcpy(goods[i+1].name,p1);}printf("-------------------------------------------------------------—5—-------------------");printf("\n\t\t按商品类别排序后的商品信息\n\n");printf("\t商品类别商品编号商品名称商品数量商品单价\n"); /*输出排序后商品信息*/for(i=0;i<n;i++){printf("\t %5s %5ld %5s %5ld %5ld\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);}printf("--------------------------------------------------------------------------------");printf("please press any key to continue:");getch();return; /*返回主界面*/}void purchase() /*功能3:进货商品信息*/ {long temp; /*定义临时变量表示刚进货的商品编号*/int j;printf("\n\t\5请输入刚进货的商品编号:");scanf("%ld",&temp);printf("\n\t\5请输入刚进货的商品数量:");scanf("%d",&j);printf("\n\n\n\tpress any key to contiue:");getch();system("cls");printf("\n\t输出进货后的商品信息:");for(i=0;i<n;i++) /*循环,寻找与进货相同的商品信息*/if(temp==goods[i].num)goods[i].count=goods[i].count+j; /*自动更改商品数量*/printf("\n\t商品编号商品名商品类别商品数量商品价格");for(i=0;i<n;i++) /*循环,输出进货后的商品信息*/{printf("\n\t %4ld %4s %4s %ld %4ld",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);}printf("\n\n\t\tPress any key to enter menu:");getch(); /*返回功能选择界面*/return;}—6—void sell() /*功能4:销售商品信息*/{long temp; /*定义临时变量temp表示刚销售的商品编号*/int j;printf("\n\t\5请输入刚销售的商品编号:");scanf("%ld",&temp);printf("\n\t\5请输入刚销售的商品数量:");scanf("%d",&j);for(i=0;i<n;i++) /*循环,找到刚销售的商品信息*/{if(temp==goods[i].num){for(;j>goods[i].count;) /*如果销售额大于库存量,则出现错误提示*/{printf("\n\t售出数量大于商品原有数量,出现错误,请重新输入:");scanf("%d",&j);}goods[i].count=goods[i].count-j; /*完成自动更改商品数量的功能*/}}printf("\n\tpress any key to contiue:");getch();system("cls"); /*清屏*/printf("\n\n *销售后商品信息:");printf("\n\t商品类别商品编号商品名称商品数量商品单价\n");for(i=0;i<n;i++) /*循环,输出销售后商品信息*/{printf("\t %4s %4ld %4s %4ld %4ld\n",g oods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price );}printf("\n\tPress any key to enter menu:");getch();return; /*返回功能选择界面*/}void edit() /*功能5:添加或删除商品信息*/ {void add(); /*声明子函数*/void dele();—7—printf("\n\t请选择:1.添加商品信息; 2.删除商品信息;");printf("\t*请输入 1或2 继续:");scanf("%d",&k);switch(k) /*用switch语句实现功能选择*/{case 1: add();break;case 2: dele();break;}getch();return; /*返回主菜单*/}void add() /*添加商品信息*/{ /*定义子函数*/printf("\t*请输入所添加商品的商品编号:");scanf("%ld",&goods[n].num);printf("\n\t请输入所添加商品的名称:");scanf("%s",goods[n].name);printf("\n\t请输入所添加商品的类别:");scanf("%s",goods[n].sort);printf("\n\t请输入所添加商品的数量:");scanf("%d",&goods[n].count);printf("\n\t请输入所添加商品的价格:");scanf("%d",&goods[n].price);n=n+1;printf("\n");}void dele() /*删除商品信息*/{ /*定义子函数*/int temp; /*定义局部变量*/int j;for(i=0;i<n;i++){printf("\n\t商品编号商品名商品类别商品数量商品价格");printf("\n\t %5ld %5s %5s %5ld %5ld",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);printf("\n");}printf("\n");printf("\n*请输入要删除的商品编号:");scanf("%ld",&temp);printf("\n\n");—8—for(i=0;i<n;i++){if(temp==goods[i].num){for(j=i;j<n;j++){goods[j].num=goods[j+1].num;strcpy(goods[j].name,goods[j+1].name);strcpy(goods[j].sort,goods[j+1].sort);goods[j].count=goods[j+1].count;goods[j].price=goods[j+1].price;}n=n-1; /*商品总库存量减少*/}}for(i=0;i<n;i++){printf("\n\t商品编号商品名商品类别商品数量商品价格"); /*输出删除后的商品信息*/printf("\n\t %5ld %5s %5s %5ld %5ld",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);printf("\n");}printf("Please press any key to continue:");getch();return; /*返回主界面*/}void correct() /*功能6:修改商品信息*/ {long temp; /*定义局部变量*/printf("\n\t请输入要修改的商品的编号:");scanf("%ld",&temp); /*输入新的商品信息*/printf("\n");for(i=0;i<n;i++) /*保存新的商品信息*/{if(temp==goods[i].num){printf("\t请输入一个新的的商品编号:");scanf("%ld",&goods[i].num);printf("\n\t请输入新的商品的名称:");scanf("%s",goods[i].name);printf("\n\t请输入新的商品的类别:");—9—scanf("%s",goods[i].sort);printf("\n\t请输入新的商品的数量:");scanf("%d",&goods[i].count);printf("\n\t请输入新的商品价格:");scanf("%d",&goods[i].price);printf("\n");}}for(i=0;i<n;i++){printf("\n\t新的商品名称商品编号商品类别商品数量商品单价\n");printf("\t %4s %4ld %4s %4ld %4ld",goods[i].name,goods[i].num,goods[i].sort,goods[i].count,goods[ i].price);printf("\n");}printf("Please press any key to continue:"); /*返回功能选择界面*/ getch();return; /*返回主菜单*/}void search() /*功能7:查询商品信息*/{int k; /*定义局部变量*/long temp1;char temp2[30],temp3[20];printf("\n\t\5按商品编号查询,请按1\t\t\t\5按商品名查询,请按2\n\t\5按商品类别查询,请按3\t\t\t\5查需要进货的商品,请按4\n");printf("\n\n\n\t\t\t请输入数字确定查询方式:");scanf("%d",&k);printf("\n");printf("Press any key to continue:");getch();system("cls");switch(k) /*实现查询方式的选择*/{case 1:{ printf("\n\n\n\n\n\t\t请输入要查询的商品的编号:"); /*按商品编号查询*/scanf("%ld",&temp1);system("cls"); /*清屏*/for(i=0;i<n;i++){—10—if(temp1==goods[i].num){printf("\n");printf("\n\t商品编号商品名商品类别商品数量商品价格");printf("\n\t %5ld %5s %5s %5ld %5ld",goods[i] .num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);}}}break; /*跳出switch语句*/case 2:{ printf("\n\n\n\n\n\t\t请输入要查询的商品名:"); /*按商品名查询数据*/scanf("%s",temp2);system("cls");for(i=0;i<n;i++){if(strcmp(temp2,goods[i].name)==0){printf("\n");printf("\n\t商品编号商品名商品类别商品数量商品价格");printf("\n\t %5ld %5s %5s %5ld %5ld",goods[i] .num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);}}}break; /*跳出switch语句*/case 3:{ printf("\n\n\n\n\n\t\t请输入要查询的商品类别:"); /*按商品类别查询数据*/scanf("%s",temp3);system("cls");for(i=0;i<n;i++){if(strcmp(temp3,goods[i].sort)==0){printf("\n");printf("\n\t商品编号商品名商品类别商品数量商品价格");printf("\n\t %5ld %5s %5s %5ld %5ld",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i] — 11 —.price);}}}break; /*跳出switch语句*/case 4:{ int a=50;for(i=0;i<n;i++) /*查询需要进货的商品名*/{if(goods[i].count<a)printf("\n\t\t\4需要进货的商品名:%s 现有库存量:%ld\n",goods[i].name,goods[i].count);}}break; /*跳出switch语句*/}printf("\n\n\t\tPress any key to enter menu:");getch();return; /*返回主界面*/}void scan() /*功能8:浏览商品信息*/ {printf("\n\t浏览输入的商品信息,请按1\n\n\t浏览查询的商品信息,请按2\n\n\t浏览排序后商品信息,请按3\n");printf("请选择:");scanf("%d",&k);switch(k){case 1:{ printf("\t\t\t浏览输入的商品信息\n");printf("\t商品编号商品名商品类别商品数量商品价格\n");/*输出浏览商品信息*/for(i=0;i<n;i++){printf("\t%5ld %5s %5s %5ld %ld",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);printf("\n");}printf("Press any key to enter menu:");getch();return;} break; /*跳出switch语句*/case 2:{ printf("\t\t\t浏览查询的商品信息\n");—12—printf("\t商品编号商品名商品类别商品数量商品价格\n");/*输出浏览商品信息*/for(i=0;i<n;i++){printf("\t%5ld %5s %5s %5ld %ld",goods[i] .num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);printf("\n");}printf("\nPress any key to enter menu:");getch();return;} break; /*跳出switch语句*/case 3:{ printf("\t\t\t浏览按商品编号排序的商品信息\n");printf("\t商品编号商品名商品类别商品数量商品价格\n");/*输出浏览商品信息*/for(i=0;i<n;i++){printf("\t%5ld %5s %5s %5ld %ld",goods[i].num ,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);printf("\n");}printf("\nPress any key to enter menu:");getch();return; /*返回主界面*/} break; /*跳出switch语句*/}}void reserve() /*功能9:保存文件*/{FILE *fp;char file[15]; /*用来存放文件保存路径以及文件名*/system("cls"); /*清屏*/printf("\n\t*请输入文件路径及文件名:");scanf("%s",file);fp=fopen("file","w+"); /*创建并打开一个文件,并得到该文件的地址*/fprintf(fp,"商品编号\t商品名 \t商品类别\t商品数量\t商品价格\n"); printf("商品编号\t商品名 \t 商品类别\t 商品数量\t 商品价格\n");for(i=0;i<n;i++)—13—{fprintf(fp,"%ld\t\t%s\t\t%s\t\t%d\t\t%d\n",goods[i].num,goods[i].name ,goods[i].sort,goods[i].count,goods[i].price);printf("%ld\t\t%s\t\t%s\t\t%d\t\t%d\n",goods[i].num,goods[i].name,goo ds[i].sort,goods[i].count,goods[i].price);}fclose(fp); /*关闭文件*/printf("文件已经保存!\n");getch();system("cls"); /*清屏*/}void quit() /*退出系统*/{exit(0);}四、调试手册(1)、sp.c(225) : warning C4013: 'add' undefined; assuming extern returning int add()函数声明错误。

相关主题