C语言进销存管理系统源程序资料.docx
《C语言进销存管理系统源程序资料.docx》由会员分享,可在线阅读,更多相关《C语言进销存管理系统源程序资料.docx(12页珍藏版)》请在冰豆网上搜索。
C语言进销存管理系统源程序资料
C语言课程设计
综合性程序设计报告之源程序
设计题目:
电脑公司进销存管理系统
专业:
冶金工程
学号:
8090507
姓名:
刘欢
成绩:
____________
设计时间:
2010年11月03日
二.开题说明
1.问题概要
该系统用于处理某电脑公司的设备买入,卖出,仓储等设备账目。
在买入设备时,记录设备的数量型号(如computer,keyboard)和价钱,并在库房记录中添加设备,在卖出设备时从库房中减掉该设备,并根据卖出的数量型号和价钱得出每一笔买出的利润。
每个一段时间盘点库房和账目计算出利润等数据。
基本要求:
有货物管理(设备的添加,删除,修改)
有账目管理
可以查询账目清单
可以计算年度或月份或季度利润。
2.问题分析:
先定义合适的结构体,存储物品信息。
在程序中建立一个文件用于存储,凡进行了进货操作的物品在文件中都有记录,进货时由于尚不知售货时间与售价、利润,故此三项(实际为四项,时间分为年、月两项)暂先赋值为零,待进行售货操作时再输入各数值,其中利润由系统自动计算得出并保存。
账目清单分为已售、仓储两部分,由此可看到所有购进、卖出的货物信息。
月利润查询可查得所输入年月的各类所售货物数量与利润。
三.功能模块
四.源程序
#include
#include
#include
#include
#include
#defineLENsizeof(structobject)
#defineFORMAT1"\t%-8d%-11s%-9.2f%-6d%-4d\n"
#defineDATA1(p1+i)->num,(p1+i)->name,(p1+i)->inprice,(p1+i)->inyear,(p1+i)->inmonth
#defineFORMAT2"\t%-8d%-11s%-9.2f%-9.2f%-7.2f%-6d%-4d%-6d%-4d\n"
#defineDATA2(p1+i)->num,(p1+i)->name,(p1+i)->inprice,(p1+i)->outprice,(p1+i)->profit,(p1+i)->inyear,(p1+i)->inmonth,(p1+i)->outyear,(p1+i)->outmonth
voidin();
voidshow();
voidmodify();
voidsell();
voidmenu();
voidmonthearn();
structobject
{
intnum,inyear,inmonth,outyear,outmonth;
charname[10];
floatinprice,outprice,profit;
}obj[100];
structobject*p1=obj;
main()
{
intn;
menu();
while(n)
{
switch(n)
{
case1:
in();break;
case2:
sell();break;
case3:
modify();break;
case4:
show();break;
case5:
monthearn();break;
default:
break;
}
getch();
menu();
scanf("%d",&n);
}
}
voidmenu()//菜单
{
system("cls");
printf("\n\n\n\n\n\n");
printf("\t\t**************菜单**************\n");
printf("\t\t0.退出\n");
printf("\t\t1.进货操作\n");
printf("\t\t2.售货操作\n");
printf("\t\t3.修改信息\n");
printf("\t\t4.账目清单\n");
printf("\t\t5.月利润查询\n");
printf("\t\t********************************\n");
}
voidin()//进货操作
{
inti,m=0;
charch[2];
FILE*p;
if((p=fopen("data","a+"))==NULL)
{
printf("打不开文件!
\n");//打开文件
return;
}
while(!
feof(p))
{
if(fread(&obj[m],LEN,1,p)==1)
m++;//将数据读入内存
}
fclose(p);
if(m==0)
printf("无记录!
\n");
printf("请确认是否进货?
(y/n)");
scanf("%s",ch);
while(strcmp(ch,"y")==0||strcmp(ch,"y")==0)
{
printf("请输入设备编号:
");
scanf("%d",&obj[m].num);
for(i=0;iif((p1+i)->num==obj[m].num)
{
printf("此号已存在,按任意键继续!
");
getch();
fclose(p);
return;
}
printf("设备名称:
");
scanf("%s",obj[m].name);
printf("进价:
");
scanf("%f",&obj[m].inprice);
printf("进货年、月:
");
scanf("%d%d",&obj[m].inyear,&obj[m].inmonth);
obj[m].outprice=0;obj[m].outyear=0;(p1+m)->outmonth=0;
fopen("data","w");//打开文件用以向磁盘导入数据
for(i=0;i<=m;i++)
fwrite(&obj[i],LEN,1,p);
if(fwrite(&obj[m],LEN,1,p)!
=1)
{
printf("无法保存!
");
getch();
}
else
{
printf("%s保存成功!
\n",obj[m].name);
m++;
}
printf("继续?
(y/n)");
scanf("%s",ch);
}
fclose(p);
printf("保存完毕!
\n");
}
voidsell()//售货操作
{
FILE*p;
intsnum,i,j,m=0;
charch[2];
if((p=fopen("data","rb"))==NULL)
{
printf("无法打开文件!
\n");
return;
}//打开文件
while(!
feof(p))
if(fread(&obj[m],LEN,1,p)==1)
m++;//读入
fclose(p);
if(m==0)
{
printf("无记录!
\n");
return;
}
printf("请输入编号:
");
scanf("%d",&snum);
for(i=0;iif(snum==(p1+i)->num)
break;
if(i{
printf("查得此物品,确认出售?
(y/n)");
scanf("%s",ch);
if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)//判断2
{
printf("请输入售价:
");
scanf("%f",&(p1+i)->outprice);
(p1+i)->profit=((p1+i)->outprice-(p1+i)->inprice);
printf("\n请输入售出年、月:
");
scanf("%d%d",&(p1+i)->outyear,&(p1+i)->outmonth);
if((p=fopen("data","wb+"))==NULL)
{
printf("打不开文件!
\n");
return;
}
for(j=0;j{
if(fwrite(&obj[j],LEN,1,p)!
=1)
printf("无法保存!
\n");
getch();
}
printf("售货成功!
");
fclose(p);
return;
}
else
return;//判断2
}
else
printf("无此物品!
");
return;//判断1
}
voidmodify()//修改信息
{
FILE*p;
inti,j,m=0,snum;
if((p=fopen("data","rb"))==NULL)
{printf("打不开文件!
\n");
return;
}
while(!
feof(p))
if(fread(&obj[m],LEN,1,p)==1)
m++;
if(m==0)
{
printf("无记录!
\n");
fclose(p);
return;
}
printf("请输入欲修改信息的货物编号:
");
scanf("%d",&snum);
for(i=0;iif(snum==(p1+i)->num)
break;
if(i{
printf("找到此货物!
\n");
printf("\n名称:
");
scanf("%s",(p1+i)->name);
printf("\n进价:
");
scanf("%f",&(p1+i)->inprice);
printf("\n进货年、月:
");
scanf("%d%d",&(p1+i)->inyear,&(p1+i)->inmonth);
if((p=fopen("data","wb+"))==NULL)
{
printf("打不开文件!
\n");
return;
}
for(j=0;jif(fwrite(&obj[j],LEN,1,p)!
=1)
{
printf("无法保存!
");
getch();
}
fclose(p);
}
else
printf("无此货物!
");
return;
}
voidshow()//账目清单
{
FILE*p;
inti,m=0;
if((p=fopen("data","rb"))==NULL)
printf("打不开!
");
while(!
feof(p))
if(fread(&obj[m],LEN,1,p)==1)
m++;
fclose(p);
printf("已售\n\t编号名称进价售价利润进货时间出售时间\t\n");
for(i=0;i{
if((p1+i)->profit!
=0)
printf(FORMAT2,DATA2);
}
printf("仓储\n");
printf("\t编号名称进价进货时间\t\n");
for(i=0;i{
if((p1+i)->profit==0)
printf(FORMAT1,DATA1);
}
}
voidmonthearn()//月利润
{
FILE*p;
intm=0,s=0,a=0,b=0,c=0,d=0,y,z;
floatsum1=0,sum2=0,sum3=0,sum4=0;
if((p=fopen("data","rb"))==NULL)
{
printf("打不开文件!
\n");
return;
}//打开文件
while(!
feof(p))
if(fread(&obj[m],LEN,1,p)==1)
m++;
fclose(p);//将数据读入内存
printf("请输入欲查询的年份、月份:
");
scanf("%d%d",&y,&z);
for(s=0;s{
if((strcmp(obj[s].name,"zhuji")==0)&&(y==obj[s].outyear)&&(z==obj[s].outmonth))
{
a++;
sum1+=obj[s].profit;
}
if((strcmp(obj[s].name,"xianshiqi")==0)&&(y==obj[s].outyear)&&(z==obj[s].outmonth))
{
b++;
sum2+=obj[s].profit;
}
if((strcmp(obj[s].name,"jianpan")==0)&&(y==obj[s].outyear)&&(z==obj[s].outmonth))
{
c++;
sum3+=obj[s].profit;
经常光顾□偶尔会去□不会去□}
if((strcmp(obj[s].name,"shubiao")==0)&&(y==obj[s].outyear)&&(z==obj[s].outmonth))
{
情感性手工艺品。
不少人把自制的手机挂坠作为礼物送给亲人朋友,不仅特别,还很有心思。
每逢情人节、母亲节等节假日,顾客特别多。
d++;
营销环境信息收集索引sum4+=obj[s].profit;
}
}
(2)物品的独一无二printf("本月共售出\n");
8、你是如何得志DIY手工艺制品的?
printf("\t主机%d台,总利润%7.2f元\n",a,sum1);
二、大学生DIY手工艺制品消费分析printf("\t显示器%d台,总利润%7.2f元\n",b,sum2);
10、如果学校开设一家DIY手工艺制品店,你希望_____printf("\t键盘%d台,总利润%7.2f元\n",c,sum3);
printf("\t鼠标%d台,总利润%7.2f元\n",d,sum4);
调研课题:
}
标题:
上海发出通知为大学生就业—鼓励自主创业,灵活就业2004年3月17日
据调查,大学生对此类消费的态度是:
手工艺制品消费比“负债”消费更得人心。