C语言实验5综合性实验 设计仓库Word下载.docx
- 文档编号:19907441
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:19
- 大小:356.20KB
C语言实验5综合性实验 设计仓库Word下载.docx
《C语言实验5综合性实验 设计仓库Word下载.docx》由会员分享,可在线阅读,更多相关《C语言实验5综合性实验 设计仓库Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
#include<
stdlib.h>
cstring>
#defineSIZE100//定义库存项目
2、结构定义:
定义了结构体用来描述库存的货物编号、商品名称、价格、总价格、入库数量等。
并定义一个结构体数组,存放多个条目。
structWAREHOUSE{
intnum;
//货物编号
charname[10];
//货物名称
doubleprice;
//价格
inttotal_price;
//商品总价格
intin;
//入库数量
charfactory[10];
//生产厂家
charman[10];
//经手人
longcount;
//商品总数量
}goods[SIZE];
3、定义函数
主要有7个功能模块,每个模块对应一个自定义函数:
voidmenu();
//声明菜单函数
voidinsert();
//声明录入函数
voidsave();
//声明保存函数
voidread();
//声明读取文件函数
voidview();
//声明浏览库存函数
voidsearch();
//声明查询函数
voidsum();
//声明统计函数
4、设计菜单选项
voidmenu()/*菜单函数*/
{
system("
cls"
);
printf("
仓库货物管理系统\n\n"
请选择您要进行的操作:
(请输入操作前的数字)\n\n"
1.货物入库\n\n"
2.货物查询\n\n"
3.库存浏览\n\n"
4.货物统计\n\n"
5.退出系统\n\n"
}
调试,达到理想效果
实现功能选择:
voidmain()
intm,f;
while
(1)
{do
{
menu();
/*调用菜单函数*/
printf("
请输入你需要操作的序号(1—5):
\n"
scanf("
%d"
&
m);
if(m>
=1&
&
m<
=5)
{
f=1;
break;
}
else
f=0;
printf("
您输入有误,请重新选择!
"
}while(f==0);
switch(m)
case1:
printf("
录入货物信息\n"
insert();
break;
case2:
查询货物信息\n"
search();
case3:
浏览库存货物信息\n"
view();
case4:
统计货物信息\n"
sum();
case5:
gotoloop;
default:
break;
}
}
loop:
//行标
\n\n\n\n\n\n------谢谢使用!
---------\n\n\n\n\n\n"
4、文件写入:
用于将录入的库存数据写到文件当中以永久保存。
具体定义如下:
voidsave()//向文件中写入库存数据
FILE*fp;
inti;
if((fp=fopen("
C:
C:
\\Users\\luosh\\\Desktop\\库存记录.txt"
"
wb"
))==NULL)
{
printf("
没有写文件"
return;
for(i=0;
i<
SIZE;
i++)
if(fwrite(&
goods[i],sizeof(structWAREHOUSE),1,fp)!
=1)
filewriteerror\n"
fclose(fp);
使用块写入函数fwrite写入,更方便一次性写入整个结构体数据。
5、入库
把库存数据录入到系统中。
先输入需要读取的条目数量,控制录入循环的次数,通过scanf的格式控制,依次对结构体的数据进行写入。
voidinsert()//入库
inti,n;
输入几个货物的信息:
scanf("
n);
n;
\n\t货物编号:
goods[i].num);
\n\n\t货物名称:
%s"
goods[i].name);
\n\n\t价格:
%lf"
goods[i].price);
\n\n\t入库数量:
goods[i].in);
\n\n\t生产厂家:
goods[i].factory);
\n\n\t经手人:
goods[i].man);
getchar();
\n信息创建完毕!
请输入下一个货物的信息\n"
save();
调试,录入货物信息:
6、库存数据查看
voidview()//汇总全部库存数据
read();
\n货物编号\t货物名称\t价格\t入库数量\t生产厂家\t经手人\n"
if(goods[i].in==0)break;
\n%d\t%s\t%lf\t%d\t%s\t%s\n"
goods[i].num,goods[i].name,goods[i].price,
goods[i].in,goods[i].factory,goods[i].man);
\n"
按任意键返回主菜单\n"
getchar();
7、查询货物
voidsearch()/*查询函数*/
charname1[10];
inti,t;
请输入要查找的货物名称:
scanf("
name1);
if(strcmp(name1,goods[i].name)==0)
\n已找到货物,其记录为:
\n%d\t%s\t%lf\t%d\t%s\t%s\n"
goods[i].in,goods[i].factory,goods[i].man);
break;
if(i==SIZE)
\n对不起,查无此货物\n"
继续查询请按1,返回主菜单请按2\n"
t);
switch(t)
case1:
search();
case2:
menu();
default:
8、统计库存总价值
先通过函数的嵌套调用,使用read函数读取库存数据。
然后使用循环累加计算价值总量。
循环次数以库存结构体数组的数目来确定。
voidsum()
floatS=0;
S=S+goods[i].price*goods[i].in;
仓库货物的总价值为:
%.2f\n"
S);
四、实验结果及分析
本次实验设计的是简单的仓库管理系统,最后基本实现了预想的功能,完成了实验的要求,让我有以下几个收获:
(1)强化巩固了C语言中文件输入输出知识。
深刻体会到fwrite/fread块读写函数和fprintf/fscanf的区别,以及应在什么读写方式下用何种输入/输出函数。
(2)熟悉了字符/字符串函数<
string.h>
的使用。
会应用strcmp对字符串数组进行比较。
(3)对模块化编程有了了解,并建立了模块化编程的思想,我想这点对我来说尤为重要。
(4)这次的编程,更加强了我对错误的改正能力,也在编程中减少了低级错误的发生,也提高了对软件的熟练程度。
这次的程序设计,是自己独立完成了一个相对比较大的程序,里面用到的知识也是比较多的,通过一番实践,很好的总结、强化了之前学习过的知识要点,并且也发现了自己还没好好掌握的知识点,对于没掌握的,通过查阅参考书籍、询问同学和老师及时补上。
虽然前期难度较大,但后来代码越写状态越好,感觉是由于自己对于一些基本的知识的比较好的掌握了。
有些问题虽然没以前遇到过,但是通过查阅资料,老师的补充讲解,了解了它们的用法,自己就可以很快的模仿,写出自己的程序。
这一点我觉得在今后的程序设计中也是蛮重要的,要写出好程序,首先应该去学习人家的程序,看懂他们的程序并且转化为自己的。
其次才有可能去创新。
五、附录(自己实现的源代码)
//1)数据如何存
//定义库存文件结构体
//2)用什么函数处理
do
/*用goto语句跳至跳至指定的行*/
voidread()//从文件中读取库存数据
fscanf(fp,"
voidsum()//统计库存价值总量
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言实验5综合性实验 设计仓库 语言 实验 综合性 设计 仓库