#include<stdlib.h>
#include<string.h>
struct commodity//定義商品結構體類型commodity
{
int goodsnumber;//商品編號
char goodsname[99];//商品名稱
char goodstype[99];//商品類型
int goodscount;//商品庫存
double goodsamount;//商品單價
}cy[99];//cy為commodity的縮寫
void input(struct commodity *p,int n);
void find(int goodsnumber);
void xiugai(int goodsnumber);
void shanchu(int goodsnumber,char goodsname[]);
void tongji(int goodsnumber,char goodstype[]);
void judge(int m);
int i=0,x=0,a=1,b;
int aa=1,bb;
int main()
{
while(a)
{
do
{
printf("\n\n\n");
printf("\t\t|-------------------------------------------------------------|\n");
printf("\t\t| |\n");
printf("\t\t| ====================== |\n");
printf("\t\t| 商品信息系統 |\n");
printf("\t\t| ====================== |\n");
printf("\t\t| |\n");
printf("\t\t| 1.存入商品信息 |\n");
printf("\t\t| 2.查詢商品信息 |\n");
printf("\t\t| 3.修改商品信息 |\n");
printf("\t\t| 4.刪除商品信息 |\n");
printf("\t\t| 5.統計商品信息 |\n");
printf("\t\t| 6.退出系統 |\n");
printf("\t\t|-------------------------------------------------------------|\n");
printf("\n\t\t請輸入您的選擇:");
scanf("%d",&b);
}while(b>6||b<1);
judge(b);
}
}
void judge(int m)
{
int n=0,k=0;
int goodsnumber;
char goodsname[99];
char goodstype[99];
switch(m)
{
case 1:printf("請輸入想存入商品的個數:");
scanf("%d",&n);
for(i=x;i<n+x;i++)
{input( &cy,i);}
x=n+x ;break;
case 2:printf("請輸入商品編號查詢該商品詳細信息:");
scanf("%d",&goodsnumber);
find(goodsnumber);
printf("\t\t請選擇以下選項\n\t\t1:返回主菜單\n\t\t2:退出系統\n請做出您的選擇:");
scanf("%d",&k);
if(k==2)
a=0;break;
case 3:printf("請輸入商品編號來修改商品信息:");
scanf("%d",&goodsnumber);
xiugai(goodsnumber);
printf("\t\t請選擇以下選項\n\t\t1:返回主菜單\n\t\t2:退出系統\n請做出您的選擇:");
scanf("%d",&k);
if(k==2)
a=0;break;
case 4:printf("請依次輸入商品編號、商品名稱以此來刪除商品信息:");
scanf("%d %s",&goodsnumber,goodsname);
shanchu(goodsnumber,goodsname);
printf("\t\t請選擇以下選項\n\t\t1:返回主菜單\n\t\t2:退出系統\n請做出您的選擇:");
scanf("%d",&k);
if(k==2)
a=0;break;
case 5:printf("請輸入商品類型和商品編號以此統計數量:");
scanf("%s %d",goodstype,&goodsnumber);
tongji(goodsnumber,goodstype);
printf("\t\t請選擇以下選項\n\t\t1:返回主菜單\n\t\t2:退出系統\n請做出您的選擇:");
scanf("%d",&k);
if(k==2)
a=0;break;
case 6:a = 0;break;
}
}
void input(struct commodity *p,int n)
{
FILE *fp;
fp=fopen("商品信息系統.txt","w+");
printf("請錄入第%d件商品:\n",i+1);
printf("請依次輸入商品編號、商品名稱、商品類型、商品庫存、商品單價:");
scanf("%d %s %s %d %d",&(p->goodsnumber),p->goodsname,p->goodstype,&(p->goodscount),&(p->goodsamount));
for(i=0;i<n;i++){
fwrite(&cy[n],sizeof(struct commodity),1,fp);}
fclose(fp);
}
void find(int goodsnumber)
{
int h=0;
FILE *fp;
fp=fopen("商品信息系統.txt","r");
for(i=0;i<x;i++)
{
if(goodsnumber==cy.goodsnumber )
{
h=1;
break;
}
}
if(h==1)
{ printf("\n");
printf("\t\t該商品信息如下:\n");
printf("\t商品編號:%d 商品名稱:%s 商品類型:%s 商品庫存:%d 商品單價:%d\n",cy.goodsnumber ,cy.goodsname ,cy.goodstype ,cy.goodscount ,cy.goodsamount );
printf("\n");
}
else
{
printf("\n");
printf("\t沒有查詢到該商品!\n");
printf("\n");}
fclose(fp);
}
void xiugai(int goodsnumber)
{
int h;
int mm,u;
FILE *fp;
fp=fopen("商品信息系統.txt","r+");
for(i=0;i<x;i++)
{
if(goodsnumber==cy.goodsnumber )
{
printf("1:存貨\n2:出售\n");
printf("請輸入你想要實現的功能選項:\n");
scanf("%d",&mm);
switch(mm)
{
case 1:printf("\t請輸入想要進貨的數量:\n");
scanf("%d",&u);
cy.goodscount=cy.goodscount+u;
printf("現在%s的庫存為:%d",cy.goodsname,cy.goodscount);break;
case 2:printf("\t請輸入想要出售的數量:\n");
scanf("%d",&u);
cy.goodscount=cy.goodscount-u;
printf("現在%s的庫存為:%d",cy.goodsname,cy.goodscount);break;
}
h=1;
}
}
if(h==0)
{ printf("\n");
printf("\t沒有找到該商品!\n");
printf("\n");
}
fclose(fp);
}
void shanchu(int goodsnumber,char goodsname[])
{
int h=0;
int j;
FILE *fp;
fp=fopen("商品信息系統.txt","r+");
for(i=0;i<x;i++){
if(strcmp(goodsname,cy.goodsname)==0&&(goodsnumber==cy.goodsnumber))
{
for(j = i;j<x;j++){
cy[j].goodsnumber=cy[j+1].goodsnumber;
strcpy(cy[j].goodsname,cy[j+1].goodsname);
strcpy(cy[j].goodstype ,cy[j+1].goodstype );
cy[j].goodsamount =cy[j+1].goodsamount;
cy[j].goodscount =cy[j+1].goodscount;
x=x-1;
h=1;
break;
}
}
}
if(h){
printf("\n");
printf("\t已經刪除該商品!\n");
printf("\n");
}
else {
printf("\n");
printf("\t沒有找到該商品!\n");
printf("\n");
}
fclose(fp);
}
void tongji(int goodsnumber,char goodstype[])
{
int s1=0,s2=0;
int h=0;
FILE *fp;
fp=fopen("商品信息系統.txt","r");
for(i=0;i<x;i++){
if(goodsnumber==cy.goodsnumber )
s1=cy.goodscount;h=1;
if(strcmp(cy.goodstype ,goodstype)==0)
s2++;h=1;
}
printf("\n");
printf("\t該類型的商品共有%d種!\n",s2);
printf("\t根據商品編號統計共有商品%d件!\n",s1);
printf("\n");
if(h==0){
printf("\n");
printf("\t未找到該商品!\n");
printf("\n");}
fclose(fp);
}