1、自动售货机系统源代码#include #include #include #include goods.h bool GetCharge(int Sum,int Money); void Getsmalcharge(int Money,int *ChargeNum); int KouLing(); char ChooseJieMian(); char SaleCenter(); void loadGoodsFrom* gs); char ManageCenter(); void KunCun(); void Sale(); void ShangJia(); void TongJiFun();
2、Goods goods3; TongJi tj3; void init() for(int i = 0; i 3; +i) tji.jrxl = 0; tji.jrzje = 0; void main() /初始化 init(); int op = 0; /读取商品信息 loadGoodsFrom); char c = ChooseJieMian(); while(true) system(cls); if( c = 1) c = SaleCenter(); else if(c = 2) op = KouLing(); if(op = 1) /进入管理界面 c = ManageCenter()
3、; /system(pause); else if(op = 0) /进去销售界面 c = SaleCenter(); /- /* * return 1销售界面 2管理界面 */ char SaleCenter() char state=N; int Sum=0; char Pro = d; / printf(n*n); while(true) state=N; Sum=0; while(!(Pro = c | Pro = a | Pro = b | Pro = q) system(cls); printf(nt*); printf(nt*顾客您好,请选择商品*n); printf(nta商品
4、%s b商品%s c商品%s q管理n,goods0.name,goods1.name,goods2.name); printf(nt -%d- -%d- -%d- (单位:件),goods0.totalCount,goods1.totalCount,goods2.totalCount); printf(nt*ntt); Pro = getchar(); if(Pro = q) break; switch(Pro) case a: Sum=Sum+2; printf(nt商品A价格为%d,请投币,Sum); break; case A: Sum=Sum+2; printf(nt商品A价格为%d
5、,请投币,Sum); break; case b: Sum=Sum+3; printf(nt商品B价格为%d,请投币,Sum); break; case B: Sum=Sum+3; printf(nt商品B价格为%d,请投币,Sum); break; case c: Sum=Sum+6; printf(nt商品C价格为%d,请投币,Sum); break; case C: Sum=Sum+6; printf(nt商品C价格为%d,请投币,Sum); break; default: printf(nt输入物品有误!n); break; ; int Money; bool st=false; wh
6、ile(!st) / printf(n输入金额:); scanf(%d,&Money); getchar(); st=GetCharge(Sum,Money); ; Pro = d; system(PAUSE); return 2; bool GetCharge(int Sum,int Money) int ChargeNum4; for(int i=0;iMoney) printf(nt所投金额不足支付所选商品,请重新投币); return false; else if(Sum=Money) printf(nt所投金额等于商品价格,请在商品出口处拿取商品n); /销售成功的操作 if(Sum
7、 = goods0.price) goods0.totalCount -; Sale(); tj0.jrxl +; tj0.jrzje += Sum; else if(Sum = goods1.price) goods1.totalCount -; Sale(); tj1.jrxl +; tj1.jrzje += Sum; else if(Sum = goods2.price) goods1.totalCount -; Sale(); tj2.jrxl +; tj2.jrzje += Sum; return true; else int Result=Money-Sum; Getsmalcha
8、rge(Result,ChargeNum); printf(nt所投金额大于商品价格,为您找零%d元n,Result); printf(ntt-壹元面值 %d张-n,ChargeNum0); printf(ntt-贰元面值 %d张-n,ChargeNum1); printf(ntt-伍元面值 %d张-n,ChargeNum2); printf(ntt-拾元面值 %d张-n,ChargeNum3); printf(nt请在商品出口处拿取商品n); / printf(n余额为%d元,应找零n1 元%d张n2 元%d张n5 元%d张n10元%d张n,Result,ChargeNum0,ChargeN
9、um1,ChargeNum2,ChargeNum3); /end if /销售成功的操作 if(Sum = goods0.price) goods0.totalCount -; Sale(); tj0.jrxl +; tj0.jrzje += Sum; else if(Sum = goods1.price) goods1.totalCount -; Sale(); tj1.jrxl +; tj1.jrzje+= Sum; else if(Sum = goods2.price) goods2.totalCount -; Sale(); tj2.jrxl +; tj2.jrzje+= Sum; r
10、eturn true; /* 成功卖出操作的后台操作 */ void Sale() FILE* fp; if (fp = fopen(d:goods.out, w) = NULL) printf (未找到文件d:goods.out.系统将退出n ); exit(0); fprintf(fp,%s %d %dn,goods0.name,goods0.totalCount,goods0.price); fprintf(fp,%s %d %dn,goods1.name,goods1.totalCount,goods1.price); fprintf(fp,%s %d %dn,goods2.name,
11、goods2.totalCount,goods2.price); /关闭文件 fclose(fp); fp = NULL; /- void Getsmalcharge(int Money,int *ChargeNum) if(Money0) return; int Sum=Money; int charge4=1,2,5,10; ChargeNum3=Sum/charge3; Sum=Sum%charge3; ChargeNum2=Sum/charge2; Sum=Sum%charge2; ChargeNum1=Sum/charge1; Sum=Sum%charge1; ChargeNum0=
12、Sum/charge0; Sum=Sum%charge0; /* *return 1 口令正确 0 口令错误,并返回销售界面 */ int KouLing() char kl50; int count = 0,ret = 0; char rkl50 = admin; while(strcmp(rkl,kl) != 0) if(count = 0) printf(nt*); printf(nt*管理口令验证*n); printf(ntTip 忘记口令,输入“cancel”,进入销售界面n); printf(nt*ntt); else printf(nt*); printf(nt*管理口令验证*n
13、); printf(ntTip 忘记口令,输入“cancel”,进入销售界面n); printf(nt*); printf(ntttt输入错误次数:%d次ntt,count); count+; scanf(%s,kl); system(CLS); if(strcmp(kl,cancel) = 0) break; if(strcmp(kl,cancel) = 0) ret = 0; else ret = 1; return ret; /* * return 1 , 2 */ char ChooseJieMian() char c = 3; while(true) system(cls); pri
14、ntf(nt*); printf(nt*界面选择*n); printf(nt1 -销售界面- 2 -管理界面-n); printf(nt*ntt); c = getchar(); if(c = 1 | c = 2) break; system(cls); return c; char ManageCenter() while(true) int op = 7; while( !(op = 1| op = 2 | op = 3 | op = 4| op = 5 | op = 6) system(cls); printf(nt*); printf(nt*欢迎您,管理员*n); printf(nt1
15、 -库存查询- 2 -商品上架-n); printf(nt3 -销售查询- 4 -会计查询-n); printf(nt5 -结算功能- 6 -销售界面-n); printf(nt*ntt); scanf(%d,&op); bool flag = false; switch(op) case 1: KunCun(); break; case 2: ShangJia(); break; case 3: TongJiFun(); break; case 4:break; case 5:break; case 6: flag = true; break; default:break; if(flag)
16、 break; else system(PAUSE); return 1; /* *从文件里读取商品信息 return 商品列表 */ void loadGoodsFrom* gs) /获得FILE 指针 FILE* fp; if (fp = fopen(d:goods.out, r) = NULL) printf (未找到文件d:goods.out.系统将退出n ); exit(0); /Goods gs3; int i = 0; while(!feof(fp) fscanf(fp,%s %d %d,gsi.name,&gsi.totalCount,&gsi.price); i+; /关闭文
17、件 fclose(fp); fp = NULL; void KunCun() int i = 0; printf(nt商品名称 商品价格(元) 商品余量(件)n); for(i = 0; i 3; +i) printf(n t-%s-tt-%d-tt-%d-n,goodsi.name,goodsi.price,goodsi.totalCount); void ShangJia() printf(ntTip正数增加,负数减少商品 n); int gs1 = 0,gs2 = 0,gs3 = 0; printf(ntt-商品%s(余%d件): ,goods0.name,goods0.totalCou
18、nt); scanf(%d,&gs1); printf(ntt-商品%s(余%d件): ,goods1.name,goods1.totalCount); scanf(%d,&gs2); printf(ntt-商品%s(余%d件): ,goods2.name,goods2.totalCount); scanf(%d,&gs3); goods0.totalCount = gs1 + goods0.totalCount 0 ? 0:gs1 + goods0.totalCount; goods1.totalCount = gs2 + goods1.totalCount 0 ? 0:gs2 + good
19、s1.totalCount; goods2.totalCount = gs3 + goods2.totalCount 0 ? 0:gs3 + goods2.totalCount; /写文件 /获得FILE 指针 FILE* fp; if (fp = fopen(d:goods.out, w) = NULL) printf (未找到文件d:goods.out.系统将退出n ); exit(0); fprintf(fp,%s %d %dn,goods0.name,goods0.totalCount,goods0.price); fprintf(fp,%s %d %dn,goods1.name,go
20、ods1.totalCount,goods1.price); fprintf(fp,%s %d %dn,goods2.name,goods2.totalCount,goods2.price); /关闭文件 fclose(fp); fp = NULL; void TongJiFun() printf(nt今日商品销售情况一览n); printf(ntt-商品%s %d件 共%d元-n,goods0.name,tj0.jrxl,tj0.jrzje); printf(ntt-商品%s %d件 共%d元-n,goods1.name,tj1.jrxl,tj1.jrzje); printf(ntt-商品%s %d件 共%d元-n,goods2.name,tj2.jrxl,tj2.jrzje); printf(nt 共计%d件,%d元 n,tj0.jrxl + tj1.jrxl+tj2.jrxl,tj0.jrzje+tj1.jrzje+tj2.jrzje); /Goods.htypedef struct _Goods char name50; int totalCount; int price;Goods;typedef struct _TongJi int jrxl; int jrzje;TongJi;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1