您好,欢迎访问三七文档
题目:超市商品管理院系:信息科技学院专业:通信工程姓名: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数据结构设计structgoods{intnum;//编号charname[15];//名称doubleprice;//单价doublecount;//数量doubletotal;//总金额};structgoodscomm[50];//定义结构体数组结构体structgoods将用于存储商品的基本信息1、主函数main()定义主函数为空类型(void);利用选择结构(switch)实现在在主函数中的调用各个子函数。main()函数执行流程system(colorf3);改变颜色system(title超市商品信息管理系统);修改窗口名称输出菜单switch1输入商品信息2查找商品信息3删除商品信息4修改商品信息5按总金额排序商品信息6按库存商品信息7查询缺货商品8浏览商品信息0退出清屏幕intmain(void){intn;system(colorf3);//改变颜色system(title超市商品信息管理系统);//修改窗口名称menu();//显示主菜单scanf(%d,&n);//输入选择功能的编号while(n){switch(n){case1:in();break;//输入商品信息case2:find();break;//查找商品信息case3:del();break;//删除记录case4:modify();break;//修改记录case5:order();break;//按总金额排序case6:orderstock();break;//按库存排序case7:findOOS();break;//outofStock,查找无库存商品case8:show();break;//显示商品信息default:break;}getch();menu();//执行完功能再次显示主菜单scanf(%d,&n);}return0;}2、子函数(1)voidin();录入商品信息用while语句循环,直到用户输入n结束录入;voidin(){inti,a,m=0;//m记录的条数charc,h;FILE*fp;//定义文件指针if((fp=fopen(data.txt,a+))==NULL)//打开文件{printf(不能打开\n);return;}while(!feof(fp)){if(fread(&comm[m],len,1,fp)==1)m++;}fclose(fp);if(m==0)printf(没有找到\n);else{system(cls);}if((fp=fopen(data.txt,wb))==NULL){printf(不能打开);return;}for(i=0;im;i++)fwrite(&comm[i],len,1,fp);//向指定磁盘文件写入信息while(1){a=0;printf(请输入\n);printf(编号:);scanf(%d,&comm[m].num);//商品编号for(i=0;im;i++){if(comm[i].num==comm[m].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,comm[m].name);//输入商品名称printf(单价:);scanf(%lf,&comm[m].price);//输入商品单价printf(数量:);scanf(%lf,&comm[m].count);//输入商品数量comm[m].total=comm[m].price*comm[m].count;//计算出总金额if(fwrite(&comm[m],len,1,fp)!=1)//将新录入的信息写入指定的磁盘文件{printf(不能保存!);getch();}else{printf(%s已经保存!\n,comm[m].name);m++;}printf(是否继续?(y/n):);//询问是否继续scanf(%s,&h);if(h==121||h==89)continue;elsebreak;}fclose(fp);printf(OK!\n);}(2)voidfind()用户输入商品编号进行查找,找到则显示,找不到则返回主菜单;{FILE*fp;intsnum,i,m=0;charc;if((fp=fopen(data.txt,rb))==NULL){printf(不能打开文件\n);return;}while(!feof(fp))if(fread(&comm[m],len,1,fp)==1)m++;fclose(fp);if(m==0){printf(没有记录,请使用“输入记录”功能添加记录\n);return;}printf(请输入编号:);scanf(%d,&snum);for(i=0;im;i++)if(snum==comm[i].num)//查找输入的编号是否在记录中{printf(已经找到该记录,是否显示?(y/n));scanf(%s,&c);if(c==121||c==89)//判断y是否被按下{printf(编号商品名称单价数量总金额\t\n);printf(form,data);//将查找出的结果按指定格式输出break;}elsereturn;}if(i==m)printf(没有找到相应的记录!\n);//未找到要查找的信息}(3)voiddel()删除函数,输入商品编号删除相关商品;voiddel(){FILE*fp;intsnum,i,j,m=0;chara;if((fp=fopen(data.txt,r+))==NULL)//打开文件{printf(不能打开文件\n);return;}while(!feof(fp))if(fread(&comm[m],len,1,fp)==1)m++;fclose(fp);if(m==0){printf(没有记录!\n);return;}printf(请输入编号:);scanf(%d,&snum);for(i=0;im;i++)if(snum==comm[i].num)break;if(i==m){printf(没有找到!);getchar();return;}printf(已经找到该记录,是否删除?(y/n));scanf(%s,&a);if(a==121||a==89)//判断是否要进行删除{for(j=i;jm;j++)comm[j]=comm[j+1];//将后一个记录移到前一个记录的位置m--;//记录的总个数减1printf(成功删除!);}if((fp=fopen(data.txt,wb))==NULL){printf(不能打开!\n);return;}for(j=0;jm;j++)//将更改后的记录重新写入指定的磁盘文件中if(fwrite(&comm[j],len,1,fp)!=1){printf(不能保存!\n);getch();}fclose(fp);}(4)voidmodify()修改函数,输入商品编号用for循环与if语句找到该商品信息并进行修改;{FILE*fp;inti,j,m=0,snum;if((fp=fopen(data.txt,r+))==NULL)//打开文件{printf(不能打开文件!\n);return;}while(!feof(fp))if(fread(&comm[m],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==comm[i].num)break;}if(snum!=comm[i].num)//判断是否有记录{printf(没有找到记录,请重试\n);return;}printf(已经找到该记录,可以进行修改!\n);printf(商品名:);scanf(%s,comm[i].name);//输入名字printf(单价:);scanf(%lf,&comm[i].price);//输入商品单价printf(数量:);scanf(%lf,&comm[i].count);//输入商品数量printf(修改成功!);comm[i].total=comm[i].price*comm[i].count;if((fp=fopen(data.txt,wb))==NULL){printf(不能打开文件\n);return;}for(j=0;jm;j++)//将新修改的信息写入指定的磁盘文件中if(fwrite(&comm[j],len,1,fp)!=1){printf(不能保存!);getch();}fclose(fp);}(5)voidfindOOS()查找无货商品,用for循环与if语句找到该商品信息,并显示;{FILE*fp;inti,m=0;if((fp=fopen(data.txt,rb))==NULL)//打开文件{printf(不能打开文件\n);return;}while(!feof(fp))if(fread(&comm[m],len,1,fp)==1)m++;fclose(fp);if(m==0){printf(没有记录,请使用“输入记录”功能添加记录\n);return;}printf(以下商品缺货:\n\n编号商品名称单价数量总金额\t\n);for(i=0;im;i++)if(0.0==comm[i].count)//查找是否有误库存商品{printf(form,data);//将查找出的结果按指定格式输出}if(i==m)printf(——————查找完毕————————————————\n);//完成查找}(6)voidorder(
本文标题:超市商品管理c语言
链接地址:https://www.777doc.com/doc-7028761 .html