当前位置:首页 » 编程语言 » c语言模拟atm

c语言模拟atm

发布时间: 2022-05-06 10:14:54

⑴ 编写一个c语言程序模拟银行ATM机的账户管理功能,系统主要实现以下功能

按照你的愿意把空都填好了,VC++ 6.0下编译能通过,有警告信息,运行基本上能用,不过个人认为这个系统有很大的不足,比如输入账号的时候没有输出反馈信息,以及没有对误操作的处理等等。需要的话可以帮你改改!

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define AN 9 //表示账号8位
#define PN 7 //表示密码6位
#define ASN 3 //表示系统中共有3个账户信息
struct Account
{
char accountnumber[AN]; //表示账号信息
char password[PN]; //表示账户的密码信息
double balance; //表示账户的余额
};
struct Account ats[ASN]={{"00000001","123456",100},{"00000002","123456",200},{"00000003","123456",300}};
//ats数组用于存储系统中三个账户的信息
int isCorrect(char *an,char *psd)
{
int i;
for(i=0;i<ASN;i++)
if(strcmp(ats[i].accountnumber,an)==0 && strcmp(psd,ats[i].password)==0)
return 1;
return 0;
}
double getBalance(char *an)
{
int i;
for(i=0;i<ASN;i++)
if(strcmp(an,ats[i].accountnumber)==0)
return ats[i].balance;
}

void deposit(char *an,int amount)
{
int i;
for(i=0;i<ASN;i++)
if(strcmp(an,ats[i].accountnumber)==0)
ats[i].balance+=amount;
}
int withdraw(char *an,int amount)
{
int i;
for(i=0;i<ASN;i++)
if(strcmp(an,ats[i].accountnumber)==0)
return ats[i].balance-=amount;
}

void main()
{
char AccountNumber[AN]={'\0'};
char psd[PN]={'\0'};
int i,errorcount=0;
while(1)
{
printf("\n请输入8位账号:");
for(i=0;i<8;i++)
AccountNumber[i]=getch();
printf("\n请输入6为密码:");
for(i=0;i<6;i++)
{
psd[i]=getch();
putchar('*');
}
if(isCorrect(AccountNumber,psd)==1)
{
int tag,amount;
while(1)
{
printf("\n欢迎登录银行账户管理系统,请选择您要的服务:1、查询余额;2、存款操作;3、取款操作;4、退出系统\n");
scanf("%d",&tag);
switch(tag)
{
case 1:
printf("您现在的余额为%f元\n",getBalance(AccountNumber));
break;
case 2:
printf("请输入您的存款金额:");
scanf("%d",&amount);
deposit(AccountNumber,amount);
printf("存款成功!您的当前余额为:%f元\n",getBalance(AccountNumber));
break;
case 3:
printf("请输入您的取款金额:");
scanf("%d",&amount);
if(amount<=getBalance(AccountNumber))
printf("取款成功!您的当前余额为:%f元\n",withdraw(AccountNumber,amount));
else
printf("取款失败!\n");
break;
case 4:
break;
}
if(tag==4)
break;
}

}
else
{
errorcount++;
if(errorcount==3)
{
printf("您已经连续三次输入错误,系统将自动关闭\n");
break;
}
}
}
}

⑵ C语言实现简单ATM操作

// t.cpp : Defines the entry point for the console application.//#include "stdafx.h"int Card[100][5+3];void main(){ for(int i=0;i<100;i++) { Card[i][0]=i; Card[i][1]=0; Card[i][2]=0; } int nCahao,nT=0,nPose; while(nT==0) { printf("请输入卡号\n"); scanf("%d",&nCahao); for(int i=0;i<100;i++) { if(Card[i][0]==nCahao) { nT=1; nPose=i; break; } } printf("卡号不正确"); } printf("你的存款余额为%d\n",Card[nPose][1]); while(1) { printf("1,取款 2, 存款\n"); int nSelect; scanf("%d",&nSelect); switch(nSelect) { case 1: printf("请输入提款金额\n"); int nJine; scanf("%d",&nJine); Card[nCahao][Card[nCahao][2]]=-nJine; Card[nCahao][2]=Card[nCahao][2]++; printf("你的取款额为%d请在出钞口领现金\n",nJine); break; case 2: printf("请输入存款金额\n"); scanf("%d",&nJine); Card[nCahao][Card[nCahao][2]]=nJine; Card[nCahao][2]=Card[nCahao][2]++; printf("你的存款额为%d\n",nJine); break; default: printf("请取卡\n"); return; } } }

⑶ 怎么用C语言编写模拟ATM机

你可以加一个ini文件处理,就是每次开始程序是都到ini 或者 txr 文件中读取你那个密码 ,在更改时写入你更改的密码到ini 或者 txt 文件中 ,ini的编程很简单 你上网查一下就明白了

⑷ 有谁学过C语言的可以帮我设计一个模拟ATM自动取款机的程序吗不用太复杂,谢谢。

/*初始密码和账号都为:123456*/

#include<stdio.h>

intchaxun(inta3)

{

intb;

b=a3;

printf("你的余额为:%d ",b);

}

intqukuan(inta3)

{

inta,b;

printf("请输入您要提取的现金: ");

scanf("%d",&a);

b=a3-a;

if(b<0)

printf("对不起,你的余额不足 ");

else

{

printf("请收好您的%d元现金 ",a);

a3=a3-a;

}

return(a3);

}

intgaini(inta2)

{

inta,b,c=1,d,e=1;

while(e)

{

printf("请输入你的旧密码: ");

scanf("%d",&d);

if(d==a2)

e=0;

else

{

e=1;

printf("你输入的密码错误,请重新输入: ");

}

}

while(c)

{

printf("请输入您的六位数新密码 ");

scanf("%d",&a2);

printf("请确认您的六位数新密码 ");

scanf("%d",&b);

if(a2==b)

{

if(b>100000&&b<999999&&b/(b/100000)!=111111)

{

c=0;

printf("密码修改成功 ");

}

else

{

printf("您输入的密码不符合要求,请从新输入 ");

c=1;

}

}

else

{

c=1;

printf("您两次输入的密码不一致,请重新输入: ");

}

}

returna2;

}

intquka()

{

printf(" 梦若保保提醒您 ");

printf("请收好您的卡片,谢谢,再见 ");

}

intcunkuan(inta3)

{

inti,j,k;

printf("请输入你要存的金额 ");

scanf("%d",&k);

if(k<0)

{

printf("对不起,没有负存款 ");

}

else

{

printf(" 您好,您已经存进去了%d元 ",k);

a3=a3+k;

}

returna3;

}

main()

{

inti,j,b=1,c,k,l,m,n;

inta1=123456,a2=123456,a3=1000;

printf("欢迎使用自动柜员机: ");

while(b==1)

{

printf("请输入您的账号: ");

scanf("%d",&k);

printf("请输入您的密码: ");

scanf("%d",&l);

if(k==a1&&l==a2)

{

b=0;

printf("您的账户余额为:%d ",a3);

}

else

{

b=1;

printf("对不起,您输入的账号或者密码有误,请重新输入: ");

}

}

do

{

printf(" 请选择您要的服务项目: ");

printf("1.查询余额 ");

printf("2.取款 ");

printf("3.修改密码 ");

printf("4.取卡 ");

printf("5.存款 ");

scanf("%d",&c);

switch(c)

{

case1:

chaxun(a3);

break;

case2:

a3=qukuan(a3);

break;

case3:

a2=gaini(a2);

break;

case4:

quka();

break;

case5:

a3=cunkuan(a3);

break;

}

}while(c!=4);

}

完全符合你的要求啦,请插入磁卡…^_^

哈哈,不然你自己写一个算法吧。其实想纠正一下,这个程序代码是上弦的芭蕉也就是楼主他写的,他写好后给我而我呢仅仅是做了一下辅助修改,其实要我写呢,我自己应该写不出来,你如果有其他的问题还是通过回答楼主问题的方式来问一下楼主吧,就是上弦的芭蕉这家伙,悄悄的告诉你:他代码程序真的很强,我只是打了一下酱油、酱紫而已;而如果您要引用呢,也先问一下源代码主人楼主他的意思先哈^_^

⑸ 简单的C语言模拟ATM取款机问题(大虾帮帮忙!)

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

void LanguageMenu();
void MainMenu();
void Query(float*);
void Deposite(float*);
void WithDraw(float*);
float a=1000;

void LanguageMenu()
{
printf("1 中文\n");
printf("2 English\n");
printf("3 退出\\Exit");
switch(getch())
{
case '1':MainMenu();break;
case '2':MainMenu();break;
default:break;
}
}

void MainMenu()
{
system("cls");

printf("1 查询\n");
printf("2 存款\n");
printf("3 取款\n");
printf("4 退出\n");
switch(getch())
{
case '1':Query(&a);break;
case '2':Deposite(&a);break;
case '3':WithDraw(&a);break;
default: system("cls");return;
}
}

void Query(float *p)
{
system("cls");
printf("此账户中钱数为:¥ %-.2f",*p);
printf("请按任意键继续...");
getch();
}

void Deposite(float *p)
{
float mon;
printf("请输入您要存入的钱数:¥ ");
scanf("%f",&mon);
*p += mon;
printf("存款成功,请按任意键继续...");
}

void WithDraw(float *p)
{
float mon;
printf("请输入您要取出的钱数:¥ ");
scanf("%f",&mon);
if(mon>*p)
printf("对不起,您账户上的钱数不足。\n请按任意键继续...");
else
{
*p -= mon;
printf("取款成功,请按任意键继续...");
getch();
}

}

void main()
{
LanguageMenu();
}

⑹ C语言编程,模拟银行的ATM机

我也是初学者,刚做完这个。
输入密码能进入的功能你可以先建立个整型的数,然后你输入的整型数字跟你之前建立好的数字进行比较,如果一致就执行下一步,如果不一致就输入密码错误,用if语句
取款,存款的更简单了,加减法而已。
这个东西最后建立一个文件保存你输入的数据,就是账户名,密码什么的,需要用的时候从文件里读取,然后和你输入的数据进行比较。
存取款的可以把文件里的数据进行读取,然后进行相应的加减,然后用修改后的数据用“w”写入文件,“w”有覆盖功能以前的数据就会被覆盖了

⑺ 怎样用c语言编写ATM系统

#include<stdio.h>
#include<string.h>
void print_welcome();
int main()
{
print_welcome();
char c[11]="1234567890",d[7]="123456";
char a[20],b[20];
char p,q;
int h=0,i=0,j=0,k,l=0;
do
{
printf("请输入账号:\n");
gets(a);
printf("请输入密码:\n");
gets(b);
if(strcmp(c,a)==0&&strcmp(d,b)==0)
{
printf("账号正确 欢迎使用\n");
h++;
}
else
printf("账号或密码错误请重新输入\n");
}while(h!=1);
do
{
print_welcome();
retrn:
printf("请选择对应的字母\n");
printf(" a存款业务 \n");
printf(" b余额查询\n");
printf(" c资金转账\n");
printf(" d取款业务\n");
printf(" e退卡\n");
printf("请选择您要办理的业务\n");
scanf("%c",&p);
getchar();
switch(p)
{
case'a':printf(" 存款业务\n");
printf("**本服务暂停 请重新选择**\n");
break;
case'b':
printf(" 余额查询\n");
printf("**您的余额为 ¥9999999\n请重新选择**\n");
break;
case'c':
printf(" 资金转账\n");
printf("**您的银行卡不支持该业务 请重新选择**\n");
break;
case'd':
printf(" 取款业务\n");
do
{
printf("请选择您要取款的金额\n**请输入序号\n**请您注意每位用户每天只能去20000 每次最多取2500\n");
printf(" r 100\n");
printf(" s 200\n");
printf(" t 500\n");
printf(" u 1000\n");
printf(" v 2000\n");
printf(" w 其他\n");
printf(" x 返回\n");
printf("请选择要取的金额\n");
scanf("%c",&q);
getchar();
switch(q)
{
case'r':printf("**取款成功 金额为100元**");goto retrn;break;
case's':printf("**取款成功 金额为200元**");goto retrn;break;
case't':printf("**取款成功 金额为500元**");goto retrn;break;
case'u':printf("**取款成功 金额为1000元**");goto retrn;break;
case'v':printf("**取款成功 金额为2000元**");goto retrn;break;
case'w':printf("**请输入你想取出的金额**\n**并保证是100的倍数\n");
while(l!=1)
{
scanf("%d",&k);
getchar();
if(k%100==0&&k>=0&&k<=2500)
{
printf("您取出的金额%d元\n",k);
l++;
goto retrn;
}
else
{
printf("您输入的面额有误请重新输入\n");
printf("请您保证为100的倍数\n");
}
}
break;
case'x':goto retrn;break;
default:printf("**操作有误请从新输入**");
j++;
}
}while(j!=1);
break;
case'e':
printf("**欢迎您的使用 请勿忘取卡**\n");
i++;
break;
default:printf("**操作有误请从新输入**\n");
}
}while(i!=1);
print_welcome();
return 0;
}
void print_welcome()
{
printf(" **欢迎使用**\n");
}

⑻ C语言简单模拟ATM柜员机

在取款成功和存款成功后加上这条语句:*p += n;(存款)*p -= n;(取款),这样就改变了price的值了,还有,考虑到程序的健壮性我提一个意见,你的程序很容易出问题,从键盘接受字符你用的是getch,但getch只有在你输入回车之后才会返回你输入的第一个字符,这样问题就来了,如果你输入一个字符串再敲回车会发生什么,自己试试吧,很可能就出问题了,因为你输入的很多字符还在缓存中。。。

⑼ 用C语言写ATM的程序代码要求用循环语句

#include<stdio.h>
int chaxun(int a3)
{
int b;
b=a3;
printf("你的余额为:%d\n",b) ;

}
int qukuan(int a3)
{
int a,b;
printf("请输入您要提取的现金:\n");
scanf("%d",&a);
b=a3-a;
if(b<0)
printf("对不起 ,你的余额不足\n");
else
{
printf("请收好您的%d元现金\n",a);
a3=a3-a;
}
return (a3);
}
int gaini(int a2)
{
int a,b,c=1,d,e=1;
while(e)
{
printf("请输入你的旧密码:\n");
scanf("%d",&d);
if(d==a2)
e=0;
else
{
e=1;
printf("你输入的密码错误,请重新输入:\n");
}
}
while(c)
{
printf("请输入您的六位数新密码\n");
scanf("%d",&a2);
printf("请确认您的六位数新密码\n");
scanf("%d",&b);
if(a2==b)
{
if(b>100000&&b<999999&&b/(b/100000)!=111111)
{
c=0;
printf("密码修改成功\n");
}
else
{
printf("您输入的密码不符合要求,请从新输入\n");
c=1;

}
}
else
{
c=1;
printf("您两次输入的密码不一致,请重新输入:\n");
}

}
return a2;
}
int quka()
{
printf("\n 梦若保保提醒您\n");
printf("请收好您的卡片,谢谢,再见\n\n");
}
int cunkuan(int a3)
{
int i,j,k;
printf("请输入你要存的金额\n");
scanf("%d",&k);
if(k<0)
{
printf("对不起,没有负存款\n");
}
else
{
printf("\n您好,您已经存进去了%d元\n",k);
a3=a3+k;
}
return a3;
}

main()
{
int i,j,b=1,c,k,l,m,n;
int a1=123456,a2=123456,a3=1000;
printf("欢迎使用自动柜员机:\n\n");
while(b==1)
{
printf("请输入您的账号:\n");
scanf("%d",&k);
printf("请输入您的密码:\n");
scanf("%d",&l);
if(k==a1&&l==a2)
{
b=0;
printf("您的账户余额为:%d\n",a3);
}
else
{
b=1;
printf("对不起,您输入的账号或者密码有误,请重新输入:\n");
}
}
do
{
printf("\n请选择您要的服务项目:\n");
printf("1.查询余额\n");
printf("2.取款\n");
printf("3.修改密码\n");
printf("4.取卡\n");
printf("5.存款\n");
scanf("%d",&c);
switch(c)
{
case 1:
chaxun(a3);
break;
case 2:
a3=qukuan(a3);
break;
case 3:
a2=gaini(a2);
break;
case 4:
quka();
break;
case 5:
a3=cunkuan(a3);
break;
}
}while(c!=4);

}

⑽ 用C语言模拟ATM机工作流程编程

#include
"stdio.h"对ATM机器的模拟就是一个对队列的模拟下面代码在VC6环境下调试已经通过了其中有个缺陷就是因为代码执行速度过快导致二次执行根据时间随机出来的数字都是一样的因此你可以自己加上一个延迟子程序部分功能已经注释了#include
"stdlib.h"#include
"time.h"#define
OK
1#define
ERROR
0
typedef
struct
node{
int
number;
struct
node*
next;}*Lnode;
typedef
struct
list{
node
*head,*rear;}*Plist;
//模拟
ATM开业bool
ListInit(Plist
list){
Lnode
p;
p
=
(Lnode)malloc(sizeof(Lnode));
list->head
=
p;
list->rear
=
list->head;
list->head->next
=
NULL;
if(list->head!=NULL)
return
ERROR;
else
return
OK;}
//模拟
有客户排队bool
ListInsert(Plist
list,int
number){
Lnode
p;
p
=
(Lnode)malloc(sizeof(Lnode));
if(p==NULL)
return
ERROR;
else
{
p->number
=
number;
p->next
=
NULL;
list->rear->next
=
p;
list->rear
=
p;
return
OK;
}}
//模拟
客户办完事离开bool
ListDelete(Plist
list){
Lnode
p;
if(list->head
==list->rear)
return
ERROR;
else
{
p
=
list->head->next;
list->head->next
=
p->next;
list->rear
=
list->head;
//
free(p);
return
OK;
}}
void
sand(int*
gettime,int*
needtime){
srand(time(NULL))
;
*gettime
=
rand()%100;
srand(time(NULL))
;
*needtime
=rand()%100;}
//模拟客户到达事件void
CustomerArrived(Plist
list,int
gettime,int
needtime,int
kehu,int
time){
int
nextgettime,nextneedtime;
sand(&nextgettime,&nextneedtime);
while(needtime>0
&&
nextgettime>0
&&
time>0)
{
needtime
--;
nextgettime
--;
time
--;
}
if(nextgettime
==
0
&&
needtime>0
&&time>0)
{
kehu++;
ListInsert(list,kehu);
while(needtime>0
&&
time>0)
{
needtime--;
time
--;
}
ListDelete(list);
CustomerArrived(list,nextgettime,nextneedtime,kehu,time);
}
if(needtime
==0
&&
nextgettime>0
&&
time>0)
{
ListDelete(list);
while(nextgettime>0
&&
time>0)
{
nextgettime--;
time
--;
}
kehu++;
ListInsert(list,kehu);
//未删除
,list未传递进去
CustomerArrived(list,nextgettime,nextneedtime,kehu,time);
}
if(time
==0)
{
printf("ATM关门,请明天在来!\n");
return;
}}
main(){
list
list;
int
i
=
10000;
//ATM机器每天工作时间
int
kehu
=
0;
//客户标号
int
gettime,needtime;
ListInit(&list);
//ATM开业
sand(&gettime,&needtime);
ListInsert(&list,kehu);
CustomerArrived(&list,gettime,needtime,kehu,i);
getchar();
}

热点内容
美人刹脚本 发布:2024-05-10 19:22:00 浏览:894
id中存储和存储为的区别 发布:2024-05-10 19:21:58 浏览:150
linux高级编程pdf 发布:2024-05-10 19:16:56 浏览:304
八四消毒液安卓小伤口有什么反应 发布:2024-05-10 19:07:57 浏览:373
存储卡型号 发布:2024-05-10 19:02:55 浏览:605
监控存储显示休眠状态怎么回事 发布:2024-05-10 18:51:33 浏览:20
安安兔检测怎么检测配置 发布:2024-05-10 18:34:04 浏览:999
九江云服务器哪家公司好 发布:2024-05-10 18:34:03 浏览:854
剑侠情缘手游文件夹 发布:2024-05-10 18:08:10 浏览:898
sqlin排序 发布:2024-05-10 17:59:01 浏览:470