C语言实现自动存取款机模拟系统

本文实例为大家分享了C语言实现自动存取款机模拟系统的具体代码,供大家参考,具体内容如下

/*
    c语言课程设计项目名称:自动存取款机模拟系统
    作者:施瑞文 
    专业:软件工程(商业智能) 
    时间:2018.2.27 
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#include<time.h> 
#define N sizeof(struct Account)
#define M sizeof(struct Money)
struct Account       //账户信息 
{
    char name[10];       //账号昵称 
    char password[18];       //密码 
    struct Account *next;   //指针域 
};
typedef struct Account Acc;
typedef Acc *Accp;
 
struct Money     //钱 
{
    float money;
    char time[10];//时间
    char date[10];//日期 
    struct Money *next;
};
typedef struct Money mon;
typedef mon *monp;
 
//函数声明区 
void HideCursor();          //隐藏光标
void toxy(int x, int y);    //将光标移动到X,Y坐标处
void color(short x);     //设置颜色
void menu();               //菜单 
Accp ff();                 //将文件中的内容读出  
void signin();               //登陆或注册 
void login();                 // 注册账号 
void logon();                  // 账号登陆   
void amend_password();      //修改密码
void add_money();     //存款 
void find_money();   //查询 
void get_money();    //取款
void transfer_money();   //转账
void save_account(Accp p);  //将p所指向的内容存入文件中
void save_money(monp p);     //将p所指向的内容存入文件中 
float Sum();          //求余额 
void over();                  //退出系统  
void list();   //账单明细 
monp ss();
 
 
char _name[20],_password[18];       //全局变量记住当前登陆账户 
 
void color(short x)
{
    if(x>=0&&x<=15)
    {
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x);
    }
    else
    {
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x);
    }
} 
 
void HideCursor()     //隐藏光标
{
 CONSOLE_CURSOR_INFO cursor_info = {1, 0}; 
 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
 
void toxy(int x, int y)      //将光标移动到X,Y坐标处
{
COORD pos = { x , y };
HANDLE Out = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(Out, pos); 
}
 
Accp ff()               //将存账号的文件里的内容输出到链表中
{
    FILE *fp;       //文件指针 
    int n=0;
    Accp head=NULL;
    Accp p2,p;
    fp=fopen("account","a+");     //以只读的方式打开文件 
    if(fp==NULL)
    {
        printf("cannot open file\n");
    }
    else
    {
        while(!feof(fp))        //判断文件位置标志是否移动到文件末尾 
        {
           n++;
               p=(Accp)malloc(N); //向内存申请一段空间 
           fread(p,N,1,fp);     //将fp所指向的文件中的内容赋给p 
           if(n==1)
           {
              head=p;
              p2=p;
            }
            else             //创建链表 
            {
                p2->next=p;
                p2=p;
            }
        }
        p2->next=NULL;
    }
    fclose(fp);    //关闭文件 
    return head;   //返回头指针 
}
 
void menu()     //菜单 
{
    system("cls");    //清屏  
    do{
        color(14);     //看着舒服的颜色
        char t;
        toxy(50,5);
        printf(" 自动存取款机模拟系统");
        toxy(50,6);
        printf("当前账户为:%s",_name);
        toxy(48,8);
        printf("|     1.取款          |");
        toxy(48,10);
        printf("|     2.转账          |");
        toxy(48,12);
        printf("|     3.余额          |");
        toxy(48,14);
        printf("|     4.明细          |");
        toxy(48,16);
        printf("|     5.存款          |");
        toxy(48,18);
        printf("|     6.修改密码      |"); 
        toxy(48,20);
        printf("|     7.退出系统      |");
        t=getch();                    //利用不回显函数,输入t,可以不用手动按回车键 
        switch(t)
        {
            case '1':get_money();break; 
            case '2':transfer_money();break;
            case '3':find_money();break;
            case '4':list();break; 
            case '5':add_money();break;
            case '6':amend_password();break;
            case '7':over();break;
            default :;break;
        }
    }while(1);       //永远为真 
}
 
void signin()       //登陆或注册 
{
    system("cls");
    color(12); 
    HideCursor();    //隐藏光标
    char t;
    toxy(50,5);
    printf("自动存取款机模拟系统");
    toxy(44,8);
    printf("----------------------------");
    toxy(45,10);
    printf("请输入(1:登陆;2:注册.)");
    toxy(44,12);
    printf("----------------------------");
    while(1)
    {
        t=getch();
        switch(t)
        {
            case '1':logon();break;
            case '2':login();break;
            default :break;
        }
    }
}
 
void logon()      // 账号登陆 
{ 
    system("cls");   //清屏 
    color(10);     //设置颜色 
    Accp p,head;    
    head=ff();    //调用函数 ,返回值为头结点的指针 
    do{
        p=head;
        char t,c,k;
        int i=0;;
        toxy(50,5);
        printf("自动存取款机模拟系统");
        toxy(45,6);
        printf("***************************");
        toxy(45,8);
        printf("     登陆状态       ");
        toxy(45,10);
        printf("*  请输入您的账号:");
        gets(_name);
        toxy(45,12);
        printf("*  请输入您的密码:");
        for(;;)              //此处为输入密码不回显操作 
        {
            k=getch();       //输入k 
            if(k=='\r')      //如果输入k为回车,则跳出循环 
            {
                break;
            }
            else if(k=='\b')  //如果输入k为删除键 
            {
                if(i>0)       //如若密码还没完全删除 
                {
                    printf("\b");
                    printf(" ");
                    printf("\b");
                    i--;
                }
            }
            else              //如果输入的k既不是删除键,也不是回车键 
            {
                _password[i]=k;   //把k的值赋给_password[i]; 
                printf("*");      //输出*号,保护用户隐私 
                i++;              //密码位数加1 
            }
        }
        _password[i]='\0';
        while(p!=NULL&&strcmp(p->name,_name)!=0)   //遍历链表,寻找当前输入的账户的账号 
        {
            p=p->next;
        }
        if(p!=NULL)   //如果p不为空 
        {
            if(strcmp(p->password,_password)==0)     //如果输入的密码正确 
            {
                toxy(48,16);
                printf("正在登陆....");
                Sleep(500);      //暂停0.5秒
                system("cls");
                color(10);
                toxy(48,10);
                printf("登陆成功!");
                break;    //跳出循环
            }
            else      //如果输入的密码错误
            { 
                toxy(48,16);
                printf("正在登陆....");
                Sleep(500);
                system("cls");
                color(10);
                toxy(46,8);
                printf("-------------------------");
                toxy(46,9);
                printf("|                       |");
                toxy(46,10);
                printf("| 密码错误!是否继续?  |");
                toxy(46,12);
                printf("| 1.是             2.否 |");
                toxy(46,13);
                printf("|                       |");
                toxy(46,14);
                printf("-------------------------");
                while(1)
                {
                    t=getch();  //输入t    
                    if(t=='1')          
                    {
                        system("cls");  //清屏 
                        color(10); 
                        break;
                    }
                    else if(t=='2')     //如果输入t为n,进入开始界面 
                    {
                        signin();break;
                    }
                }
            } 
       }
       else              //如果p为空,即输入的账号不正确 
       {
               toxy(48,16);
               printf("正在登陆....");
               Sleep(500);
               system("cls");
               color(10);
               toxy(46,8);
               printf("-------------------------");
               toxy(46,9);
               printf("|                       |");
               toxy(46,10);
            printf("|  账号错误!是否继续? |");
            toxy(46,11);
            printf("|                       |");
            toxy(46,12);
            printf("|  1.是            2.否 |"); 
            toxy(46,13);
            printf("|                       |");
            toxy(46,14);
            printf("-------------------------");
            while(1)      //死循环防止其他按键干扰 
            {
                c=getch();
                if(c=='1')
                {  
                    system("cls");
                    color(10);
                    break;
                }
                else if(c=='2')
                {
                    signin();break;
                }
            }
       }
    }while(1);      //永远为真 
   Sleep(500);      //暂停0.5秒 
   menu();         //账号密码均正确,进入主菜单 
}
 
void login()        //注册账号 
{
    
    system("cls");
    color(10); 
    Accp p1;
    p1=(Accp)malloc(N);     //向内存申请一段空间 
    do{
        color(10);
        char name[20],password[18],againpassword[18],c,k;
        int i=0;; 
        toxy(50,5);
        printf("自动存取款机模拟系统");
        toxy(45,6);
        printf("**************************");
        toxy(45,8);
        printf("   正在注册");
        toxy(45,10);
        printf("*  请输入账号:");
        gets(name);
        toxy(45,12);
        printf("*  请输入密码:");
        for(;;)              //此处为输入密码不回显操作 
        {
            k=getch();       //输入k 
            if(k=='\r')      //如果输入k为回车,则跳出循环 
            {
                break;
            }
            else if(k=='\b')  //如果输入k为删除键 
            {
                if(i>0)       //如若密码还没完全删除 
                {
                    printf("\b");
                    printf(" ");
                    printf("\b");
                    i--;
                }
            }
            else              //如果输入的k既不是删除键,也不是回车键 
            {
                password[i]=k;   //把k的值赋给_password[i]; 
                printf("*");      //输出*号,保护用户隐私 
                i++;              //密码位数加1 
            }
        }
        password[i]='\0';
        i=0;
        toxy(45,14);
        printf("*  请确认您的密码:");
        for(;;)              //此处为输入密码不回显操作 
        {
            k=getch();       //输入k 
            if(k=='\r')      //如果输入k为回车,则跳出循环 
            {
                break;
            }
            else if(k=='\b')  //如果输入k为删除键 
            {
                if(i>0)       //如若密码还没完全删除 
                {
                    printf("\b");
                    printf(" ");
                    printf("\b");
                    i--;
                }
            }
            else              //如果输入的k既不是删除键,也不是回车键 
            {
                againpassword[i]=k;   //把k的值赋给_password[i]; 
                printf("*");      //输出*号,保护用户隐私 
                i++;              //密码位数加1 
            }
        }
        againpassword[i]='\0';
        if(strcmp(password,againpassword)==0)        //如果输入的两次密码均正确 
        {
            strcpy(p1->name,name);
            strcpy(p1->password,password);
            toxy(48,16);
            printf("正在注册....");
            Sleep(500);
            system("cls");
            color(12);
            toxy(48,10);
            printf("注册成功!");
            Sleep(500);         //暂停0.5秒 
            break;              //跳出循环 
        }
        else    //如果输入的两次密码不同 
        {
            toxy(48,16);
            printf("正在注册....");
            Sleep(500);
            system("cls");
            color(12);
            toxy(46,8);
            printf("-----------------------------");
            toxy(46,9);
            printf("|                           |");
            toxy(46,10);
            printf("|  注册失败!是否继续注册? |");
            toxy(46,11);
            printf("|                           |");
            toxy(46,12);
            printf("|  1.是               2.否  |"); 
            toxy(46,13);
            printf("|                           |");
            toxy(46,14);
            printf("-----------------------------");
            while(1)
            {
                c=getch();
                if(c=='1')
                {
                    system("cls");
                    color(12);
                    break;
                }
                else if(c=='2')
                {
                    signin();
                    break;
                }
            }
        }
    }while(1);    //永远为真 
    save_account(p1);     //调用函数,将p1所指向的内容存储到文件中 
    toxy(48,12);
    printf("正在自动为您登陆....");
    Sleep(500);
    menu();    //注册成功后进入主菜单 
}
 
 
/*修改密码
方法比较笨,这里是先将储存在文件中的账户信息
输出在一个链表中,遍历链表,寻找当前登陆的账户账号,修改该节点的p->password,
再将修改后的链表存到文件中,需要注意的是修改之后再存到文件中需要将该文件中的内容
清空*/ 
void amend_password()        //修改密码 
{ 
    system("cls");         //清屏 
    color(14);    //看着舒服的颜色 
    HideCursor();  
    Accp p,head;       //隐藏光标,看着更舒服 
    head=ff();
    FILE *fp;
    do
    {
        color(14);
        HideCursor();       //隐藏光标,看着舒服 
        p=head;
        char password[18],newpassword[18],t,k;
        int i=0;
        toxy(50,5);          //将光标移动到坐标为(50,5)的位置 
        printf("自动存取款机模拟系统");
        toxy(50,8);
        printf("修改密码");
        toxy(48,10);
        printf("请输入旧密码:");
        for(;;)              //此处为输入密码不回显操作 
        {
            k=getch();       //输入k 
            if(k=='\r')      //如果输入k为回车,则跳出循环 
            {
                break;
            }
            else if(k=='\b')  //如果输入k为删除键 
            {
                if(i>0)       //如若密码还没完全删除 
                {
                    printf("\b");
                    printf(" ");
                    printf("\b");
                    i--;
                }
            }
            else              //如果输入的k既不是删除键,也不是回车键 
            {
                password[i]=k;   //把k的值赋给_password[i]; 
                printf("*");      //输出*号,保护用户隐私 
                i++;              //密码位数加1 
            }
        }
        password[i]='\0';
        i=0;
        toxy(48,12);
        printf("请输入新密码:");
        for(;;)              //此处为输入密码不回显操作 
        {
            k=getch();       //输入k 
            if(k=='\r')      //如果输入k为回车,则跳出循环 
            {
                break;
            }
            else if(k=='\b')  //如果输入k为删除键 
            {
                if(i>0)       //如若密码还没完全删除 
                {
                    printf("\b");
                    printf(" ");
                    printf("\b");
                    i--;
                }
            }
            else              //如果输入的k既不是删除键,也不是回车键 
            {
                newpassword[i]=k;   //把k的值赋给_password[i]; 
                printf("*");      //输出*号,保护用户隐私 
                i++;              //密码位数加1 
            }
        }
        newpassword[i]='\0';
        while(p!=NULL&&strcmp(p->name,_name)!=0)//遍历链表,寻找当前登陆账户的账号 
        {
            p=p->next;
        }
        if(p!=NULL)                   //如果p不为空 
        {
            if(strcmp(p->password,password)==0)          //如果旧密码输入正确 
            {
                strcpy(p->password,newpassword);         //将旧密码改为新密码 
                break;                                   //跳出循环 
            }
            else                                         //如果旧密码输入错误 
            {
                system("cls");
                color(12);
                toxy(46,8);
                printf("--------------------------");
                toxy(46,9);
                printf("|                        |");
                toxy(46,10);
                printf("|  密码错误!是否继续?  |");
                toxy(46,11);
                printf("|                        |");
                toxy(46,12);
                printf("|  1.是           2.否   |");
                toxy(46,13);
                printf("|                        |");
                toxy(46,14);
                printf("--------------------------");
                while(1)
                {
                    t=getch();                              //输入t 
                    if(t=='1')
                    {
                        system("cls");
                        color(12);
                        break;
                    }
                    else if(t=='2')
                      menu();
                }
            }
        }
    }while(1);                                //永远为真 
    p=head->next;                           //使p指向第二个结点 
    fp=fopen("account","w");                  //先清空原文件内容再将修改后的信息写入文件 
    if(fp==NULL)
    {
        printf("cannot open file\n");
    }
    if(fwrite(head,N,1,fp)!=1)                 //将head所指向的数据写入fp所指向的文件 
    {
        printf("file write error\n");
    }
    fclose(fp);                         //关闭文件 
    fp=fopen("account","a");          // 打开account文件,方式为追加 
    while(p!=NULL)                    //p不为空就执行循环体 
    {
        if(fwrite(p,N,1,fp)!=1)            //将p所指向的1个大小为N的数据结构写入fp所指向的文件 
        {
        printf("file write error\n");
        }
        p=p->next;                     //使p指向下一个结点 
    }
    fclose(fp);              //关闭文件 
    toxy(48,14);
    printf("修改成功!正在跳转...");
    Sleep(500);       //暂停0.5秒 
}
 
 
void save_account(Accp p1)     //将p1所指向的内容存储到文件中 
{
    FILE *fp;       //文件指针 
    fp=fopen("account","a");    //以追加的方式打开文件 
    if(fp==NULL)
    {
        printf("cannot open file\n");
    }
    if(fwrite(p1,N,1,fp)!=1)    //将p1所指向的1个大小为N的数据结构写入fp所指向的文件中 
    {
        printf("file write error\n");
    }
    fclose(fp);        //关闭文件 
}
 
void add_money()       //存款 
{
    do
    {
        system("cls");   //清屏 
        color(11);
        monp p;
        char t; 
        char time[10],date[10];
        p=(monp)malloc(M);   //向内存申请一段空间 
        toxy(48,8);
        printf("请输入您需要存入的金额:");
        scanf("%f",&p->money);
        getchar(); //吸收回车键 
        _tzset(); 
        _strtime(time);      
        strcpy(p->time,time);
        _strdate(date);
        strcpy(p->date,date);   
        toxy(48,10);
        printf("正在操作,请稍后....");
        Sleep(500);
        save_money(p);
        system("cls");
        toxy(46,8);
        printf("-------------------------");
        toxy(46,9);
        printf("|                       |");
        toxy(46,10);
        printf("| 存入成功!是否继续?  |");
        toxy(46,12);
        printf("| 1.是             2.否 |");
        toxy(46,13);
        printf("|                       |");
        toxy(46,14);
        printf("-------------------------");
        while(1)
        {
            t=getch();
            if(t=='1')
            {
                break;
            }
            else if(t=='2')
            {
                menu();
            }
        }
    }while(1);
}
 
void find_money()     //查询余额 
{
    system("cls");
    color(13);
    float sum=0;
    sum=Sum();
    toxy(46,12);
    printf("余额为:%f",sum);
    toxy(46,16);
    printf("按任意键回到主菜单");
    getch();
    menu(); 
}
 
void get_money()      //取款 
{
    do
    {
        system("cls");
        color(11);
        monp p;
        float money,sum;
        char t;
        char time[10],date[10];
        toxy(46,12);
        printf("请输入您要取的金额:");
        scanf("%f",&money); 
        getchar();//吸收回车键 
        sum=Sum();
        if(money>sum)   //如果要取的金额大于余额 
        {
            toxy(46,14);
            printf("余额不足,请重新输入!");
            Sleep(500);
            continue;    //结束本次循环 
        }
        p=(monp)malloc(M);    //向内存申请一段空间 
        _tzset(); 
        _strtime(time);      
        strcpy(p->time,time);
        _strdate(date);
        strcpy(p->date,date);  
        p->money=-money;
        save_money(p);      
        toxy(46,14);
        printf("正在操作,请稍后....");
        Sleep(500);
        system("cls");
        toxy(46,8);
        printf("-------------------------");
        toxy(46,9);
        printf("|                       |");
        toxy(46,10);
        printf("| 取款成功!是否继续?  |");
        toxy(46,12);
        printf("| 1.是             2.否 |");
        toxy(46,13);
        printf("|                       |");
        toxy(46,14);
        printf("-------------------------");
        while(1)
        {
            t=getch();
            if(t=='1')
            {
                break;
            }
            else if(t=='2')
            {
                menu();break;
            }
        }
    }while(1);
    
}
 
void list()  //明细 
{
    system("cls");
    color(10);
    monp head,p;
    int i=10;
    head=ss();
    p=head;
    toxy(50,5);
    printf(" 自动存取款机模拟系统");
    toxy(54,6);
    printf("账单明细");
    toxy(30,7);
    printf("-------------------------------------------------------------");
    toxy(31,8);
    printf("金       额              时       间             日      期");
    toxy(30,9);
    printf("-------------------------------------------------------------");
    while(p!=NULL)
    {
        toxy(30,i);
        if(p->money>=0)
        {
            printf("+%f                %-24s%s",p->money,p->time,p->date);
        }
        else
        {
            printf("%f                %-24s%s",p->money,p->time,p->date);
        }
        p=p->next;
        i++;
    }
    toxy(50,i);
    printf("请按任意键返回主菜单");
    getch();
    menu();
}
 
void transfer_money()     //转账 
{
    do
    {
        system("cls");
        color(10);
        FILE *fp1;
        monp p,head,p1;
        float money,sum=0;
        char name[20],t;
        char time[10],date[10];
        toxy(46,12);
        printf("请输入您要转入的账号:");
        gets(name);
        toxy(46,14);
        printf("请输入您要转出的金额:");
        scanf("%f",&money);
        getchar();   //吸收回车键 
        sum=Sum();
        if(money>sum)   //如果要转出的金额大于余额 
        {
            toxy(46,16);
            printf("余额不足!");
            Sleep(500);
            continue;   //结束本次循环 
         } 
        fp1=fopen(name,"rb");    //以只读的方式打开名字为name的二进制文件  
        if(fp1==NULL)    //如果文件不存在 
        {
            toxy(46,16);
            printf("账户不存在!");
            fclose(fp1);
            Sleep(500);
            continue;
        }
        fp1=fopen(name,"ab");    //以追加的方式打开名字为name的二进制文件  
        p=(monp)malloc(M);  //向内存申请一段空间 
        p->money=-money;
        _tzset(); 
        _strtime(time);      
        strcpy(p->time,time);
        _strdate(date);
        strcpy(p->date,date);  
        save_money(p);
        p1=(monp)malloc(M);
        p1->money=money;
        strcpy(p1->time,time);
        strcpy(p1->date,date);
        if(fwrite(p1,M,1,fp1)!=1)    //将p1所指向的一个大小为M的节点 存入fp1所指向的文件中 
        {
            printf("转账失败,请重试!");
            continue;
        }
        fclose(fp1);
        toxy(46,18);
        printf("正在操作,请稍后....");
        Sleep(500);
        system("cls");
        toxy(46,8);
        printf("-------------------------");
        toxy(46,9);
        printf("|                       |");
        toxy(46,10);
        printf("| 转账成功!是否继续?  |");
        toxy(46,12);
        printf("| 1.是             2.否 |");
        toxy(46,13);
        printf("|                       |");
        toxy(46,14);
        printf("-------------------------");
        while(1)
        {
            t=getch();
            if(t=='1')
            {
                break;
            }
            else if(t=='2')
            {
                menu(); 
            }
        }
 
    }while(1);
}
 
float Sum()
{
    monp head=NULL,p;
    float sum=0;
    head=ss();
    p=head;
    while(p!=NULL)
    {
        sum+=p->money;    //求和 
        p=p->next;
    }
    if(head==NULL)
        sum=0;
    return sum;
}
 
monp ss()    //求余额 
{
    FILE *fp;   //文件指针 
    monp p,head=NULL,p2,pre=NULL;
    int n=0;
    //float sum=0;
    fp=fopen(_name,"ab+");   //以只读的方式打开名字为_name的二进制文件 
    if(fp==NULL)
    {
        printf("cannot open file");
    }
    else
    {
        while(!feof(fp))  //判断标记是否移动到文件末尾 
        {
            n++;
            p=(monp)malloc(M);   //向内存申请一段空间 
            fread(p,M,1,fp);     //将fp所指向的文件中的一段大小为M的 内容赋给p 
            if(n==1)
            {
                head=p;
                p2=p;
            }
            else                //创建链表 
            {
                pre=p2;
                p2->next=p;
                p2=p;
            }
            p2->next=NULL;
        }
    }
    fclose(fp);     //关闭文件 
    if(pre!=NULL)
        pre->next=NULL;
    return(head);    //返回sum值 
}
 
void save_money(monp p)    //将p所指向的内容存入文件中 
{
    FILE *fp;    //文件指针 
    fp=fopen(_name,"ab");   //以追加的方式打开名字为_name的二进制文件 
    if(fp==NULL)
    {
        printf("cannot open file");
    }
    if(fwrite(p,M,1,fp)!=1)   //将p所指向的一段大小为M的内容存入fp所指向的文件中 
    {
        printf("write error");
    }
    fclose(fp);    //关闭文件  
}
 
void over()       //退出软件 
{
    char t;
    toxy(48,11);
    printf("-----------------------");
    toxy(48,12);
    printf("|   您确定要退出吗?  |");
    toxy(48,14);
    printf("| 1.确定     2.取消   |");
    toxy(48,15);
    printf("-----------------------");
    while(1)
    {
        t=getch();         //输入t
        switch(t)
        {
            case '1':
            system("cls");
            color(6);
            toxy(48,10);
            printf("正在安全退出....");
            Sleep(1000);     //暂停1秒 
            system("cls");
            color(8);
            toxy(48,10);
            printf("已安全退出软件");
            toxy(48,12);
            printf("谢谢使用!");
            toxy(48,14);
            printf("by-by^_^");
            exit(0);  break; //终止程序 
            case '2':
            menu(); break;   //调用函数,进入菜单 
            default :break;
        }
    }
}
 
main()    //简洁明了的主函数~~~ 
{
    signin();   //调用函数 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C语言编程银行ATM存取款系统实现源码

    目录 一.课程设计的目的 二.课程设计的题目 三.设计内容 银行ATM存取款系统 实现的效果 源码 业务流程 1.用户开户 2.登录流程 3.密码修改 这里使用的运行工具是DEV C++.老铁们一定要看仔细了.是DEV C++ 仅供借鉴:这个是大一时期写的.大四的时候整理了一下(本人C语言学的也不太好).肯定很多不足和存在漏洞的地方.仅供借鉴.仅供借鉴. 一.课程设计的目的 掌握C语言程序设计的基础知识.基本理论.原理和实现技术. 二.课程设计的题目 银行ATM存取款系统 三.设计内容 (主要技

  • C语言简单实现银行ATM存取款功能

    这里使用的运行工具是DEV C++.老铁们一定要看仔细了.是DEV C++ 一.课程设计的目的 掌握C语言程序设计的基础知识.基本理论.原理和实现技术. 二.课程设计的题目 银行ATM存取款系统 三.设计内容(主要技术关键的分析.解决思路和方案比较等) 银行ATM存取款系统 银行ATM存取款系统业务描述如下: 银行ATM存取款系统能为用户提供存款.取款.查询.转账和修改密码的功能.为了模拟真实的ATM业务环境,本系统必须实现存款.取款.查询.转账.修改密码以及开户的功能.用户通过开户业务在本系统

  • C语言实现ATM机存取款系统

    本文实例为大家分享了C语言实现ATM机存取款系统的具体代码,供大家参考,具体内容如下 利用结构体和构造函数并且采用输入输出文件实现ATM机系统. 主要功能有: 利用三种方法查询.开户.登陆.菜单.取款.修改密码.存款.转账.创建个人信息.输出.删除.增加.退出. 是一个功能齐全,完备的ATM机系统. #include<stdio.h> #include<string.h> #include<stdlib.h> struct per //定义结构体 { char name

  • C语言实现自动存取款机模拟系统

    本文实例为大家分享了C语言实现自动存取款机模拟系统的具体代码,供大家参考,具体内容如下 /*     c语言课程设计项目名称:自动存取款机模拟系统     作者:施瑞文      专业:软件工程(商业智能)      时间:2018.2.27  */ #include<stdio.h> #include<string.h> #include<stdlib.h> #include<conio.h> #include<windows.h> #incl

  • Python模拟自动存取款机的查询、存取款、修改密码等操作

    1.工作流程 2.模拟自动存取款机的操作 代码如下: import msvcrt, sys, os #定义用星号隐藏密码输入的函数 def psw_input(): li = [] while True: ch = msvcrt.getch() #回车 if ch == b'\r': msvcrt.putch(b'\n') break #退格 elif ch == b'\x08': if li: li.pop() msvcrt.putch(b'\b') msvcrt.putch(b' ') ms

  • Java详解实现ATM机模拟系统

    目录 一.概述 二.程序概要设计 三.程序详细设计 四.程序演示 一.概述 (1)选题分析 (2) 开发环境 开发环境,选择IDEA这一Java开发软件,基于JDK1.8版本,在本机window上开发本ATM模拟程序. 二.程序概要设计 (1) 功能模块设计 经过对题目的分析,把本ATM模拟程序分为管理员端和用户模式两大模块.其中,管理员具有查询所有账户.导出所有账户信息到文件.注销功能.用户模块具有查询余额.ATM转账.ATM存款.ATM取款.修改密码.查询交易记录.导出记录.退卡等功能. 系

  • 约瑟夫问题的Python和C++求解方法

    么是约瑟夫问题? 约瑟夫问题是一个有趣的数学游戏,游戏规则如下: 1.N个人围成一个圈,编号从1开始,依次到N. 2.编号为M的游戏参与者开始报数,报数从1开始,后面的人报数接龙,直到K为止,报数为K的人将出局. 3.出局者的下一个玩家接着从1开始报数,如此循环,直到剩下一个玩家时游戏结束,这个玩家就是游戏获胜者. 那么问题来了,哪个编号是游戏获胜者呢? 下面通过简单的几行python代码来解决这个问题: #!/usr/bin/env python # Joseph Problem def jo

  • Node.js开发之访问Redis数据库教程

    大家要记住,Node.js主要用于构建高性能.高可伸缩性的服务器和客户端应用,它面向的是"实时Web". Node.js的目标是提供一个"以简单的方式构建可扩展的网络服务器",它受到来自Ruby语言的事件机(Event Machine)和来自Python的Twisted框架的影响. Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由

  • 实战操作易语言机读文本软件

    在我们使用易语言过程中,有些时候我们需要使用机读文本,比如在弹出错误图标的信息框时,使机器读出"错误",能显得软件更加高级.今天我来带大家学习一下机读文本,希望能对大家有所帮助. 首先打开易语言,新建一个Windows窗口程序. 2.在左侧支持库中找到"文本语音支持库",阅读帮助. 3.然后拖动标签,编辑框和两个按钮,将编辑框的是否允许多行设置为真,滚动条为纵向滚动条,页面如下图所示. 1.机读文本 双击启动窗口和两个按钮,新建一个数据类型为"机读文本&q

  • 易语言写带注册功能的软件和注册机方法

    软件注册是对软件著作权的保护,也是对作者劳动成果的肯定,易语言作为编程软件也是可以写出这样的软件的,下面简单的介绍 打开易语言,新建一个Windows窗口程序,在窗口中添加两个编辑框和一个按钮,如图所示,自行改一下控制的名称 双击窗口,在启动窗口启动事件下添加以下代码:编辑框机器码.内容 = 到文本 (取硬盘特征字 ())双击窗口,在启动窗口启动事件下添加以下代码:编辑框机器码.内容 = 到文本 (取硬盘特征字 ()) 在按键被单击事件下,添加以下代码,特征字部分可以自行加密的更复杂 .版本 2

  • 易语言调用百度的真相问答制作真相问答机的代码

    全局变量表 .版本 2 .全局变量 源文件, 文本型 .全局变量 答案, 文本型 常量数据表 .版本 2 .常量 常量1, "<文本长度: 9>", , -middle"> .常量 常量2, "<文本长度: 7>", , </span> .常量 常量3, "<文本长度: 7>", , proof"> .常量 常量4, "<文本长度: 7>&quo

  • C语言编写获取Linux本地目录及本机信息的小程序实例

    展示目录的小程序 展示指定目录的小程序: #include <unistd.h> #include <stdio.h> #include <dirent.h> #include <string.h> #include <sys/stat.h> #include <stdlib.h> void printdir(char *dir,int depth){ DIR *dp; struct dirent *entry; struct sta

随机推荐