C语言物资管理系统设计报告.docx
- 文档编号:30720017
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:31
- 大小:244.89KB
C语言物资管理系统设计报告.docx
《C语言物资管理系统设计报告.docx》由会员分享,可在线阅读,更多相关《C语言物资管理系统设计报告.docx(31页珍藏版)》请在冰豆网上搜索。
C语言物资管理系统设计报告
C语言程序设计报告
——物资管理系统
*
指导老师:
姓名:
班级序号:
学号:
、
一.题目要求
请设计一个物资管理系统,要求主程序中应提供文字交互菜单界面,要求包含以下几个功能模块:
1.信息输入模块input():
建立物资管理数据总文件,完成对物资原库存信息的录入,并存放到指定文件中
2.信息查找模块search():
采用如下方式进行查找,若找到,则输出该物资的相关信息;没有则给出提示信息。
(1)按产品名称查询(2)进货日期查询并统计。
(3)按产品名称和规格查询并统计。
3.新物资入库模块insert():
在原数据文件中插入新物资的信息。
4.领料模块lend():
查找所领取物资的信息,满足领料的要求,请登记领取物资名称,日期,数量(领料后修改)
5.
6.打印功能模块printf()
(1)打印领料单(2)打印物资库存清单。
二.需求分析
根据题目要求,由于物资信息是存放在文件中,所以提供文件的输入,输出等操作在程序中需要浏览物资的需要浏览物资信息,应提供显示,查找等操作;另外还应提供键盘选择菜单实现功能选择。
三.总统设计
根据上面的分析及题目要求可以分为以下六个模块(系统模块如下图1。
)
四.详细设计
<
(一)主函数一般是设计简洁,只提供输入,处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
其中流程图如图
(2)
menu()
{
intn,w1;
do
{
puts("\n\t\t*****************MENU********************\n\n");
puts("\t\t\t1.物资信息输入模块");
`
puts("\t\t\t2.查询模块");
puts("\t\t\t3.物资信息查找模块");
puts("\t\t\t4.领料查询");
puts("\t\t\t5.打印模块");
puts("\t\t\");
puts("\n\n\t\t***************************************\n");
puts("\t\t******************************by袁璐\n");
puts("\t\t*****************************");
…
printf("选择你要得命令[1-6]:
[]\b\b");
scanf("%d",&n);
if(n<1||n>6)N
{w1=1;getchar();}
elsew1=0;
}while(w1==1);
。
switch(n)
{case1:
enter();break;
case2:
search();break;
case3:
insert();break;图2
case4:
lend();break;
case5:
print();break;
case6:
exit(0);
}
}
>
main()***********主函数**************
{puts("\n\t\t****************欢迎进入物资管理系统*****************\n\n");
puts("\t\t\t姓名:
袁璐");
puts("\t\t\t学号:
604");
puts("\t\t\tEmail:
6@");
puts("\t\t\tTel:
005");
puts("\n\n\t\t***************************************\n");
puts("\t\t******************************制作袁璐\n");
)
puts("\t\t*****************************");
printf("\n按ENTER键进入...");
getch();
menu();
}
(二)各功能模块设计
1.输入模块*********几种类型,名称等信息*********
|
enter()
{inti,n;
printf("\n物资的种类大小(0-%d):
",N-1);
scanf("%d",&n);
printf("\n输入数据\n\n");
for(i=0;i {printf("输入第几个物资的名称。 数量规格日期: \n",i+1); input(i); # } if(i! =0)save(n); printf_back(); } input(inti) {printf("\nname(1-20letter): "); 《 scanf("%s",&pro[i].p_name); printf("\nnumber(1-7num): "); scanf("%d",&pro[i].p_num); printf("\nsize(1-4letter): "); scanf("%s",&pro[i].size); printf("\ndate: "); scanf("%d.%d.%d",&pro[i].,&pro[i].,&pro[i].; printf("min_sreal_smax_s: "); , printf("\n最小库存量真实库存量最大库存量"); scanf("%d%d%d",&pro[i].min_s,&pro[i].real_s,&pro[i].max_s); } printf_data(inti) {printf("\nname\t\tnum\tsize\tdate\t\tminrealmax\n"); printf("%s\t%d\t%s\t%d.%d.%d\t%d-%d-%d",pro[i].p_name,pro[i].p_num,pro[i].size,pro[i].,pro[i].,pro[i].,pro[i].min_s,pro[i].real_s,pro[i].max_s); } ! 主要是为了输入商品类型,名称,数量,型号,日期,最大,最小,真实库存量,并存放在指定的文件中。 但要注意到输入时间,最大最小库存的格式(如)请输入第1th中商品信息: name(1-20letter): 苹果 number(1-7num): 1 size(1-4letter): 2 ~ date: (二)searchmenu()*******查询模块******* {intn,w2; do { puts("\n\t\t****************查询菜单******************\n\n"); puts("\t\t\t1.姓名查询"); puts("\t\t\t2.日期查询"); , puts("\t\t\t3.物资名称和规格查询"); puts("\t\t\t4.返回"); puts("\n\n\t\t***************************************\n"); printf("选择你要得命令[1-4]: []\b\b"); scanf("%d",&n); if(n<1||n>4) {w2=1;getchar();} elsew2=0; ^ }while(w2==1); switch(n) {case1: search_by_name();break; case2: search_by_date();break; case3: search_by_nameandsize();break; case4: getch();menu(); } } search() { searchmenu();} search_by_name() {intj,n,m=0;chara[20]; n=load(); printf("\n输入你要查询物资的名称\nname: "); | scanf("%s",a); for(j=0;j if(strcmp(a,pro[j].p_name)==0) {m++; printf_data(j); } printf("\n查找的第几种物资! ",m); getch(); ~ menu(); } structs_date {intyear; intmonth; intday; }s; { search_by_date() {intj,n,m=0; n=load(); printf("\n输入你要查询物资的日期! \ndate: "); scanf("%d.%d.%d",&,&,&; for(j=0;j if(==pro[j].&&==pro[j].&&==pro[j].) {m++; - printf_data(j); } printf("\n查找第几种物资在那天! ",m); getch(); menu(); } search_by_nameandsize() [ {intj,n,m=0;chara[20],b[4]; n=load(); printf("\n输入你要查询物资的名称! \nname: "); scanf("%s",a); printf("\n输入你要查询物资的规格! \nsize: "); scanf("%s",b); for(j=0;j if((strcmp(a,pro[j].p_name)==0)&&(strcmp(b,pro[j].size)==0)) \ {m++; printf_data(j); } printf("查找第几种物资! ",m); getch(); menu(); } 主要以一种查询方式进行说明流程图如下: 操作如图*****************菜单******************** 1.商品种类 2.商品查找 3.新商品信息录入 4.领取商品 5.打印商品信息 6.退出 *************************************** 》 ******************************by袁璐 ********************************yourorder[1-6]: [2] *****************SEARCH******************** & 1.通过商品名查询 2.通过录入日期查询 3.通过商品名和日期查询 4.返回菜单 *************************************** # 请选择要查询的种类[1-4]: [1] 输入你要查询商品的名称! name: 苹果 namenumsizedatemin-real-max 苹果436290023-4-5 找到1种商品! ' *****************菜单******************** (三)新物资的录入在此函数上对新料进行了记录 insert() {intn,c; n=load(); puts("\nInputonedata: \n"); do % {input(n); printf_data(n); printf("\n\nAreyousure\n1).sure\n2).cancelandagain\n3).backwithoutsave[]\b\b"); scanf("%d",&c); if(c==1){save(n+1);printf_back();} elseif(c! =2)menu(); }while(c==2); } * input(inti) {printf("\nname(1-20letter): "); scanf("%s",&pro[i].p_name); printf("\nnumber(1-7num): "); scanf("%d",&pro[i].p_num); printf("\nsize(1-4letter): "); scanf("%s",&pro[i].size); printf("\ndate: "); — scanf("%d.%d.%d",&pro[i].,&pro[i].,&pro[i].; printf("min_sreal_smax_s: "); printf("\n最小库存量真实库存量最大库存量"); scanf("%d%d%d",&pro[i].min_s,&pro[i].real_s,&pro[i].max_s); } 该函数据对物资进行了全面的查找 < (四)领料模块*****查找对所领聊的信息,若满足领料要求,便登记一系列内容,并修改程序如下 structone_pro {charp_name[20]; charsize[4]; structdateone_date; longinttotal; structone_pro*next; }check; @ lend() {intj,n; n=load(); printf("\n请检查你要带走物资的日期等信息! "); printf("\nname(1-20letter)size(1-4letter)dateamount\n"); scanf("%s%s%d.%d.%d%d",&,&,&&&&; for(j=0;j if((strcmp,pro[j].p_name)==0)&&(strcmp,pro[j].size)==0)&&&&&&&&<=pro[j].real_s)) [ {pro[j].real_s-=; printf_data(j); printf_back(); } elseprintf("日期错误! "); } (五)采用文件来存储数据信息 / #include<> save(intn) {FILE*fp; intk; if((fp=fopen("","wb"))==NULL) {printf("\nCannotopenfile! \n"); returnNULL; } · for(k=0;k if(pro[k].real_s! =0) if(fwrite(&pro[k],sizeof(structproduct),1,fp)! =1) printf("文件书写错误! \n"); fclose(fp); } load() · { FILE*fp; intk; if((fp=fopen("","rb"))==NULL) {printf("\n不能打开文件! \n"); returnNULL; } for(k=0;! feof(fp);k++) ] fread(&pro[k],sizeof(structproduct),1,fp); fclose(fp); return(k-1); } C语言课程设计感想: 在学习C语言这门课时,由于是第一次接触计算机的课程,而且这门课本来就很抽象,因此,上课时就觉得听不懂.上程序设计课时也是一知半解,加上设计课的时间短,所以自己也没有什么进步。 老师布置课程设计后,通过不断的学习与实践,慢慢有了一些进步,自己在综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的方面有了很大的提高。 当今科学技术发展日新日异,计算机应用在生活中更是无处不在。 作为一个大学来说掌握计算机技术是十分重要的。 回顾这次的课程设计,我感慨良多。 从题目到编程,再从编程到调试,我学到很多很多的的东西,通过这次课程设计,我懂得了学习计算机靠的是大量的上机编程调试,从中才可以不断提高编程水平。 在设计的过程中,我遇到了很多问题,这毕竟第一次做的,难免会遇到过各种各样的问题,比如说结构体、调试不成功…… ) 我很高兴在我遇到困难的时候,同学们给了我很多的帮助,可以这么说,没有同学们,我现在肯定还没有完成这次课程设计。 在设计中遇到了很多编程问题,在同学的帮助下,最后都迎刃而解。 最后,我要再次对各位同学和老师说一声,谢谢大家的帮助,谢谢! 后附程序及运行结果 , 一,程序 #include<> #include<> #defineN100 structdate {intyear; intmonth; … intday; }; structproduct {charp_name[20]; longintp_num[7]; charsize[4]; structdatein_date; longintmax_s; | longintmin_s; longintreal_s; structproduct*next; }pro[N]; menu() { intn,w1; $ do { puts("\n\t\t*****************MENU********************\n\n"); puts("\t\t\t1.物资信息输入模块"); puts("\t\t\t2.查询模块"); puts("\t\t\t3.物资信息查找模块"); puts("\t\t\t4.领料查询"); puts("\t\t\t5.打印模块"); * puts("\t\t\"); puts("\n\n\t\t***************************************\n"); puts("\t\t******************************by董刚\n"); puts("\t\t*****************************\n"); printf("选择你要得命令[1-6]: []\b\b"); scanf("%d",&n); if(n<1||n>6) {w1=1;getchar();} } elsew1=0; }while(w1==1); switch(n) {case1: enter();break; case2: search();break; case3: insert();break; case4: lend();break; case5: print();break; } case6: exit(0); } } main() {puts("\n\t\t****************欢迎进入物资管理系统*****************\n\n"); puts("\t\t\t姓名: 袁璐"); puts("\t\t\t学号: 604"); puts(""); 《 puts("\t\t\tTel: 005"); puts("\n\n\t\t***************************************\n"); puts("\t\t******************************制作袁璐\n"); puts("\t\t*****************************"); printf("\n按ENTER键进入..."); getch(); menu(); } 】 enter() {inti,n; printf("\n物资的量的大小(0-%d): ",N-1); scanf("%d",&n); printf("\n输入数据\n\n"); … for(i=0;i {printf("输入第几个物资的名称。 数量规格日期: \n",i+1); input(i); } if(i! =0)save(n); printf_back(); } - searchmenu() {intn,w2; do { puts("\n\t\t****************查询菜单******************\n\n"); puts("\t\t\t1.姓名查询"); puts("\t\t\t2.日期查询"); # puts("\t\t\t3.物资名称和规格查询"); puts("\t\t\t4.返回"); puts("\n\n\t\t***************************************\n"); printf("选择你要得命令[1-4]: []\b\b"); scanf("%d",&n); if(n<1||n>4) {w2=1;getchar();} elsew2=0; 《 }while(w2==1); switch(n) {case1: search_by_name();break; case2: search_by_date();break; case3: search_by_nameandsize();break; case4: getch();menu(); } } ~ search() { searchmenu();} search_by_name() {intj,n,m=0;chara[20]; n=load(); printf("\n输入你要查询物资的名称\nname: "); [ scanf("%s",a); for(j=0;j if(strcmp(a,pro[j].p_name)==0) {m++; printf_data(j); } printf("\n查找的第几种物资! ",m); getch(); [ menu(); } structs_date {intyear; intmonth; intday; }s; search_by_date() {intj,n,m=0; n=load(); printf("\n输入你要查询物资的日期! \ndate: "); scanf("%d.%d.%d",&,&,&; for(j=0;j if(==pro[j].&&==pro[j].&&==pro[j].) {m++; ` printf_data(j); } printf("\n查找第几种物资在那天! ",m); getch(); menu(); } search_by_nameandsize() & {intj,n,m=0;chara[20],b[4]; n=load(); printf("\n输入你要查询物资的名称! \nname: "); scanf("%s",a); printf("\n输入你要查询物资的规格! \nsize: "); scanf(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 物资 管理 系统 设计 报告