1、stdio.h /*输入,输出头文件*/ stdlib.h /*申请空间头文件*/ string.h /*对字符串加工头文件*/ conio.h /*清屏头文件*/ FILE *fp;int n=0; /*定义文件指针类型*/int i,j,a4,m; /*定义整数类型*/ float aver4,sum4,g4,h; /*定义浮点类型*/ char c5=elec; /*定义字符数组类型*/char d5=commchar e5=foodchar f5=offistruct good /*定义结构体*/ int num; /*商品编号*/ char name20; /*商品名称*/ char
2、 kind40; /*商品类型*/ float price; /*商品价格*/ char unit10; /*商品单位*/ int quantity; /*商品数量*/ struct good *next; /*定义结构体指针类型*/*head,*p1,*p2;struct good *createlist() /*创建链表函数*/ struct good *head1,*p1,*p2; if(fp=fopen(goods message.txt,w)=NULL) /*判断能否打开文件*/ printf(can not open the file); exit(0); /*结束程序*/ hea
3、d1=(struct good *)malloc(sizeof(struct good); /*申请头结点空间*/ p1=head1; p2=head1;*n请输入信息:编号,名称,类型,价格,单位,数目n (以输入“1”表示结束输入)n_n scanf(%d %s %s %f %s %d,&p1-num,p1-name,p1-kind,&price,p1-unit,&quantity); /*输入商品信息*/ p1-next=NULL; fprintf(fp,%d %s %s %f %s %d ,p1-kind,p1-unit,p1- /*将商品信息写入文件*/ while(1) p1=(s
4、truct good *)malloc(sizeof(struct good); /*申请新空间*/%dnum); if(p1-num=-1) /*申请空间结束条件*/_nn,-1); fclose(fp); return head1; /*返回头指针*/%s %s %f %s %d /*输入商品信息*/_n p2-next=p1; p2=p1;struct good *paixu(struct good*head2) /*链表排序函数*/ struct good *p6,*p7,*r,*s; for(i=0;inext=head2; head2=p6; while(p6-next!=NULL
5、) /*判断循环结束条件*/ p7=p6-next; r=p6; while(p7- if(p7-next-price)(r-price) /*判断是否调换*/ r=p7; p7=p7- if(p6!=r) /*判断循环结束条件*/ s=r- /*指针调换*/ r-next=s- s-next=p6-next=s; p6=p6- p6=head2; head2=head2- free(p6); /*释放第一个无效空间*/ return head2;void jisuan() p1=head; do if(strcmp(p1-kind,c)=0) /*判断是否为电器类型*/ sum0=sum0+
6、(p1-price)*(p1- /*求电器总价*/ a0=a0+p1-quantity; /*求电器总件数*/ kind,d)=0) /*判断是否为日用品类型*/ sum1=sum1+(p1- /*求日用品总价*/ a1=a1+p1- /*求日用品总件数*/ kind,e)=0) /*判断是否为办公用品类型*/ sum2=sum2+(p1- /*求办公用品总价*/ a2=a2+p1- /*求办公用品总件数*/ kind,f)=0) /*判断是否为食品类型*/ sum3=sum3+(p1- /*求食品总价*/ a3=a3+p1- /*求食品总件数*/ p1=p1- while (p1!=NULL
7、); /*遍历链表结束条件*/4;i+) averi=sumi/ai; /*求每类商品平均价*/*n商品类型 t 平均价t 总库存量n_n电器总价值:%0.1ft平均价:%0.1ft总库存量:%dn,sum0,aver0,a0);日用品总价值:,sum1,aver1,a1);食品总价值:,sum2,aver2,a2);办公用品总价值:,sum3,aver3,a3);void shuchu() /*输出商品信息函数*/ struct good *p3,*p4,*p5; int n=0,p=0,q=0,r=0;所有商品信息:n*nrb+ head=(struct good *)malloc(siz
8、eof(struct good); p3=head; fscanf(fp,p3-num,p3-name,p3-price,p3- /*从文件中写到链表*/ p4=(struct good *)malloc(sizeof(struct good);%d p4- if(p4-num!=-1) /*判断循环结束条件*/%s %s %f %s %d ,p4-name,p4-price,p4- p4- p3-next=p4; p3=p4; else break; /*关闭文件*/ while(p3!=NULL) %d %s %s %0.1f %s %dnn,p3-kind,p3-unit,p3-_n p
9、3=p3-/n while(n!=4)1 添加商品信息n2 删除某商品信息n3 修改某商品信息n4 返回(当你完成了对某一商品的添加、删除或者修改后请按4返回)nn); if(n=1) /*添加商品信息*/请输入商品 编号 名称 类型 价格 单位 数目n /*申请空间*/num,p4- while(p3-quantity) /*将商品信息写入文件*/ /*关闭文件*/-请按4返回-n if(n=2) /*删除商品*/请输入需要删除的商品编号np);*n1 确认删除n2 取消删除nr); if(r=1) if(head-num)=p) head=head- free(p3); /*释放空间*/
10、p4=head; p3=p4- if(p3- p5=p3-next=p5; p4=p4- if(r=2) continue; /*继续循环*/ if(n=3) /*修改某商品信息*/请输入需要修改的商品编号nq);num)=q) /*判断是否为所需要修改的商品*/ 请输入商品单价与库存量(如果单价不变请输入原来的单价)n%f %dprice,& /*输入商品价格与库存量*/ if(n=4) /*退出*/1 继续修改n-n2 返回n if(p=1) if(p=2) /*跳出循环*/ while(n!=2);void printf0(struct good *p) /*遍历链表并打印电器类商品函数*/ struct good *p3; p3=p; while (p3!=NULL) /*判断遍历链表循环结束条件*/ if(strcmp(p3-kind,c)=0) /*判断商品类型是否为电器类型*/%dt%st%st%0.1ft%st%dn /*输出电器类商品信息*/_n return
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2