C语言程序设计超市管理系统1_第1页
C语言程序设计超市管理系统1_第2页
C语言程序设计超市管理系统1_第3页
免费预览已结束,剩余20页可下载查看

下载本文档

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

文档简介

1、程序设计 超市管理系统学院:专业:班级:姓名:学号:指导老师:超市管理系统课程设计1) 需求分析:设计题目:超市管理系统设计要求:有一个小型超市,出售 N ( N> = 10)种商品,设计并实现一个系统系统功能需求分析:1. 保存及输出:超市中的各种商品信息保存在指定文件中,可以把它们输出显示。2. 计算并排序:计算每类商品的总价值(sum,单精度)及平均价(aver,单精度,输 出一位小数),将每类商品按平均价从大到小的顺序排序打印出来。3. 统计:统计输出库存量低于 100的货号及类别。统计输出有两种以上(含两种)商品 库存量低于100的商品类别。2)概要设计:系统总体设计框架:系统

2、功能模块图:3)详细设计:主要功能模块的算法设计思路:本程序主要分为八个模块:主模块、信息输出修改模块、新建信息模块、排序模块、计算模块、统计模块1、统计模块2、打印模块。1)主模块:通过调用各分模块实现功能;2)信息输出修改模块:输出显示文件中商品信息内容,添加商品信息,删除商 品信息,修改商品信息;3)新建商品信息模块:建立一个新结构体,为链表存信息用,并且将信息保存 在指定的文件中;4)排序模块:把文件中顺序零乱的商品信息按单价的大小从高到低进行排序, 放到链表里存储;5)计算模块:将所有商品的价格与库存量进行累加求和;6)打印模块:将商品信息按每类平均价格排序(从高到低)按顺序打印出来

3、;7)统计模块1:统计库存量低于100的货名及类别;8) 统计模块2:统计商品库存量有2种以上(含2种)低于100的商品类别工作流程图:侖岀商品息或修改商广添加商品信息删除某商品信息 、修改某商品信息确认或取消、返回新建商品信'开始息(删除原有信息)输入商品信息(编号、名称、类型、结束输入输入商品单价和库存量价格、单位、数目)、 丿统计商品信'输出(商品类 型、平均价、.总库存量)退出息丿吐、q非序按价格从高到低)4)主要源程序代码:#i nclude "stdio.h"#i nclude "stdlib.h"#include "

4、;string.h"#i nclude "coni o.h"/*输入,输出头文件*/*申请空间头文件*/*对字符串加工头文件*/*清屏头文件*/char c5="elec" char d5="comm"char e5="food"char f5="offi"FILE *fp;int n=0;/*定义文件指针类型*/int i,j,a4,m;/*定义整数类型*/float aver4,sum4,g4,h;/*定义浮点类型 */*定义字符数组类型*/*定义字符数组类型*/*定义字符数组类型

5、*/*定义字符数组类型*/*商品编号*/struct goodint num;char n ame20;char kin d40;/*定义结构体*/*商品名称*/*商品类型*/float price; char un it10;int qua ntity; struct good *n ext;*head,*p1,*p2;/*商品价格*/*商品单位*/*商品数量*/*定义结构体指针类型*/*创建链表函数*/struct good *createlist() struct good *head1,*p1,*p2;/*定义结构体指针类型 */if(fp=fopen("goods mess

6、age.txt","w")=NULL)/*判断能否打开文件 */prin tf("ca n not ope n the file");exit(0);/*结束程序*/head1=(struct good *)malloc(sizeof(struct good);/* 申请头结点空间 */p1=head1;p2=head1;prin tf("*n");printf("请输入信息:编号,名称,类型,价格,单位,数目n");printf("(以输入-1”表示结束输入)n");prin tf(

7、"*n");printf("n");scanf("%d %s %s %f %s %d",&p1->num,p1->name,p1->kind,&p1->price,p1->unit,&p1->quantity);/*输入商品信息 */printf("n");p1-> next=NULL;fprin tf(fp,"%d %s %s %f %s %d",p1- >nu m,p1- >n ame,p1->ki nd,p

8、1->price,p1-> un it,p1->qua ntity);/*将商品信息写入文件*/while(1)/*申请新空间*/p1=(struct good *)malloc(sizeof(struct good);prin tf("*n");printf("请输入信息:编号,名称,类型,价格,单位,数目n");printf("(以输入-1 ”表示结束输入)n");prin tf("*n");printf("n");scan f("%d",&p1

9、-> nu m);/*申请空间结束条件*/if(p1-> num=-1)printf("nn");/*返回头指针*/fprin tf(fp,"%d",-1); fclose(fp);retur n headl; scanf("%s %s %f %s %d",p1->name,p1->kind,&p1->price,p1->unit,&p1->quan tity); /*输入商品信息*/printf("n");fprin tf(fp,"%d %s %

10、s %f %s %d",p1- >nu m,p1- >n ame,p1->ki nd,p1->price,p1-> un it,p1->qua ntity);/*将商品信息写入文件*/p1-> next=NULL;p2->n ext=p1;p2=p1;struct good *paixu(struct good*head2)/*链表排序函数 */struct good *p6,*p7,*r,*s;/*定义结构体指针类型 */for(i=0;i<=3;i+)/*赋初值值 */ai=0;sumi=0;averi=0;p6=(struc

11、t good *)malloc(sizeof(struct good);/* 申请新空间 */p6->n ext=head2;head2=p6;while(p6->next!=NULL)/*判断循环结束条件 */p7=p6->n ext;r=p6;while(p7->next!=NULL)/*判断循环结束条件 */if(p7->next->price)>(r->next->price)/*判断是否调换 */r=p7;p7=p7->n ext;if(p6!=r)/*判断循环结束条件*/s=r-> next;/* 指针调换 */r-

12、>n ext=s->n ext;s->n ext=p6->n ext;p6->n ext=s;p6=p6->n ext;p6=head2;head2=head2->n ext;free(p6);/*释放第一个无效空间*/retur n head2;void jisua n()p仁head;doif(strcmp(p1->kind,c)=0)/*判断是否为电器类型 */sum0=sum0+(p1->price)*(p1->quantity);/*求电器总价 */a0=a0+p1->quantity;/*求电器总件数 */if(st

13、rcmp(p1->kind,d)=0)/*判断是否为日用品类型*/sum1=sum1+(p1->price)*(p1->quantity);/*求日用品总价 */a1=a1+p1->quantity;/*求日用品总件数 */if(strcmp(p1->kind,e)=0)/*判断是否为办公用品类型*/sum2=sum2+(p1->price)*(p1->quantity);/*求办公用品总价 */a2=a2+p1->quantity;/*求办公用品总件数 */if(strcmp(p1->kind,f)=0)/*判断是否为食品类型 */sum

14、3=sum3+(p1->price)*(p1->quantity);/*求食品总价 */a3=a3+p1->quantity;/*求食品总件数 */p1=p1- >n ext;while (p1!=NULL);/*遍历链表结束条件*/for(i=0;i<4;i+)averi=sumi/ai;/*求每类商品平均价*/prin tf("*n");printf("商品类型t 平均价t总库存量n");prin tf("*n");printf("n");printf("电器总价值:%0

15、.1ft 平均价:%0.1ft 总库存量:%dn",sumO,averO,aO);printf("n");printf("日用品总价值:%0.1ft平均价:%0.1ft总库存 量:%dn",sum1,aver1,a1);printf("n");printf("食品总价值:%0.1ft 平均价:%0.1ft 总库存量:%dn",sum2,aver2,a2);printf("n");printf("办公用品总价值:%0.1ft平均价:%0.1ft总库存 量:%dn",s

16、um3,aver3,a3);n");/*输出商品信息函数*/printf(" void shuchu() dostruct good *p3,*p4,*p5;/*定义结构体指针类型*/int n=0,p=0,q=0,r=0;printf("所有商品信息:n");printf("编号,名称,类型,价格,单位,数目n");printf(" *n");判断能否打开文件*/if(fp=fope n( "goods message.txt","rb+")=NULL) /*prin tf

17、("ca n not ope n the file");exit(0);/*结束程序*/head=(struct good *)malloc(sizeof(struct good); /*申请头结点空间 */p3=head;fscan f(fp,"%d %s %s %f %s %d",&p3->nu m,p3->n ame,p3->k ind,&p3->price,p3-> un it,&p3->qua ntity);/*从文件中写到链表*/while(1)p4=(struct good *)m

18、alloc(sizeof(struct good);/* 申请头结点空间 */fscanf(fp,"%d ",&p4->num);if(p4->num!=-1)/*判断循环结束条件*/fscan f(fp,"%s %s %f %s %d",p4-> name,p4->ki nd,&p4->price,p4->u nit,&p4->qua ntity); /*从文件中写到链表*/p4-> next=NULL;p3->n ext=p4;p3=p4;elsep3-> next=

19、NULL;break;fclose(fp);/*关闭文件 */p3=head;while(p3!=NULL)printf(”%d %s %s %0.1f %s%dnn",p3-> num,p3-> name,p3->kin d,p3->price,p3-> uni t,p3->qua ntity);printf("n");p3=p3->n ext;prin tf("*n");prin tf("/八 n");while( n!=4) p3=head;printf('*n&quo

20、t;);printf("1添加商品信息n");printf("2删除某商品信息n");printf("3修改某商品信息n");printf("4返回(当你完成了对某一商品的添加、删除或者修改后请按4返回)n");printf('*n");sca nf("%d",&n);/*添加商品信息*/if(n=1)printf("请输入商品编号名称类型价格单位数目n");printf(" */*申请空间*/p4=(struct good *)mallo

21、c(sizeof(struct good);sea nf("%d %s %s %f %s %d",&p4-> num,p4-> name,p4->ki nd,&p4->price,p4-> unit,&p4->quantity);/*输入商品信息 */p4-> next=NULL;while(p3->next!=NULL)/*判断循环结束条件 */p3=p3->n ext;p3->n ext=p4;p3=head;if(fp=fope n("goods message.txt&qu

22、ot;,"w")=NULL)/* 判断能否打开文件*/prin tf("ca n not ope n the file");exit(0);/*结束程序*/while(p3!=NULL)fprin tf(fp,"%d %s %s %f %s %d",p3->nu m,p3->n ame,p3->k in d,p3->price,p3-> uni t,p3->qua ntity);/*将商品信息写入文件*/p3=p3->n ext;/*关闭文件*/fprin tf(fp,"%d&quo

23、t;,-1); fclose(fp);printf(" *printf("n");printf(”请按 4 返回n");printf("n");printf(" *if(n=2)/*删除商品*/prin tf("*n"); printf("请输入需要删除的商品编号n");prin tf("*n");sca nf("%d",&p);prin tf("*n")printf("1确认删除n2取消删除n")

24、;prin tf("*n")sca nf("%d",&r); if(r=1)if(head->num )=p)head=head->n ext;free(p3);/*释放空间 */elsep4=head;p3=p4->n ext;while(p3!=NULL)/*判断循环结束条件*/if(p3->num )=p)p5=p3->n ext;free(p3);/* 释放空间 */p4->n ext=p5;break;p3=p3->n ext;p4=p4->n ext;/*判断能否打开if(fp=fope

25、 n("goods message.txt","w")=NULL) 文件*/prin tf("ca n not ope n the file");exit(0);/*结束程序*/p3=head;while(p3!=NULL)/*判断循环结束条件*/fprin tf(fp,"%d %s %s %f %s %d",p3->nu m,p3->n ame,p3->ki nd,p3->price,p3-> un it,p3->qua ntity); /*将商品信息写入文件*/p3=p3-&

26、gt;n ext;fprin tf(fp,"%d",-1);fclose(fp);/* 关闭文件 */if(r=2)continue;/*继续循环 */printf(" *printf("printf(”请按 4 返回n");.n");printf("n");printf(" *if(n=3)/*修改某商品信息*/printf("请输入需要修改的商品编号n");sea nf("%d",&q); while(p3!=NULL)/*判断循环结束条件*/if(p3

27、->num)=q)/*判断是否为所需要修改的商品*/printf("请输入商品单价与库存量(如果单价不变请输入原来的单价)n");sca nf("%f %d",&p3->price,&p3->qua ntity);/* 输入商品价格与库存量*/p3=p3->n ext;if(fp=fope n("goods message.txt","w")=NULL)/* 判断能否打开文件*/prin tf("ca n not ope n the file");exit

28、(0);/*结束程序*/p3=head; while(p3!=NULL)/*判断循环结束条件*/fprin tf(fp,"%d %s %s %f %s %d",p3->nu m,p3->n ame,p3->ki nd,p3->price,p3-> un it,p3->qua ntity);/*将商品信息写入文件*/p3=p3->n ext;/*关闭文件*/fprin tf(fp,"%d",-1); fclose(fp);printf(" *printf("n");printf(”请按

29、 4 返回n");printf("n");printf(" *if(n=4)/*退出*/break;printf(" *n");printf("1继续修改nn2 返回 n");prin tf("*n")scan f("%d",&p); if(p=1) con ti nue;if(p=2)break; while( n!=2); fclose(fp);/*继续循环*/*跳出循环*/*关闭文件*/void prin tf0(struct good *p)/*遍历链表并打印

30、电器类商品函数 */struct good *p3;/*定义结构体指针类型*/P3=P;while (p3!=NULL)/*判断遍历链表循环结束条件*/if(strcmp(p3->kind,c)=0)/*判断商品类型是否为电器类型*/ prin tf("%dt%st%st%0.1ft%st%dn",p3-> num,p3-> name,p3->ki nd,p3->price,p3->unit,p3->quantity);/*输出电器类商品信息*/printf("n");p3=p3->n ext;return

31、;void prin tf1(struct good *p)/*遍历链表并打印日用品类商品函数 */struct good *p3;/*定义结构体指针类型*/p3=p;while (p3!=NULL)/*判断遍历链表循环结束条件*/if(strcmp(p3->ki nd,d)=0)/*判断商品类型是否为日用品类型*/prin tf("%dt%st%st%0.1ft%st%dn",p3-> num,p3-> name,p3->ki nd,p3->price, p3->unit,p3->quantity);/*输出日用品类商品信息*/p

32、rintf("n");p3=p3->n ext;return;void prin tf2(struct good *p)/*遍历链表并打印办公用品类商品函数 */struct good *p3;/*定义结构体指针类型*/p3=p;while (p3!=NULL)/*判断遍历链表循环结束条件*/if(strcmp(p3->k in d,e)=0)/*判断商品类型是否为办公用品类型*/prin tf("%dt%st%st%0.1ft%st%dn",p3-> num,p3-> name,p3->ki nd,p3->price

33、, p3->unit,p3->quantity);/*输出办公用品类商品信息*/printf("n");p3=p3->n ext;return;void prin tf3(struct good *p)/*遍历链表并打印食品类商品函数 */struct good *p3;/*定义结构体指针类型*/p3=p;while (p3!=NULL)/*判断遍历链表循环结束条件*/if(strcmp(p3->kind,f)=0)/*判断商品类型是否为食品类型*/prin tf("%dt%st%st%0.1ft%st%dn",p3-> n

34、um,p3-> name,p3->ki nd,p3->price, p3->unit,p3->quantity);/*输出食品类商品信息*/printf("n");p3=p3->n ext; return; void shu nxuday in() /*将平均价赋给新数组*/*将新数组用冒泡排序法排序*/for(i=0;i<4;i+) gi=averi;for(j=0;j<3;j+) for(i=j+1;i<4;i+) if(gj<gi) h=gj; gj=gi; gi=h;prin tf("n*n&qu

35、ot;);printf("商品平均价格排序表(从高到低)n");printf(" *n");.n");printf("printf("编号t名称t类别t单价t单位t数量n");printf("n");for(j=0;j<4;j+)for(i=0;i<4;i+)if (averi=gj)/*判断每类商品平均价格的先后顺序*/switch(i)case 0:printf0(head); /*调用遍历链表并打印电器类商品函数*/ break;case 1:printf1(head); /*

36、调用遍历链表并打印日用品类商品函数*/break;case 2:printf2(head);/*调用遍历链表并打印办公用品类商品函数*/ break;case 3:prin tf3(head);/*调用遍历链表并打印食品类商品函数*/break; void ton gji1() p仁head;prin tf("n*printf("库存量低于100的货名及类别n");prin tf("*n")printf("n");printf("商品名称t商品类型n");printf("n");whi

37、le(p1!=NULL)/*判断遍历链表循环结束条件*/if(p1->qua ntity<1OO)/*判断库存量是否小于100*/printf("%st%sn",p1->name,p1->kind); /*输出商品名称及类别 */printf("n");p1=p1- >n ext;void ton gji2()prin tf("n*n");printf("商品库存量有2种以上(含2种)低于100的商品类别:n");printf("*n");printf("

38、n");/*判断电器类库存if(a0<100)&&(a0>=2)量是否为2种以上(含2种)低于100*/printf("电器 n");printf("n");/*判断日用品类库if(a1<100)&&(a1>=2)存量是否为2种以上(含2种)低于100*/printf("日用品 n");printf("n");/*判断食品类库/*判断办公用品类if(a2<100)&&(a2>=2)存量是否为2种以上(含2种)低于100*/

39、printf("食品 n");printf("n");if(a3<100)&&(a3>=2)库存量是否为2种以上(含2种)低于100*/printf("办公用品 n");printf("n"); int main (i nt argc, char* argv)struct good *p1,*p2;/*定义结构体指针类型*/while(1)prin tf("*n")printf("1输出查看或者修改已存信息n");printf("n");');1)n");prin tf("2重新输入新信息(并且删除原有信息)nprintf("n");printf("3统计商品信息(如果您还没有查看过信息请先按printf("n");printf("4退出n");printf("*n");scan f("%d"

温馨提示

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

评论

0/150

提交评论