C语言-物资管理系统设计报告.pdf
C 语言程序设计报告物资管理系统指导老师:指导老师:姓姓名:名:班级序号:班级序号:学学号:号:一一题目要求题目要求请设计一个物资管理系统,要求主程序中应提供文字交互菜单界面,要求包含以下几个功能模块:信息输入模块 input():建立物资管理数据总文件,完成对物资原库存信息的录入,并存放到指定文件中信息查找模块 search():采用如下方式进行查找,若找到,则输出该物资的相关信息;没有则给出提示信息。()按产品名称查询()进货日期查询并统计。()按产品名称和规格查询并统计。新物资入库模块 insert():在原数据文件中插入新物资的信息。领料模块 lend():查找所领取物资的信息,满足领料的要求,请登记领取物资名称,日期,数量(领料后修改)打印功能模块 printf()(1)打印领料单()打印物资库存清单。二二需求分析需求分析根据题目要求,由于物资信息是存放在文件中,所以提供文件的输入,输出等操作在程序中需要浏览物资的需要浏览物资信息,应提供显示,查找等操作;另外还应提供键盘选择菜单实现功能选择。三总统设计根据上面的分析及题目要求可以分为以下六个模块(系统模块如下图 1。)商品种商品查商品信商品领打系印统商四四详细设计详细设计(一)主函数一般是设计简洁,只提供输入,处理和输出(一)主函数一般是设计简洁,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。其中流程部分的函数调用。其中各功能模块用菜单方式选择。其中流程图如图(图如图(2 2)menu()int n,w1;do puts(ntt*MENU*nn);puts(ttt1.物资信息输入模块);puts(ttt2.查询模块);puts(ttt3.物资信息查找模块);puts(ttt4.领料查询);puts(ttt5.打印模块);puts(tt);puts(nntt*n);puts(tt*by 袁璐n);puts(tt*);printf(选择你要得命令 1-6:bb);scanf(%d,&n);if(n6)N w1=1;getchar();else w1=0;while(w1=1);switch(n)输入 n,判断 m case 1:enter();break;case 2:search();break;case 3:insert();break;图 2 case 4:lend();break;case 5:print();break;根据 n 值调用 case 6:exit(0);main()*主函数主函数*puts(ntt*欢迎进入物资管理系统*nn);puts(ttt 姓名:袁璐);puts(ttt 学号:604);puts(tttEmail:6);puts(tttTel:005);puts(nntt*n);puts(tt*制作 袁璐n);puts(tt*);printf(n 按 ENTER 键进入.);getch();menu();(二)各功能模块设计(二)各功能模块设计1.输入模块*几种类型,名称等信息*enter()int i,n;printf(n 物资的种类大小(0-%d):,N-1);scanf(%d,&n);printf(n 输入数据nn);for(i=0;in;i+)printf(输入第几个物资的名称。数量规格日期:n,i+1);input(i);if(i!=0)save(n);printf_back();input(int i)printf(nname(1-20letter):);scanf(%s,&proi.p_name);printf(nnumber(1-7num):);scanf(%d,&proi.p_num);printf(nsize(1-4letter):);scanf(%s,&proi.size);printf(ndate:);scanf(%d.%d.%d,&proi.,&proi.,&proi.;printf(min_s real_s max_s:);printf(n 最小库存量真实库存量最大库存量);scanf(%d%d%d,&proi.min_s,&proi.real_s,&proi.max_s);printf_data(int i)printf(nnamettnumtsizetdatettmin real maxn);printf(%st%dt%st%d.%d.%dt%d-%d-%d,proi.p_name,proi.p_num,proi.size,proi.,proi.,proi.,proi.min_s,proi.real_s,proi.max_s);主要是为了输入商品类型,主要是为了输入商品类型,名称,名称,数量,数量,型号,型号,日期,日期,最大,最小,真实库存量,并存放在指定的文件中。但要注意到输入最大,最小,真实库存量,并存放在指定的文件中。但要注意到输入时间,最大最小库存的格式(如)时间,最大最小库存的格式(如)请输入第请输入第 1th 1th 中商中商品信息品信息:name(1-20letter):name(1-20letter):苹果苹果number(1-7num):1number(1-7num):1size(1-4letter):2size(1-4letter):2date:date:(二)(二)searchmenu()*searchmenu()*查询模块查询模块*int n,w2;do puts(ntt*查询菜单*nn);puts(ttt1.姓名查询);puts(ttt2.日期查询);puts(ttt3.物资名称和规格查询);puts(ttt4.返回);puts(nntt*n);printf(选择你要得命令 1-4:bb);scanf(%d,&n);if(n4)w2=1;getchar();else w2=0;while(w2=1);switch(n)case 1:search_by_name();break;case 2:search_by_date();break;case 3:search_by_nameandsize();break;case 4:getch();menu();search()searchmenu();search_by_name()int j,n,m=0;char a20;n=load();printf(n 输入你要查询物资的名称nname:);scanf(%s,a);for(j=0;jn;j+)if(strcmp(a,proj.p_name)=0)m+;printf_data(j);printf(n 查找的第几种物资!,m);getch();menu();struct s_dateint year;int month;int day;s;search_by_date()int j,n,m=0;n=load();printf(n 输入你要查询物资的日期!ndate:);scanf(%d.%d.%d,&,&,&for(j=0;jn;j+)if(=proj.&=proj.&=proj.)m+;printf_data(j);printf(n 查找第几种物资在那天!,m);getch();menu();search_by_nameandsize()int j,n,m=0;char a20,b4;n=load();printf(n 输入你要查询物资的名称!nname:);scanf(%s,a);printf(n 输入你要查询物资的规格!nsize:);scanf(%s,b);for(j=0;jn;j+)if(strcmp(a,proj.p_name)=0)&(strcmp(b,proj.size)=0)m+;printf_data(j);printf(查找第几种物资!,m);getch();menu();主要以一种查询方式进行说明流程图如下:主要以一种查询方式进行说明流程图如下:是否查到此商品显示找到结果提 示 没 有 找操作如图操作如图 *菜单菜单*开始选 1.1.商品种类商品种类 2.2.商品查找商品查找 3.3.新商品信息录入新商品信息录入 4.4.领取商品领取商品 5.5.打印商品信息打印商品信息 6.6.退出退出根据 n 值调用*by *by袁璐*your order 1-6:2*your order 1-6:2*SEARCH*SEARCH*1.1.通过商品名查询通过商品名查询 2.2.通过录入日期查询通过录入日期查询 3.3.通过商品名和日期查通过商品名和日期查询询 4.4.返回菜单返回菜单*请选择要查询的种类请选择要查询的种类 1-4:1 1-4:1输入你要查询商品的名称输入你要查询商品的名称!name:name:苹果苹果name num size datename num size datemin-real-maxmin-real-max苹果苹果 4362900 2 3-4-5 4362900 2 3-4-5找到找到 1 1 种商品种商品!*菜单菜单*(三)新物资的录入(三)新物资的录入在此函数上对新料进行了记录在此函数上对新料进行了记录insert()int n,c;n=load();puts(nInput one data:n);do input(n);printf_data(n);printf(nnAre you suren1).suren2).cancel andagainn3).back without save bb);scanf(%d,&c);if(c=1)save(n+1);printf_back();else if(c!=2)menu();while(c=2);input(int i)printf(nname(1-20letter):);scanf(%s,&proi.p_name);printf(nnumber(1-7num):);scanf(%d,&proi.p_num);printf(nsize(1-4letter):);scanf(%s,&proi.size);printf(ndate:);scanf(%d.%d.%d,&proi.,&proi.,&proi.;printf(min_s real_s max_s:);printf(n 最小库存量真实库存量最大库存量);scanf(%d%d%d,&proi.min_s,&proi.real_s,&proi.max_s);该函数据对物资进行了全面的查找该函数据对物资进行了全面的查找(四)领料模块(四)领料模块*查找对所领聊的信息,若满足领料要求,查找对所领聊的信息,若满足领料要求,便登记一系列内容,并修改便登记一系列内容,并修改程序如下程序如下struct one_prochar p_name20;char size4;struct date one_date;long int total;struct one_pro*next;check;lend()int j,n;n=load();printf(n 请检查你要带走物资的日期等信息!);printf(nname(1-20letter)size(1-4letter)dateamountn);scanf(%s%s%d.%d.%d%d,&,&,&for(j=0;jn;j+)if(strcmp,proj.p_name)=0)&(strcmp,proj.size)=0)&=proj.real_s)proj.real_s-=;printf_data(j);printf_back();else printf(日期错误!);(五)采用文件来存储数据信息(五)采用文件来存储数据信息#includesave(int n)FILE*fp;int k;if(fp=fopen(,wb)=NULL)printf(nCannot open file!n);return NULL;for(k=0;kn;k+)if(prok.real_s!=0)if(fwrite(&prok,sizeof(struct product),1,fp)!=1)printf(文件书写错误!n);fclose(fp);load()FILE*fp;int k;if(fp=fopen(,rb)=NULL)printf(n 不能打开文件!n);return NULL;for(k=0;!feof(fp);k+)fread(&prok,sizeof(struct product),1,fp);fclose(fp);return(k-1);C 语言课程设计感想:在学习 C 语言这门课时,由于是第一次接触计算机的课程,而且这门课本来就很抽象,因此,上课时就觉得听不懂.上程序设计课时也是一知半解,加上设计课的时间短,所以自己也没有什么进步。老师布置课程设计后,通过不断的学习与实践,慢慢有了一些进步,自己在综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的方面有了很大的提高。当今科学技术发展日新日异,计算机应用在生活中更是无处不在。作为一个大学来说掌握计算机技术是十分重要的。回顾这次的课程设计,我感慨良多。从题目到编程,再从编程到调试,我学到很多很多的的东西,通过这次课程设计,我懂得了学习计算机靠的是大量的上机编程调试,从中才可以不断提高编程水平。在设计的过程中,我遇到了很多问题,这毕竟第一次做的,难免会遇到过各种各样的问题,比如说结构体、调试不成功我很高兴在我遇到困难的时候,同学们给了我很多的帮助,可以这么说,没有同学们,我现在肯定还没有完成这次课程设计。在设计中遇到了很多编程问题,在同学的帮助下,最后都迎刃而解。最后,我要再次对各位同学和老师说一声,谢谢大家的帮助,谢谢!后附程序及运行结果后附程序及运行结果一,程序一,程序#include#include#define N 100struct dateint year;int month;int day;struct productchar p_name20;long int p_num7;char size4;struct date in_date;long int max_s;long int min_s;long int real_s;struct product*next;proN;menu()int n,w1;do puts(ntt*MENU*nn);puts(ttt1.物资信息输入模块);puts(ttt2.查询模块);puts(ttt3.物资信息查找模块);puts(ttt4.领料查询);puts(ttt5.打印模块);puts(tt);puts(nntt*n);puts(tt*by 董刚n);puts(tt*n);printf(选择你要得命令 1-6:bb);scanf(%d,&n);if(n6)w1=1;getchar();else w1=0;while(w1=1);switch(n)case 1:enter();break;case 2:search();break;case 3:insert();break;case 4:lend();break;case 5:print();break;case 6:exit(0);main()puts(ntt*欢 迎 进 入 物 资 管 理 系 统*nn);puts(ttt 姓名:袁璐);puts(ttt 学号:604);puts();puts(tttTel:005);puts(nntt*n);puts(tt*制作 袁璐n);puts(tt*);printf(n 按 ENTER 键进入.);getch();menu();enter()int i,n;printf(n 物资的量的大小(0-%d):,N-1);scanf(%d,&n);printf(n 输入数据nn);for(i=0;in;i+)printf(输入第几个物资的名称。数量规格日期:n,i+1);input(i);if(i!=0)save(n);printf_back();searchmenu()int n,w2;do puts(ntt*查*nn);puts(ttt1.姓名查询);puts(ttt2.日期查询);puts(ttt3.物资名称和规格查询);puts(ttt4.返回);询菜单puts(nntt*n);printf(选择你要得命令 1-4:bb);scanf(%d,&n);if(n4)w2=1;getchar();else w2=0;while(w2=1);switch(n)case 1:search_by_name();break;case 2:search_by_date();break;case 3:search_by_nameandsize();break;case 4:getch();menu();search()searchmenu();search_by_name()int j,n,m=0;char a20;n=load();printf(n 输入你要查询物资的名称nname:);scanf(%s,a);for(j=0;jn;j+)if(strcmp(a,proj.p_name)=0)m+;printf_data(j);printf(n 查找的第几种物资!,m);getch();menu();struct s_dateint year;int month;int day;s;search_by_date()int j,n,m=0;n=load();printf(n 输入你要查询物资的日期!ndate:);scanf(%d.%d.%d,&,&,&for(j=0;jn;j+)if(=proj.&=proj.&=proj.)m+;printf_data(j);printf(n 查找第几种物资在那天!,m);getch();menu();search_by_nameandsize()int j,n,m=0;char a20,b4;n=load();printf(n 输入你要查询物资的名称!nname:);scanf(%s,a);printf(n 输入你要查询物资的规格!nsize:);scanf(%s,b);for(j=0;jn;j+)if(strcmp(a,proj.p_name)=0)&(strcmp(b,proj.size)=0)m+;printf_data(j);printf(查找第几种物资!,m);getch();menu();insert()int n,c;n=load();puts(nInput one data:n);do input(n);printf_data(n);printf(nnAreyousuren1).suren2).cancelandagainn3).back without save bb);scanf(%d,&c);if(c=1)save(n+1);printf_back();else if(c!=2)menu();while(c=2);struct one_prochar p_name20;char size4;struct date one_date;long int total;struct one_pro*next;check;lend()int j,n;n=load();printf(n 请检查你要带走物资的日期等信息!);printf(nname(1-20letter)amountn);scanf(%s%s%d.%d.%d%d,&,&,&for(j=0;jn;j+)if(strcmp,proj.p_name)=0)&(strcmp,proj.size)=0)&=proj.real_s)proj.real_s-=;printf_data(j);printf_back();else printf(日期错误!);size(1-4letter)dateprint()int i,n;n=load();for(i=0;in;i+)printf_data(i);getch();menu();#includesave(int n)FILE*fp;int k;if(fp=fopen(,wb)=NULL)printf(nCannot open file!n);return NULL;for(k=0;kn;k+)if(prok.real_s!=0)if(fwrite(&prok,sizeof(struct product),1,fp)!=1)printf(文件书写错误!n);fclose(fp);load()FILE*fp;int k;if(fp=fopen(,rb)=NULL)printf(n 不能打开文件!n);return NULL;for(k=0;!feof(fp);k+)fread(&prok,sizeof(struct product),1,fp);fclose(fp);return(k-1);input(int i)printf(nname(1-20letter):);scanf(%s,&proi.p_name);printf(nnumber(1-7num):);scanf(%d,&proi.p_num);printf(nsize(1-4letter):);scanf(%s,&proi.size);printf(ndate:);scanf(%d.%d.%d,&proi.,&proi.,&proi.;printf(min_s real_s max_s:);printf(n 最小库存量真实库存量最大库存量);scanf(%d%d%d,&proi.min_s,&proi.real_s,&proi.max_s);printf_data(int i)printf(nnamettnumtsizetdatettmin real maxn);printf(%st%dt%st%d.%d.%dt%d-%d-%d,proi.p_name,proi.p_num,proi.size,proi.,proi.,proi.,proi.min_s,proi.real_s,proi.max_s);printf_back()printf(nnSuccessful!_nn 谢谢使用任意键返回n);getch();menu();二,程序截图运行结果