上次寫的販賣機程式 嘿嘿
/************************
*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
04/24 00:51, 1F
推
04/24 00:53, , 2F
04/24 00:53, 2F
→
04/24 03:05, , 3F
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