C语言超市管理系统源程序_第1页
C语言超市管理系统源程序_第2页
C语言超市管理系统源程序_第3页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、WORD格式C 语言超市管理系统源程序超市管理系统源程序代码,要可以执行的。最好是文件,链表中的一种。好了一定重金酬谢最正确答案 有一个小型超市,出售 NN> 10种商品,设计并实现一个系统,完成以下功能:1保存及输出。超市中的各种商品信息保存在指定文件中,可以把它们输出显示。2计算并排序。计算每类商品的总价值sum,单精度及平均价aver,单精度,输出一位小数,将每类商品按平均价从大到小的顺序排序打印出来。3统计。统计输出库存量低于 100 的货号及类别。统计输出有两种以上含两种商品库存量低于 100 的商品类别。1.2 总体构造本程序主要分为八个模块:主模块、信息输出修改模块、新建信

2、息模块、排序模块、计算模块、统计模块 1、统计模块 2、打印模块。1 主模块:通过调用各分模块实现功能;2 信息输出修改模块:输出显示文件中商品信息内容,添加商品信息,删除商品信息,修改商品信息;3 新建商品信息模块: 建立一个新构造体, 为链表存信息用,并且将信息保存在指定的文件中;4 排序模块: 把文件中顺序零乱的商品信息按单价的大小从高到低进展排序,放到链表里存储;5 计算模块:将所有商品的价格与库存量进展累加求和;6 打印模块:将商品信息按每类平均价格排序从高到低按顺序打印出来;7 统计模块 1:统计库存量低于100的货名及类别;8 统计模块 2:统计商品库存量有2种以上含 2 种低于

3、 100 的商品类别。附录程序清单专业资料整理WORD格式#include "stdio.h"/* 输入,输出头文件*/#include "stdlib.h"/* 申请空间头文件*/#include "string.h"/* 对字符串加工头文件#include "conio.h"/* 清屏头文件 */FILE *fp;int n=0;/* 定义文件指针类型*/int i,j,a4,m;/* 定义整数类型 */float aver4,sum4,g4,h;/* 定义浮点类型*/*/专业资料整理WORD格式char c5

4、="elec"char d5="comm"/* 定义字符数组类型/* 定义字符数组类型*/*/专业资料整理WORD格式char e5="food"/* 定义字符数组类型*/专业资料整理WORD格式char f5="offi"/* 定义字符数组类型*/专业资料整理WORD格式struct good/* 定义构造体*/专业资料整理WORD格式专业资料整理WORD格式int num;char name20;char kind40;/* 商品编号 */* 商品名称/* 商品类型*/*/专业资料整理WORD格式float p

5、rice;char unit10;/* 商品价格 */* 商品单位*/专业资料整理WORD格式int quantity;struct good *next;/* 商品数量 */* 定义构造体指针类型*/专业资料整理WORD格式*head,*p1,*p2;专业资料整理WORD格式struct good *createlist()/* 创立链表函数*/专业资料整理WORD格式专业资料整理WORD格式struct good *head1,*p1,*p2;/* 定义构造体指针类型*/if(fp=fopen("goods message.txt","w")=NUL

6、L)/* 判断能否翻开文件*/专业资料整理WORD格式printf("can not open the file");专业资料整理WORD格式exit(0);/* 完毕程序*/专业资料整理WORD格式head1=(struct good *)malloc(sizeof(struct good); /* 申请头结点空间 */ p1=head1;p2=head1;printf("*n");专业资料整理WORD格式printf(" 请输入信息 :编号,名称,类型,价格,单位,数目n");专业资料整理WORD格式printf("以输

7、入“ 1表示完毕输入n");专业资料整理WORD格式printf("*n");printf("_n");scanf("%d %s %s %f %s %d",&p1->num,p1->name,p1->kind,&p1->price,p1->unit,&p1->quantit专业资料整理WORD格式y);/* 输入商品信息*/printf("_n");p1->next=NULL;fprintf(fp,"%d%s%s%f",

8、p1->num,p1->name,p1->kind,p1->price,p1->unit,p1->quantity);%s%d/* 将商品信息专业资料整理WORD格式写入文件*/专业资料整理WORD格式while(1)专业资料整理WORD格式p1=(struct good *)malloc(sizeof(struct good);/* 申请新空间*/专业资料整理WORD格式printf("*n");专业资料整理WORD格式printf(" 请输入信息 :编号,名称,类型,价格,单位,数目printf("以输入“ 1表示

9、完毕输入n");printf("*n");printf("_n");scanf("%d",&p1->num);if(p1->num=-1)/* 申请空间完毕条件*/n");专业资料整理WORD格式printf("_nn");fprintf(fp,"%d",-1);fclose(fp);return head1;/* 返回头指针*/专业资料整理WORD格式scanf("%s %s %f %s %d",p1->name,p1->

10、kind,&p1->price,p1->unit,&p1->quantity); /*输入商专业资料整理WORD格式品信息*/专业资料整理WORD格式printf("_n");fprintf(fp,"%d%s%s%f",p1->num,p1->name,p1->kind,p1->price,p1->unit,p1->quantity);%s%d/* 将商品信息写专业资料整理WORD格式入文件*/专业资料整理WORD格式p1->next=NULL;专业资料整理WORD格式p2-&g

11、t;next=p1;p2=p1;专业资料整理WORD格式struct good *paixu(struct good*head2)/* 链表排序函数*/专业资料整理WORD格式专业资料整理WORD格式struct good *p6,*p7,*r,*s;/* 定义构造体指针类型*/专业资料整理WORD格式for(i=0;i<=3;i+)/* 赋初值值*/专业资料整理WORD格式专业资料整理WORD格式ai=0;sumi=0;averi=0;专业资料整理WORD格式p6=(struct good *)malloc(sizeof(struct good);/* 申请新空间p6->next

12、=head2;head2=p6;while(p6->next!=NULL)/* 判断循环完毕条件*/*/专业资料整理WORD格式p7=p6->next;r=p6;专业资料整理WORD格式while(p7->next!=NULL)/* 判断循环完毕条件*/专业资料整理WORD格式专业资料整理WORD格式if(p7->next->price)>(r->next->price)/* 判断是否调换*/专业资料整理WORD格式r=p7;p7=p7->next;专业资料整理WORD格式if(p6!=r)/* 判断循环完毕条件*/专业资料整理WORD格式

13、专业资料整理WORD格式s=r->next;/* 指针调换*/专业资料整理WORD格式r->next=s->next;s->next=p6->next;p6->next=s;p6=p6->next;p6=head2;head2=head2->next;专业资料整理WORD格式free(p6);/* 释放第一个无效空间*/专业资料整理WORD格式return head2;专业资料整理WORD格式void jisuan()p1=head;do专业资料整理WORD格式if(strcmp(p1->kind,c)=0)/* 判断是否为电器类型*/专业

14、资料整理WORD格式专业资料整理WORD格式sum0=sum0+(p1->price)*(p1->quantity);/* 求电器总价 */a0=a0+p1->quantity;/* 求电器总件数*/if(strcmp(p1->kind,d)=0)/* 判断是否为日用品类型*/sum1=sum1+(p1->price)*(p1->quantity);/* 求日用品总价*/a1=a1+p1->quantity;/* 求日用品总件数*/if(strcmp(p1->kind,e)=0)/* 判断是否为办公用品类型*/sum2=sum2+(p1->

15、price)*(p1->quantity);/* 求办公用品总价*/a2=a2+p1->quantity;/* 求办公用品总件数*/if(strcmp(p1->kind,f)=0)/* 判断是否为食品类型*/sum3=sum3+(p1->price)*(p1->quantity);/* 求食品总价 */专业资料整理WORD格式a3=a3+p1->quantity;/* 求食品总件数*/专业资料整理WORD格式p1=p1->next;专业资料整理WORD格式while (p1!=NULL);/* 遍历链表完毕条件*/专业资料整理WORD格式for(i=0

16、;i<4;i+)averi=sumi/ai;/* 求每类商品平均价 */printf("*n");printf(" 商品类型t平均价 t总库存量 n");printf("*n");printf("_n");printf(" 电器总价值 :%0.1ft平均价 :%0.1ft 总库存量 :%dn",sum0,aver0,a0);printf("_n");printf(" 日用品总价值 :%0.1ft 平均价 :%0.1ft总库存量 :%dn",sum1,

17、aver1,a1);printf("_n");printf(" 食品总价值 :%0.1ft平均价 :%0.1ft 总库存量 :%dn",sum2,aver2,a2);printf("_n");printf(" 办公用品总价值 :%0.1ft 平均价 :%0.1ft 总库存量 :%dn",sum3,aver3,a3); printf("_n");专业资料整理WORD格式void shuchu()/* 输出商品信息函数*/专业资料整理WORD格式do专业资料整理WORD格式struct good *

18、p3,*p4,*p5;/* 定义构造体指针类型*/int n=0,p=0,q=0,r=0;printf(" 所有商品信息:n");printf(" 编号,名称,类型,价格,单位,数目n");printf("*n");if(fp=fopen("goods message.txt","rb+")=NULL) /*判断能否翻开文件*/专业资料整理WORD格式printf("can not open the file"); exit(0); /* 完毕程序*/专业资料整理WORD格式

19、head=(struct good *)malloc(sizeof(struct good); /*申请头结点空间p3=head;fscanf(fp,"%d%s%s%f",&p3->num,p3->name,p3->kind,&p3->price,p3->unit,&p3->quantity);*/%s%d/* 从文件专业资料整理WORD格式中写到链表*/专业资料整理WORD格式while(1)专业资料整理WORD格式p4=(struct good *)malloc(sizeof(struct good);/* 申

20、请头结点空间*/专业资料整理WORD格式fscanf(fp,"%d ",&p4->num);专业资料整理WORD格式if(p4->num!=-1)/* 判断循环完毕条件*/专业资料整理WORD格式专业资料整理WORD格式fscanf(fp,"%s%s %f %s%d ",p4->name,p4->kind,&p4->price,p4->unit,&p4->quantity);/*专业资料整理WORD格式从文件中写到链表*/专业资料整理WORD格式p4->next=NULL;p3-&g

21、t;next=p4;p3=p4;elsep3->next=NULL;break;fclose(fp);/* 关闭文件 */p3=head;while(p3!=NULL)printf(" %d %s %s %0.1f %s %dnn",p3->num,p3->name,p3->kind,p3->price, p3->unit,p3->quantity);printf("_n");p3=p3->next;printf("*n");printf("/n");while(n!

22、=4)p3=head;printf("*n");printf("1添加商品信息 n");printf("2删除某商品信息n");printf("3修改某商品信息n");printf("4返回当你完成了对某一商品的添加、删除或者修改后请按4 返回 n");printf("*n");scanf("%d",&n);专业资料整理WORD格式if(n=1)/* 添加商品信息*/专业资料整理WORD格式专业资料整理WORD格式printf(" 请输入

23、商品编号名称类型价格printf("*n");p4=(struct good *)malloc(sizeof(struct good);单位数目 n");/* 申请空间 */专业资料整理WORD格式scanf("%d %s %s %f %s %d",&p4->num,p4->name,p4->kind,&p4->price,p4->unit,&p4->quantit专业资料整理WORD格式y);/* 输入商品信息 p4->next=NULL; while(p3->next!

24、=NULL)*/* 判断循环完毕条件*/专业资料整理WORD格式p3=p3->next;专业资料整理WORD格式p3->next=p4;p3=head;if(fp=fopen("goods message.txt","w")=NULL)/* 判断能否翻开文件*/printf("can not open the file");专业资料整理WORD格式exit(0);/* 完毕程序*/专业资料整理WORD格式while(p3!=NULL)专业资料整理WORD格式fprintf(fp,"%d%s%s%f%s%d专业资料

25、整理WORD格式",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity)信息写入文件 */* 将商品专业资料整理WORD格式p3=p3->next;fprintf(fp,"%d",-1);专业资料整理WORD格式fclose(fp);/* 关闭文件*/专业资料整理WORD格式printf("*n");printf("_n");printf("-请按 4 返回 -n");printf("_n&

26、quot;);printf("*n");if(n=2)/* 删除商品 */printf("*n");printf(" 请输入需要删除的商品编号n");printf("*n");scanf("%d",&p);printf("*n");printf("1确认删除 n2 取消删除 n");printf("*n");scanf("%d",&r);if(r=1)if(head->num)=p)head=h

27、ead->next;free(p3);/* 释放空间 */elsep4=head;p3=p4->next;专业资料整理WORD格式while(p3!=NULL)/* 判断循环完毕条件*/if(p3->num)=p)p5=p3->next;free(p3);/* 释放空间 */p4->next=p5;break;p3=p3->next;p4=p4->next;if(fp=fopen("goods message.txt","w")=NULL)/* 判断能否翻开文件*/printf("can not ope

28、n the file");exit(0);/* 完毕程序 */p3=head;while(p3!=NULL)/* 判断循环完毕条件*/专业资料整理WORD格式fprintf(fp,"%d%s%s%f%s%d专业资料整理WORD格式",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);/* 将商品信息专业资料整理WORD格式写入文件*/专业资料整理WORD格式p3=p3->next;fprintf(fp,"%d",-1);专业资料整理WO

29、RD格式fclose(fp);/* 关闭文件*/专业资料整理WORD格式if(r=2)专业资料整理WORD格式continue;/* 继续循环*/专业资料整理WORD格式printf("*n");printf("_n");专业资料整理WORD格式printf("-请按4 返回 -n");专业资料整理WORD格式printf("_n");printf("*n");if(n=3)/* 修改某商品信息*/printf(" 请输入需要修改的商品编号n");scanf("%d

30、",&q);while(p3!=NULL)/* 判断循环完毕条件*/专业资料整理WORD格式专业资料整理WORD格式if(p3->num)=q)/* 判断是否为所需要修改的商品*/专业资料整理WORD格式专业资料整理WORD格式printf(" 请输入商品单价与库存量如果单价不变请输入原来的单价n");scanf("%f %d",&p3->price,&p3->quantity);/* 输入商品价格与库存量*/专业资料整理WORD格式p3=p3->next;专业资料整理WORD格式if(fp=fo

31、pen("goods message.txt","w")=NULL)/* 判断能否翻开文件*/printf("can not open the file");exit(0);/* 完毕程序 */p3=head;while(p3!=NULL)/* 判断循环完毕条件*/专业资料整理WORD格式fprintf(fp,"%d%s%s%f%s%d专业资料整理WORD格式",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);

32、/* 将商品信专业资料整理WORD格式息写入文件 */p3=p3->next;fprintf(fp,"%d",-1);fclose(fp);/* 关闭文件 */printf("*n");printf("_n");printf("-请按 4 返回 -n");printf("_n");printf("*n");if(n=4)/* 退出 */break;printf("*n");printf("1继续修改 n-n2返回 n");prin

33、tf("*n");scanf("%d",&p);if(p=1)专业资料整理WORD格式continue;/* 继续循环*/专业资料整理WORD格式if(p=2)专业资料整理WORD格式break;/* 跳出循环*/专业资料整理WORD格式while(n!=2);专业资料整理WORD格式fclose(fp);/* 关闭文件*/专业资料整理WORD格式专业资料整理WORD格式void printf0(struct good *p)/* 遍历链表并打印电器类商品函数*/专业资料整理WORD格式专业资料整理WORD格式struct good *p3;/*

34、 定义构造体指针类型*/专业资料整理WORD格式p3=p;专业资料整理WORD格式while (p3!=NULL)/* 判断遍历链表循环完毕条件*/专业资料整理WORD格式专业资料整理WORD格式if(strcmp(p3->kind,c)=0)/* 判断商品类型是否为电器类型*/专业资料整理WORD格式专业资料整理WORD格式printf("%dt%st%st%0.1ft%st%dn",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);/* 输出电器类商品信息*/p

35、rintf("_n");p3=p3->next;return;专业资料整理WORD格式void printf1(struct good *p)/* 遍历链表并打印日用品类商品函数*/专业资料整理WORD格式专业资料整理WORD格式struct good *p3;/* 定义构造体指针类型*/专业资料整理WORD格式p3=p;专业资料整理WORD格式while (p3!=NULL)/* 判断遍历链表循环完毕条件*/专业资料整理WORD格式专业资料整理WORD格式if(strcmp(p3->kind,d)=0)/* 判断商品类型是否为日用品类型*/专业资料整理WORD

36、格式专业资料整理WORD格式printf("%dt%st%st%0.1ft%st%dn",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);/* 输出日用品类商品信息*/printf("_n");p3=p3->next;return;专业资料整理WORD格式void printf2(struct good *p)/* 遍历链表并打印办公用品类商品函数*/专业资料整理WORD格式专业资料整理WORD格式struct good *p3;/* 定义构造

37、体指针类型*/专业资料整理WORD格式p3=p;专业资料整理WORD格式while (p3!=NULL)/* 判断遍历链表循环完毕条件*/专业资料整理WORD格式专业资料整理WORD格式if(strcmp(p3->kind,e)=0)/* 判断商品类型是否为办公用品类型*/专业资料整理WORD格式专业资料整理WORD格式printf("%dt%st%st%0.1ft%st%dn",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);/* 输出办公用品类商品信息*/pr

38、intf("_n");p3=p3->next;return;专业资料整理WORD格式void printf3(struct good *p)/* 遍历链表并打印食品类商品函数*/专业资料整理WORD格式专业资料整理WORD格式struct good *p3;/* 定义构造体指针类型*/专业资料整理WORD格式p3=p;专业资料整理WORD格式while (p3!=NULL)/* 判断遍历链表循环完毕条件*/专业资料整理WORD格式专业资料整理WORD格式if(strcmp(p3->kind,f)=0)/* 判断商品类型是否为食品类型*/专业资料整理WORD格式专

39、业资料整理WORD格式printf("%dt%st%st%0.1ft%st%dn",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);/* 输出食品类商品信息*/printf("_n");p3=p3->next;return;void shunxudayin()for(i=0;i<4;i+)专业资料整理WORD格式gi=averi;for(j=0;j<3;j+)/* 将平均价赋给新数组*/* 将新数组用冒泡排序法排序*/专业资料整理W

40、ORD格式for(i=j+1;i<4;i+)if(gj<gi)h=gj;gj=gi;gi=h;专业资料整理WORD格式printf("n*n");printf(" 商品平均价格排序表从高到低n");专业资料整理WORD格式printf("*n");printf("_n");printf(" 编号 t 名称 t 类别 t 单价 t 单位 t 数量 n");printf("_n");for(j=0;j<4;j+)for(i=0;i<4;i+)专业资料整理W

41、ORD格式if (averi=gj)/* 判断每类商品平均价格的先后顺序*/专业资料整理WORD格式switch(i)case 0:专业资料整理WORD格式printf0(head); /*调用遍历链表并打印电器类商品函数*/专业资料整理WORD格式break;case 1:专业资料整理WORD格式printf1(head); /*调用遍历链表并打印日用品类商品函数*/专业资料整理WORD格式break;case 2:专业资料整理WORD格式printf2(head);/*调用遍历链表并打印办公用品类商品函数*/专业资料整理WORD格式break;case 3:专业资料整理WORD格式prin

42、tf3(head);/* 调用遍历链表并打印食品类商品函数*/专业资料整理WORD格式break;专业资料整理WORD格式void tongji1()p1=head;printf("n*n");printf(" 库存量低于100 的货名及类别n");printf("*n");printf("_n");printf(" 商品名称 t 商品类型 n");printf("_n");专业资料整理WORD格式while(p1!=NULL)/* 判断遍历链表循环完毕条件*/专业资料整理WORD格式专业资料整理WORD格式if(p1->quantity<100)/* 判断库存量是否小于100*/专业资料整理WORD格式专业资料整理WORD格式printf("%st%sn",p1->name,p1->kind); /* 输出商品名称及类别 */ printf("_n");p1=p1->next;专业资料整理WORD格式void tongji2()printf(&q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论