上次寫的販賣機程式 嘿嘿

看板YHSH9601作者 (隨意彎彎)時間16年前 (2008/04/24 00:50), 編輯推噓3(302)
留言5則, 5人參與, 最新討論串1/1
/************************ *Server代號: A *學號:f74966214 *編譯方式: gcc hw2-main.c hw2-other.c *執行方式:./a.out *程式功能:販賣機 *更新日期:2008.4.10 ************************/ #include<stdio.h> #include"hw2-other.h" int main(void) { int choose; while(1) { printf("這是一台販賣機 你好\n"); printf("1.進入飲料選單\n"); printf("2.離開此地 \n"); printf("3.補足飲料\n"); printf("4.補足零錢\n"); printf("5.查詢販賣機零錢存量\n"); printf("6.查詢販賣機飲料存量\n"); scanf("%d",&choose); if(choose==1) { int i=product_list(); int j=get_coin_from_user(); int k=get_user_selection(j); int l=return_money(k); } else if(choose==2) break; else if(choose==3) update_item(); else if(choose==4) update_coin(); else if(choose==5) find_coinnum(); else if(choose==6) find_item(); else if(choose!=1 || 2 || 3 || 4 || 5) printf("沒這個選項,請重新選擇\n"); continue; } return 0; } ----------------------------------------------------------------------- #include<stdio.h> #include<stdlib.h> #include"hw2-other.h" #define list 9 int product_list() { char item[list][18]; int price[list]; int num[list]; int i; FILE* in;//開檔 in=fopen("item.txt","r"); for(i=0;i<list;i++)//依項目價錢數量從txt讀檔出來 fscanf(in,"%s %d %d \n",item[i],&price[i],&num[i]); printf("選項 項目 價錢 數量\n\n"); for(i=0;i<list;i++) printf("%2d %12s %8d %7d \n",i+1,item[i],price[i],num[i]);//將讀到的值印出 fclose(in); } int get_coin_from_user() { int value[4]; int amount[4]; int q; FILE* in; in=fopen("coin.txt","r"); for(q=0;q<4;q++) fscanf(in,"%d %d",&value[q],&amount[q]); fclose(in); int a,b,c,d,total; printf("請投入硬幣(1 5 10 50)\n");//讓使用者輸入硬幣數量 printf(" 1元硬幣數量:\n"); scanf("%d",&a); printf(" 5元硬幣數量:\n"); scanf("%d",&b); printf("10元硬幣數量:\n"); scanf("%d",&c); printf("50元硬幣數量:\n"); scanf("%d",&d); total=a+b*5+c*10+d*50; scanf("%d",&d); total=a+b*5+c*10+d*50; printf("目前投入金額 %d\n\n",total); amount[0]=amount[0]+a;//更新原本硬幣的數量 amount[1]=amount[1]+b; amount[2]=amount[2]+c; amount[3]=amount[3]+d; FILE* out; out=fopen("coin.txt","w"); for(a=0;a<4;a++) fprintf(out,"%d %d",value[a],amount[a]);//將新資料寫入檔 fclose(out);//關檔 return total; } int get_user_selection(int total) { char item[list][18]; int price[list]; int num[list]; int x,b; FILE* in; in=fopen("item.txt","r"); for(b=0;b<list;b++) fscanf(in,"%s %d %d",item[b],&price[b],&num[b]); fclose(in); printf("請選擇你要的飲料(編號1到9)\n"); scanf("%d",&x); if(total>=price[x-1])//比較使用者投入金額與物品金額 { printf("冰涼的飲料喔~v( ̄︶ ̄)y 請從下面索取飲料\n"); num[x-1]=num[x-1]-1; total=total-price[x-1]; } else if(total<price[x-1]) {printf("Oops! 錢不夠喔!\n"); total=total;} FILE* out; out=fopen("item.txt","w"); for(b=0;b<list;b++) fprintf(out,"%s %d %d ",item[b],price[b],num[b]);//改變物品數量 fclose(out); return total; fclose(out); return total; } int return_money(int total) { char item[list][18]; int price[list]; int num[list]; int value[4]; int amount[4]; int i,a,b,c,d; FILE* in; in=fopen("item.txt","r"); for(i=0;i<list;i++) fscanf(in,"%s %d %d",item[i],&price[i],&num[i]); fclose(in); FILE* in_2; in_2=fopen("coin.txt","r"); for(i=0;i<4;i++) fscanf(in_2,"%d %d",&value[i],&amount[i]); fclose(in_2); if(total==0)//判斷剩餘金額 然後找零錢 printf("下次再來喔~^_^"); else if(total<5) { printf("退還你 %d 枚 1 圓硬幣 下次再來喔~^_^\n",total); amount[0]=amount[0]-total; } else if(total>=5 && total<10 ) { a=total/5; b=total%5; amount[0]=amount[0]-b; amount[1]=amount[1]-a; printf("退還你 5 元硬幣 %d枚 和 1 圓硬幣 %d枚 下次再來喔~^_^ \n",a,b); } else if(total>=10 ) { c=total/10; d=total%10; amount[0]=amount[0]-d; d=total%10; amount[0]=amount[0]-d; amount[2]=amount[2]-c; printf("退還你 10 元硬幣 %d枚 和 1 圓硬幣 %d枚 下次再來喔~^_^ \n",c,d); } FILE* out; out=fopen("coin.txt","w"); for(i=0;i<4;i++) fprintf(out,"%d %d ",value[i],amount[i]); fclose(out); } int update_item() { int i=0,a,b; char item[list][18]; int price[list]; int num[list]; FILE* in; in=fopen("item.txt","r"); for(i=0;i<list;i++) fscanf(in,"%s %d %d",item[i],&price[i],&num[i]); fclose(in); printf("請選擇想補足的飲料,編號1~9\n"); scanf("%d",&a); printf("請問想補足至幾罐\n");//補足想要的飲料數目 scanf("%d",&b); if(a==1) num[0]=b; else if(a==2) num[1]=b; else if(a==3) num[2]=b; else if(a==4) num[3]=b; else if(a==5) num[4]=b; else if(a==6) num[5]=b; else if(a==7) num[6]=b; else if(a==8) num[7]=b; else if(a==8) num[7]=b; else if(a==9) num[8]=b; FILE* out; out=fopen("item.txt","w"); for(i=0;i<list;i++) fprintf(out,"%s %d %d",item[i],price[i],num[i]);//寫檔 fclose(out); printf("所選飲料已補足到 %d 瓶",b); } int update_coin() { int i,a,b; int value[4]; int amount[4]; FILE* in; in=fopen("coin.txt","r"); for(i=0;i<4;i++) fscanf(in,"%d %d\n",&value[i],&amount[i]); fclose(in); printf("請選擇想補足的錢幣(1 5 10 50)\n"); scanf("%d",&a); printf("請問想補足到幾枚\n"); scanf("%d",&b); if(a==1) amount[0]=b; else if(a==5) amount[1]=b; else if(a==10) amount[2]=b; else if(a==50) amount[3]=b; FILE* out; out=fopen("coin.txt","w"); for(i=0;i<4;i++) fprintf(out,"%d %d\n",value[i],amount[i]); fclose(out); printf("%d元硬幣已補足到 %d枚\n",a,b); } int find_coinnum() { int value[4]; int amount[4]; int i; FILE* in; in=fopen("coin.txt","r"); for(i=0;i<4;i++) fscanf(in,"%d %d",&value[i],&amount[i]); printf(" 零錢 數量\n"); for(i=0;i<4;i++) printf("%6d %7d\n",value[i],amount[i]); fclose(in); } int find_item() { char item[list][18]; int price[list]; int num[list]; int i,b,c; FILE* in; in=fopen("item.txt","r"); for(i=0;i<list;i++) fscanf(in,"%s %d %d",item[i],&price[i],&num[i]); printf("請輸入要查詢的飲料數目(1~9)\n"); fclose(in); scanf("%d",&b); c=num[b-1];//查詢飲料剩餘數目 printf("目前剩餘%d罐\n",c); } ---------------------------------------------------------------------- #ifndef other_h #define other_h int product_list(); int get_coin_from_user(); int get_user_selection(int total); int return_money(int total); int update_item(); int update_coin(); int find_coinnum(); int find_item(); #endif 這個程式是用c語言寫的 裡面的item.txt 要自己建檔 嘿嘿 裡面有月亮提到的 讀檔 還有寫檔 標頭檔的應用 算是一個不小的程式 應該也算是第一個靠自己寫完的程式吧(嘆) 為自己拍拍手v( ̄︶ ̄)y 然後上一篇關於recursive的程式 晚點貼上 哈哈哈哈哈哈哈哈 -- (╮|| ̄□ ̄)╮ ╭(╯╴︸╴)╯ ╦==============╦ 你有進來嗎? \("▔□▔)/ 沒有就進來吧>>> http://www.wretch.cc/blog/a031rex -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.110.121

04/24 00:51, , 1F
這篇文71銀好爽...
04/24 00:51, 1F

04/24 00:53, , 2F
你上次給我看完題目完全不想寫..........ˊˋ
04/24 00:53, 2F

04/24 03:05, , 3F
元PO很愛裝可愛從程式中一覽無疑.....
04/24 03:05, 3F

04/25 00:50, , 4F
沒讀要寫程式的系看來對我是個明智的選擇 ><
04/25 00:50, 4F

04/25 01:10, , 5F
讀了要寫程式的課看來對我來說是個腦傷的選擇><
04/25 01:10, 5F
文章代碼(AID): #183sZZra (YHSH9601)