怎样用c语言编写ATM系统

怎样用c语言编写ATM系统,第1张

真正的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()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/6054988.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-13
下一篇 2023-03-13

发表评论

登录后才能评论

评论列表(0条)

保存