⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 goods_management.c

📁 用Turbo C写的用于管理记录货物出入仓库的软件
💻 C
字号:
#include<stdio.h>
#include <conio.h>
#include <stdlib.h>
struct store
{
  int item;
  int stock;
  float price;
  char name[50];
}s1[33];

struct deal/*库存数据更新结构体*/
{
 char num[7];/*交易数目(3个字母跟随4个数字),*/
 int item;/*商品号*/
 char trans;/*交易代码*/
 int amount;/*卖出或退回数*/
}s2[80];


int menu()
{
  int i;
 clrscr();/*清屏*/
 gotoxy(1,8);
 printf("            ^^^^^^^^^^^^^^^^^^MENU^^^^^^^^^^^^^^^^^ \n");
 printf("           |  1.Display original information       |\n");
 printf("           |  2.Display arranged information       |\n");
 printf("           |  3.Display transaction detail         |\n");
 printf("           |  4.Display stock after transaction    |\n");
 printf("           |  5.exit                               |\n");
 printf("           <<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>\n");
  do
   {
     printf("\n  Please enter your choice(1~5):");/*提示输入选项*/
     scanf("%d",&i);/*输入选择项*/
     
    }while(i<1||i>5);/*如果选择项位1~5,则跳出循环*/
  return i;/*返回选择项*/
}

void Q1(char filename[]);
void Q2(char filename[]);
void Q3(char filename[]);
void Q4(char filename[]);
void read1(char filename[]);

void main()
{
  FILE *fp;
  char filename[25];
  clrscr();
  printf("Please enter the filename:");
  scanf("%s",filename);
printf("%s",filename);
for(;;) /*根据menu()返回的值判断下一步操作*/
  {
    switch(menu())
    { 
     case 1:Q1(filename);break;
     case 2:Q2(filename);break;
     case 3:Q3(filename);break;
     case 4:Q4(filename);break;
     case 5:exit(0);
    }
  } 
}






void read1(char filename[])
{
	float a;
	int i,j;
	FILE *fp;
	fp=fopen(filename,"r");
	for(i=0;i<33;i++)
   	{
   	fscanf(fp,"%d %d %f",&s1[i].item,&s1[i].stock,&a);
	s1[i].price=a;
   	fgets(s1[i].name,50,fp);
   	}
	fclose(fp);
}

void print()
{
int i,j;
	printf("Item #  # In Stock  Price          Name\n_______________________________________________________\n");

for(j=0;j<33;j++)
 {
   if((j+1)%20==0) /*分屏*/
   {
     gotoxy(1,25);
     printf("press any key to continue...");
     getch();
     clrscr();
   }
   printf("%d        %-5d   %.2f  %s",s1[j].item,s1[j].stock,s1[j].price,s1[j].name);
 }
getch();
}

/*用起泡法按照商品号排序*/
void arrange(struct store s[],int n)
{
  struct store temp;
  int i,j;
  for(j=0;j<n;j++)
  { for(i=0;i<n-j;i++)
   {
    if(s[i].item>s[i+1].item)
    {temp=s[i];
     s[i]=s[i+1];
     s[i+1]=temp;
     }
    }
   }
}

void Q1(char filename[])
{
	clrscr();
	read1(filename);
	print();
	getch();
}

void Q2(char filename[])
{
	clrscr();
	read1(filename);
	arrange(s1,32);
	print();
	getch();
}

void Q3(char filename[])
{
	int h,i,j,k,l,m,b;
	float a;
	FILE *fp;
	fp=fopen(filename,"r");
	
	for(h=0;h<33;h++)
   	{
   	fscanf(fp,"%d %d %f",&s1[h].item,&s1[h].stock,&a);
	s1[h].price=a;
   	fgets(s1[h].name,50,fp);
   	}

	for(i=0;i<80;i++)
   	{
	fscanf(fp,"%s %d %c %d",&s2[i].num,&s2[i].item,&s2[i].trans,&s2[i].amount);
	}
	
	clrscr();
	printf("Serial #   Item #   Transaction   Value\n");
	printf("________________________________________________\n");
    for(k=0;k<62;k++)
   {
	b=33;

   if((k+1)%7==0) /*分屏*/
   {
     gotoxy(1,25);
     printf("press any key to continue...");
     getch();
     clrscr();
   }

	printf("\n");
	for(j=0;j<7;j++)
	putchar((s2[k].num)[j]);
	printf("    %d         %c          %d\n",s2[k].item,s2[k].trans,s2[k].amount);
        if(s2[k].amount<0) printf("         %d is an invalid quantity.\n",s2[k].amount);
        if(s2[k].trans!='R'&&s2[k].trans!='S') printf("          %c is not an acceptable transaction code.\n",s2[k].trans);
   for(l=0;l<33;l++)
     {  
	if(s2[k].item==s1[l].item) 
	{
	  if(s2[k].amount>=0)
	  {	
	   if(s2[k].trans=='S')
	    {
		if(s1[l].stock-s2[k].amount>=0)
		{
	    printf("    %d of the",s2[k].amount);
	    for(m=0;m<50;m++) {if((s1[l].name)[m]=='\n') break; putchar((s1[l].name)[m]);}	            printf("(s) have been sold.\n");
	    break;
		}
		else
		{
 	    printf("    %d of the",s1[k].stock);
	    for(m=0;m<50;m++) {if((s1[l].name)[m]=='\n') break; putchar((s1[l].name)[m]);}	            printf("(s) have been sold.\n");
            printf("    %d of the",s2[k].amount-s1[k].stock);
	    for(m=0;m<50;m++) {if((s1[l].name)[m]=='\n') break; putchar((s1[l].name)[m]);}	            printf("(s) have been backordered.\n");
	    break;
		}
	    }
	 else if(s2[k].trans=='R')
	    {printf("    %d of the",s2[k].amount);
	    for(m=0;m<50;m++) {if((s1[l].name)[m]=='\n') break; putchar((s1[l].name)[m]);}                 printf("(s) have been returned.\n");
	    break;
	    }
	   else break;	
	  }
	 else break;
   	}
	else b--;
     }

	if (b<=0) printf("         There is no item in stock with number %d.\n",s2[k].item);  

	
   }
	getch();
	fclose(fp);
}


void Q4(char filename[])
{
	int i,j,h,l,k;
	float a;
	FILE *fp;
	fp=fopen(filename,"r");

	for(h=0;h<33;h++)
   	{
   	fscanf(fp,"%d %d %f",&s1[h].item,&s1[h].stock,&a);
	s1[h].price=a;
   	fgets(s1[h].name,50,fp);
   	}

	arrange(s1,32);

	for(i=0;i<80;i++)
   	{
	fscanf(fp,"%s %d %c %d",&s2[i].num,&s2[i].item,&s2[i].trans,&s2[i].amount);
	}
  for(k=0;k<62;k++)
   {
      for(l=0;l<33;l++)
      {
        if(s2[k].item==s1[l].item)
	   {
	    if(s2[k].trans=='S') s1[l].stock=s1[l].stock-s2[k].amount;
	    else if(s2[k].trans=='R')  s1[l].stock=s1[l].stock+s2[k].amount;
	   }
      }
   }
	clrscr();
	for(j=0;j<33;j++)
	if(s1[j].stock<0)s1[j].stock=0;
	print();
	getch();
}





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -