📄 goods_management.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 + -