超市管理系統
1.包括管理員和顧客
2.管理員有登入,錄入商品信息,顯示所有商品信息功能
3.顧客有購物車和結算功能
4.購物車具有顯示商品列表,顯示購物車商品,往購物車添加商品的功能
全部代碼下載鏈接:點擊前往下載鏈接
函數
int menu1();//打印主菜單函數
int menu2();//打印管理員菜單函數
int menu3();//打印顧客函數
void CreateGoods();//錄入商品信息函數
void ShowGoods();//顯示庫存信息函數
void ShopCart();//對購物車進行操作
int ShopCartMenu();//打印購物車菜單
void ShowCart();//顯示購物列表
void add();//在購物車裏添加商品
void UpdateKu();//更新購物車信息函數
void calculate();//計算所購商品價格並修改保存
建立庫存函數
void CreateGoods()
{//手動建立庫存信息
FILE *fp;//定義文件指針
int i;
printf("請輸入需要錄入的商品個數:\n");
scanf("%d",&n);//輸入數量
printf("請依次輸入貨物信息:\n");
printf("--------------------------------------------\n");
for(i=0;i<n;i++)
{//向文件中寫入信息
printf("第%d個商品:\n",i+1);
printf("貨號:");
fflush(stdin);//清空輸入流
gets(goods[i].ID);//輸入貨號
printf("品名:");
fflush(stdin);//清空輸入流
gets(goods[i].brand);//輸入品名
printf("進價: ");
fflush(stdin);//清空輸入流
scanf("%lf",&goods[i].inprice);//輸入進價
printf("售價:");
fflush(stdin);//清空輸入流
scanf("%lf",&goods[i].outprice);//輸入售價
printf("數量:");
fflush(stdin);//清空輸入流
scanf("%d",&goods[i].storage);//輸入數量
printf("保質期:");
fflush(stdin);//清空輸入流
gets(goods[i].date);//輸入貨號
printf("\n");
}
if((fp=fopen("kucun.txt","w"))==NULL)
{//判斷文件是否創建失敗
printf("創建文件失敗。\n");
return ;
}
//fprintf(fp,"貨號 品名 單價 庫存量 保質期\n");
for(i=0;i<n;i++)
{//把貨物信息寫進文件
fprintf(fp,"%-11s%-15s%-8.3f%-8.3f%-11d%-11s\n",goods[i].ID,goods[i].brand,goods[i].inprice,goods[i].outprice,goods[i].storage,goods[i].date);
}
//fwrite(goods,sizeof(struct mar),N,cun);二進制文件輸出
fclose(fp);//關閉文件
printf("信息導入成功\n");
return ;
}
在購物車裏添加商品
void add()
{//在購物車裏添加商品
FILE *fp,*fp1;//fp表示kucun文件,fp1表示cart文件
struct node *p1,*p,*p2;//定義節點指針
int i,n;//n表示商品數量
char s[20];//表示貨號或者品名
char choice1[20],choice2[20];//選擇項(y繼續,n繼續)
do{
printf("輸入所需物品的名稱或貨號:\n");
fflush(stdin);//清空輸入流
gets(s);//輸入貨號或者品名
if((fp=fopen("kucun.txt","r"))==NULL)
{//打開文件
printf("打開文件失敗\n");
continue;
}
for(i=0;i<N;i++)
{//循環N次
fscanf(fp,"%s%s%*lf%lf%d",goods[i].ID,goods[i].brand,&goods[i].outprice,&goods[i].storage);//從文件中讀取貨物信息
if((strcmp(goods[i].ID,s)==0||strcmp(goods[i].brand,s)==0)&&goods[i].storage>0)//找輸入對應的商品
{
printf("已找到所需商品:\n");
printf("--------------------------------------------\n");
printf("貨號 品名 單價 數量\n");
printf("%-11s%-15s%-8.3f%-7d\n",goods[i].ID,goods[i].brand,goods[i].outprice,goods[i].storage,goods[i].date);//輸出所需物品信息
printf("請輸入所需商品數量: ");
scanf("%d",&n);//商品數量
if(n>goods[i].storage)
{//判斷是否還可以購買不
printf("該商品庫存不足\n");
break;
}
printf("\n是否購買此商品?(Y/N)\n");
fflush(stdin);//清空輸入流
scanf("%s",choice1);//輸入一個選項
if(strcmp(choice1,"Y")==0||strcmp(choice1,"y")==0)
{//輸入y/Y表示購買此商品
p=new node;//生成新節點
if(p==NULL)
{//分配內存失敗
printf("內存申請失敗!\n");
exit(1);//退出
}
p->number=n;//商品數量
p->buy=goods[i];//貨物信息
p->next=NULL;
p1=cart;//把頭結點賦給p1
if(cart==NULL)//頭結點爲空
cart=p;//把節點賦值給頭結點
else
{
while(p1->next!=NULL)
p1=p1->next;//把鏈表循環到尾部
p->next=p1->next;
p1->next=p;//把新節點p掛在鏈表尾部
}
}
else
printf("輸入錯誤\n");
break;//找到商品結束循環
}
}
if(i==N)//循環完畢還沒找到對應商品
printf("未找到所需物品\n");
fclose(fp);//關閉文件
UpdateKu();//更新庫存信息函數
printf("是否繼續購物?(Y/N)\n");
fflush(stdin);//清空輸入流
scanf("%s",choice2);//輸入選項
if(strcmp(choice2,"y")!=0&&strcmp(choice2,"Y")!=0)
printf("放棄購買,返回菜單!\n");
}while(strcmp(choice2,"y")==0||strcmp(choice2,"Y")==0);//y/Y繼續循環
return ;
}
計算所購商品價格並修改保存
void calculate()
{//計算所購商品價格並修改保存
struct node *p;
p=cart;//把購物車(cart)鏈表賦給p
double sum=0;//購買商品應付錢數
double pay;//購買商品實付錢數
FILE *fp;//定義文件指針
int i;
printf("以下是購物清單:\n");
ShowCart();//調用函數顯示購物列表信息
if((fp=fopen("kucun.txt","r"))==NULL)
{//打開文件
printf("打開文件失敗\n");
return ;
}
for(i=0;i<N;i++)
{//從文件中讀取信息
fscanf(fp,"%s%s%*lf%lf%d",goods[i].ID,goods[i].brand,&goods[i].outprice,&goods[i].storage);
}
fclose(fp);//關閉文件
while(p!=NULL)
{//當鏈表不爲空時
sum=sum+p->buy.outprice*p->number;//計算應付錢數
for(i=0;i<N;i++)
{//找出對應商品庫存量
if(strcmp(goods[i].ID,p->buy.ID)==0)
{//找到對應商品
goods[i].storage=goods[i].storage-p->number;//庫存量變化
break;
}
}
p=p->next;//指向下一個節點
}
printf("總計:%-8.3f\n",sum);//輸出購買物品共需多少錢
printf("輸入實付金額:");
scanf("%lf",&pay);
printf("實付: %-8.3f 找零: %8.3f\n",pay,pay-sum);
if((fp=fopen("kucun.txt","w"))==NULL)
{//打開文件
printf("寫入文件失敗\n");
return ;
}
for(i=0;i<N;i++)
{//向文件中寫入信息
fprintf(fp,"%-11s%-15s%-8.3f%-8.3f%-7d\n",goods[i].ID,goods[i].brand,goods[i].inprice,goods[i].outprice,goods[i].storage);
}
fclose(fp);//關閉文件
return ;
}
全部代碼下載鏈接:點擊前往下載鏈接