【c仓库代码】

浅显但是绝对好懂的仓库元件管理

代码如下(示例):

#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");
        }
}




# 总结
用很基础的语法写的,适合入门者观看!(有一些涂改)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
编写一个完整的仓库信息管理系统(Warehouse Information Management System)的C语言代码是一个大型项目,涉及到数据库操作、用户界面设计和数据结构等多个方面。在这里,我无法提供一个完整的代码示例,但我会为你概述一个基本的架构和一些关键组件。 1. 数据结构:首先,你需要定义用于存储仓库信息的数据结构,例如`struct Warehouse`可能包含字段如`id`, `name`, `location`, `items`等。 ```c struct Warehouse { int id; char name[50]; char location[50]; struct Item* items; }; ``` 2. 动态内存管理:由于仓库可能包含多个项目,使用链表或动态数组存储`Item`指针是常见的做法。 3. 函数库:编写函数来添加、删除、查找仓库和项目,如`add_warehouse()`, `delete_warehouse()`, `search_warehouse()`等。 4. 文件操作:如果需要持久化数据,你可以使用文件I/O来保存仓库信息到硬盘。 5. 用户界面:这通常是命令行界面或者图形用户界面,使用函数如`scanf`获取用户输入,`printf`显示信息。 这里只给出一个简化的概念代码片段: ```c #include <stdio.h> #include <stdlib.h> // 定义仓库结构 typedef struct Warehouse { int id; char name[50]; char location[50]; struct Item* items; } Warehouse; // 创建仓库函数 Warehouse* create_warehouse() { // 实现细节... } // 添加项目到仓库函数 void add_item_to_warehouse(Warehouse* warehouse, struct Item* item) { // 实现细节... } // 主程序 int main() { // 初始化仓库,读取用户输入,处理用户请求等 return 0; } ``` 要完成这样一个系统,你需要深入了解C语言、文件I/O、数据结构以及可能的数据库连接(如SQLite或其他数据库系统)。实际开发中,你可能还需要学习如何使用C库如GNU Readline进行交互式用户输入,或者使用Curses库创建更复杂的命令行界面。 相关问题-- 1. 如何在C中实现数据持久化? 2. C语言如何创建和管理动态内存以存储仓库和项目? 3. 如何设计一个简单的用户界面来与仓库信息管理系统交互?
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值