好文档 - 专业文书写作范文服务资料分享网站

C语言模拟ATM机

天下 分享 时间: 加入收藏 我要投稿 点赞

void WithdrawalOt(long money) { if (now_acc->balance < money) { PR(\响铃 PR(\您的余额不足%ld\\n\\n\ system(\ return; }

PR(\正在处理,请稍候...\\n\now_acc->balance -= money; Save();

Log(-money, now_acc->no);

PR(\取款成功\\n\\n\ system(\}

/**********存款**********/ void Depositing() { long money; do { PR(\请输入存款金额(50的倍数),单次存款金额不得超过20000元:\ fflush(stdin); scanf(\ if (money < 0 || money > 20000 || money % 50) {//解决输入金额为负数、超过20000、不是50的倍数的情况 PR(\响铃 PR(\输入有误,请重新输入\\n\ system(\ continue; } PR(\正在处理,请稍候...\\n\ now_acc->balance += money; Save();//保存账户数据 Log(money, now_acc->no);//保存存取数据 PR(\存款成功\\n\\n\ system(\ break; } while (1); }

/**********保存账户信息**********/ void Save() { FILE *fp;

int i = 1; char ch; if (!(fp = fopen(\ { PR(\响铃 PR(\读取帐户信息失败!accounts.txt无法打开\\n\ exit(0); } for (Account *i = head; i; i = i->next)//写入账户信息 fprintf(fp, \ fclose(fp); }

/**********修改密码**********/ void Modifiy() { char oldpass[7], newpass1[7], newpass2[7]; do {

PR(\请输入原密码:\fflush(stdin); gets(oldpass);

if (strlen(oldpass) != 6) {

PR(\密码应为6位\\n\ system(\ continue; }

if (strcmp(oldpass, now_acc->password))

{//解决密码输入有误,出于安全性的考虑,原密码输入错误时不提供返回功能 PR(\密码有误,请重新输入\\n\\n\ system(\ continue; } else break; } while (1); do { PR(\请输入六位新密码:\ fflush(stdin); scanf(\ if (strlen(newpass1) != 6) { PR(\密码应为6位\\n\ system(\

continue; }

PR(\请再次输入新密码:\fflush(stdin);

scanf(\

if (strcmp(newpass1, newpass2))

{//两次输入密码不一致时 PR(\密码不一致(输入*取消修改)\\n\ fflush(stdin); if (getchar() == '*') break; } else

{//输入一致时 strcpy(now_acc->password, newpass1);//修改密码 Save();//保存用户数据 PR(\密码修改成功!\\n\\n\ system(\ break; } } while (1); }

/**********转账**********/ void Transfer() { Account* aimsite;//转入卡号在链表中的地址 long money;//转账金额 if (now_acc->balance < 50)

{//当账户余额不足50时 PR(\响铃 PR(\您的余额不足50,无法转账\\n\\n\ system(\ return; } do {

char aim[17];//转入卡号

PR(\请输入转入卡/折号(16位):\fflush(stdin); gets(aim);

if (strlen(aim) != 16) { PR(\卡号应为16位\\n\ system(\ continue;

}

if (!(strcmp(aim, now_acc->no))) {//解决转账双方卡号相同的情况 PR(\双方账户相同,请核对后重试(输入*取消转账)\\n\ if (getchar() == '*') return; continue; }

if (aimsite = FindbyNo(aim))

break;//找到转入卡号对应信息时 else { PR(\未找到该卡号,输入*取消转账\\n\ if (getchar() == '*') return; continue; }

} while (1);

PR(\汇款目标用户名为:%s\\n\PR(\是否确认无误?(输入*确认,否则退出)\fflush(stdin);

if (getchar() != '*') return; do { PR(\请输入转账金额(50的倍数):\ fflush(stdin); scanf(\ if (now_acc->balance < money) { PR(\响铃 PR(\您的余额不足%lu,请重新输入转账金额\\n\\n\ system(\ continue; } if (money % 50)

{//当输入金额不是50的倍数时 PR(\响铃 PR(\输入有误,请重新输入\\n\ continue; }

PR(\转账中,请稍候...\\n\now_acc->balance -= money; aimsite->balance += money; Save();//保存账户数据

Log(-money, now_acc->no);//当前账户存取记录 Log(money, aimsite->no);//转入卡存取记录 PR(\转账成功\\n\\n\ system(\ break; } while (1); }

/**********掩盖部分用户名**********/ char *CoverUpName(const char *name) { char temp[20]; strcpy(temp, name); int words = 0;//用于存放姓名的字数 for (char* i = temp; *i; i += 2)

words++;//计算姓名的字数 switch (words) {

case 2:

temp[0] = '*', temp[1] = '*';//当姓名字数为2时,掩盖姓 strcpy(temp + 1, temp + 2);//消除一个*号 break; case 3: temp[2] = '*', temp[3] = '*';//当姓名字数为3时,掩盖名字中的第一个字 strcpy(temp + 3, temp + 4);//消除一个*号 break; default:

temp[0] = '*', temp[1] = '*', temp[2] = '*', temp[3] = '*';//姓名字数大于3时,掩盖姓和名字中的第一个字 strcpy(temp + 2, temp + 4);//消除两个*号 } return temp; }

/**********释放链表空间**********/ void FreeData() { Account* t; while (head) { t = head; head = head->next; free(t); } }

C语言模拟ATM机

voidWithdrawalOt(longmoney){if(now_acc->balancebalance-=money;Save();Log(-
推荐度:
点击下载文档文档为doc格式
32ock29coh02ra61x73m28mwx1483k01cwv
领取福利

微信扫码领取福利

微信扫码分享