食品信息管理.docx
《食品信息管理.docx》由会员分享,可在线阅读,更多相关《食品信息管理.docx(27页珍藏版)》请在冰豆网上搜索。
食品信息管理
沈阳航空航天大学
课程设计
学号2012040702036
班级24070201
姓名张伟
指导教师王晓岩
2013年9月20日
沈阳航空航天大学
课程设计任务书
院系:
自动化专业:
自动化班级:
24070201班
学号:
2012040702036题目:
食品信息管理
一、课程设计时间
2013年9月8日起至2013年9月13日止
二、课程设计内容
某食品商店货物信息保存在文本文件中,信息内容包括:
食品编号,食品名称,生产厂家,单价(元),进货数量,库存数量。
程序应实现以下功能:
信息录入、修改;按编号查询、按名称查询;统计库存的价值总量、统计食品来源于哪些不同厂家。
要求食品类别不少于10种,厂家数不少于5种,不同食品可以来源相同厂家。
用户界面中的菜单至少应包括“信息维护”、“查询”、“统计”、“退出”4项。
三、课程设计要求
程序质量:
✧贯彻事件驱动的程序设计思想。
✧用户界面友好,修饰适宜,功能明确,操作方便;适当增加1~2项其它功能。
✧代码应规范(适当缩进、必要的注释),以增强程序的可读性。
课程设计说明书:
✧课设结束后,上交课程设计说明书和源程序。
课程设计说明书的内容参见提供的模板。
四、指导教师和学生签字
指导教师:
________学生签名:
________
五、成绩
六、教师评语
目录
一、需求分析................................................................3
二、设计分析................................................................3
三、主要界面截图........................................................5
四、主要技术…………………………………………7
五、个人总结..............................................................13
六、参考文献..............................................................13
七、源程序..................................................................14
一、需求分析
食品信息管理,具体需求如下:
1)、信息维护
2)、查询
3)、统计
4)、退出
从程序设计的任务书中分析可以得知,整个程序的设计实现基本上分为以下模块,其中每一个模块对应一个函数,它们所需函数是:
1、录入文件shipin.txt中产品信息函数voidinput()
2、修改文件shipin.txt中产品信息函数voidmodify()
3、按食品编号查询函数voidsearch_number()
4、按食品名称查询函数voidsearch_name()
5、统计食品的价值总量和来源厂家函数voidstatistic_value()
6、为使不同食品可以来自相同厂家定义函数voidstatistic_name()
二、设计分析
整个程序框图如下:
主菜单
menu:
选择函数switch(getchar())
1
2
3
4
信息维护
查询
统计
退出
gotomenu
三、主要界面截图
图1.程序主菜单
图2.按编号查询食品信息
图3.按食品名称查询信息
图4.统计所有厂家名称
四、技术要点
{
charnumber[30];
charname[30];
charproducer[30];
floatprice;
intgood_num;
intkucun_num;
};
此部分定义结构体,产品编号,名称,生产厂家,价格!
voidinput()
FILE*fp;
intn,i;
structshipinsp;
if((fp=fopen("shipin.txt","rb+"))!
=NULL)
此部分录入信息到shipin.txt文件中!
voidmodify()
{
FILE*fp;
intn,i,num,flag;
charnumber[30];
structshipinsp[20];
printf("请输入要修改食品的编号:
");
scanf("%s",number);
i=0;
flag=0;
if((fp=fopen("shipin.txt","r"))!
=NULL)
{
while(!
feof(fp))
{
fscanf(fp,"\n%s",sp[i].number);
fscanf(fp,"\t%s",sp[i].name);
fscanf(fp,"\t%s",sp[i].producer);
fscanf(fp,"\t%f",&sp[i].price);
fscanf(fp,"\t%d",&sp[i].good_num);
fscanf(fp,"\t%d",&sp[i].kucun_num);
if(strcmp(sp[i].number,number)==0)
{
printf("\n请输入食品的名称:
\n");
scanf("%s",sp[i].name);
printf("\n请输入食品的生产厂家:
");
scanf("%s",sp[i].producer);
printf("\n请输入食品的价格:
\n");
scanf("%f",&sp[i].price);
printf("\n请输入食品的进货数量:
\n");
scanf("%d",&sp[i].good_num);
printf("\n请输入食品的库存数量:
\n");
scanf("%d",&sp[i].kucun_num);
flag=1;
}
i++;
}
}
num=i;
fclose(fp);
此部分修改已录入shipin.txt文件中的食品信息!
voidsearch_number()
{
FILE*fp;
intn,i,num,flag;
charnumber[30];
structshipinsp;
printf("请输入要查询食品的编号:
");
scanf("%s",number);
i=0;
flag=0;
if((fp=fopen("shipin.txt","r"))!
=NULL)
{
while(!
feof(fp))
{
fscanf(fp,"\n%s",sp.number);
fscanf(fp,"\t%s",sp.name);
fscanf(fp,"\t%s",sp.producer);
fscanf(fp,"\t%f",&sp.price);
fscanf(fp,"\t%d",&sp.good_num);
fscanf(fp,"\t%d",&sp.kucun_num);
if(strcmp(sp.number,number)==0)
{
printf("\n%s",sp.number);
printf("\t%s",sp.name);
printf("\t%s",sp.producer);
printf("\t%f",sp.price);
printf("\t%d",sp.good_num);
printf("\t%d",sp.kucun_num);
flag=1;
}
i++;
}
}
if(flag==0)
{
printf("\n没有找到此食品");
}
fclose(fp);
}
此部分按编号查询shipin.txt文件中的食品信息!
voidstatistic_value()
{
FILE*fp;
intn,i,num,flag;
floatff;
charnumber[30];
structshipinsp;
i=0;
flag=0;
ff=0;
if((fp=fopen("shipin.txt","r"))!
=NULL)
{
while(!
feof(fp))
{
fscanf(fp,"\n%s",sp.number);
fscanf(fp,"\t%s",sp.name);
fscanf(fp,"\t%s",sp.producer);
fscanf(fp,"\t%f",&sp.price);
fscanf(fp,"\t%d",&sp.good_num);
fscanf(fp,"\t%d",&sp.kucun_num);
ff+=sp.kucun_num*sp.price;
}
}
printf("\n库存总价值为%f",ff);
fclose(fp);
}
此部分统计所有食品的价值总量!
voidstatistic_name()
{
FILE*fp;
intn,i,j,k,num,flag;
floatff;
charnumber[30];
structshipinsp[30];
i=0;
flag=0;
ff=0;
if((fp=fopen("shipin.txt","r"))!
=NULL)
{
while(!
feof(fp))
{
fscanf(fp,"\n%s",sp[i].number);
fscanf(fp,"\t%s",sp[i].name);
fscanf(fp,"\t%s",sp[i].producer);
fscanf(fp,"\t%f",&sp[i].price);
fscanf(fp,"\t%d",&sp[i].good_num);
fscanf(fp,"\t%d",&sp[i].kucun_num);
i++;
}
}
num=i;
k=0;
printf("\n%s",sp[0].producer);
for(j=1;j{
flag=0;
for(i=0;i{
if(strcmp(sp[i].producer,sp[j].producer)==0)
{
flag=1;
}
}
if(flag==0)
{
printf("\t%s",sp[j].producer);
}
}
fclose(fp);
}
voidmain()
{
inti,choice;
for(i=0;;i++)
此部分统计所有厂家名称并使不同食品可以来自相同厂家!
voidmain()
{
inti,choice;
for(i=0;;i++)
{
printf("\n*************************主菜单*************************");
printf("\n");
printf("\n简单的食物信息管理程序,欢迎使用哦!
!
");
printf("\n240702012012040702036张伟");
printf("\n*********************************************************");
printf("\n");
printf("1录入信息\r\n");
printf("2修改信息\r\n");
printf("3按编号查询信息\r\n");
printf("4按名称查询信息\r\n");
printf("5统计库存总额\r\n");
printf("6统计商家名称\r\n");
printf("7退出\r\n");
printf("\n");
printf("********************************************************");
printf("\n请选择相应操作功能数字!
!
\n");
scanf("%d",&choice);
switch(choice)
{
case1:
input();break;
case2:
modify();break;
case3:
search_number();break;
case4:
search_name();break;
case5:
statistic_value();break;
case6:
statistic_name();break;
case7:
exit(0);break;
default:
printf("\n输入错误\n");
}
}
}
此部分程序的主菜单和执行各种功能的结构!
五、个人总结
通过一周的课程设计训练,我既有程序的运行的喜悦,还有久久不能找出错误痛苦。
在以前有听说过课程设计,但是没有想到它原来是这么的难,开始时根本无从下手,不知道怎么开始。
后来在同学和老师的帮助下,渐渐的明白了整体思路,一点点的完成了程序。
通过这次课程设计的学习,我深刻的了解了C语言的重要性,C语言程序的设计在现实生活中有很大的用途,很多问题都是可以通过C语言解决,在这5天的学习中,我的能力有了很大的提高,进而了解了一些从来没有接触的函数和功能等。
这次课程设计使我对C语言产生极大的好奇心,对C语言有极大兴趣,这对我以后学习C语言有很大的帮助,使我明白了只有亲自去做,才能够收获,才能获得真正的知识。
六、参考文献
1C程序设计(第三版).谭浩强著.北京:
清华大学出版社
2刘成等.C语言程序设计实验指导与习题集.北京:
中国铁道出版社,2006
七、源程序
#include
#include
#include
#include
structshipin//食品
{
charnumber[30];
charname[30];
charproducer[30];
floatprice;
intgood_num;
intkucun_num;
};
voidinput()
{
FILE*fp;
intn,i;
structshipinsp;
if((fp=fopen("shipin.txt","rb+"))!
=NULL)
{
printf("请输入要添加食品的数量:
");
scanf("%d",&n);
fseek(fp,0L,2);
for(i=1;i<=n;i++)
{
printf("\n请输入第%d个食品的编号:
\n",i);
scanf("%s",sp.number);
printf("\n请输入第%d个食品的名称:
\n",i);
scanf("%s",sp.name);
printf("\n请输入第%d个食品的生产厂家:
\n",i);
scanf("%s",sp.producer);
printf("\n请输入第%d个食品的价格:
\n",i);
scanf("%f",&sp.price);
printf("\n请输入第%d个食品的进货数量:
\n",i);
scanf("%d",&sp.good_num);
printf("\n请输入第%d个食品的库存数量:
\n",i);
scanf("%d",&sp.kucun_num);
fprintf(fp,"\r\n%s",sp.number);
fprintf(fp,"\t%s",sp.name);
fprintf(fp,"\t%s",sp.producer);
fprintf(fp,"\t%f",sp.price);
fprintf(fp,"\t%d",sp.good_num);
fprintf(fp,"\t%d",sp.kucun_num);
}
}
else
{
fp=fopen("shipin.txt","wb");
printf("请输入要添加食品的数量:
");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("\n请输入第%d个食品的编号:
\n",i);
scanf("%s",sp.number);
printf("\n请输入第%d个食品的名称:
\n",i);
scanf("%s",sp.name);
printf("\n请输入第%d个食品的生产厂家:
\n",i);
scanf("%s",sp.producer);
printf("\n请输入第%d个食品的价格:
\n",i);
scanf("%f",&sp.price);
printf("\n请输入第%d个食品的进货数量:
\n",i);
scanf("%d",&sp.good_num);
printf("\n请输入第%d个食品的库存数量:
\n",i);
scanf("%d",&sp.kucun_num);
fprintf(fp,"\r\n%s",sp.number);
fprintf(fp,"\t%s",sp.name);
fprintf(fp,"\t%s",sp.producer);
fprintf(fp,"\t%f",sp.price);
fprintf(fp,"\t%d",sp.good_num);
fprintf(fp,"\t%d",sp.kucun_num);
}
}
fclose(fp);
}
voidmodify()//修改
{
FILE*fp;
intn,i,num,flag;
charnumber[30];
structshipinsp[20];
printf("请输入要修改食品的编号:
");
scanf("%s",number);
i=0;
flag=0;
if((fp=fopen("shipin.txt","r"))!
=NULL)
{
while(!
feof(fp))
{
fscanf(fp,"\n%s",sp[i].number);
fscanf(fp,"\t%s",sp[i].name);
fscanf(fp,"\t%s",sp[i].producer);
fscanf(fp,"\t%f",&sp[i].price);
fscanf(fp,"\t%d",&sp[i].good_num);
fscanf(fp,"\t%d",&sp[i].kucun_num);
if(strcmp(sp[i].number,number)==0)
{
printf("\n请输入食品的名称:
\n");
scanf("%s",sp[i].name);
printf("\n请输入食品的生产厂家:
");
scanf("%s",sp[i].producer);
printf("\n请输入食品的价格:
\n");
scanf("%f",&sp[i].price);
printf("\n请输入食品的进货数量:
\n");
scanf("%d",&sp[i].good_num);
printf("\n请输入食品的库存数量:
\n");
scanf("%d",&sp[i].kucun_num);
flag=1;
}
i++;
}
}
num=i;
fclose(fp);
fp=fopen("shipin.txt","wb");
for(i=0;i<=num;i++)
{
fprintf(fp,"\r\n%s",sp[i].number);
fprintf(fp,"\t%s",sp[i].name);
fprintf(fp,"\t%s",sp[i].producer);
fprintf(fp,"\t%f",sp[i].price);
fprintf(fp,"\t%d",sp[i].good_num);
fprintf(fp,"\t%d",sp[i].kucun_num);
}
fclose(fp);
}
voidsearch_number()
{
FILE*fp;
intn,i,num,flag;
charnumber[30];
structshipinsp;
printf("请输入要查询食品的编号:
");
scanf("%s",number);
i=0;
flag=0;
if((fp=fopen("shipin.txt","r"))!
=NULL)
{
while(!
feof(fp))
{
fscanf(fp,"\n%s",sp.number);
fscanf(fp,"\t%s",sp.name);
fscanf(fp,"\t%s",sp.producer);
fscanf(fp,"\t%f",&sp.price);
fscanf(fp,"\t%d",&sp.good_num);
fscanf(fp,"\t%d",&sp.kucun_num);
if(strcmp(sp.number,number)==0)
{
printf("\n%s",sp.number);
printf("\t%s",sp.name);
printf("\t%s",sp.producer);
printf("\t%f",sp.price);
printf("\t%d",sp.good_num);
printf("\t%d",sp.kucun_num);
flag=1;
}
i++;
}
}
if(flag==0)
{
printf("\n没有找到此食品");
}
fclose(fp);
}
voidsearch_name()
{
FILE*fp;
intn,i,num,flag;
charnumber[30];
structshipinsp;
printf("请输入要查询食品的名称:
");
scanf("%s",number);
i=0;
flag=0;
if((fp=fopen("shipin.txt","r"))!
=NULL)
{
while(!
feof(fp))
{
fscanf(fp,"\n%s",sp.number);
fscanf(fp,"\t%s",sp.name);
fscanf(fp,"\t%s",s