真正的ATM系统不可能只是用C语言编写的,它应该是一套完整独立的系统,核心代码更机密,不会轻易的泄露。
C语言可以写一个类似于ATM系统的框架,用以模拟ATM机上的各种 *** 作。
框架代码如下:
#include<iostream.h>#include<stdio.h>
int main()
{
int choice =- 1
while(1) {
printf("请选择\n1.login\t2.regist\n")
scanf("%d", &choice)
switch(choice) {
case 1:
login()
break
case 2:
regist()
break
default:
printf("输入有误,重新输入\n")
break
}
}
return 0
}
void login() {
printf("IN LOGIN\n")
int flag = -1
int X = -1
printf("输入账户和密码\n")
flag = search()
if(falg == 1) {
printf("存在,进入主页面\n")
X = menu()
if(X == 1)
return
}
else if(flag == 0) {
printf("账户或密码错误\n")
return
}
}
int regist() {
printf("IN REGIST\n")
return 1
}
int menu() {
printf("IN MENU\n")
int key = -1
int N = -1
while(1) {
printf("请选择业务:1.refer\t2.deposit\t3.withdraw\t4.transfer\t5.resetPW\t6.退出\n")
scanf("%d", &key)
switch(key) {
case 1:
N = refer()
break
case 2:
N = deposit()
break
case 3:
N = withdraw()
break
case 4:
N = transfer()
break
case 5:
N = resetPW()
break
case 6:
N = 6
return 1
break
default:
printf("输入有误,重新选择:\n")
break
}
if(N%2 == 0) {
printf("Error!\n")
}
}
}
int refer() {
printf("IN REFER\n")
//输出余额
return 1
}
int deposit() {
printf("IN DEPOSIT\n")
//存钱
return 3
}
int withdraw() {
printf("IN WITHDRAW\n")
//取钱
return 5
}
int transfer() {
ptintf("IN TRANSFER\n")
//转账
return 7
}
int resetPW() {
prtintf("IN RESETPW\n")
//重设密码
return 9
}
#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("**您的yhk不支持该业务 请重新选择**\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 retrnbreak
case's':printf("**取款成功 金额为200元**")goto retrnbreak
case't':printf("**取款成功 金额为500元**")goto retrnbreak
case'u':printf("**取款成功 金额为1000元**")goto retrnbreak
case'v':printf("**取款成功 金额为2000元**")goto retrnbreak
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 retrnbreak
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")
}
#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()
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)