《超市管理系统完整源代码》由会员分享,可在线阅读,更多相关《超市管理系统完整源代码(27页珍藏版)》请在金锄头文库上搜索。
1、有一个小型超市,出售 N(N10)种商品,设计并实现一个系统,完成下列功能:1 保存及输出。超市中的各种商品信息保存在指定文件中,可以把它们输出显示。2 计算并排序。计算每类商品的总价值(sum,单精度)及平均价( aver,单精度,输出一位小数),将每类商品按平均价从大到小的顺序排序打印出来。3 统计。统计输出库存量低于 100 的货号及类别。统计输出有两种以上(含两种)商品库存量低于 100 的商品类别。1.2 总体结构本程序主要分为八个模块:主模块、信息输出修改模块、新建信息模块、排序模块、计算模块、统计模1、统计模2、打印模块。1) 主模块:通过调用各分模块实现功能;2) 信息输出修改
2、模块:输出显示文件中商品信息内容,添加商品信息,删除商品信息,修改商品信息;3) 新建商品信息模块:建立一个新结构体,为链表存信息用,并且将信息保存在指定的文件中;4) 排序模块:把文件中顺序零乱的商品信息按单价的大小从高到低进行排序,放到链表里存储;5) 计算模块:将所有商品的价格与库存量进行累加求和;6) 打印模块:将商品信息按每类平均价格排序(从高到低)按顺序打印出来;1/277) 统计模块 1:统计库存量低于100 的货名及类别;8) 统计模块 2:统计商品库存量有2 种以上(含 2 种)低于 100 的商品类别。附录(程序清单)#include stdio.h/* 输入,输出头文件
3、*/#include stdlib.h/* 申请空间头文件 */#include string.h/* 对字符串加工头文件 */#include conio.h/* 清屏头文件 */FILE *fp;int n=0;/* 定义文件指针类型 */int i,j,a4,m;/* 定义整数类型 */float aver4,sum4,g4,h;/* 定义浮点类型 */char c5=elec;/* 定义字符数组类型 */char e5=food;/* 定义字符数组类型 */char f5=offi;/* 定义字符数组类型 */struct good/* 定义结构体 */int num;/* 商品编号
4、*/char name20;/* 商品名称 */char kind40;/* 商品类型 */float price;/* 商品价格 */2/27char 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)/* 判断能否打开文件 */print
5、f(can not open the file);exit(0);/* 结束程序 */head1=(struct good *)malloc(sizeof(struct good);/* 申请头结点空间 */p1=head1;p2=head1;printf(*n);printf( 请输入信息 :编号,名称,类型,价格,单位,数目n);printf((以输入 “1”表示结束输入) n);printf(*n);printf(_n);3/27scanf(%d %s %s %f %s %d,&p1-num,p1-name,p1-kind,&p1-price,p1-unit,&p1-quantity);
6、/* 输入商品信息 */printf(_n);p1-next=NULL;fprintf(fp,%d %s %s %f %s %d,p1-num,p1-name,p1-kind,p1-price,p1-unit,p1-quantity);/* 将商品信息写入文件 */while(1)p1=(struct good *)malloc(sizeof(struct good);/* 申请新空间 */printf(*n);printf( 请输入信息 :编号,名称,类型,价格,单位,数目n);printf((以输入 “1”表示结束输入) n);printf(*n);printf(_n);scanf(%d,
7、&p1-num);if(p1-num=-1)/* 申请空间结束条件 */printf(_nn);fprintf(fp,%d,-1);fclose(fp);return head1;/* 返回头指针 */4/27scanf(%s %s %f %s %d,p1-name,p1-kind,&p1-price,p1-unit,&p1-quantity ); /* 输入商品信息 */printf(_n);fprintf(fp,%d %s %s %f %s %d,p1-num,p1-name,p1-kind,p1-price,p1-unit,p1-quantity);/* 将商品信息写入文件 */p1-n
8、ext=NULL;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)/* 判断循环结束条件 */p7=p6-next;r=p6;while(p7-next!=NULL)/* 判断循环结束条件 */if(p7-next-price)(r-next-price)/* 判断是否调换 */r=p7;p7=p7-next;if(p6!=r)/*
9、判断循环结束条件 */s=r-next;/* 指针调换 */r-next=s-next;s-next=p6-next;p6-next=s;p6=p6-next;6/27p6=head2;head2=head2-next;free(p6);/* 释放第一个无效空间 */return head2;void jisuan()p1=head;doif(strcmp(p1-kind,c)=0)/* 判断是否为电器类型 */sum0=sum0+(p1-price)*(p1-quantity);/* 求电器总价 */a0=a0+p1-quantity;/* 求电器总件数 */if(strcmp(p1-kin
10、d,d)=0)/* 判断是否为日用品类型*/sum1=sum1+(p1-price)*(p1-quantity);/* 求日用品总价 */a1=a1+p1-quantity;/* 求日用品总件数 */if(strcmp(p1-kind,e)=0)/* 判断是否为办公用品类型*/7/27sum2=sum2+(p1-price)*(p1-quantity);/* 求办公用品总价 */a2=a2+p1-quantity;/* 求办公用品总件数 */if(strcmp(p1-kind,f)=0)/* 判断是否为食品类型 */sum3=sum3+(p1-price)*(p1-quantity);/* 求食品总价 */a3=a3+p1-quantity;/* 求食品总件数 */p1=p1-next;while (p1!=NULL);/* 遍历链表结束条件 */for(i=0;i4;i+)averi=sumi/ai;/* 求每类商品平均价 */printf(*n);printf( 商品类型t平均价 t总