<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了C語言實現超市資訊管理系統的具體程式碼,供大家參考,具體內容如下
設計要求:設計一個超市資訊管理系統,利用結構體儲存貨物資訊和所購買商品的資訊,並使用連結串列儲存購物車資訊,
能夠完成建立庫存資訊以及檔案自動建立庫存資訊,對購物車新增商品、結算並修改庫存等操作,可以將庫存資訊儲存在檔案中,並且可以對檔案中的庫存資訊進行讀取與顯示。
程式程式碼如下:
/*ifndef/define/endif」主要目的是防止標頭檔案的重複包含和編譯*/ #ifndef MARKET_H #define MARKET_H #include<stdio.h> #include<string.h> #include<stdlib.h> #include<time.h> #include<conio.h> #include<windows.h> #define N 5 struct mar//該結構體為儲存貨物資訊 { char ID[10];//貨號 char brand[20];//品名 double inprice;//進價 double outprice;//售價 int storage;//儲存量 }; struct node//該結構體為儲存購物車中的資訊 { struct mar buy;//貨物資訊 int number;//購物的數量 struct node *next; //指向下一個購物節點 }; struct mar goods[N];//結構體陣列 struct node *cart;//購物車頭結點 int menu();//列印主選單函數 void WenJianKucun();//檔案建立庫存資訊 void ShouJianKucun();//手動建立庫存資訊 void DisKucun();//顯示庫存資訊函數 void ShopCart();//對購物車進行操作 int ShopCartMenu();//列印購物車選單 void XianShi();//顯示購物列表 void add();//在購物車裡新增商品 void UpdateKu();//更新購物車資訊函數 void calculate();//計算所購商品價格並修改儲存 #endif int main() {//主函數 printf("*********************************************************n"); printf(" 歡迎進入超市資訊管理系統n"); printf("*********************************************************n"); int find=0; while(1) { switch(menu()) {//menu()函數為輸入選項 case 1: WenJianKucun(); find=1; break;//選項1 檔案建立庫存資訊 case 2: if(find==0) ShouJianKucun(); else printf("庫存資訊已存在n"); break;//選項2 手動建立庫存資訊 case 3: DisKucun(); break;//選項3 顯示庫存資訊函數 case 4: ShopCart(); break;//選項4 對購物車進行操作 case 5: calculate(); break;//選項5 計算所購商品價格並修改儲存 case 6: system("cls"); printf("感謝您的使用,再見!n"); Sleep(2000); exit(0); } } return 0; } int menu() {//列印主選單函數 char s[5];//輸入的選項 int n;//選項為整數 printf("nn請選擇下面的數位進行操作:n"); printf("--------------------------------------------n"); printf("1. 檔案建立庫存資訊n"); printf("2. 手動建立庫存資訊n"); printf("3. 顯示所有商品資訊n"); printf("4. 購物車n"); printf("5. 結算n"); printf("6. 退出程式n"); printf("--------------------------------------------n"); printf("請選擇對應數位1~6(1,2選其一)n"); printf("本程式製作人: 2017物聯網工程 胡斌、劉萌欣、陳俊飛n"); while(1) { fflush(stdin);//清空輸入流 gets(s);//輸入一串字串 n=atoi(s);//字串轉化為整數 if(n<1||n>6)//判斷輸入的選項是否正確 printf("輸入錯誤,請重新輸入:n"); else//輸入正確,結束迴圈 break; } return n;//返回輸入選項 } void WenJianKucun() {//檔案建立庫存資訊 FILE *fp;//定義檔案指標 if((fp=fopen("kucun.txt","w"))==NULL) {//建立檔案 printf("建立檔案失敗n"); return ; } //向檔案中寫入資訊 fprintf(fp,"69011111 飄柔日常護理 12.00 15.00 30n"); fprintf(fp,"69021111 優酸乳 1.50 2.00 200n"); fprintf(fp,"69031111 紅富士蘋果 2.50 3.50 300n"); fprintf(fp,"69041111 晨光筆芯 0.70 1.00 150n"); fprintf(fp,"69051111 胡醫生面膜 12.00 16.50 100n"); fclose(fp);//關閉檔案 printf("成功匯入資訊n"); return ; } void ShouJianKucun() {//手動建立庫存資訊 FILE *fp;//定義檔案指標 int i; 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("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%-7dn",goods[i].ID,goods[i].brand,goods[i].inprice,goods[i].outprice,goods[i].storage); } //fwrite(goods,sizeof(struct mar),N,cun);二進位制檔案輸出 fclose(fp);//關閉檔案 printf("資訊匯入成功n"); return ; } void DisKucun() {//顯示庫存資訊函數 FILE *fp;//定義檔案指標 int i; 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].inprice,&goods[i].outprice,&goods[i].storage); printf("--------------------------------------------n"); //輸出檔案資訊 printf("貨號 品名 單價 庫存量n"); printf("%-11s%-15s%-8.3f%-7dn",goods[i].ID,goods[i].brand,goods[i].outprice,goods[i].storage); } fclose(fp);//關閉檔案 } void ShopCart() {//對購物車進行操作 while(1) { switch(ShopCartMenu()) {//ShopCartMenu()為輸入選項 case 1: XianShi(); break;//選項1 顯示購物車物品資訊 case 2: add(); break;//選項2 新增購物車物品 //case 3: deleteitem();//刪除購物車中的某項商品 // break; case 3: return ;//選項3 退出 } } } int ShopCartMenu() {//列印購物車選單 int n;//為整數 char s[5];//輸入一串字串 printf("nn請選擇操作:n"); printf("--------------------------------------------n"); printf("1. 顯示當前可以購物列表n"); printf("2. 在購物車裡新增商品n"); //printf("3. 刪除購物車商品n"); printf("3. 退出n"); printf("--------------------------------------------n"); printf("請選擇對應數位1~3n"); while(1) { fflush(stdin);//清空輸入流 gets(s);//輸入一串字串 n=atoi(s);//字串轉化為整數 if(n<1||n>3)//判斷輸入的選項是否正確 printf("輸入錯誤,請重新輸入: n"); else//輸入正確,結束迴圈 break; } return n;//返回輸入選項 } void XianShi() {//顯示購物列表 struct node *p; //定義節點指標 p=cart;//把購物車連結串列賦給p FILE *fp1;//定義檔案指標 if((fp1=fopen("cart.txt","r"))==NULL) {//判斷是否開啟了檔案 printf("開啟檔案失敗n"); //return ; } if(p==NULL) {//購物車為空 printf("目前購物車為空:"); return ; } else {//購物車不為空 while(p!=NULL) {//把購物車物品不斷減一,直到為空 printf("--------------------------------------------n"); printf("貨號 品名 單價 數量n"); printf("%-11s%-15s%-8.3f%-7dn",p->buy.ID,p->buy.brand,p->buy.outprice,p->number); //輸出物品資訊 p=p->next; } } fclose(fp1);//關閉檔案 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%-7dn",goods[i].ID,goods[i].brand,goods[i].outprice,goods[i].storage);//輸出所需物品資訊 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 UpdateKu() { FILE *fp; struct node *p; if((fp=fopen("cart.txt","w"))==NULL) {//判斷檔案是否建立失敗 printf("建立檔案失敗。n"); return ; } p=cart;//把購物車連結串列賦給p2 while(p!=NULL) { // fprintf(fp1,"貨號 品名 單價 庫存量n"); //把貨物資訊寫進檔案 fprintf(fp,"%-11s%-15s%-8.3f%-7dn",p->buy.ID,p->buy.brand,p->buy.outprice,p->number); p=p->next;//指向下一個節點 } fclose(fp);//關閉檔案 return ; } void calculate() {//計算所購商品價格並修改儲存 struct node *p; p=cart;//把購物車(cart)連結串列賦給p double sum=0;//購買商品應付錢數 double pay;//購買商品實付錢數 FILE *fp;//定義檔案指標 int i; printf("以下是購物清單:n"); XianShi();//呼叫函數顯示購物列表資訊 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.3fn",sum);//輸出購買物品共需多少錢 printf("輸入實付金額:"); scanf("%lf",&pay); printf("實付: %-8.3f 找零: %8.3fn",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%-7dn",goods[i].ID,goods[i].brand,goods[i].inprice,goods[i].outprice,goods[i].storage); } fclose(fp);//關閉檔案 return ; }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45