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

下载本文档

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

文档简介

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

2、建信息模块排序模块统计模块1统计模块2打印模块系统功能模块图:主模块信息输出新建信息排序模块统计模块统计模块打印模块添加商品信息输出主模块商品价格(从 高到低)计算模块商品信息删除某商品 平均价 信息修改某商品 信息主模块3)详细设计:主要功能模块的算法设计思路: 本程序主要分为八个模块: 主模块、信息输出修 改模块、新建信息模块、排序模块、计算模块、统计模块 1、统计模块 2、打印 模块。1) 主模块:通过调用各分模块实现功能;2) 信息输出修改模块:输出显示文件中商品信息内容,添加商品信息,删除商 品信息,修改商品信息;3) 新建商品信息模块:建立一个新结构体,为链表存信息用,并且将信息保

3、存 在指定的文件中;4) 排序模块:把文件中顺序零乱的商品信息按单价的大小从高到低进行排序, 放到链表里存储;5) 计算模块:将所有商品的价格与库存量进行累加求和;6) 打印模块:将商品信息按每类平均价格排序(从高到低)按顺序打印出来;7) 统计模块 1:统计库存量低于 100 的货名及类别;8) 统计模块 2:统计商品库存量有 2 种以上(含 2种)低于 100的商品类别 工作流程图:4)主要源程序代码:#include /*#include /*#include /*#include /*FILE *fp;输入,输出头文件 */ 申请空间头文件 */ 对字符串加工头文件 */ 清屏头文件

4、*/定义字符数组类型 */ 定义字符数组类型 */ 定义字符数组类型 */ 定义字符数组类型 */struct good /*定义结构体 */int n=0; /* 定义文件指针类型 */int i,j,a4,m; /* 定义整数类型 */float aver4,sum4,g4,h; /* 定义浮点类型 */char c5=elec;/*char d5=comm;/*char e5=food;/*char f5=offi;/*int num; /* 商品编号 */char name20;/*char kind40;/*float price; /* char unit10;/*int quan

5、tity; /* struct good *next; /*商品名称 */商品类型 */商品价格 */商品单位 */商品数量 */定义结构体指针类型 */创建链表函数 */定义结构体指针类型 */ 判断能否打开文件 */*head,*p1,*p2;struct good *createlist()/*struct good *head1,*p1,*p2;/*if(fp=fopen(goods ,w)=NULL) /* printf(can not open the file); exit(0); /* 结束程序 */head1=(struct good *)malloc(sizeof(stru

6、ct good); /* 申请头结点空 间*/p1=head1;p2=head1;*n);printf(printf( 请输入信息 : 编号,名称,类型,价格,单位,数目 n); printf(以输入“ 1”表示结束输入) n);*n);printf(printf(n);scanf(%d %s %s %f %s %d,&p1-num,p1-name,p1-kind,&p1-price,p1-u nit,&p1-quantity); /* 输入商品信息 */ printf(n);p1-next=NULL;fprintf(fp,%d %s %s %f %s %d ,p1-num,p1-name,p

7、1-kind,p1-price,p1-unit,p1-quantity); /* 将商品信息写入文件 */while(1)p1=(struct good *)malloc(sizeof(struct good); /* 间*/申请新空printf(*n);printf( 请输入信息 : 编号,名称,类型,价格,单位,数目n);printf(以输入“ 1”表示结束输入) n);*n);申请空间结束条件 */printf(printf(n);scanf(%d,&p1-num);if(p1-num=-1) /*printf(nn);fprintf(fp,%d,-1);返回头指针 */fclose(f

8、p);return head1; /* scanf(%s %s %f %s %d,p1-name,p1-kind,&p1-price,p1-unit,&p1-qua ntity); /* 输入商品信息 */printf(n);fprintf(fp,%d %s %s %f %s %d ,p1-num,p1-name,p1-kind,p1-price,p1-unit,p1-quantity);/* 将商品信息写入文件 */p1-next=NULL;p2-next=p1;p2=p1;struct good *paixu(struct good*head2) /* 链表排序函数 */ struct g

9、ood *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) /*s=r-next; /* r-next=s-next; s-next=p6-next; p6-next=s;p6=p6-next;p6=head2; hea

10、d2=head2-next; free(p6); /* return head2;void jisuan()p1=head;do判断循环结束条件 */指针调换 */释放第一个无效空间 */判断是否为电器类型 */if(strcmp(p1-kind,c)=0) /*sum0=sum0+(p1-price)*(p1-quantity); /* 求电器总价 */ a0=a0+p1-quantity; /* 求电器总件数 */ if(strcmp(p1-kind,d)=0) /* 判断是否为日用品类型 */求日用品总价 */sum1=sum1+(p1-price)*(p1-quantity); /*a

11、1=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) /*判断是否为食品类型 */sum3=sum3+(p1-price)*(p1-quantity); /* 求食品总价 */ 求食品总件数 */a3=a3+p1-quantity; p1=p1-next;while (p1!=NULL); f

12、or(i=0;inum,p3-name,p3-kind,&p3-price,p3-unit,&p3-quantity); /* 从文件中写到链表 */while(1)p4=(struct good *)malloc(sizeof(struct good); /* 申请头结点空间 */ fscanf(fp,%d ,&p4-num);if(p4-num!=-1) /* 判断循环结束条件 */fscanf(fp,%s %s %f %s %d ,p4-name,p4-kind,&p4-price,p4-unit,&p4-quantity); /* 从文件中写 到链表 */p4-next=NULL;p3

13、-next=p4;p3=p4;elsep3-next=NULL; break;关闭文件 */fclose(fp); /* p3=head; while(p3!=NULL)printf( %d %s %s % %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!=4)p3=head;*n);printf(printf(1 添加商品信息 n);printf(2删除某商品信息 n);printf(3修改某商品信息 n);prin

14、tf(4 返回(当你完成了对某一商品的添加、删除或者修改后请按 4 返 回) n);*n);scanf(%d,&n);if(n=1) /*添加商品信息 */printf(价格 单位 数目 n);printf( 请输入商品 编号 名称 类型*n);printf(申请空间 */p4=(struct good *)malloc(sizeof(struct good); /* scanf(%d %s %s %f %s %d,&p4-num,p4-name,p4-kind,&p4-price,p4-u nit,&p4-quantity); /* 输入商品信息 */p4-next=NULL;while(p

15、3-next!=NULL) /* 判断循环结束条件 */p3=p3-next;p3-next=p4;p3=head;if(fp=fopen(goods ,w)=NULL) /* 判断能否打开文 件*/printf(can not open the file);exit(0); /* 结束程序 */while(p3!=NULL)fprintf(fp,%d %s %s %f %s %d ,p3-num,p3-name,p3-kind,p3-price,p3-unit,p3-quantity) ; /* 将商品信息写入文件 */p3=p3-next;fprintf(fp,%d,-1);fclose(

16、fp); /*关闭文件 */printf(*n); printf( printf( printf(请按 4 返回_n);n);n);printf(*n);if(n=2)/*删除商品 */*n);printf( printf( 请输入需要删除的商品编号 n);*n);printf( scanf(%d,&p);printf(*n);printf(1 确认删除 n2取消删除 n);printf(*n);scanf(%d,&r);if(r=1)if(head-num)=p)head=head-next;free(p3); /*释放空间 */elsep4=head; p3=p4-next; while(

17、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 ,w)=NULL) /*判断能否打开文件 */printf(can not open the file);exit(0); /* 结束程序 */p3=head;while(p3!=NULL) /* 判断循环结束条件 */ fprintf(fp,%d %s %s %f %s %d ,p3-num,p3-name,p3-kind,p3-pric

18、e,p3-unit,p3-quantity);/* 将商品信息写入文件 */p3=p3-next;fprintf(fp,%d,-1);fclose(fp); /* 关闭文件 */if(r=2)continue; /* 继续循环 */*n);printf(printf(n);printf( 请按 4 返回 n);printf(n);*n);printf(if(n=3) /* 修改某商品信息 */printf( 请输入需要修改的商品编号 n);scanf(%d,&q);while(p3!=NULL) /* 判断循环结束条件 */if(p3-num)=q) /* 判断是否为所需要修改的商品 */pr

19、intf( 请输入商品单价与库存量(如果单价不变请输入原来的单价) n);scanf(%f %d,&p3-price,&p3-quantity);/* 输入商品价格与库存量 */p3=p3-next;if(fp=fopen(goods ,w)=NULL) /* 判断能否打开文 件*/printf(can not open the file);exit(0); /* 结束程序 */p3=head;while(p3!=NULL) /* 判断循环结束条件 */fprintf(fp,%d %s %s %f %s %d ,p3-num,p3-name,p3-kind,p3-price,p3-unit,p

20、3-quantity); /* 将商品信息写入文件 */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继续修改 nn2返回n);printf(*n);scanf(%d,&p);if(p=1)continue; /*if(p=2)break;/*while(n!=2); fclose(fp); /* 继续循环 */跳出循环 */关闭文件 */v

21、oid printf0(struct good *p) struct good *p3; /*p3=p;while (p3!=NULL) /*if(strcmp(p3-kind,c)=0)*/* 遍历链表并打印电器类商品函数 定义结构体指针类型 */ 判断遍历链表循环结束条件 */* 判断商品类型是否为电器类型 */printf(%dt%st%st%t%st%dn,p3-num,p3-name,p3-kind,p3-price,p3-unit,p3-quantity); /* 输出电器类商品信息 */ printf(n); p3=p3-next;return;void printf1(stru

22、ct good *p) struct good *p3;/*p3=p;while (p3!=NULL)/*/* 遍历链表并打印日用品类商品函数 */ 定义结构体指针类型 */判断遍历链表循环结束条件 */判断商品类型是否为日用品类型 */if(strcmp(p3-kind,d)=0) /* printf(%dt%st%st%t%st%dn,p3-num,p3-name,p3-kind,p3-price,p3-unit,p3-quantity); /* 输出日用品类商品信息 */ printf(n); p3=p3-next;return;void printf2(struct good *p)

23、struct good *p3;/*p3=p;while (p3!=NULL)/*/* 遍历链表并打印办公用品类商品函数 定义结构体指针类型 */判断遍历链表循环结束条件 */判断商品类型是否为办公用品类型 */if(strcmp(p3-kind,e)=0) /* printf(%dt%st%st%t%st%dn,p3-num,p3-name,p3-kind,p3-price,p3-unit,p3-quantity); /* 输出办公用品类商品信息 */ printf(n); p3=p3-next; return;void printf3(struct good *p) struct good

24、 *p3;/*p3=p;while (p3!=NULL) /*/* 遍历链表并打印食品类商品函数 */ 定义结构体指针类型 */ 判断遍历链表循环结束条件 */if(strcmp(p3-kind,f)=0) /*判断商品类型是否为食品类型 */printf(%dt%st%st%t%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;i4;i+) gi=averi; /* for(j=0;

25、j3;j+) /* for(i=j+1;i4;i+)if(gjgi)h=gj;gj=gi; gi=h;将平均价赋给新数组 */将新数组用冒泡排序法排序 */*n);printf( 商品平均价格排序表(从高到低)n);printf(n*n);printf(printf(n);printf( 编号t 名称t 类别t 单价t 单位 t 数量n);printf(n);for(j=0;j4;j+)for(i=0;iquantityname,p1-kind); /* 输出商品名称及类别 */printf(n); p1=p1-next;void tongji2()printf( 商品库存量有 2 种以上(含

26、 2种)低于 100的商品类别printf(n printf(*n);*n);printf(n);if(a0=2) /*库存量是否为 2 种以上(含 2 种)低于 100*/ printf( 电器 n);printf(n);if(a1=2) /* 类库存量是否为 2 种以上(含 2 种)低于 100*/ printf( 日用品 n);printf(n);if(a2=2) /* 库存量是否为 2 种以上(含 2 种)低于 100*/ printf( 食品 n);printf(n);if(a3=2) /* 品类库存量是否为 2 种以上(含 2种)低于 100*/ printf( 办公用品 n);printf(n);int main(int argc, char* argv) 定义结构体指针类型 */struct good *p1,*p2; /* while(1)printf(*n);printf(1 输出查看或者修改已存信息n);:n);判

温馨提示

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

评论

0/150

提交评论