食品仓库管理系统程序_第1页
食品仓库管理系统程序_第2页
食品仓库管理系统程序_第3页
食品仓库管理系统程序_第4页
食品仓库管理系统程序_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、课 程 设 计 报 告课程设计名称:C语言课程设计课程设计题目:食品仓库管理系统程序目 录第1章 需求分析11.1社会需求11.2题目的内容与要求1第2章 概要设计2第3章 详细设计33.1主模块33.2录入仓库食品信息模块43.3打印仓库食品信息模块53.4添加仓库食品信息模块63.5删除仓库食品信息模块73.6修改食库食品信息模块83.7操作并产生统计报表93.8处理过期食品并打印其清单103.9查询仓库产品信息模块10第4章 调试分析12第5章 使用说明13参考文献15附 录(程序清单)16第1章 需求分析1.1社会需求 在当今仓库的对库存食品系统化管理的大趋势下,对食品的管理的安全,高

2、效的要求越来越高,所以对管理系统的优化设计也越来越高。某食品仓库需要一个能够管理食品仓库的程序,希望通过此程序能够很好的管理仓库的食品。1.2题目的内容与要求内容:某食品仓库管理程序保存如下产品编号,产品名称,产地,计量单位,单价,数量,进货日期,保质期,选择一种数据结构保存以上信息,实现以下功能:(1) 输入数据,建立库存商品信息。(2) 有查询,添加,删除和修改商品信息的功能。(3) 以日为单位,对库存商品的产品的入库与出库进行操作,并产生统计报表。(4) 根据当天日期统计即将到期的库存商品,进行相应处理,并打印其清单备注。第2章 概要设计 本程序主要分为九个模块:主模块,录入模块,打印模

3、块,查询模块,添加模块,删除模块,修改模块,操作并产生统计报表模块,处理过期食品并打印清单备注模块。主模块:调用函数,控制程序的运行。录入模块:输入食品信息并保存。打印模块:查看是否录入信息。查询模块:查询所需的食品信息。添加模块:添加要保存的食品信息。删除模块:删除不需要的食品信息。修改模块:修改食品信息。操作并产生统计报表模块:对食品的出入仓库的处理并产生统计表。处理过期食品并打印清单备注模块:对食品的过期处理并打印备注清单。该程序充分的考虑到管理者要求,做到人性化的自动管理。 图2.1某食品仓库管理功能第3章 详细设计3.1主模块控制整个程序的运行,通过主函数模块分别调用各个模块,实现各

4、项功能。在对程序的预处理时,充分的考虑了用户的需求及习惯,先对食品名称的处理,一般对食品名称比较短,所以我把名称定义大小20的字符串的数组,在价格方面,定义为浮点型的,这样便于用户的操作与计算。在定义产地的数组时,考虑到地名不算长,定义为20大小的字符串数组。进货日期用结构体的形式定义的,这样方便用户的查看。在录入和打印的系统中,用户可以输入食品编号,名称,产地,计量单位,单价,数量,进货日期,保值期,对食品进行详细的说明,并且可以看见食品的详细信息。在查询和删除系统中,用户可以根据具体情况进行查询,删除已有的食品。可以查看到食品的详细的信息,对仓库进行一系列的操作。在修改系统中,用户可以先输

5、入食品的编号后,再按人性化的提示输入修改的信息。这样既节约用户宝贵的时间,又对食品的具体信息非常的了解,对食品的安全储存,使用做出最好的准备,符合国家的本着对人的生命安全储存食品的具体要求,又能在食品的有效期以前处理食品做好准备。而操作并产生统计报表和处理过期产品并打印其清单的系统更是做到了只有想不到的,没有做不到的服务。操作并产生统计报表可以选择入库,出库,产生统计报表的操作,做到一键多能。可以对仓库最近的出库与入库,产生统计报表进行一系列的操作。处理过期产品并打印其清单系统中,可以输入当日的日期,系统自动删除已过期食品,并打印已删除的食品的信息。做到了让管理者省心,放心,让安全食品储存的高

6、效的服务。这个程序根据当今社会的需求而设,能做到高效,安全,人性化的服务。3.2录入仓库食品信息模块(1)录入信息模块,函数名为save(pro,n)。(2) save(pro,n)函数不需要传递参数,整型变量i表示存放的是第i条记录,定义了存放临时记录的结构体变量,指针文件变量fp。进入程序时打开文件,对文件操作结束,退出程序时关闭文件。流程图如图3.2所示。图3.2 食品信息录入流程图3.3打印仓库食品信息模块 打印仓库产品信息函数名为show(),不需要传递参数,也不需要定义任何变量。打开文件,通过循环逐条读取数据,并将数据显示在屏幕上。流程图如图3.3所示.。图3.3仓库食品信息打印流

7、程图3.4添加仓库食品信息模块添加仓库食品信息函数为add()。添加仓库食品信息文件,从文件逐条读取数据,并将它们存放在结构体类型的数组中,对数组进行添加,最后将数据存入文件中。添加过程:输入要添加的数量,输入产品信息,每输一组数据,记录数加一。流程图如图3.4所示。 图 3.4仓库食品信息添加流程图3.5删除仓库食品信息模块 删除仓库食品信息模块函数为del(number)。将输入的信息与相应的数组成员一一进行比较,找到记录,再将该记录有关的信息全部删除。每删除一组数组,记录数减一。流程图如图3.5所示.。 图 2.5仓库食品信删除息流程图3.6修改食库食品信息模块修改仓库食品信息模块函数为

8、change()。流程图如图3.6所示。图3.6仓库食品信息修改流程图3.7产生统计报表 操作并产生统计报表的函数为void operate()。打开仓库食品信息系统文件,从文件中逐条读取数据,并将它们存放在结构体类型的结构体的数组中,进行入库操作 出库操作 产生统计报表。流程图如图3.7所示.。 图 3.7 产生统计表流程图3.8处理过期食品并打印其清单处理过期仓库食品并打印其清单函数为safecheck()。打开仓库食品信息系统文件,从文件中逐条读取数据,并将它们存放在结构体类型的结构体的数组中,输入当日日期,通过循环找到过期产品,并打印清单。流程图如图3.8.所示。 图 2.8 处理过期

9、食品并打印其清单流程图3.9查询仓库产品信息模块查询仓库食品信息模块函数为query()。流程图如图3.9所示。图3.9 查询系统流程图第4章 调试分析在上机输入完程序后,出现了几个错误,其中有一些小错误,比如说忘记写分号,在这些错误上双击,找到位置,加上分号。还有就是程序中的有的变量在前面没有定义,只要在前面添加上就可以了。再有就是前后的类型要保持一致,在这块我也犯了个错误。前面是浮点类型,后面却是布尔类型,解决办法就是把前面的改成布尔类型,保持前后一致。还有就是遗忘分号,逗号,解决方法就是,一步一步的把遗忘的分号,逗号补上。忘记定义变量的类型。比如n应该是整型的却忘记申明。解决方法就是在函

10、数内先申明int 类型的n.。在寻找食品信息时,出现了死循环的现象。解决方法就是通过一步一步调试适当的改变一些数据。粗心导致很多细节问题,比如该输入英文的括号的,却输成中文的括号,解决方法,把中英文分开。注意细节问题。还有就是把文件建立在C盘,这是一个致命的错误。后来把文件建立在E盘才出现预期的结果。第5章 使用说明 运行操作及结果:菜单如图,按菜单选择正确的序数进行操作。选择1,2进行录入和打印食品信息。(录入食品信息和打印信息如下图)选择3查询食品信息(查询结果如图)选择4并按回车键,再输入添加的食品种数按回车键确定,添加食品信息(如下图)。选择5删除食品信息。(如下图)选择6.输入需要修

11、改的食品的编号,修改食品信息。(如下图)选择7按提示进行操作并产生统计报表。(如下图)选择8.再输入当日日期,处理过期食品并打印其清单。(如下图)参考文献1 张长海.C语言程设计M.高等教育出版社,20062 王为青 刘变红.C语言高级编程及实例剖析.人民邮电出版社.20073 杨克昌. C语言程序设计.武汉大学出版社.20074 谭浩强.C语言程序设计.清华大学出版社,19985 侯风巍.数据结构要点精析.北京航空航天大学出版社,2007附 录(程序清单)源代码:#include#include#include#includeconio.h#define N 20int n=0;struct

12、 datint year;int month;int day;struct productint num;char name20;char productor20;char measureunit10;float unitprice;float amount;struct dat date;int safetime; proN;void menu()printf(*n);printf(* 1.录入仓库食品信息 *n);printf(* 2.打印仓库食品信息 *n);printf(* 3.查询仓库食品信息 *n);printf(* 4.添加仓库食品信息 *n);printf(* 5.删除仓库食品

13、信息 *n);printf(* 6.修改仓库食品信息 *n);printf(* 7.操作并产生统计报表 *n);printf(* 8.处理过期食品并打印其清单 *n);printf(* 9.退出 *n);printf(*n);printf(请输入要操作的序号:n);void save(struct product proN,int n) / 食品信息改变后更新文件FILE *fp; int i=0; if(fp=fopen(e:product.txt,w)=NULL) printf(文件打开失败!n); return ;for(i=0;in;i+)fprintf(fp,%d %s %s %s

14、%f %f %d %d %d %dn,proi.num,,ductor,proi.measureunit,proi.unitprice,proi.amount,(proi.date).year,(proi.date).month,(proi.date).day,proi.safetime); fclose(fp);void add()/*添加食品信息*/FILE *fp; int a,i; if(fp=fopen(e:product.txt,a)=NULL) /如果文件已经存在,可以追加食品信息 if(fp=fopen(e:product.txt,w)=NUL

15、L) / 文件不存在时,创建新文件,输入食品信息 printf(文件打开失败!n); return; printf(请输入要添加的食品的种数,按回车键确认:n); scanf(%d,&a);n=n+a;system(cls); for(i=n-a;in;i+) printf(n请输入第%d个产品的编号、名称、产地、计量单位,用空格分开,并按回车键确认:n,i+1); scanf(%d%s%s%s,&proi.num,,ductor,proi.measureunit); printf(n请输入第%d个食品的单价、数量、进货日期、保质期,用空格分开,并按回车键确认

16、:n,i+1); scanf(%f%f%d%d%d%d,&proi.unitprice,&proi.amount,&(proi.date).year,&(proi.date).month,&(proi.date).day,&proi.safetime); fprintf(fp,%d %s %s %s %f %f %d %d %d %dn,proi.num,,ductor,proi.measureunit,proi.unitprice,proi.amount,(proi.date).year,(proi.date).month,(proi.date).day,p

17、roi.safetime);system(cls); fclose(fp);void show() / 食品信息显示函数 int i;if(n=0)printf(记录为空!n);elseprintf(*n);printf(编号t食品名称t产地t计量单位t单价t数量t进货日期t保质期(月)n);printf(*n);for(i=0;in;i+)printf(%dt%st%st%st%ft%ft%d,%d,%dt%dn,proi.num,,ductor,proi.measureunit,proi.unitprice,proi.amount,(proi.date).

18、year,(proi.date).month,(proi.date).day,proi.safetime); getch();system(cls);void del(int number) /*食品信息删除函数*/ int i,j; for(i=0;i=n)printf(没有找到该食品信息!n); return; else for(j=i+1;jn;j+)proj-1=proj;n=n-1; save(pro,n); printf(删除成功!n);getch();system(cls);void change() /食品信息更改 int i;int number; printf(n请输入要更

19、改产品的编号,按回车键确认:n); scanf(%d,&number);system(cls); for(i=0;i=n)printf(无此产品信息!); return; printf(n请输入更改后食品的编号、名称、产地、计量单位,按回车键确认:n); scanf(%d%s%s%s,&proi.num,,ductor,proi.measureunit); printf(n请输入更改后食品的单价、数量、进货日期、保质期,按回车键确认:n);scanf(%f%f%d%d%d%d,&proi.unitprice,&proi.amount,&(proi.date).

20、year,&(proi.date).month,&(proi.date).day,&proi.safetime); save(pro,n);system(cls);void query() / 按产品号对产品信息查询 int number,i; printf(n请输入待查询的食品编号,按回车键确认:n); scanf(%d,&number);system(cls);for(i=0;i=n)printf(没有找到该食品信息!n); return; elseprintf(编号为%d的食品信息如下:n,number);printf(*n);printf(编号t食品名称t产地t计量单位t单价t数量t进

21、货日期t保质期(月)n);printf(*n);printf(%dt%st%st%st%ft%ft%dt%dt%dt%dn,proi.num,,ductor,proi.measureunit,proi.unitprice,proi.amount,(proi.date).year,(proi.date).month,(proi.date).day,proi.safetime); getch();system(cls);void operate()int a=0,number;while(a!=4)system(cls);printf(请你做如下选择:1.入库操作

22、 2.出库操作 3.产生统计报表 4.退出n);scanf(%d,&a);system(cls);switch(a)case 1: add();break;case 2: printf(n请输入要删除食品的编号,按回车键确认:n);scanf(%d,&number);system(cls);del(number);break;case 3: show();break;case 4: break;default: printf(输入错误,请输入列表中存在的序号!n );void safecheck()int t=0,i;int y,m,d;printf(现在进行过期食品的处理(保质期小于等于一个

23、月将视为过期),请输入今天的日期(年、月、日):n); scanf(%d%d%d,&y,&m,&d);system(cls);for(i=0;i(proi.date).year)if(m(proi.date).month)t=m-(proi.date).month+12*(y-(proi.date).year);elset=m+12-(proi.date).month+12*(y-(proi.date).year-1);elseprintf(日期输入有误!n);break; if(proi.safetime-t)=1)printf(以下是您即将删除的过期食品的信息:n); printf(*n)

24、;printf(编号t产品名称t产地t计量单位t单价t数量t进货日期t保质期(月)n);printf(*n);printf(%dt%st%st%st%ft%ft%d,%d,%dt%dn,proi.num,,ductor,proi.measureunit,proi.unitprice,proi.amount,(proi.date).year,(proi.date).month,(proi.date).day,proi.safetime);del(proi.num);i=-1;getch();system(cls);void main()int number,i;

25、int a; while(1) fflush(stdin);menu(); scanf(%d,&a);system(cls); switch(a)case 1: printf(请输入您想输入的食品的总数:n);scanf(%d,&n);system(cls);for(i=0;in;i+)printf(输入食品编号:n);scanf(%d,&proi.num); printf(输入产品名称:n);scanf(%s,);printf(输入食品产地:n);scanf(%s,ductor);printf(输入食品计量单位:n);scanf(%s,proi.measureunit);printf(输入食品单价(元):n);scanf(%f,&proi.unitprice);printf(输入食品数量:n);scanf(%f,&proi.amoun

温馨提示

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

最新文档

评论

0/150

提交评论