您的位置:首页 > 其它

结构体ATM机

2015-07-11 11:39 337 查看
//

// main.m

// 结构体ATM

//

// Created by dllo on 15/7/10.

// 该代码是模拟ATM机存取款编写的,每次运行时,所有数据恢复初始值,但是如果是执行时程序中的结束即调用检查账号函数时,程序中的数据会根据上一次的运行结果进行执行,要注意,一但密码输入3次错误后,就无法在对该账号进行操作,想要恢复只能重新运行该代码

// Copyright (c) 2015年 Clare. All rights reserved.

//

import

import “ATM.h”

int main(int argc, const char * argv[]) {

ATM per1 = {111, 123, "zhangsan", 100, 1};
ATM per2 = {222, 234, "lisi", 200, 1};
ATM per3 = {333, 345, "wangwu", 300, 1};
ATM per4 = {444, 456, "maliu", 400, 1};
ATM per5 = {555, 567, "chengqi", 500, 1};
ATM per[5] = {per1, per2, per3, per4,per5};
checkCardNum(5, per);
printf("\n");
return 0;


}

//

// ATM.m

// 结构体ATM

//

// Created by dllo on 15/7/10.

// Copyright (c) 2015年 Clare. All rights reserved.

//

//

// ATM.h

// 结构体ATM

//

// Created by dllo on 15/7/10.

// Copyright (c) 2015年 Clare. All rights reserved.

//

import

import “ATM.h”

int enterCardNum = 0;

int enterPassWord =0;

int checkCardNum(int count,ATM *p){ // count :下标总长度 p:指针

printf(“欢迎来到不坑你坑谁点取款机,不怕坑就输入你的卡号:”);

scanf(“%d”,&enterCardNum); // 输入卡号

for (int i = 0; i < count ; i++) { // 查询与输入信息相等的账号

if (p[i].cardNum == enterCardNum) {

if(p[i].Lock ){ // 判断该卡是否锁定

printf(“你还真敢输,来密码报一下:”);

checkPassWord(i, p,3,count); // 查询相对应的密码

}

printf(“你是不是%s那小子啊!你不会是冒认的吧!赶紧滚蛋!明儿的这个时候想清楚了密码再来!”,p[i].name); // 卡锁定,无法使用

checkCardNum(count, p);

return 0;

}

}

printf(“你输得这是啥,给我改了\n”);

checkCardNum(count,p); // 重新开始输入账号

return 1;

}

void checkPassWord(int index, ATM *p ,int num,int count){ //index 当前脚标

if (num ==0) { //密码输入三次错误之后执行锁定卡

// printf(“赶滚蛋!24小时之后再来!\n”);

p[index].Lock = 0; // 令BOOL型的lock变为假

checkCardNum(count,p); // 回到程序最初

return;

}

scanf(“%d”,&enterPassWord);

if (p[index].passWord != enterPassWord) { // 输入的密码不正确

printf(“你小子喝多了把,你还剩下%d次机会,赶紧重输下密码!\n”,num -1);

checkPassWord(index, p, num - 1,count); //num-1输入次数减1

} else {

printf(“哎呦!是%s你小子啊!\n”,p[index].name);

printf(“说说你有什么要求!\n”);

checkServer(index, p,count); // 选择服务

// printf(“来来来!让姐姐看看!你还有%g大洋!\n”, p[index].moneyCount);

}

}

void checkServer(int index,ATM *p,int count){

// printf(“说说你有什么要求\n”);

printf(“1.拿点钱买点小酒喝喝!\n2.我就看看我还有多少钱\n3.我这有点银子要存\n4.我啥也不干,就过来看看\n”);

int n = 0;

scanf(“%d”, &n);

switch (n) { // 选择服务

case 1:

printf(“你想要多少?\n”);

getMoney(index, p, count); // 调用取钱函数

break;

case 2:

printf(“哦!你就剩%g两了\n”,p[index].moneyCount);

printf(“说吧!你还有什么要求\n”);

checkServer(index, p,count); // 嵌套,再次循环服务函数

break;

case 3:

printf(“哎呀!快,请上座!你想要存多少啊?\n”);

saveMoney(index, p, count); // 调用存钱函数

break;

case 4:

printf(“赶紧滚蛋!别碍手碍脚的,小心姐姐我揍你!\n”);

checkCardNum(count, p); // 程序结束重新开始新的循环

return;

default:

break;

}

}

void getMoney(int index,ATM *p,int count){

float getmoney = 0;

scanf(“%g”, &getmoney);

if (getmoney < p[index].moneyCount) { // 比较要取的钱和账号中的钱

p[index].moneyCount -= getmoney; // 获得取钱后的余额

printf(“得,拿走吧!你只剩%g两了\n!”,p[index].moneyCount);

printf(“说吧!你还有什么要求\n”);

checkServer(index, p, count);

} else if (getmoney == p[index].moneyCount) {

p[index].moneyCount = 0;

printf(“拿着你所有的钱滚蛋!就这么点钱,来回存取,你不累,姐都累了!\n”); // 结束

checkCardNum(count, p);

return;

} else {

printf(“去去去!你哪有这么多钱,别给姐惹事啊!给你次机会再说次你要多少?\n”);

getMoney(index, p, count); // 嵌套

}

}

void saveMoney(int index,ATM *p,int count){

float money = 0;

scanf(“%g”,&money);

p[index].moneyCount += money; // 存钱后的总额

printf(“你现在已经有%g两了!你还需要什么服务吗?乐意为你效劳!\n”, p[index].moneyCount);

checkServer(index, p, count); // 调用服务函数

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: