实训项目-银行储蓄业务管理系统2015/07/15

<pre name="code" class="cpp">温馨提示:亲爱的学弟学妹,复制时别忘把名字改掉。
</pre><pre name="code" class="cpp">/*
**作者:孙铭
**项目名称:银行储蓄业务管理系统
**实现功能:实现银行对用户账户的操作
**日期:2015/07/15
*/

#include <iostream>
#include <stdio.h>
#include <cstdio>
#include <cstring>
#include <windows.h>
#include <cmath>
#include <cstdlib>
#include <algorithm>

using namespace std;

struct node             //定义结构体
{
    char  ID[19];       //用户编号
    char name[64];      //用户名
    char PWD[18];       //用户密码
    float money;        //用户的金额
    int status;         //用户的状态  1:正常 0:冻结
} User[60],New_user;    //最多开60个户

int Total = 0;          //记录用户总数
int pos;                //记录用户位置


/*********管理员*************/
void Start();//管理员登录
void Administrator();//管理员


/**********功能函数**********/
void Save_Money();          //存款
void TakeMoney();           //取款
void Query();               //查询函数
void Creat_Administrator(); //开户
void Move_money();          //转账
void CloseAnAccount();      //销户
void LoseCard();            //挂失
void OpenCard();            //解挂
void Change_password();     //修改密码

/**********界面设计**************/
void Welcome();                  //欢迎界面
void welcome_star();             //开始界面
void CloseAnAccount_show();      //销户
void Save_Money_show();          //存款界面
void TakeMoney_show();           //取款界面
void Query_show();               //查询界面
void Creat_Administrator_show(); //开户界面
void Move_money_show();          //转账界面
void LoseCard_show();            //挂失界面
void OpenCard_show();            //解挂界面
void Change_password_show();     //修改密码界面

/**********判断函数************/
bool User_Log();                 //检验用户登录
bool User_Judge(char s[]);       //判断用户位置的函数
bool Username_Judge(char s[]);   //检验用户名中的非法字符
bool Money_Judge(float n);       //检验小数点后是否为4位

/**********变量转化操作************/
float Money_Trans(char s);       //将字符型数据转化成浮点型

/**********文件操作************/
void Write_Data();               //存入文件
void Read_Data();                //从文件读出



/*************************************************
  Function:       主函数
  Description:    修改程序界面的颜色,尺寸,以及
                  开始运行程序。
  Calls:          Start()
  Called By:      无
  Input:          无
  Output:         无
*************************************************/
int main()
{
    system("color 1f");
    system("mode con: cols=80 lines=80");

    while(1)
    {
        Start();
    }
    return 0;
}


/*************************************************
  Function:       Start()
  Description:    管理员登陆函数
  Calls:          Administrator()
  Called By:      main()
  Input:          无
  Output:         无
*************************************************/
void Start()
{
    printf("\t正在进入,请稍后。。。。\n");
    printf("\t");
    for(int i=0; i<10; i++)
    {
        printf("██");
        Sleep(50);
    }

    system("CLS");
    Welcome();
    int ant = 0;
    while(1)
    {
        char str[6],pwd[6];

        printf("请输入管理员名:");
        scanf("%s",str);

        printf("请输入管理员密码:");
        scanf("%s",pwd);

        if(!strcmp(str,"admin") && !strcmp(str,"admin"))
        {
            Read_Data();
            printf("\t正在进入,请稍后。。。。\n");
            printf("\t");
            for(int i=0; i<10; i++)
            {
                printf("██");
                Sleep(50);
            }
            Administrator();
        }
        else
        {
            ant++;
            if(ant<3)
                printf("\n用户名或密码输入错误,请重新输入.\n");
            else
            {
                printf("\n用户密码输入错误3次,退出系统!\n");
                exit(0);
            }
        }
    }
}

/*************************************************
  Function:       Administrator()
  Description:    管理员操作界面
  Calls:          Administrator()
  Called By:     Save_Money(); TakeMoney();Query();Creat_Administrator();CloseAnAccount(); Move_money(); LoseCard();OpenCard();Change_password();Start();
  Input:          无
  Output:         无
*************************************************/
void Administrator()
{
    system("CLS");
    welcome_star();

    char ch;
    getchar();
    printf("\t请输入您的选择:");
    while(~scanf("%c",&ch))
    {
        if((ch >= '0' && ch <='9') || ch == 'n' || ch == 'N')
        {
            switch(ch)
            {
            case '0':
                exit(0);                //退出
                break;
            case '1':
                Save_Money();           //存款
                break;
            case '2':
                TakeMoney();            //取款
                break;
            case '3':
                Query();                //查询
                break;
            case '4':
                Creat_Administrator();  //开户
                break;
            case '5':
                CloseAnAccount();       //销户
                break;
            case '6':
                Move_money();           //转账
                break;
            case '7':
                LoseCard();             //挂失
                break;
            case '8':
                OpenCard();             //解挂
                break;
            case '9':
                Change_password();      //修改密码
                break;
            case 'n':
                Start();                //注销
                break;
            case 'N':
                Start();                //注销
                break;
            default:
                break;
            }
        }
        else
        {
            cout<<"\t非法输入,请重试!!"<<endl;
        }
        getchar();
        cout<<"\t请输入您的选择:";
    }
}

/*************************************************
  Function:       User_Log()
  Description:    检验用户的合法性
  Calls:          无
  Called By:      CloseAnAccount();TakeMoney();Save_Money();
                  OpenCard();Move_money();LoseCard();OpenCard();
  Input:          无
  Output:         无
  Return:         合法:true 非法:false
*************************************************/
bool User_Log()
{
    char str[19],pwd[13];
    while(1)
    {
        cout<<"\t请输入您的ID(只能包含6位,不包含特殊字符):";
        cin>>str;
        if(strlen(str)!=6 || Username_Judge(str) == false)
        {
            printf("\n\t输入格式错误,请重新输入 ");
            cin>>str;
        }
        cout<<endl;
        cout<<"\t请输入您的6位数密码: ";
        getchar();
        gets(pwd);
        while(strlen(pwd)!=6 ||Username_Judge(pwd) == false)
        {
            printf("\n\t输入格式错误,请重新输入");
            gets(pwd);
        }

        if(User_Judge(str))
        {
            if(!strcmp(pwd,User[pos].PWD))
            {
                if(User[pos].status == 1)
                {
                    printf("\t正在进入,请稍后。。。\n\t");
                    for(int i=0; i<10; i++)
                    {
                        printf("██");
                        Sleep(30);
                    }
                    return true;
                }
                else
                {
                    cout<<"\t对不起,该用户已冻结!!"<<endl;
                    return false;
                }
            }
            else
            {
                cout<<"\t对不起,密码输入错误。"<<endl;
                return false;
            }
        }
        else
        {
            cout<<"\t该用户不存在。"<<endl;
            return false;
        }
    }
}

/*************************************************
  Function:       User_Log()
  Description:    检验小数点后是否为4位
  Calls:          无
  Called By:      CloseAnAccount();TakeMoney();Save_Money();
                  OpenCard();Move_money();LoseCard();OpenCard();
  Input:          无
  Output:         无
  Return:         合法:true 非法:false
*************************************************/

bool Money_Judge(char s[])
{
    int num = 0;
    float flag = false;
    for(int i=0; s[i]!='\0'; i++)
    {
        if((s[i]>='0' && s[i]<='9') || s[i]=='.')
        {
            if(s[i]=='.')
            {
                num = 0;
                flag = true;
            }
            if(flag && s[i] == '.')
                return false;
            else
                num++;
        }
        else
            return false;

    }
    if(flag)
    {
        if(num<=4)
            return true;
        return false;
    }
    else
        return true;
}
/*************************************************
  Function:       float Money_Trans(char s)
  Description:    将字符型数据转化成浮点型
  Calls:          无
  Called By:      CloseAnAccount();TakeMoney();Save_Money();
                  OpenCard();Move_money();LoseCard();OpenCard();
  Input:          无
  Output:         无
  Return:         合法:true 非法:false
*************************************************/
float Money_Trans(char s[])
{
    float c;
    c=atof(s);
    return c;
}


/*************************************************
  Function:       Username_Judge(char s[])
  Description:    检验用户名中的非法字符
  Calls:          无
  Called By:      CloseAnAccount();TakeMoney();Save_Money();
                  OpenCard();Move_money();LoseCard();OpenCard();
  Input:          无
  Output:         无
  Return:         合法:true 非法:false
*************************************************/

bool Username_Judge(char s[])
{
    for(int i=0; s[i]!='\0'; i++)
    {
        if((s[i]>='a' && s[i]<='z') || (s[i]>='A' && s[i]<='Z') || (s[i]>='0' && s[i]<='9') )
            continue;
        else
            return false;
    }
    return true;
}

/*************************************************
  Function:       Welcome()
  Description:    欢迎界面
  Calls:          无
  Called By:      无
  Input:          无
  Output:         无
  Return:         无
*************************************************/
void Welcome()
{
    printf("\t ╭___ ╭╭╭╭╭__╮\n");
    printf("\t︳                       ︳           ╭――――――—╮\n");
    printf("\t︳                       ︳          ︳   ΗΕ∟∟Ο   ︳\n");
    printf("\t︳ ●    ╭――╮   ●   ︳     ○   ︳ 请输入您的信息 ︳\n");
    printf("\t︳≡     | ● ● ▏  ≡  ︳ О       ╰───────―╯\n");
    printf("\t︳       ╰── ╯       ︳\n");
    printf("\t╰─—┳○――――┳―○-╯\n");
    printf("\t\n");
}
/*************************************************
  Function:       welcome_star()
  Description:    开始操作欢迎界面
  Calls:          无
  Called By:      无
  Input:          无
  Output:         无
  Return:         无
*************************************************/
void welcome_star()
{
    system("CLS");
    printf("\t***************************************************************\n");
    printf("\t** ╭___ ╭╭╭╭╭__╮                                 **\n");
    printf("\t**︳                       ︳           ╭――――――—╮   **\n");
    printf("\t**︳                       ︳          ︳   ΗΕ∟∟Ο   ︳  **\n");
    printf("\t**︳ ●    ╭──╮   ●   ︳     ○   ︳ 请输入您的选择 ︳  **\n");
    printf("\t**︳≡    │ ● ●│  ≡   ︳ О       ╰───────―╯  **\n");
    printf("\t**︳      ╰──―╯       ︳                           *******\n");
    printf("\t**╰─—┳○――――┳―○-╯             *********************\n");
    printf("\t**存款  (1)   **   开户   (4)   **    挂失  (7)          **  **\n");
    printf("\t**取款  (2)   **   销户   (5)   **    解挂  (8)          **  **\n");
    printf("\t**查询  (3)   **   转账   (6)   **    退出  (0)          **  **\n");
    printf("\t**           修改密码   (9)        注销   (N)           **  **\n");
    printf("\t***************************************************************\n");
}
/*************************************************
  Function:       Creat_Administrator_show()
  Description:    开户系统欢迎界面
  Calls:          无
  Called By:      无
  Input:          无
  Output:         无
  Return:         无
*************************************************/
void Creat_Administrator_show()
{
    printf("\t**************************************************************\n");
    printf("\t**                                                          **\n");
    printf("\t**         --------->欢迎访问开户系统<---------             **\n");
    printf("\t**                                                          **\n");
    printf("\t**************************************************************\n");
    printf("\t**   1.创建一个新用户     2.返回首页        3.注销          **\n");
    printf("\t**************************************************************\n");

}
/*************************************************
  Function:       Query_show()
  Description:    查询系统欢迎界面
  Calls:          无
  Called By:      无
  Input:          无
  Output:         无
  Return:         无
*************************************************/
void Query_show()
{
    printf("\t**************************************************************\n");
    printf("\t**                                                          **\n");
    printf("\t**         --------->欢迎访问查询系统<---------             **\n");
    printf("\t**                                                          **\n");
    printf("\t**************************************************************\n");
    printf("\t**         1.查询用户                3.注销                 **\n");
    printf("\t**         2.返回首页                                       **\n");
    printf("\t**************************************************************\n");

}
/*************************************************
  Function:       CloseAnAccount_show()
  Description:    销户系统欢迎界面
  Calls:          无
  Called By:      无
  Input:          无
  Output:         无
  Return:         无
*************************************************/
void CloseAnAccount_show()
{
    printf("\t**************************************************************\n");
    printf("\t**                                                          **\n");
    printf("\t**         --------->欢迎访问销户系统<---------             **\n");
    printf("\t**                                                          **\n");
    printf("\t**************************************************************\n");
    printf("\t**         1.销户                    3.注销                 **\n");
    printf("\t**         2.返回首页                                       **\n");
    printf("\t**************************************************************\n");
}
/*************************************************
  Function:       Move_money_show()
  Description:    转账系统欢迎界面
  Calls:          无
  Called By:      无
  Input:          无
  Output:         无
  Return:         无
*************************************************/
void Move_money_show()
{
    printf("\t**************************************************************\n");
    printf("\t**                                                          **\n");
    printf("\t**         --------->欢迎访问转账系统<---------             **\n");
    printf("\t**                                                          **\n");
    printf("\t**************************************************************\n");
    printf("\t**         1.转账                3.注销                     **\n");
    printf("\t**         2.返回首页                                       **\n");
    printf("\t**************************************************************\n");
}

/*************************************************
  Function:       Save_Money_show()
  Description:    欢迎界面
  Calls:          无
  Called By:      无
  Input:          无
  Output:         无
  Return:         无
*************************************************/
void Save_Money_show()
{
    printf("\t**************************************************************\n");
    printf("\t**                                                          **\n");
    printf("\t**         --------->欢迎访问存款系统<---------             **\n");
    printf("\t**                                                          **\n");
    printf("\t**************************************************************\n");
    printf("\t**         1.存款                3.注销                     **\n");
    printf("\t**         2.返回首页                                       **\n");
    printf("\t**************************************************************\n");
}

/*************************************************
  Function:       TakeMoney_show()
  Description:    取款系统欢迎界面
  Calls:          无
  Called By:      无
  Input:          无
  Output:         无
  Return:         无
*************************************************/
void TakeMoney_show()
{
    printf("\t**************************************************************\n");
    printf("\t**                                                          **\n");
    printf("\t**         --------->欢迎访问取款系统<---------             **\n");
    printf("\t**                                                          **\n");
    printf("\t**************************************************************\n");
    printf("\t**         1.取款                3.注销                     **\n");
    printf("\t**         2.返回首页                                       **\n");
    printf("\t**************************************************************\n");
}

/*************************************************
  Function:       LoseCard_show()
  Description:    挂失系统欢迎界面
  Calls:          无
  Called By:      无
  Input:          无
  Output:         无
  Return:         无
*************************************************/
void LoseCard_show()
{
    printf("\t**************************************************************\n");
    printf("\t**                                                          **\n");
    printf("\t**         --------->欢迎访问挂失系统<---------             **\n");
    printf("\t**                                                          **\n");
    printf("\t**************************************************************\n");
    printf("\t**         1.挂失                    3.注销                 **\n");
    printf("\t**         2.返回首页                                       **\n");
    printf("\t**************************************************************\n");
}

/*************************************************
  Function:       OpenCard_show()
  Description:    解挂系统欢迎界面
  Calls:          无
  Called By:      无
  Input:          无
  Output:         无
  Return:         无
*************************************************/
void OpenCard_show()
{
    printf("\t**************************************************************\n");
    printf("\t**                                                          **\n");
    printf("\t**         --------->欢迎访问解挂系统<---------             **\n");
    printf("\t**                                                          **\n");
    printf("\t**************************************************************\n");
    printf("\t**         1.解挂                    3.注销                 **\n");
    printf("\t**         2.返回首页                                       **\n");
    printf("\t**************************************************************\n");
}

/*************************************************
  Function:       Change_password_show()
  Description:    修改密码欢迎界面
  Calls:          无
  Called By:      无
  Input:          无
  Output:         无
  Return:         无
*************************************************/
void Change_password_show()
{
    printf("\t**************************************************************\n");
    printf("\t**                                                          **\n");
    printf("\t**         --------->欢迎访问修改密码系统<---------         **\n");
    printf("\t**                                                          **\n");
    printf("\t**************************************************************\n");
    printf("\t**         1.修改密码                3.注销                 **\n");
    printf("\t**         2.返回首页                                       **\n");
    printf("\t**************************************************************\n");
}

/*************************************************
  Function:       Creat_Administrator()
  Description:    实现用户的开户操作
  Calls:          Creat_Administrator_show();
                  Write_Data();Administrator();Start();
  Return:         无
*************************************************/
void Creat_Administrator()//开户
{
    printf("\t正在进入,请稍后。。。。\n");
    printf("\t");
    for(int i=0; i<10; i++)
    {
        printf("██");
        Sleep(50);
    }

    char ch[5];
    while(1)
    {
        system("CLS");
        Creat_Administrator_show();
        printf("\t请输入您的选择:");
        scanf("%s",ch);
        if(!strcmp(ch,"1"))
        {
            printf("\t请输入一个新用户6位数ID号(不包含特殊字符):");
            scanf("%s",New_user.ID);
            while(strlen(New_user.ID)!=6 || Username_Judge(New_user.ID) == false)
            {
                printf("\n\t输入格式错误,请重新输入\n");
                scanf("\t%s",New_user.ID);
            }
            printf("\n\t请输入用户的姓名:");
            getchar();
            gets(New_user.name);
            printf("\t请输入您的6位数密码: ");
            gets(New_user.PWD);
            while(strlen(New_user.PWD)!=6 || Username_Judge(New_user.PWD) == false)
            {
                printf("\n\t输入格式错误,请重新输入");
                scanf("%s",New_user.PWD);
            }
            char pwd[18];
            printf("\n\t请再输入一遍密码:");
            scanf("%s",pwd);
            if(strcmp(pwd,New_user.PWD))
            {
                for(int i=1; i<=3; i++)
                {
                    printf("\t对不起,您前后两次输入的密码不一致,请重新输入。\n");
                    printf("\n\t请输入用户的密码:");
                    scanf("%s",New_user.PWD);
                    while(strlen(New_user.PWD)!=6)
                    {
                        printf("\n\t输入格式错误,请重新输入");
                        scanf("%s",New_user.PWD);
                    }
                    printf("\t请再输入一遍密码:");
                    scanf("%s",pwd);
                    while(strlen(New_user.PWD)!=6)
                    {
                        printf("\n\t输入格式错误,请重新输入");
                        scanf("%s",New_user.PWD);
                    }
                    if(!strcmp(pwd,New_user.PWD))
                        break;
                    else
                    {
                        if(i==3)
                        {
                            printf("\t对不起,系统繁忙,请重新选择。\n");
                            printf("\t正在返回上一页.....\n");
                            printf("\n\t");
                            for(int j=0; j<10; j++)
                            {
                                printf("██");
                                Sleep(50);
                            }
                            Creat_Administrator();
                        }
                    }
                }
            }

            New_user.status = 1;
            if(User_Judge(New_user.ID) == false)
            {
                User[++Total] = New_user;
                printf("\n\t--------------------------创建成功-------------------------------------\n");
                printf("\t身份证号\t\t姓名\t\t   金额\t\t状态\n");
                printf("\t%-18s\t%-10s\t%10.4f\t",User[Total].ID,User[Total].name,User[Total].money);
                if(User[Total].status == 1)
                    printf("正常");
                else
                    printf("冻结");
                printf("\n");
                printf("\t-----------------------------------------------------------------------\n");
                Write_Data();
                printf("\t\t*************************\n");
                printf("\t\t**     是否立即存款?  **\n");
                printf("\t\t**      1.是           **\n");
                printf("\t\t**      2.否           **\n");
                printf("\t\t*************************\n");
                char sp[5];
                scanf("%s",sp);
                if(!strcmp(sp,"1"))
                {
                    Save_Money();
                }

            }
            else
            {
                printf("\t该账号已经存在!!!\n");
            }

        }
        else if(!strcmp(ch,"2"))
        {
            Administrator();
        }
        else if(!strcmp(ch,"3"))
        {
            Start();
        }
        else
        {
            printf("\t非法输入,请重试!\n");
            for(int i=0; i<10; i++)
            {
                printf("██");
                Sleep(30);
            }
            system("CLS");
        }
        system("pause");
        printf("\t按任意键返回上一步\n");
        system("pause");
        printf("\t正在返回,请稍后。。。\n\t");
        for(int i=0; i<10; i++)
        {
            printf("██");
            Sleep(30);
        }
    }
}

/*************************************************
  Function:       User_Judge(char s[])
  Description:    查找用户
  Calls:          无
  Return:         true false
*************************************************/
bool User_Judge(char s[])
{
    for(int i=0; i<=Total; i++)
    {
        if(!strcmp(s,User[i].ID))
        {
            pos = i;
            return true;
        }
    }
    return false;
}

/*************************************************
  Function:       Save_Money()//存款
  Description:    实现用户的存款操作
  Calls:          Write_Data();Administrator();Start();
                    User_Log();
  Return:         无
*************************************************/
void Save_Money()//存款
{
    printf("\t正在进入,请稍后。。。。\n");
    printf("\t");
    for(int i=0; i<10; i++)
    {
        printf("██");
        Sleep(50);
    }
    while(1)
    {
        system("CLS");
        Save_Money_show();
        printf("\t请输入您的选择:");
        char ch[5];
        scanf("%s",ch);
        char money[20];

        if(!strcmp(ch,"1"))
        {
            if(User_Log()==true)
            {
                printf("\n\t请输入存款金额:");
                scanf("%s",money);
                if(Money_Judge(money) == true)
                {
                    float Money;
                    Money = Money_Trans(money);
                    printf("\t\t*********************\n");
                    printf("\t\t**     是否存入?  **\n");
                    printf("\t\t**      1.是       **\n");
                    printf("\t\t**      2.否       **\n");
                    printf("\t\t*********************\n");
                    char cc[5];
                    printf("\t");
                    scanf("%s",cc);
                    if(!strcmp(cc,"1"))
                    {
                        User[pos].money += Money;
                        Write_Data();
                        printf("\t\t存款成功。\n");
                        printf("\t-----------------------您的用户信息-----------------------------\n");
                        printf("\t身份证号\t\t姓名\t\t   金额\t\t状态\n");
                        printf("\t%-18s\t%-10s\t%10.4f\t",User[pos].ID,User[pos].name,User[pos].money);
                        if(User[Total].status == 1)
                            printf("正常");
                        else
                            printf("冻结");
                        printf("\n");
                        printf("\t----------------------------------------------------------------\n");
                    }
                }
                else
                {
                    printf("\t输入格式错误,请稍后重试!\n");
                }
            }
        }
        else if(!strcmp(ch,"2"))
        {
            Administrator();
        }
        else if(!strcmp(ch,"3"))
        {
            Start();
        }
        else
        {
            printf("\t非法输入,请重试!\n");
        }
        printf("\t按任意键返回上一步");
        system("pause");
        printf("\t正在返回,请稍后。。。\n\t");
        for(int i=0; i<10; i++)
        {
            printf("██");
            Sleep(30);
        }
        system("CLS");
    }



}
/*************************************************
  Function:       TakeMoney()//取款
  Description:    实现用户的取款操作
  Calls:          Write_Data();Administrator();Start();
                  User_Log();
  Return:         无
*************************************************/
void TakeMoney()
{
    printf("\t正在进入,请稍后。。。。\n");
    printf("\t");
    for(int i=0; i<10; i++)
    {
        printf("██");
        Sleep(50);
    }
    while(1)
    {
        system("CLS");
        TakeMoney_show();

        printf("\t请输入您的选择:");
        char ch[5];
        scanf("%s",ch);
        float Money;
        char money[20];

        if(!strcmp(ch,"1"))
        {
            if(User_Log()==true)
            {
                printf("\n\t请输入取款金额:");
                scanf("%s",money);
                if(Money_Judge(money) == true)
                {
                    Money = Money_Trans(money);
                    printf("\t\t*********************\n");
                    printf("\t\t**     是否取款?  **\n");
                    printf("\t\t**      1.是       **\n");
                    printf("\t\t**      2.否       **\n");
                    printf("\t\t*********************\n");
                    char cc[5];
                    printf("\t");
                    scanf("%s",cc);

                    if(!strcmp(ch,"1"))
                    {
                        if(Money > User[pos].money)
                        {
                            printf("\t余额不足!此次操作失败。\n");
                        }
                        else
                        {
                            User[pos].money -= Money;
                            printf("\t\t取款成功。\n");
                            printf("\t-----------------------您的用户信息-----------------------------\n");
                            printf("\t身份证号\t\t姓名\t\t   金额\t\t状态\n");
                            printf("\t%-18s\t%-10s\t%10.4f\t",User[pos].ID,User[pos].name,User[pos].money);
                            if(User[Total].status == 1)
                                printf("正常");
                            else
                                printf("冻结");
                            printf("\n");
                            printf("\t-----------------------------------------------------------------\n");
                            Write_Data();
                        }
                    }
                }
                else
                {
                    printf("\t输入格式错误,请稍后重试!\n");
                }

            }


        }
        else if(!strcmp(ch,"2"))
        {
            Administrator();
        }
        else if(!strcmp(ch,"3"))
        {
            Start();
        }
        else
        {
            printf("\t非法输入,请重试!\n");
        }

        printf("\t按任意键返回上一步");
        system("pause");
        printf("\t正在返回,请稍后。。。\n\t");
        for(int i=0; i<10; i++)
        {
            printf("██");
            Sleep(30);
        }
        system("CLS");
    }
}

/*************************************************
  Function:       Query()//查询
  Description:    实现用户的查询操作
  Calls:          Administrator();Start();User_Log();
                  User_Log();Query_show();
  Return:         无
*************************************************/
void Query()//查询
{
    printf("\t正在进入,请稍后。。。。\n");
    printf("\t");
    for(int i=0; i<10; i++)
    {
        printf("██");
        Sleep(50);
    }
    while(1)
    {
        system("CLS");
        Query_show();
        printf("\t请输入您的选择:");
        char ch[5];
        scanf("%s",ch);

        if(!strcmp(ch,"1"))
        {
            if(User_Log() == true)
            {
                printf("\n\t-----------------------您要查询的用户信息-----------------------------\n");
                printf("\t用户ID号\t\t姓名\t\t   金额\t\t状态\n");
                printf("\t%-18s\t%-10s\t%10.4f\t",User[pos].ID,User[pos].name,User[pos].money);
                if(User[pos].status == 1)
                    printf("正常");
                else
                    printf("冻结");
                printf("\n");
                printf("\t-----------------------------------------------------------------------\n");
            }
        }
        else if(!strcmp(ch,"2"))
        {
            Administrator();
        }
        else if(!strcmp(ch,"3"))
        {
            Start();
        }
        else if(!strcmp(ch,"4"))
        {
            printf("-----------------------您要查询的用户信息-----------------------------------\n");
            printf("\t身份证号\t\t姓名\t\t   金额\t\t状态\n");
            for(int i=0; i<=Total; i++)
            {
                printf("\t%-18s\t%-10s\t%10.4f\t",User[i].ID,User[i].name,User[i].money);
                if(User[i].status == 1)
                    printf("正常");
                else
                    printf("冻结");
                printf("\n");
            }
            printf("----------------------------------------------------------------------------\n");
        }
        else
        {
            printf("\t非法输入,请重试!\n");
        }
        printf("\t按任意键返回上一步");
        system("pause");
        printf("\t正在返回,请稍后。。。\n\t");
        for(int i=0; i<10; i++)
        {
            printf("██");
            Sleep(30);
        }
        system("CLS");
    }
}

/*************************************************
  Function:       CloseAnAccount()//销户
  Description:    实现用户的销户操作
  Calls:          Write_Data();Administrator();Start();
                  User_Log();CloseAnAccount_show();
  Return:         无
*************************************************/
void CloseAnAccount()//销户
{
    printf("\t正在进入,请稍后。。。。\n");
    printf("\t");
    for(int i=0; i<10; i++)
    {
        printf("██");
        Sleep(50);
    }
    while(1)
    {
        system("CLS");
        CloseAnAccount_show();
        printf("\t请输入您的选择:");

        char ch[5];
        scanf("%s",ch);
        if(!strcmp(ch,"1"))
        {
            if(User_Log() == true)
            {
                printf("\n\t*********************************************************************\n");
                printf("\t**身份证号\t\t姓名\t\t   金额\t\t状态       **\n");
                printf("\t**%-18s\t%-10s\t%10.4f\t",User[pos].ID,User[pos].name,User[pos].money);
                if(User[Total].status == 1)
                    printf("正常");
                else
                    printf("冻结");
                printf("       **\n");
                printf("\t**              您确定要销除该账号,销除后将无法恢复!             **\n");
                printf("\t**                       1.是         2.否                         **\n");
                printf("\t*********************************************************************\n");
                char cc[10];

                scanf("%s",cc);
                if(!strcmp(cc,"1"))
                {
                    for(int i=pos; i<Total; i++)
                    {
                        User[i] = User[i+1];
                    }
                    Total--;
                    printf("\t\t\t删除成功\n\n");
                    Write_Data();
                }
                else
                {
                    printf("\t\t\t删除失败!\n\n");
                }
            }
        }
        else if(!strcmp(ch,"2"))
        {
            Administrator();
        }
        else if(!strcmp(ch,"3"))
        {
            Start();
        }
        else if(!strcmp(ch,"4"))
        {
            printf("-----------------------您要查询的用户信息-----------------------------\n");
            printf("\t身份证号\t\t姓名\t\t   金额\t\t状态\n");
            for(int i=0; i<=Total; i++)
            {
                printf("\t%-18s\t%-10s\t%10.4f\t",User[i].ID,User[i].name,User[i].money);
                if(User[Total].status == 1)
                    printf("正常");
                else
                    printf("冻结");
                printf("\n");
            }
            printf("-----------------------------------------------------------------------\n");
        }
        else
        {
            printf("\t非法输入,请重试!\n");
        }

        printf("\t按任意键返回上一步");
        system("pause");
        printf("\t正在返回,请稍后。。。\n\t");
        for(int i=0; i<10; i++)
        {
            printf("██");
            Sleep(30);
        }
        system("CLS");
    }
}
/*************************************************
  Function:       Move_money()//转账
  Description:    实现用户的转账操作
  Calls:          Write_Data();Administrator();Start();
                  User_Log();Move_money_show();
  Return:         无
*************************************************/
void Move_money()//转账
{
    printf("\t正在进入,请稍后。。。。\n");
    printf("\t");
    for(int i=0; i<10; i++)
    {
        printf("██");
        Sleep(50);
    }
    while(1)
    {
        system("CLS");
        Move_money_show();

        printf("\n\t请输入您的选择:");
        char ch[5];
        scanf("%s",ch);
        if(!strcmp(ch,"1"))
        {
            if(User_Log()==true)
            {
                int pos1 = pos;
                printf("\n\t请输入要转入的账号:");
                char str[19];
                scanf("%s",str);
                char money[20];
                float Money;
                if(User_Judge(str))
                {
                    if(User[pos].status == 1)
                    {
                        if(User[pos1].money == 0)
                        {
                            printf("\n\t您的账余额为 0.0000\n");
                        }
                        else
                        {
                            int pos2 = pos;
                            printf("\t请输入转账金额:");
                            scanf("%s",money);
                            if(Money_Judge(money) == true)
                            {
                                Money = Money_Trans(money);
                                printf("\t\t*********************\n");
                                printf("\t\t**     是否转账?  **\n");
                                printf("\t\t**      1.是       **\n");
                                printf("\t\t**      2.否       **\n");
                                printf("\t\t*********************\n");
                                char cc[5];
                                printf("\t");
                                scanf("%s",cc);
                                if(!strcmp(ch,"1"))
                                {
                                    if(Money > User[pos1].money)
                                    {
                                        printf("\t对不起,账户余额不足。\n");
                                    }
                                    else
                                    {
                                        User[pos1].money -= Money;
                                        printf("\t\t转账成功。\n");
                                        printf("\t-----------------------您的用户信息-----------------------------------\n");
                                        printf("\t身份证号\t\t姓名\t\t   金额\t\t状态\n");
                                        printf("\t%-18s\t%-10s\t%10.4f\t",User[pos1].ID,User[pos1].name,User[pos1].money);
                                        if(User[Total].status == 1)
                                            printf("正常");
                                        else
                                            printf("冻结");
                                        printf("\n");
                                        printf("\t-----------------------------------------------------------------------\n");
                                        User[pos2].money += Money;
                                        Write_Data();
                                    }
                                }
                                else
                                {
                                    printf("\t转账失败!\n");
                                }
                            }
                            else
                            {
                                printf("\t输入格式错误,请稍后再试!\n");
                            }

                        }

                    }
                    else
                    {
                        printf("\t该账号已被冻结!\n");
                    }

                }
            }
        }

        else if(!strcmp(ch,"2"))
        {
            Administrator();
        }
        else if(!strcmp(ch,"3"))
        {
            Start();
        }
        else
        {
            printf("\t非法输入,请重试!\n");
        }
        getchar();
        printf("\t按任意键返回上一步");
        system("pause");
        printf("\t正在返回,请稍后。。。\n\t");
        for(int i=0; i<10; i++)
        {
            printf("██");
            Sleep(30);
        }
        system("CLS");
    }

}


/*************************************************
  Function:       LoseCard()//挂失
  Description:    实现用户的挂失操作
  Calls:          Write_Data();Administrator();Start();
                  User_Log();LoseCard_show();
  Return:         无
*************************************************/
void LoseCard()//挂失
{
    printf("\t正在进入,请稍后。。。。\n");
    printf("\t");
    for(int i=0; i<10; i++)
    {
        printf("██");
        Sleep(50);
    }
    while(1)
    {
        system("CLS");
        LoseCard_show();
        printf("\n\t请输入您的选择:");
        char ch[5];
        scanf("%s",ch);
        if(!strcmp(ch,"1"))
        {
            if(User_Log() == true)
            {
                printf("\n\t\t*******************************\n");
                printf("\t\t**     是否冻结该账号信息?  **\n");
                printf("\t\t**      1.是    2.否         **\n");
                printf("\t\t*******************************\n");
                char cp[5];
                scanf("%s",cp);
                if(!strcmp(cp,"1"))
                {
                    User[pos].status = 0;
                    printf("\t挂失成功。\n");
                    Write_Data();
                }
                else
                {
                    printf("\t挂失失败。\n");
                }
            }
        }

        else if(!strcmp(ch,"2"))
        {
            Administrator();
        }
        else if(!strcmp(ch,"3"))
        {
            Start();
        }
        else
        {
            printf("\t非法输入,请重试!\n");
        }
        getchar();
        printf("\t按任意键返回上一步");
        system("pause");
        printf("\t正在返回,请稍后。。。\n\t");
        for(int i=0; i<10; i++)
        {
            printf("██");
            Sleep(30);
        }
        system("CLS");
    }

}

/*************************************************
  Function:       OpenCard()//解挂
  Description:    实现用户的解挂操作
  Calls:          Write_Data();Administrator();Start();
                  User_Log();LoseCard_show();
  Return:         无
*************************************************/
void OpenCard()//解挂
{
    printf("\t正在进入,请稍后。。。。\n");
    printf("\t");
    for(int i=0; i<10; i++)
    {
        printf("██");
        Sleep(50);
    }
    while(1)
    {
        system("CLS");
        OpenCard_show();

        printf("\n\t请输入您的选择:");
        char ch[5];
        scanf("%s",ch);
        if(!strcmp(ch,"1"))
        {
            char str[19];
            printf("\t请输入您的挂失ID:");
            scanf("%s",str);
            if(User_Judge(str) == true)
            {
                if(User[pos].status == 0)
                {
                    char pwd[13];
                    printf("\n\t请输入账号密码:");
                    scanf("%s",pwd);
                    if(!strcmp(pwd,User[pos].PWD))
                    {
                        printf("\n\t\t*******************************\n");
                        printf("\t\t**     是否解冻该账号信息?  **\n");
                        printf("\t\t**      1.是    2.否         **\n");
                        printf("\t\t*******************************\n");
                        char cc[5];
                        scanf("%s",cc);
                        if(!strcmp(cc,"1"))
                        {
                            User[pos].status = 1;
                            printf("\t解挂成功,您可以正常使用。\n");
                            Write_Data();
                        }
                        else
                        {
                            printf("\t解挂失败。\n");
                        }
                    }
                    else
                    {
                        printf("\t对不起密码输入错误,请重试!\n");
                    }
                }
                else
                {
                    printf("\t您的账号未挂失。\n");
                }

            }
        }
        else if(!strcmp(ch,"2"))
        {
            Administrator();
        }
        else if(!strcmp(ch,"3"))
        {
            Start();
        }
        else
        {
            printf("\t非法输入,请重试!\n");
        }
        printf("\t按任意键返回上一步");
        system("pause");
        printf("\t正在返回,请稍后。。。\n\t");
        for(int i=0; i<10; i++)
        {
            printf("██");
            Sleep(30);
        }
        system("CLS");
    }
}
/*************************************************
  Function:       Change_password()//密码修改
  Description:    实现用户的密码修改操作
  Calls:          Write_Data();Administrator();Start();
                  User_Log();Change_password_show();
  Return:         无
*************************************************/
void Change_password()//密码修改
{
    printf("\t正在进入,请稍后。。。。\n");
    printf("\t");
    for(int i=0; i<10; i++)
    {
        printf("██");
        Sleep(50);
    }
    while(1)
    {
        system("CLS");
        Change_password_show();
        printf("\t请输入您的选择:");
        char ch[5];
        scanf("%s",ch);
        if(!strcmp(ch,"1"))
        {
            if(User_Log() == true)
            {
                printf("\n\t请输入新密码(6位数,不能包含特殊字符):");
                char pwd[13];
                scanf("%s",pwd);
                int ant = 0;
                while(strlen(pwd)!=6 || Username_Judge(pwd) == false)
                {
                    ant++;
                    printf("\n\t输入格式错误,请重新输入 ");
                    scanf("%s",pwd);
                    if(ant == 3)
                    {
                        printf("\t密码输入错误3次,请稍后再试!");
                        printf("\t按任意键返回上一步");
                        system("pause");
                        printf("\t正在返回,请稍后。。。\n\t");
                        for(int i=0; i<10; i++)
                        {
                            printf("██");
                            Sleep(30);
                        }
                        continue;
                    }
                }
                strcpy(User[pos].PWD,pwd);
                printf("\t修改成功。\n");
                Write_Data();
            }
        }
        else if(!strcmp(ch,"2"))
        {
            Administrator();
        }
        else if(!strcmp(ch,"3"))
        {
            Start();
        }
        else
        {
            printf("\t非法输入,请重试!\n");
        }
        printf("\t按任意键返回上一步");
        system("pause");
        printf("\t正在返回,请稍后。。。\n\t");
        for(int i=0; i<10; i++)
        {
            printf("██");
            Sleep(30);
        }
        system("CLS");
    }
}

/*************************************************
  Function:       Read_Data()//文件的读入
  Description:    实现用户的文件的读入操作
  Return:         无
*************************************************/
void Read_Data()//文件的读入
{
    int i=0;
    FILE *fp;
    if((fp=fopen("Bank_data.txt","rb+"))==NULL)
    {
        fp=fopen("Bank_data.txt","wb+");
    }
    if(feof(fp))
    {
        printf("\t文件中没有信息,请添加信息!\n");
    }
    while(!feof(fp))
    {
        fscanf(fp,"%s %s %s %f %d",User[i].ID,User[i].name,User[i].PWD,&User[i].money,&User[i].status);
        i++;
    }

    fclose(fp);
    Total = i-2;
}

/*************************************************
  Function:       Write_Data()//文件的写入
  Description:    实现用户的文件的写入操作
  Return:         无
*************************************************/
void Write_Data()
{
    int i;
    FILE *fp;
    if((fp=fopen("Bank_data.txt","w+"))==NULL)
    {
        printf("Can't open the file\n");
        exit(0);
    }
    for(i=0; i<=Total; i++)
    {
        fprintf(fp,"%s %s %s %f %d\n",User[i].ID,User[i].name,User[i].PWD,User[i].money,User[i].status);
    }
    fclose(fp);
}




                
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值