超市商品管理c语言.doc_第1页
超市商品管理c语言.doc_第2页
超市商品管理c语言.doc_第3页
超市商品管理c语言.doc_第4页
超市商品管理c语言.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

实训报告题 目: 超市商品管理院 系: 信息科技学院专 业: 通信工程姓 名: XXX学 号: 1251100XXX 指导教师: 杨永清日 期: 2013年9月15日 桂林电子科技大学信息科技学院超市商品管理本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和单链表的各种基本操作。本程序中涉及结构体、单链表、文件等方面的知识。通过本程序的训练,使学生能对C语言的文件操作有一个更深刻的了解,掌握利用单链表存储结构实现对学生成绩管理的原理,为进一步开发出高质量的管理信息系统打下坚实的基础。1、 程序简介本程序用VC+6.0编译,运行于windows系统下。1.1、本程序应具有以下功能:1、 文件操作功能文件操作:可建立、打开、保存、关闭数据文件。如果是新建的文件,可输入商品信息数据:数据包括商品编号、商品名、商品类别、商品数量、商品价格等。2、数据输入功能输入信息:输入商品编号、数量完成进货操作。3、 数据添加、修改、删除功能添加:添加一种或多种新商品,并能输入其商品信息。修改:修改商品信息,可包括商品编号、名称、种类、数量和单价。删除:删除一类或多类商品的所有信息。4、 计算功能可通过查询商品信息功能,自动计算并输出需要进货的商品信息。通过商品数量及单价,自动计算出商品总价。5、 查询功能可分别按商品编号和需要进货的商品进行查询。6、 排序功能可分别按商品编号、金额等进行排序。7、 数据显示功能 可分别浏览输入、查询和排序后的商品信息。2、总体设计图超 市 商 品 管 理 系 统采用模块化程序设计方法,将较大任务按一定规则分成一些较小任务,各个模块之间既独立又相关。输入记录排序记录更新记录查询删除记录修改记录按总金额排序按库存排序显示所有记录按编号查询按是否缺货查询文件写入文件读取商 品 超 市 管 理 模 块 图2.1界面设计主菜单输入界面:信息显示界面:2.2详细设计:(以下为部分代码)2.2.1数据结构设计struct goodsint num;/编号char name15;/名称double price;/单价double count;/数量double total;/总金额;struct goods comm50;/定义结构体数组结构体struct goods将用于存储商品的基本信息1、 主函数main()定义主函数为空类型(void);利用选择结构(switch)实现在在主函数中的调用各个子函数。main()函数执行流程system(color f3);改变颜色system(title 超市商品信息管理系统);修改窗口名称输出菜单switch1输入商品信息2查找商品信息3删除商品信息4修改商品信息5按总金额排序商品信息6按库存商品信息7查询缺货商品8浏览商品信息0退出清屏幕int main(void)int n;system(color f3);/改变颜色system(title 超市商品信息管理系统);/修改窗口名称menu();/显示主菜单scanf(%d,&n);/输入选择功能的编号while(n)switch(n) case 1 : in(); break;/输入商品信息case 2 : find(); break;/查找商品信息 case 3 : del(); break;/删除记录case 4 : modify(); break;/修改记录case 5 : order(); break;/按总金额排序case 6 : orderstock(); break;/按库存排序case 7 : findOOS(); break;/out of Stock,查找无库存商品case 8 : show(); break;/显示商品信息default: break;getch();menu();/执行完功能再次显示主菜单scanf(%d,&n);return 0;2、子函数(1)void in();录入商品信息用while语句循环,直到用户输入n结束录入;void in()int i,a,m=0;/m记录的条数char c,h;FILE *fp;/定义文件指针if(fp=fopen(data.txt,a+)=NULL)/打开文件printf(不能打开n);return;while(!feof(fp)if(fread(&commm,len,1,fp)=1)m+;fclose(fp);if(m=0)printf(没有找到n);elsesystem(cls);if(fp=fopen(data.txt,wb)=NULL)printf(不能打开);return;for(i=0;im;i+)fwrite (&commi,len,1,fp);/向指定磁盘文件写入信息while(1)a=0;printf(请输入n);printf(编号:);scanf(%d,&commm.num);/商品编号for(i=0;im;i+)if(commi.num=commm.num)a=1;printf(该记录已存在,按q返回主菜单,按任意键重新输入);scanf(%s,&c);break;if(a=1&(c=113|c=81)/判断q是否被按下break;elseif(a=1&(c!=113|c!=81)system(cls);continue;printf(商品名:);scanf(%s,);/输入商品名称printf(单价:);scanf(%lf,&commm.price);/输入商品单价printf(数量:);scanf(%lf,&commm.count);/输入商品数量commm.total=commm.price*commm.count;/计算出总金额if(fwrite(&commm,len,1,fp)!=1)/将新录入的信息写入指定的磁盘文件printf(不能保存!);getch();elseprintf(%s 已经保存!n,);m+;printf(是否继续?(y/n):); /询问是否继续scanf(%s,&h);if(h=121|h=89)continue;elsebreak;fclose(fp);printf(OK!n);(2)void find()用户输入商品编号进行查找,找到则显示,找不到则返回主菜单; FILE *fp;int snum,i,m=0;char c;if(fp=fopen(data.txt,rb)=NULL) printf(不能打开文件n);return;while(!feof(fp) if(fread(&commm,len,1,fp)=1) m+;fclose(fp);if(m=0) printf(没有记录,请使用“输入记录”功能添加记录n);return;printf(请输入编号:);scanf(%d,&snum);for(i=0;im;i+)if(snum=commi.num)/查找输入的编号是否在记录中 printf(已经找到该记录,是否显示?(y/n);scanf(%s,&c);if(c=121|c=89)/判断y是否被按下printf(编号 商品名称 单价 数量 总金额 tn);printf(form,data);/将查找出的结果按指定格式输出break;elsereturn;if(i=m) printf(没有找到相应的记录!n);/未找到要查找的信息(3)void del()删除函数,输入商品编号删除相关商品;void del()FILE *fp;int snum,i,j,m=0;char a;if( (fp=fopen(data.txt,r+) )=NULL)/打开文件 printf(不能打开文件n);return;while(!feof(fp) if(fread(&commm,len,1,fp)=1) m+;fclose(fp);if(m=0) printf(没有记录!n);return;printf(请输入编号:);scanf(%d,&snum);for(i=0;im;i+)if(snum=commi.num)break;if(i=m)printf(没有找到!);getchar();return;printf(已经找到该记录,是否删除?(y/n);scanf(%s,&a);if(a=121|a=89)/判断是否要进行删除for(j=i;jm;j+)commj=commj+1;/将后一个记录移到前一个记录的位置m-;/记录的总个数减1printf(成功删除!);if( (fp=fopen(data.txt,wb) )=NULL) printf(不能打开!n);return;for(j=0;jm;j+)/将更改后的记录重新写入指定的磁盘文件中if(fwrite(&commj ,len,1,fp)!=1) printf(不能保存!n);getch();fclose(fp);(4) void modify()修改函数,输入商品编号用for循环与if语句找到该商品信息并进行修改; FILE *fp;int i,j,m=0,snum;if( (fp=fopen(data.txt,r+) )=NULL)/打开文件 printf(不能打开文件!n);return;while(!feof(fp) if(fread(&commm,len,1,fp)=1) m+;if(m=0) printf(没有记录!n);fclose(fp);return;printf(请输入要修改的记录信息的编号n编号:);scanf(%d,&snum);for(i=0;im;i+)/检索记录中是否有要修改的信息if(snum=commi.num)break;if(snum!=commi.num)/判断是否有记录printf(没有找到记录,请重试n);return;printf(已经找到该记录,可以进行修改!n); printf(商品名:);scanf(%s,);/输入名字printf(单价:);scanf(%lf,&commi.price);/输入商品单价printf(数量:);scanf(%lf,&commi.count);/输入商品数量printf(修改成功!);commi.total=commi.price*commi.count;if( (fp=fopen(data.txt,wb) )=NULL) printf(不能打开文件n);return;for(j=0;jm;j+)/将新修改的信息写入指定的磁盘文件中if(fwrite(&commj ,len,1,fp)!=1) printf(不能保存!); getch(); fclose(fp);(5)void findOOS()查找无货商品,用for循环与if语句找到该商品信息,并显示; FILE *fp;int i,m=0;if ( (fp=fopen(data.txt,rb) )=NULL)/打开文件 printf(不能打开文件n);return;while(!feof(fp) if(fread (&commm,len,1,fp) =1) m+;fclose(fp);if(m=0) printf(没有记录,请使用“输入记录”功能添加记录n);return;printf( 以下商品缺货:nn编号 商品名称 单价 数量 总金额 tn);for(i=0;im;i+)if (0.0=commi.count)/查找是否有误库存商品printf(form,data);/将查找出的结果按指定格式输出 if (i=m) printf(查找完毕n);/完成查找(6) void order()按金额对商品进行由多到少排序 FILE *fp;struct goods t;int i=0,j=0,m=0;if ( (fp=fopen(data.txt,r+) )=NULL)/打开文件 printf(can not open!n); return;while(!feof(fp) if(fread (&commm ,len,1,fp) =1) m+;fclose(fp);if(m=0) printf(no record!n);return;if( (fp=fopen(data.txt,wb) )= NULL) printf(can not openn);return;for(i=0;im-1;i+)for(j=i+1;jm;j+)/双重循环实现比较并交换if(commi.totalcommj.total) t=commi;commi=commj;commj=t;if( (fp=fopen(data.txt,wb) )= NULL) printf(can not openn);return;for(i=0;im;i+)/将重新排好序的内容重新写入指定的磁盘文件中if(fwrite(&commi ,len,1,fp)!=1) printf(%s can not save!n); getch();fclose(fp);printf(保存成功!n);(7) void orderstock()按商品数量对商品进行由多到少排序 FILE *fp;/定义文件指针struct goods t;int i=0,j=0,m=0;if( (fp=fopen(data.txt,r+) )= NULL)/打开文件 printf(无法打开n); return;while(!feof(fp) if(fread(&commm ,len,1,fp)=1) m+;fclose(fp);if(m=0) printf(no record!n);return;if( (fp=fopen(data.txt,wb) )=NULL) printf(无法打开n);return;for(i=0;im-1;i+)for(j=i+1;jm;j+)/双重循环实现比较并交换if(commi.countcommj.count) t=commi;commi=commj;commj=t;if( (fp=fopen (data.txt,wb) )= NULL) printf(无法打开n);return;for(i=0;im;i+)/将重新排好序的内容重新写入指定的磁盘文件中if(fwrite (&commi ,len,1,fp) !=1) printf(%s 无法保存n); getch();fclose(fp);printf(保存成功!n); (8) void show()显示商品信息 FILE *fp;int i,m=0;if( (fp=fopen(data.txt,rb) )= NULL )/打开文件 printf(不能打开文件n);return;while(!feof(fp) if (fread(&commm,len,1,fp)=1) m+;fclose(fp);if(m=0) printf(没有记录,请使用“输入记录”功能添加记录n);return;printf( 商品信息:nn编号 商品名称 单价 数量 总金额 tn);for ( i=0 ; im ; i+ )printf(form,data);/将商品信息按指定格式输出printf(n);printf(显示完毕,按任意键返回主菜单n);/完成查找3、 程序测试l 在主菜单中选择1当用户输入1并按回车键后,即可进入数据输入界面。若是第一次运行该程序,应能实现从键盘输入学生信息到文件中,当输入的编号重复时,应能不予接收,当输入完时提示是否继续,按y继续,按n结束输入,返回主菜单界面。若非第一次运行该程序,应能实现从文件中读入商品信息,并进入增加商品记录画面。其输入记录过程如下图所示l 在主菜单中选择2当用户输入2并按回车键后,即可进入记录查找界面。其查找记录过程如下图所示,可按编号进行查找。l 在主菜单中选择3当用户输入3并按回车键后,即可进入记录删除界面。其删除记录过程如下图所示,这里按编号删除了

温馨提示

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

评论

0/150

提交评论