仓库物资管理报告.docx

上传人:b****2 文档编号:1794478 上传时间:2023-05-01 格式:DOCX 页数:33 大小:21.48KB
下载 相关 举报
仓库物资管理报告.docx_第1页
第1页 / 共33页
仓库物资管理报告.docx_第2页
第2页 / 共33页
仓库物资管理报告.docx_第3页
第3页 / 共33页
仓库物资管理报告.docx_第4页
第4页 / 共33页
仓库物资管理报告.docx_第5页
第5页 / 共33页
仓库物资管理报告.docx_第6页
第6页 / 共33页
仓库物资管理报告.docx_第7页
第7页 / 共33页
仓库物资管理报告.docx_第8页
第8页 / 共33页
仓库物资管理报告.docx_第9页
第9页 / 共33页
仓库物资管理报告.docx_第10页
第10页 / 共33页
仓库物资管理报告.docx_第11页
第11页 / 共33页
仓库物资管理报告.docx_第12页
第12页 / 共33页
仓库物资管理报告.docx_第13页
第13页 / 共33页
仓库物资管理报告.docx_第14页
第14页 / 共33页
仓库物资管理报告.docx_第15页
第15页 / 共33页
仓库物资管理报告.docx_第16页
第16页 / 共33页
仓库物资管理报告.docx_第17页
第17页 / 共33页
仓库物资管理报告.docx_第18页
第18页 / 共33页
仓库物资管理报告.docx_第19页
第19页 / 共33页
仓库物资管理报告.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

仓库物资管理报告.docx

《仓库物资管理报告.docx》由会员分享,可在线阅读,更多相关《仓库物资管理报告.docx(33页珍藏版)》请在冰点文库上搜索。

仓库物资管理报告.docx

仓库物资管理报告

 

程序设计基础课程设计

 

设计题目:

仓库物资管理系统

班级:

计1110

姓名:

黄秀美

学号:

20111221095

 

2012年9月6日

1.课程设计目的和要求

我们课程设计的主要目的是为了让我们贯穿大一一年所学的C语言知识,让我们能应用自如,为我们后面的学习奠下更坚实的基础。

课程设计要求每个同学根据自己所学的知识对课程题目进行思索并编程,然后通过交流和查找,设计出一个现实可实施的C语言代码。

2.系统总体设计

设计主要包括了6大功能:

1.创建库存记录文件,根据提示输入若干电器的信息,并将信息保存至一个文件中。

2.物资入库管理,创建一个入库记录文件,每次有物资入库,则按入库记录要求输入各项信息,并将该次的入库信息添加到文件中,同时修改相应的库存记录文件。

3.物资出库管理,创建一个出库记录文件,每次有物资出库,则按出库记录要求输入各项信息,并将该次的出库信息添加到文件中,同时修改相应的库存记录文件。

注意:

物资出库时要检查出库数量的合法性(即出库数量必须小于库存数量)。

4.按不同条件进行查询操作,输出满足条件的物资信息。

(1)输入电器名称,在库存记录文件中查找相应的物资信息并输出。

(2)输入品牌名称,在库存记录文件中查找该品牌的所有电器信息并输出。

(3)输入提货人姓名,输出该提货人对应的出库记录。

(4)输入送货人姓名,输出该送货人对应的入库记录。

5.按不同条件对物资信息进行统计工作。

(1)输入一个日期(年.月),统计该月每种电器的出库数目,并输出。

(2)输入一个日期(年.月),统计该月每种品牌电器的出库数目,并输出。

(3)统计该仓库的商品总价值。

(所有入库记录中入库价格*入库数量)

(4)计算该仓库的总利润。

((出库价格–所有入库记录价格)*出库数量)

6.按不同条件对信息进行排序并输出

(1)根据电器名称,对库存信息从小到大进行排序(注:

电器名称使用字符串比较函数strcmp比较大小),并输出排序后的电器品牌名称。

(2)根据库存数量,对库存信息进行排序,并按库存量从高到低的顺序输出电器信息。

2.1系统功能模块图printf("\t====================================================\n");

printf("\t========仓库物资管理系统========\n");

printf("\t========1、创建库存记录文件========\n");

printf("\t========2、物资入库管理========\n");

printf("\t========3、物资出库管理========\n");

printf("\t========4、查询物资信息========\n");

printf("\t========5、统计物资信息========\n");

printf("\t========6、排序物资信息========\n");

printf("\t========请选择功能(1-6)========\n");

printf("\t====================================================\n");2.2数据结构设计

对全局变量,结构体类型等进行定义和说明

#include

#include

structgoods

{

charname[N];

charbrand[N];

intnumber;

};//*******************库存商品

structdate

{

intyear;

intmonth;

intday;

};//******************日期

structin_goods

{

charname[N];

charbrand[N];

intin_num;

floatin_money;

structdatein_day;//结构体的镶套定义

charin_peo_name[N];

};//*****************入库商品

structout_goods

{

charname[N];

charbrand[N];

intout_num;

floatout_money;

structdateout_day;

charout_peo_name[N];

};//*******************出库商品3.系统详细设计

#include

#include

#defineN10

#defineLEN20

structgoods

{

charname[N];

charbrand[N];

intnumber;

};//*******************库存商品

structdate

{

intyear;

intmonth;

intday;

};//******************日期

structin_goods

{

charname[N];

charbrand[N];

intin_num;

floatin_money;

structdatein_day;//结构体的镶套定义

charin_peo_name[N];

};//*****************入库商品

structout_goods

{

charname[N];

charbrand[N];

intout_num;

floatout_money;

structdateout_day;

charout_peo_name[N];//*******************出库商品

};

voidBuild();//创建库存文件

voidIn_control();//创建入库文件

voidOut_control();//创建出库文件

voidSelect_Message();//查询信息

voidStatistic_Message();//排序信息

voidSort_Name();//以电器名称排序

voidSort_Num();//以电器存量排序

voidSort_Message();//统计信息

voidStatistic_Name_Num();//以电器名称统计

voidStatistic_Brand_Num();//以品牌名称统计

voidStatistic_All_Money();//统计总价格

voidStatistic_Profit();//统计总收益

voidSelet_Name();//以电器名称查询

voidSelet_Brand();//以品牌名称查询

voidSelet_Out_Peo_Name();//以提货人查询

voidSelet_in_Peo_Name();//以送货人查询

//========================================================

voidmain()//******目录入口***********在主函数中建立主菜单

{

inti=0;

charch='y';

do

{

printf("\t============================================\n");

printf("\t========仓库物资管理系统========\n");

printf("\t========1、创建库存记录文件========\n");

printf("\t========2、物资入库管理========\n");

printf("\t========3、物资出库管理========\n");

printf("\t========4、查询物资信息========\n");

printf("\t========5、统计物资信息========\n");

printf("\t========6、排序物资信息========\n");

printf("\t========请选择功能(1-6)========\n");

printf("\t=============================================\n");scanf("%d",&i);

switch(i)

{

case1:

Build();break;

case2:

In_control();break;

case3:

Out_control();break;

case4:

Select_Message();break;

case5:

Statistic_Message();break;

case6:

Sort_Message();break;

}

printf("\t是否继续操作(Y/N)?

\n");

//getchar();

ch=getchar();

}while(ch=='Y'||ch=='y');//判断为真时执行循环体

}

//==================创建库存文件=====================

voidBuild()

{

FILE*fp;

intsize=0,i=0;

if((fp=fopen("库存记录.txt","w"))==NULL)

{

printf("不能打开此记录,请核实\n");

return;

}

printf("\t请输入本次输入的库存记录条数(单次输入最大为20条)\n");

scanf("%d",&size);

structgoodsg[LEN];

printf("\t请逐条输入电器的基本信息\n");

for(i=0;i

{

printf("\t电器名称品牌名称库存数量\n");

scanf("%s%s%d",&g[i].name,&g[i].brand,&g[i].number);

fwrite(&g[i],sizeof(structgoods),1,fp);

}

fclose(fp);

getchar();

}

//===================创建入库文件====================

voidIn_control()

{

FILE*fp1,*fp2;

intsize=0;

inti,j;

structgoodstemp={"\0","0",0};

chara[1]={'\0'};

if((fp1=fopen("入库记录.txt","a+"))==NULL)

{

printf("不能打开此记录,请核实\n");

return;

}

printf("\t请输入本次输入的入库记录条数(单次输入最大为20条)\n");

scanf("%d",&size);

structin_goodsig[LEN];

printf("\t请逐条输入电器的基本信息\n");

for(i=0;i

{

printf("\t电器名称品牌名称入库数量单价日期(年/月/日)送货人姓名\n");

scanf("%s%s%d%f%d%d%d%s",&ig[i].name,&ig[i].brand,&ig[i].in_num,&ig[i].in_money,&ig[i].in_day.year,&ig[i].in_day.month,&ig[i].in_day.day,&ig[i].in_peo_name);

fwrite(&ig[i],sizeof(structin_goods),1,fp1);

}

if((fp2=fopen("库存记录.txt","r+"))==NULL)

{

printf("不能打开此记录,请核实\n");

return;

}

structgoodsg[LEN]={'\0'};

for(i=0;i

{

fread(&g[i],sizeof(structgoods),1,fp2);for(j=0;j

{

if(strcmp(g[i].name,ig[j].name)==0&&strcmp(g[i].brand,ig[j].brand)==0)

{

g[i].number=g[i].number+ig[j].in_num;

}

}

}//修改库存信息

rewind(fp2);

for(i=0;i

{

if(strcmp(g[i].name,a)!

=0)

fwrite(&g[i],sizeof(structgoods),1,fp2);//将g中的一个数据写入文件

}//更新库存文件

fclose(fp1);

fclose(fp2);

getchar();

}

//=====================创建出库文件=======================

voidOut_control()

{

FILE*fp1,*fp2;

intsize=0;

inti,j=0;

structgoodsg[LEN];

structout_goodsog[LEN];

if((fp1=fopen("出库记录.txt","a+"))==NULL)

{

printf("不能打开此记录,请核实\n");

return;

}

if((fp2=fopen("库存记录.txt","r+"))==NULL)

{

printf("不能打开此记录,请核实\n");

return;

}

printf("\t请输入本次输入的出库记录条数(单次输入最大为20条)\n");

scanf("%d",&size);

printf("\t请逐条输入电器的基本信息\n");

for(i=0;i

{

printf("\t电器名称品牌名称出库数量单价日期(年/月/日)提货人姓名\n");

scanf("%s%s%d%f%d%d%d%s",&og[i].name,&og[i].brand,&og[i].out_num,&og[i].out_money,&og[i].out_day.year,&og[i].out_day.month,&og[i].out_day.day,&og[i].out_peo_name);

j=0;

while(!

feof(fp2))

{

fread(&g[j],sizeof(structgoods),1,fp2);

if(strcmp(g[j].name,og[i].name)==0&&strcmp(g[j].brand,og[i].brand)==0)

{

if(og[i].out_num>g[j].number)

{

printf("出库数量大于库存数量,请核实后重新输入\n");

printf("\t电器名称品牌名称出库数量单价日期(年/月/日)提货人姓名\n");scanf("%s%s%d%f%d%d%d%s",&og[i].name,&og[i].brand,&og[i].out_num,&og[i].out_money,&og[i].out_day.year,&og[i].out_day.month,&og[i].out_day.day,&og[i].out_peo_name);

g[j].number=g[j].number-og[i].out_num;

}//越界判定(重新输入正确的信息)

else

g[j].number=g[j].number-og[i].out_num;

}

elseif(strcmp(g[j].name,og[i].name)!

=0&&strcmp(g[j].brand,og[i].brand)!

=0)

{

printf("该货物不存在,请核实\n");

printf("\t电器名称品牌名称出库数量单价日期(年/月/日)提货人姓名\n");

scanf("%s%s%d%f%d%d%d%s",&og[i].name,&og[i].brand,&og[i].out_num,&og[i].out_money,&og[i].out_day.year,&og[i].out_day.month,&og[i].out_day.day,&og[i].out_peo_name);

g[j].number=g[j].number-og[i].out_num;

}

j++;

if(j>i)

break;

}

rewind(fp2);//将文件位置重新指向文件开头

}

rewind(fp1);

rewind(fp2);

for(i=0;i

{

fwrite(&g[i],sizeof(structgoods),1,fp2);

}

for(i=0;i

{

fwrite(&og[i],sizeof(structout_goods),1,fp1);

}

fclose(fp1);

fclose(fp2);

getchar();

}

//==================查询信息目录=====================

voidSelect_Message()

{

inti=0;

charch='y';

do

{

printf("\t请选择查询方式\n");

printf("\t1、输入电器名称,在库存记录文件中查找相应的物资信息并输出\n");

printf("\t2、输入品牌名称,在库存记录文件中查找该品牌的所有电器信息并输出\n");

printf("\t3、输入提货人姓名,输出该提货人对应的出库记录\n");

printf("\t4、输入送货人姓名,输出该送货人对应的入库记录\n");

scanf("%d",&i);

switch(i)

{

case1:

Selet_Name();break;

case2:

Selet_Brand();break;

case3:

Selet_Out_Peo_Name();break;

case4:

Selet_in_Peo_Name();break;

}

printf("是否选择其他查询方式继续查询?

\n");

ch=getchar();

getchar();

}while(ch=='Y'||ch=='y');

}

//======================以电器名称查询=====================

voidSelet_Name()

{

FILE*fp;

structgoodsg[LEN];//建立库存数组

inti=0;

charch='y';

chartname[N];

if((fp=fopen("库存记录.txt","r"))==NULL)

{

printf("不能打开此记录,请核实\n");

return;

}

do

{

printf("\t请输入要查询的电器名称\n");

scanf("%s",&tname);

getchar();

while(!

feof(fp))//当源文件未结束时进行循环

{

fread(&g[i],sizeof(structgoods),1,fp);

if(strcmp(tname,g[i].name)==0)

printf("电器名称:

%s\n品牌名称:

%s\n库存数量:

%d\n",g[i].name,g[i].brand,g[i].number);

i++;

}

printf("\t是否继续查询?

(Y/N)\n");

ch=getchar();

rewind(fp);

}while(ch=='y'||ch=='Y');

getchar();

}

//================以品牌名称查询=======================

voidSelet_Brand()

{

FILE*fp;

structgoodsg[LEN];

inti=0;

charch='y';

chartbrand[N];

if((fp=fopen("库存记录.txt","r"))==NULL)

{

printf("不能打开此记录,请核实\n");

return;

}

do

{

printf("\t请输入要查询的品牌名称\n");

scanf("%s",tbrand);

getchar();

printf("\t%s的电器有:

\n",tbrand);

while(!

feof(fp))

{

fread(&g[i],sizeof(structgoods),1,fp);

if(strcmp(tbrand,g[i].brand)==0)

printf("\t电器名称:

%s\n库存数量:

%d\n",g[i].name,g[i].number);

i++;

}

printf("\t是否继续查询?

(Y/N)\n");

ch=getchar();

getchar();

rewind(fp);

}while(ch=='y'||ch=='Y');

getchar();

}

//====================以提货人姓名查询=====================

voidSelet_Out_Peo_Name()

{

FILE*fp;

structout_goodsog[LEN];

chartiname[N];

charch='y';

inti=0;

if((fp=fopen("出库记录.txt","r"))==NULL)

{

printf("\t不能打开此记录,请核实\n");

return;

}

do

{

printf("\t请输

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2