浅显但是绝对好懂的仓库元件管理
代码如下(示例):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>*/
int m,n;
struct warehouse
{
int order;//元件批次
char place[10];//元件存储地点
char name[10];//元件名称
int stock;//原始库存
int in;//入库数量
int out;//出库数量
int surplus;// 剩余数量
int warning;//警戒值
int state;//库存是否低于警戒值
}s[100],r[100],t[100];
//用于存放电阻信息s[m]
//用于存放电容信息r[m]
//用于存放芯片信息t[m]
void stock_in(int*);
void stock_out(int);
void pay_attention(int);
void statistics(int);
void warehouse_capacity(int*);
void modify(int);
int main()
{
int i;//用于选择
int count=0;
while(1)
{
printf("\n");
printf("____________________________________________________________________________________*\n");
printf("* *\n");
printf("* 1.入库 2.出库 *\n");
printf("* *\n");
printf("* 3.查询 4.排序 *\n");
printf("* *\n");
printf("* 5.修改 6.统计 *\n");
printf("* *\n");
printf("* 7.退出 *\n");
printf("*___________________________________________________________________________________*\n");
printf("请输入功能选择:\n");
scanf("%d",&i);
switch(i)
{
case 1:stock_in(&count);warehouse_capacity(&count);/*display();*/break;
case 2:stock_out(count);/*display();*/break;
/* case 3:search();display();break;
case 4:sort();display();break;*/
case 5:modify(count);/*display();*/break;
case 6:statistics(count);break;
default:printf("出错了");return;
}
}
}
void stock_in(int*count)
{
int i,batch;
printf("开始一个批次的存放\n");
printf("请输入此批次\n");
scanf("%d",&batch);
s[*count].order=batch;
r[*count].order=batch;
t[*count].order=batch;
printf("现在是电阻\n");
printf("输入位置\n");
scanf("%s",&s[*count].place);
printf("输入名称\n");
scanf("%s",&s[*count].name);
printf("输入入库数量\n");
scanf("%d",&s[*count].in);
printf("设定警戒值\n");
scanf("%d",&s[*count].warning);
fflush(stdin);
printf("现在是电容\n");
printf("输入位置\n");
scanf("%s",&r[*count].place);
printf("输入名称\n");
scanf("%s",&r[*count].name);
printf("输入入库数量\n");
scanf("%d",&r[*count].in);
printf("设定警戒值\n");
scanf("%d",&r[*count].warning);
fflush(stdin);
printf("输入芯片\n");
printf("现在是芯片\n");
printf("输入位置\n");
scanf("%s",&t[*count].place);
printf("输入名称\n");
scanf("%s",&t[*count].name);
printf("输入入库数量\n");
scanf("%d",&t[*count].in);
printf("设定警戒值\n");
scanf("%d",&t[*count].warning);
fflush(stdin);
(*count)++;
}
void warehouse_capacity(int *count)
{
int amount1=0,amount2=0,amount3=0,i;
char a[10]="cab1";
char b[10]="cab2";
char c[10]="cab3";
for(i=0;i<*count;i++)
{
if(strcmp(s[i].place,a)==0)
amount1=amount1+s[i].in;
if(strcmp(s[i].place,b)==0)
amount2=amount2+s[i].in;
if(strcmp(s[i].place,c)==0)
amount3=amount3+s[i].in;
}
for(i=0;i<*count;i++)
{
if(strcmp(r[i].place,a)==0)
amount1=amount1+r[i].in;
if(strcmp(r[i].place,b)==0)
amount2=amount2+r[i].in;
if(strcmp(r[i].place,c)==0)
amount3=amount3+r[i].in;
}
for(i=0;i<*count;i++)
{
if(strcmp(t[i].place,a)==0)
amount1=amount1+t[i].in;
if(strcmp(t[i].place,b)==0)
amount2=amount2+t[i].in;
if(strcmp(t[i].place,c)==0)
amount3=amount3+t[i].in;
}
printf("cab1的容量还剩下了");
printf("%d\n",500-amount1);
if(500-amount1<0)
printf("此库不能进入,请跳转至修改功能并更换为其他库,比如cab2\n");
printf("cab2的容量还剩下了");
printf("%d\n",500-amount2);
if(500-amount2<0)
printf("此库不能进入,请跳转至修改功能并更换为其他库,比如case1\n");
printf("cab3的容量还剩下了");
printf("%d\n",500-amount3);
if(500-amount3<0)
printf("此库不能进入,请跳转至修改功能并更换为其他库,比如case3,case2\n");
printf("\n");
}
/*void stock_out(int count)
{
FILE*p;
int i,j;
n=0;
p=fopen("stockout,txt","r");
while(fscanf(p,"%s%d",&t[n].place,&t[n].out)!=EOF)
n++;
fclose(p);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(t[i].place==s[j].place)
s[j].out=t[j].out;
}
}
for(i=0;i<m;i++)
s[i].surplus=s[i].stock+s[i].in-s[i].out;
}
void display()
{
int i,j=1;
system("cls");
pay_attention();
printf("入库批次 元件位置 元件名称 原始库存 入库数 出库数 最终库存 警戒值\n");
for(i=0;i<m;i++)
{
j=i+1;
if(s[i].state==1)
{
HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);//调用红字函数
SetConsoleTextAttribute(handle,FOREGROUND_INTENSITY |FOREGROUND_RED);
printf("%-9d%-9s%-9s%-9d%-9d%-9d%-9d%-9d\n",s[i].order,s[i].place,s[i].name,s[i].stock,s[i].in,s[i].out,s[i].surplus,s[i].warning);
if(j%10==0&&j!=n)//控制输出格式
{
printf("请按任意键");
getch();
puts("\n");
SetConsoleTextAttribute(handle,FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
printf("入库批次 元件位置 元件名称 原始库存 入库数 出库数 最终库存 警戒值\n");
}
}
else if(s[i].state==0)
{
HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(handle,FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
printf("%-9d%-9s%-9s%-9d%-9d%-9d%-9d%-9d\n",s[i].order,s[i].place,s[i].name,s[i].stock,s[i].in,s[i].out,s[i].surplus,s[i].warning);
if(j%10==0&&j<n)
{
HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(handle,FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
printf("请按任意键");
getch();
puts("\n");
SetConsoleTextAttribute(handle,FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
printf("入库批次 元件位置 元件名称 原始库存 入库数 出库数 最终库存 警戒值\n");
}
}
}
}*/
void pay_attention(int count)//判断是否超过警戒值
{
int i;
for(i=0;i<count;i++)
{
if(s[i].in>=s[i].warning)
s[i].state=1;
else if(s[i].in<s[i].warning)
s[i].state=0;
}
for(i=0;i<count;i++)
{
if(r[i].in>=r[i].warning)
r[i].state=1;
else if(r[i].in<r[i].warning)
r[i].state=0;
}
for(i=0;i<count;i++)
{
if(t[i].in>=t[i].warning)
t[i].state=1;
else if(t[i].in<t[i].warning)
t[i].state=0;
}
}
/*void sort()
{
int i,j,t;
for(j=0;j<m;j++)
{
for(i=0;i<m-j;i++)
if(s[i].surplus>s[i+1].surplus)
{
t=s[i].surplus;
s[i].surplus=s[i+1].surplus;
s[i+1].surplus=t;
}
}
display();
}*/
void stock_out(int count)
{
int k,w,i,j=1,flag=1,amount1=0,amount2=0,amount3=0,num;
char a[20],b[20];
char c[10];
char *d;
printf("\n");
printf("____________________________________________________________________________________*\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* 1.元件批次 2.元件位置 *\n");
printf("* *\n");
printf("* 3.元件名称 *\n");
printf("* *\n");
printf("*___________________________________________________________________________________*\n");
printf("请输入查询选项:\n");
scanf("%d",&k);
fflush(stdin);
if(k==1)
{
printf("输入你需要查询的元件批次\n");
scanf("%d",&w);
for(i=0;i<count&&flag;i++)
{
if(s[i].order==w)
{
printf("下面依次展示电阻,电容,芯片的参数(按批次显示)\n");
printf("入库批次 元件位置 元件名称 入库数 最终库存 警戒值\n");
printf("%-9d%-9s%-9s%-9d%-9d%-9d\n",s[i].order,s[i].place,s[i].name,s[i].in,s[i].surplus,s[i].warning);
printf("%-9d%-9s%-9s%-9d%-9d%-9d\n",r[i].order,r[i].place,r[i].name,r[i].in,r[i].surplus,r[i].warning);
printf("%-9d%-9s%-9s%-9d%-9d%-9d\n",t[i].order,t[i].place,t[i].name,t[i].in,t[i].surplus,t[i].warning);
flag=0;
}
}
}
if(k==2)
{
printf("输入你需要查询的元件所在位置\n");
scanf(" %s",a);
for(i=0;i<count;i++)
{
strcpy(b,s[i].place);
if(strcmp(a,b)==0)
{
printf("入库批次 元件位置 元件名称 入库数 最终库存 警戒值\n");
printf("%-9d%-9s%-9s%-9d%-9d%-9d\n",s[i].order,s[i].place,s[i].name,s[i].in,s[i].surplus,s[i].warning);
}
else
printf("没有查到电阻!\n");
strcpy(b,r[i].place);
if(strcmp(a,b)==0)
{
printf("%-9d%-9s%-9s%-9d%-9d%-9d\n",r[i].order,r[i].place,r[i].name,r[i].in,r[i].surplus,r[i].warning);
}
else
printf("没有查到电容!\n");
strcpy(b,t[i].place);
if(strcmp(a,b)==0)
{
printf("%-9d%-9s%-9s%-9d%-9d%-9d\n",t[i].order,t[i].place,t[i].name,t[i].in,t[i].surplus,t[i].warning);
}
else
printf("没有查到芯片!\n");
}
}
if(k==3)
{
printf("输入你需要出库的元件名称\n");
scanf("%s",c);
printf("if i can print c");
printf("%s\n",c);
for(i=0;i<count;i++)
{
if(strcmp(s[i].name,c)==0)
{
amount1=amount1+s[i].in;
printf("%d",amount1);
}
if(strcmp(r[i].name,c)==0)
{
amount2=amount2+r[i].in;
}
if(strcmp(t[i].name,c)==0)
{
amount3=amount3+t[i].in;
}
}
printf("debug ");
printf("%s",c);
printf("输入你需要取出的数量\n");
printf("%d",amount1);
scanf("%d",&num);
if(num>amount1)
printf("此电阻不能出库\n");
if(num>amount2)
printf("此电容不能出库\n");
if(num>amount3)
printf("此芯片不能出库\n");
}
pay_attention(count);
statistics(count);
}
void modify(count)
{
int i,p;
char a[10];
/* printf("\n");
printf("____________________________________________________________________________________*\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* 1.入库批次 2.元件名称 *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("*___________________________________________________________________________________*\n");
printf("请定位需要修改的部分:\n");
scanf("%d",&k);
if(k==1)
{*/
printf("请输入批次号码\n");
scanf("%d",&p);
for(i=0;i<count;i++)
{
if(p==s[i].order)
{
printf("请输入电阻存入的库\n");
scanf("%s",a);
strcpy(s[i].place,a);
}
if(p==r[i].order)
{
printf("请输入电容存入的库\n");
scanf("%s",a);
strcpy(r[i].place,a);
}
if(p==t[i].order)
{
printf("请输入芯片存入的库\n");
scanf("%s",a);
strcpy(t[i].place,a);
}
}
/* }
if(k==2)
{
printf("请输入元件名称\n");
scanf("%s",&o);
for(i=0;i<m;i++)
{
if(strcmp(o,s[i].name)==0)
j=i;
}
}
printf("\n");
printf("____________________________________________________________________________________*\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* 1.原始库存 2.入库量 *\n");
printf("* *\n");
printf("* *\n");
printf("* 3.出库量 4.警戒值 *\n");
printf("*___________________________________________________________________________________*\n");
printf("请输入需要修改的部分\n");
scanf("%d",&e);
printf("请输入更改值\n");
if(e==1)
{
scanf("%d",&f);
s[j].stock=f;
}
if(e==2)
{
scanf("%d",&f);
s[j].in=f;
}
if(e==3)
{
scanf("%d",&f);
s[j].out=f;
}
if(e==4)
{
scanf("%d",&f);
s[j].warning=f;
}
s[j].surplus=s[j].stock+s[j].in-s[j].out;*/
}
void statistics(int count)
{
int i,j,a,amount1=0,amount2=0;
printf("\n");
printf("____________________________________________________________________________________*\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* 1.库存总数 2.库存状态 *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("*___________________________________________________________________________________*\n");
printf("请选择需要统计的部分:\n");
scanf("%d",&a);
if(a==1)
{
for(i=0;i<count;i++)
{
amount1=amount1+s[i].in;
}
printf("电阻的库存总数是%d\n",amount1);
amount1=0;
for(i=0;i<count;i++)
{
amount1=amount1+r[i].in;
}
printf("电容的库存总数是%d\n",amount1);
amount1=0;
for(i=0;i<count;i++)
{
amount1=amount1+t[i].in;
}
printf("芯片的库存总数是%d\n",amount1);
}
if(a==2)
{
pay_attention(count);
for(i=0;i<count;i++)
{
if(s[i].state==0)
amount2++;
}
printf("低于警戒值的电阻有%d",amount2);
printf("批次 \n");
for(i=0;i<count;i++)
{
if(r[i].state==0)
amount2++;
}
printf("低于警戒值的电容有%d",amount2);
printf("批次 \n");
for(i=0;i<count;i++)
{
if(t[i].state==0)
amount2++;
}
printf("低于警戒值的芯片有%d",amount2);
printf("批次 \n");
}
}
# 总结
用很基础的语法写的,适合入门者观看!(有一些涂改)