#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
typedef struct card
{
int cardNumber;
int cardPassword;
float money;
bool state;
}Card;
//卡号相关函数
int cardManage(Card card[],int cardCount)
{
printf("请输入卡号:");
int cardNo=0;
while (1) {
scanf("%d",&cardNo);
for (int i = 0 ;i<cardCount; i++) {
if (cardNo==card[i].cardNumber&&card[i].state==1) {
return i;
}else if (cardNo==card[i].cardNumber&&card[i].state==0){
printf("你的卡已被锁定,24小时不能操作,请及时联系我行工作人员。\n");
return -1;
}else
continue;
}
printf("你输入的卡号不存在,请从新输入:");
}
return 0 ;
}
//密码信息相关函数
bool passWordInfo(Card card[],int number)
{
printf("请输入密码:");
int password=0;
int times=3;
while (times--) {
scanf("%d",&password);
if (password==card[number].cardPassword) {
printf("密码输入正确!\n");
return 1;
}else{
printf("密码输入正确,剩余次数%d\n",times);
}
}
card[number].state=0;
printf("密码输入三次,24小时不能对该卡操作");
return 0;
}
void service(Card card[],int number)
{
while (1) {
printf("取款请按1\n存款请按2\n查询请按3\n退出请按0\n");
int order =0;
scanf("%d",&order);
switch (order) {
case 1:
while (1) {
printf("请输入取款金额,最高限额2000");
int money=0;
scanf("%d",&money);
if (money>2000) {
printf("输入金额超过2000,请重新输入:\n");
}else if (money>card[number].money){
printf("余额不足,请重新输入:\n");
}else{
card[number].money-=money;
printf("取款成功,余额%f\n",card[number].money);
break;
}
}
case 2:
{
printf("请输入存款金额\n");
int money=0;
scanf("%d",&money);
card[number].money+=money;
printf("存款成功,卡内余额为%f",card[number].money);
break;
}
case 3:
printf("卡内余额为:%f\n",card[number].money);
case 0:
return ;
default:
break;
}
printf("继续交易请按1\n 退回请按0\n");
scanf("%d",&order);
if (order==0) {
return;
}
}
}
int main(int argc, const char * argv[])
{
Card card[5]={
{123,111,1000000,1},
{234,222,1000,1},
{345,333,10000,1},
{456,444,100,1},
{567,555,2387,1}};
int number = 0;
while (1) {
number=cardManage(card, 5);
if (number<0) {
continue;
}
bool result;
result=passWordInfo(card, number);
if (result==0) {
continue;
}
service(card, number);
}
return 0;
}
C语言-ATM机
最新推荐文章于 2022-08-17 21:28:40 发布