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;jif(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;jif(==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;jif((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;jif((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;kif(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;jif(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;jif(==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(