收藏 分销(赏)

C语言超市商品管理系统.doc

上传人:二*** 文档编号:4540982 上传时间:2024-09-27 格式:DOC 页数:29 大小:196KB 下载积分:5 金币
下载 相关 举报
C语言超市商品管理系统.doc_第1页
第1页 / 共29页
本文档共29页,全文阅读请下载到手机保存,查看更方便
资源描述
- . 实训报告 题 目: 超市商品管理系统 院 系: 信息科技学院 专 业: 计算机科学与技术 姓 名: 学 号: 指导教师: 日 期: 电子科技大学信息科技学院 目 录 1 问题定义 …………………………………………………………………………..3 2 系统设计 ……………………………………………………………………3 2.1 总体设计………………………………………………………………………………3 2.2 详细设计………………………………………………………………………………3 2.2.1 数据构造设计 …………………………………………………………3 2.2.2 主控流程 …………………………………………………………………………3 2.2.3信息输入模块……………………………………………………………………4 2.2.4 信息增加模块 ……………………………………………….…………………4 2.2.5 信息修改模块 ………………………………………………4 2.2.6 信息删除模块 ……………………………………………….…………………4 2.2.7信息查看模块 ……………………………………………….…………………4 2.2.8信息统计模块…………………………………………………………………4 2.2.9 函数功能描述…………………………………………………………………4 3 系统实现 ………………………………………………………………………5 3.1 编码 ………………………………………………………………………5 3.1.1 程序预处理 ……….……………………………………………………………5 3.1.2 主函数main() ……….………………………………………………………5 3.1.3 主菜单界面 ………….……………………………………………………… 6 3.1.4 商品信息建立 …….………………………………………………………….7 3.1.5商品信息查看………….………………………………………………………9 3.1.6商品信息增加……….………………………………………………………..11 3.1.7商品信息删除………….………………………………………………………12 3.1.8商品信息修改………….………………………………………………………14 3.1.9 商品数目统计 ………….………………………………………………………16 3.2 测试与调试 ………………………………………………………………………22 3.2.1 概述 ………….……………………………………………………………22 3.2.2 程序测试 ………….……………………………………………………………22 4 系统维护 ………………………………………………………………………25 5 归纳总结 ………………………………………………………………………25 5.1 开发经历 ………………………………………………………………………25 5.2 实训中遇到的问题及解决方法 ………………………………………………25 5.3 设计中的缺乏之处……………………………………………………………………25 5.4 感想和心得体会 ……………………………………………………………………25 6 参考资料 ………………………………………………………………………25 超市商品管理系统 此题目设计目的是训练学生的根本编程能力,了解管理信息系统的开发流程,熟悉C语言的单链表的各种根本操作。本程序中涉及构造体、单链表、文件保存等方面的知识。通过本程序的训练,使学生能对C语言的链表的操作有一个更深刻的了解,掌握利用单链表存储构造实现对超市信息管理系统的原理,为进一步开发出高质量的管理信息系统打下坚实的根底。 1、问题定义 创立一个超市管理系统。该程序具有保存商品信息、查询商品信息、修改商品信息、删除商品信息、统计商品信息并具有自动判断商品价格、库存等的功能。 超市管理系统主界面 2、系统设计 2.1 总体设计 本程序采用模块化设计方法,即将一个大任务分成一个个小任务,然后分别设计个小任务。划分出来的模块相对独立而又相互关联,容易理解。本程序由5大模块组成: 1. 输入信息模块 2. 增加信息模块 3. 修改信息模块 4. 删除信息模块 5. 统计信息模块 2.2 详细设计 2.2.1数据构造设计 定义构造体 struct good { int num; /*商品编号*/ char name[20]; /*商品名称*/ char kind[40]; /*商品类型*/ float price; /*商品价格*/ char unit[10]; /*商品单位*/ int quantity; /*商品数量*/ struct good *next; /*定义构造体指针类型*/ }*head,*p1,*p2; 单链表good构造体 struct good /*定义构造体*/ { int num; /*商品编号*/ char name[20]; /*商品名称*/ char kind[40]; /*商品类型*/ float price; /*商品价格*/ char unit[10]; /*商品单位*/ int quantity; /*商品数量*/ struct good *next; /*定义构造体指针类型*/ }*head,*p1,*p2; 2.2.2 主控main()函数执行流程 Int main() struct good *p1,*p2; while(1) { if(m==1) printf("********************************商品信息的查看*******************************\n"); if(m==2) { printf("********************************商品信息的输入*******************************\n"); } if(m==3) { printf("********************************商品信息的统计*******************************\n"); } if(m==4) { printf("********************************退出*******************************\n"); } break; } } return 0; } 本商品管理系统执行主流程。它先以可读写的方式翻开数据文件,此文件默认为“C:\goods list.txt〞,假设该文件不存在,那么新建此文件。当翻开文件操作成功后,从文件中一次读出一条记录,然后执行显示主菜单和进入主循环操作,进展按键判断。 2.2.3 输入信息模块 记录可以从以文件形式存储的数据文件中读入,也可从键盘逐个输入商品记录。商品记录由商品的根本信息和成绩信息字段构成。当从数据文件中读入记录时,也就是把在以记录为单位存储的数据文件中,将记录逐条复制到单链表中。 2.2.4 增加信息模块 增加信息模块主要实现信息增加 2.2.5 修改信息模块 修改信息模块主要实现信息修改 2.2.6 删除信息模块 删除信息模块主要实现信息删除 2.2.7 查看信息模块 查看信息模块主要实现信息查看 2.2.8 统计信息模块 统计信息模块主要实现信息统计 2.2.9 函数功能描述 shuchu() shuchu()函数用于输出商品信息。 l struct good *paixu(struct good*head2) 此函数用于给链表排序。 l jisuan() jisuan()函数用于判断商品的类别。 l printf0(struct good *p) printf0(struct good *p)函数用于遍历链表并打印电器类商品。 l printf1(struct good *p) printf1(struct good *p)函数用于遍历链表并打印日用品类商品。 l printf2(struct good *p) printf2()函数用于遍历链表并打印办公用品类商品。 l printf3(struct good *p) printf3 struct good *p()函数用于遍历链表并打印食品类商品。 l shunxudayin() shunxudayin()函数用于给商品排序并打印。 l tongji1() tongji1()函数用于统计给库存量低于100的货名和类别。 l tongji2() tongji2()函数用于统计商品库存量有2种以上〔含两种〕低于100的商品类别。 完成在上述系统设计后,即可着手进展系统实现的工作,开场程序代码的编写。 3、系统实现 3.1 编码 3.1.1 程序预处理 包括加载头文件,定义构造体、常量和变量,并对它们进展初始化工作。 #include "stdio.h" /*输入,输出头文件*/ #include "stdlib.h" /*申请空间头文件*/ #include "string.h" /*对字符串加工头文件*/ #include "conio.h" /*清屏头文件*/ FILE *fp; int n=0; /*定义文件指针类型*/ int i,j,a[4],m; /*定义整数类型*/ float aver[4],sum[4],g[4],h; /*定义浮点类型*/ 3.1.2 主函数main() main()函数主要实现了对整个程序的运行控制,以及相关功能模块的调用。 Int main() struct good *p1,*p2; while(1) { if(m==1) printf("********************************商品信息的查看*******************************\n"); if(m==2) { printf("********************************商品信息的输入*******************************\n"); } if(m==3) { printf("********************************商品信息的统计*******************************\n"); } if(m==4) { printf("********************************退出*******************************\n"); } break; } } return 0; } 3.1.3 主菜单界面 用户进入商品管理系统时,需要显示主菜单,提示用户进展选择,完成相应任务。 { printf(" 电子科技大学信息科技学院超市管理系统 \n"); printf("***********************************************\n"); printf("1 ----------输出查看或者修改已存信息-----------\n"); printf("-----------------------------------------------\n"); printf("2 -----重新输入新信息〔并且删除原有信息〕------\n"); printf("-----------------------------------------------\n"); printf("3 统计商品信息〔如果您还没有查看过信息请先按1〕\n"); printf("-----------------------------------------------\n"); printf("4 -------------------退出---------------------\n"); printf("***********************************************\n"); scanf("%d",&m); 3.1.4 商品信息建立 用户进入商品管理系统时,对某个商品的信息进展处理。 struct good /*定义构造体*/ { int num; /*商品编号*/ char name[20]; /*商品名称*/ char kind[40]; /*商品类型*/ float price; /*商品价格*/ char unit[10]; /*商品单位*/ 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); /*完毕程序*/ } head1=(struct good *)malloc(sizeof(struct good)); /*申请头结点空间*/ p1=head1; p2=head1; printf("*********************************************\n"); printf("请输入信息:编号,名称,类型,价格,单位,数目\n"); printf(" 〔以输入“-1〞表示完毕输入〕\n"); printf("*********************************************\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; 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",&p1->num); if(p1->num==-1) /*申请空间完毕条件*/ { printf("____________________\n\n"); fprintf(fp,"%d",-1); fclose(fp); return head1; /*返回头指针*/ } scanf("%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->next=NULL; p2->next=p1; p2=p1; } } 3.1.5商品信息查看 void shuchu() /*输出商品信息函数*/ { do { struct good *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) /*判断能否翻开文件*/ { printf("can not open the file"); exit(0); /*完毕程序*/ } head=(struct good *)malloc(sizeof(struct good)); /*申请头结点空间*/ p3=head; fscanf(fp,"%d %s %s %f %s %d ",&p3->num,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->next=p4; p3=p4; } else { p3->next=NULL; break; } } fclose(fp); /*关闭文件*/ p3=head; while(p3!=NULL) { printf(" %d %s %s %0.1f %s %d\n\n",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; printf("**********************************\n"); printf("1 添加商品信息\n"); printf("2 删除某商品信息\n"); printf("3 修改某商品信息\n"); printf("4 返回〔当你完成了对某一商品的添加、删除或者修改后请按4返回〕\n"); printf("**********************************\n"); scanf("%d",&n); 3.1.6商品信息增加 if(n==1) /*添加商品信息*/ { printf("请输入商品 编号 名称 类型 价格 单位 数目\n"); printf("**********************************\n"); p4=(struct good *)malloc(sizeof(struct good)); /*申请空间*/ scanf("%d %s %s %f %s %d",&p4->num,p4->name,p4->kind,&p4->price,p4->unit,&p4->quantity); /*输入商品信息*/ p4->next=NULL; while(p3->next!=NULL) /*判断循环完毕条件*/ { p3=p3->next; } p3->next=p4; p3=head; if((fp=fopen("goods message.txt","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(fp); /*关闭文件*/ printf("**********************************\n"); printf("__________________________________\n"); printf("------------请按4返回-------------\n"); printf("__________________________________\n"); printf("**********************************\n"); } 3.1.7商品信息删除 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=head->next; free(p3); /*释放空间*/ } else { p4=head; p3=p4->next; 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 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,p3->quantity); /*将商品信息写入文件*/ p3=p3->next; } fprintf(fp,"%d",-1); fclose(fp); /*关闭文件*/ } if(r==2) continue; /*继续循环*/ printf("**********************************\n"); printf("__________________________________\n"); printf("------------请按4返回-------------\n"); printf("__________________________________\n"); printf("**********************************\n"); } 3.1.8商品信息修改 if(n==3) /*修改某商品信息*/ { printf("请输入需要修改的商品编号\n"); scanf("%d",&q); while(p3!=NULL) /*判断循环完毕条件*/ { if((p3->num)==q) /*判断是否为所需要修改的商品*/ { printf("请输入商品单价与库存量〔如果单价不变请输入原来的单价〕\n"); scanf("%f %d",&p3->price,&p3->quantity); /*输入商品价格与库存量*/ } p3=p3->next; } if((fp=fopen("goods message.txt","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,p3->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 继续修改\n---------\n2 返回\n"); printf("**********\n"); scanf("%d",&p); if(p==1) continue; /*继续循环*/ if(p==2) break; /*跳出循环*/ }while(n!=2); fclose(fp); /*关闭文件*/ } 3.1.9商品信息统计 void printf0(struct good *p) /*遍历链表并打印电器类商品函数*/ { struct good *p3; /*定义构造体指针类型*/ p3=p; while (p3!=NULL) /*判断遍历链表循环完毕条件*/ { if(strcmp(p3->kind,c)==0) /*判断商品类型是否为电器类型*/ { printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*输出电器类商品信息*/ printf("________________________________________________\n"); } p3=p3->next; } return; } void printf1(struct good *p) /*遍历链表并打印日用品类商品函数*/ { struct good *p3; /*定义构造体指针类型*/ p3=p; while (p3!=NULL) /*判断遍历链表循环完毕条件*/ { if(strcmp(p3->kind,d)==0) /*判断商品类型是否为日用品类型*/ { printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*输出日用品类商品信息*/ printf("________________________________________________\n"); } p3=p3->next; } return; } void printf2(struct good *p) /*遍历链表并打印办公用品类商品函数*/ { struct good *p3; /*定义构造体指针类型*/ p3=p; while (p3!=NULL) /*判断遍历链表循环完毕条件*/ { if(strcmp(p3->kind,e)==0) /*判断商品类型是否为办公用品类型*/ { printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*输出办公用品类商品信息*/ printf("________________________________________________\n"); } p3=p3->next; } return; } void printf3(struct good *p)
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服