《C语言-物资管理系统设计报告12548》由会员分享,可在线阅读,更多相关《C语言-物资管理系统设计报告12548(45页珍藏版)》请在金锄头文库上搜索。
1、 C 语言程序设计报告 物资管理系统 指导老师: 姓 名: 班级序号: 学 号: 一 题目要求 请设计一个物资管理系统,要求主程序中应提供文字交互菜单界面,要求包含以下几个功能模块: 信息输入模块 input():建立物资管理数据总文件,完成对物资原库存信息的录入,并存放到指定文件中 信息查找模块 search():采用如下方式进行查找,若找到,则输出该物资的相关信息;没有则给出提示信息。()按产品名称查询()进货日期查询并统计。 ()按产品名称和规格查询并统计。 新物资入库模块 insert():在原数据文件中插入新物资的信息。 领料模块 lend():查找所领取物资的信息, 满足领料的要求
2、,请登记领取物资名称,日期,数量(领料后修改) 打印功能模块 printf()(1)打印领料单()打印物资库存清单。 二 需求分析 根据题目要求,由于物资信息是存放在文件中,所以提供文件的输入,输出等操作在程序中需要浏览物资的需要浏览物资信息,应提供显示,查找等操作;另外还应提供键盘选择菜单实现功能选择。 三总统设计 根据上面的分析及题目要求可以分为以下六个模块(系统模块如下图 1。 ) 四 详细设计 (一)主函数一般是设计简洁,只提供输入,处理和输出商品种商品查商品信商品领打印商 系统部分的函数调用。其中各功能模块用菜单方式选择。其中流程图如图(2) menu() int n,w1; do
3、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) case 1:enter();break; case 2:search();
4、break; case 3:insert();break; 图 2 输入 n,判断 m case 4:lend();break; case 5:print();break; case 6:exit(0); main() *主函数* puts(ntt*欢迎进入物资管理系统*nn); puts(ttt 姓名:袁璐); puts(ttt 学号:604); puts(tttEmail:6); puts(tttTel:005); puts(nntt*n); 根据 n 值调用 puts(tt*制作 袁璐n); puts(tt*); printf(n 按 ENTER 键进入.); getch(); menu
5、(); (二)各功能模块设计 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
6、(%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); prin
7、tf(%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 中商品信息 : name(1-20letter):苹果 number(1-7num):1 size(1-4letter):2 date: (二)searchmenu()*查询模块* int n,w2;
8、 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();bre
9、ak; 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_date int year; int month; int day; s; search_by
10、_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 输入你要
11、查询物资的规格!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.商品种类 2.商品查找 3.新商品信息录入 4.领取商品 5.打印商品信息 6.退出 * *by袁璐 开始选根据 n 值调用 * your order 1-6:2 *SEARCH*
12、1.通过商品名查询 2.通过录入日期查询 3.通过商品名和日期查询 4.返回菜单 * 请选择要查询的种类 1-4:1 输入你要查询商品的名称! name:苹果 name num size date min-real-max 苹果 4362900 2 3-4-5 找到 1 种商品! *菜单* (三)新物资的录入 在此函数上对新料进行了记录 insert() int n,c; n=load(); puts(nInput one data:n); do input(n); printf_data(n); printf(nnAre you suren1).suren2).cancel and agai
13、nn3).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
14、,&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_pro char p_name20; char size4; struct date one_date; long int total; struct one_pro *next; che
15、ck; lend() int j,n; n=load(); printf(n 请检查你要带走物资的日期等信息!); printf(nname(1-20letter) size(1-4letter) date 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(日期错误!); (五)采用文件来存储数据信息
16、#include save(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=
17、0;!feof(fp);k+) fread(&prok,sizeof(struct product),1,fp); fclose(fp); return(k-1); C 语言课程设计感想: 在学习 C 语言这门课时,由于是第一次接触计算机的课程,而且这门课本来就很抽象,因此,上课时就觉得听不懂.上程序设计课时也是一知半解,加上设计课的时间短,所以自己也没有什么进步。 老师布置课程设计后,通过不断的学习与实践,慢慢有了一些进步, 自己在综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的方面有了很大的提高。当今科学技术发展日新日异,计算机应用在生活中更是无处不在。 作为一个大学来说掌
18、握计算机技术是十分重要的。 回顾这次的课程设计,我感慨良多。从题目到编程,再从编程到调试,我学到很多很多的的东西,通过这次课程设计,我懂得了学习计算机靠的是大量的上机编程调试,从中才可以不断提高编程水平。在设计的过程中,我遇到了很多问题,这毕竟第一次做的,难免会遇到过各种各样的问题,比如说结构体、调试不成功 我很高兴在我遇到困难的时候,同学们给了我很多的帮助,可以这么说,没有同学们,我现在肯定还没有完成这次课程设计。在设计中遇到了很多编程问题,在同学的帮助下,最后都迎刃而解。最后,我要再次对各位同学和老师说一声,谢谢大家的帮助,谢谢! 后附程序及运行结果 一,程序 #include #incl
19、ude #define N 100 struct date int year; int month; int day; ; struct product char 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
20、(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:prin
21、t();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;
22、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); sw
23、itch(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_d
24、ata(j); printf(n 查找的第几种物资!,m); getch(); menu(); struct s_date int 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_n
25、ameandsize() 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 on
26、e data:n); do input(n); printf_data(n); printf(nnAre you suren1).suren2).cancel and againn3).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_pro char p_name20; char size4; struct date one_date; long int total; struct one_pro *next; che
27、ck; lend() int j,n; n=load(); printf(n 请检查你要带走物资的日期等信息!); printf(nname(1-20letter) size(1-4letter) date 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(日期错误!); print() int i,n
28、; n=load(); for(i=0;in;i+) printf_data(i); getch(); menu(); #include save(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
29、(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.s
30、ize); 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(); 二,程序截图运行结果