师创 年终任务-储蓄平台

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <iomanip>
#include <cmath>
using namespace std;

//银行中最大的账户数量
#define MAXACCOUNTNUMBER 20000
//银行卡的开号初始值
#define INITNUMBER 10001

//运用结构体
struct Account
{
    long accNumber;   //卡号
    char accName[20]; //户主
    char accPwd[10];  //密码
    double balance;   //余额
    char flag[6];     //卡的状态
};
//银行中所有卡
Account array[MAXACCOUNTNUMBER];
//银行中银行卡数量
int size=0;//全局变量

//欢迎界面
void welcome();
//主界面
void mainFrame();
//生成银行中自增卡号
long autoCreament();
//开户
void openAccount();
//输出指定卡的信息
void printAccount(Account acc);
//存款
void deposit();
//取款
void drawMoney();
//查询
void balance();
//销户
void closeAccount();
//退出
void tuichu();
//校验密码必须是6-8位,而且是纯数字
bool isPassLegal(char pass[]);


int main()
{
    //int array[20];

    char loginName[20];
    char loginPwd[20];
    int i;
    //欢迎界面
    welcome();
 //使用循环语句判断密码是否正确
    for(i=0;i<3;i++)
    {
        cout<<"请输入用户名:";
        cin>>loginName;
        cout<<"请输入密码:";
        cin>>loginPwd;
        if(strcmp(loginName,"wangkaiying")==0&&strcmp(loginPwd,"1108ying")==0)
        {
            mainFrame();
            break;
        }else{
            cout<<"用户名或密码输入错误"<<endl;
        }
    }
    return 0;
}

void welcome()
{
        cout<<"                   "<<"+-------------------------------+"<<endl;
     cout<<"                   "<<"|                               |"<<endl;
     cout<<"                   "<<"|        欢迎光临储蓄平台       |"<<endl;
     cout<<"                   "<<"|                               |"<<endl;
        cout<<"                   "<<"+-------------------------------+"<<endl;
}

void mainFrame()
{
   int order;
        cout<<"               +--------------------------------------+"<<endl;
  cout<<"               |                                      |"<<endl;
  cout<<"               |           1.存款     2.取款          |"<<endl;
  cout<<"               |           3.查询     4.开户          |"<<endl;
     cout<<"               |           5.销户     6.退出          |"<<endl;
  cout<<"               |                                      |"<<endl;
  cout<<"               +--------------------------------------+"<<endl;
   cout<<"请输入操作指令:"<<endl;
   cin>>order;
   switch(order){
       case 1:
    deposit();
            break;
       case 2:
     drawMoney();
            break;
    case 3:
     balance();
     break;
    case 4:
     openAccount();
     break;
    case 5:
     closeAccount();
     break;
    case 6:
     tuichu();
     break;
       default:
            break;
   }
}

//开户
void openAccount()
{
    char pwd1[10],pwd2[10];
    cout<<"请输入户主:";
    cin>>array[size].accName;
    cout<<"请输入密码:";
    cin>>pwd1;
    cout<<"请再次输入密码:";
    cin>>pwd2;
    //验证2次输入的密码是否一致
    if(strcmp(pwd1,pwd2)==0){
        //2次密码一致
        if(isPassLegal(pwd1)){
            //密码是合法
   //
   strcpy(array[size].accPwd,pwd1);
            cout<<"请输入金额:";
            cin>>array[size].balance;
            //..
            strcpy(array[size].flag,"正常");
            //写卡号
            array[size].accNumber=autoCreament();
            printAccount(array[size]);
            size++;
            cout<<"开户成功,按任意键返回"<<endl;
            fflush(stdin);
            getchar();
            mainFrame();
        }else{
            cout<<"密码必须是纯数字,并且是6-8位"<<endl;
            openAccount();
        }
    }else{
        //2次输入的密码不一致
        cout<<"两次输入的密码不一致"<<endl;
        openAccount();
    }
}

//账号自增
long autoCreament()
{
    if(size==0){
        return INITNUMBER;
    }else{
        return array[size-1].accNumber+1;
    }
}
bool isPassLegal(char pass[])
{
    bool flag=true;
    int len=strlen(pass),i;
    if(len<9&&len>=6){
        //满足6-8位
        for(i=0;i<len;i++){
            if(pass[i]<48||pass[i]>57){
                flag=false;
                break;
            }
        }
    }else{
        //不满足6-8位
        flag=false;
    }
    return flag;
}

//输出指定卡的信息
void printAccount(Account acc)
{
    cout<<"          |------------------------------------------------|"<<endl;
    cout<<setiosflags(ios::left)<<"          |"<<setw(8)<<"卡号"<<"| "<<setw(8)<<"户主"<<"| "<<setw(8)<<"密码"<<"| "<<setw(8)<<"金额"<<"| "<<setw(8)<<"状态"<<"|"<<endl;
    cout<<setiosflags(ios::left)<<"          +------------------------------------------------+"<<endl;
    cout<<setiosflags(ios::left)<<"          |"<<setw(8)<<acc.accNumber<<"| "<<setw(8)<<acc.accName<<"| "<<setw(8)<<acc.accPwd<<"| "<<setw(8)<<acc.balance<<"| "<<setw(8)<<acc.flag<<"|"<<endl;
    cout<<"          |------------------------------------------------|"<<endl;
}

//存款
/*判断卡是否存在:
*根据卡号查找卡的下标,检验该卡号是否存在。
* 若返回值>=0,卡号正确。
* 若返回值=-1,卡号有误。
*/
int searchAccount1(long accNumber)
{
    int i,pos=-1;
    for(i=0;i<size;i++){
        if(array[i].accNumber==accNumber){
            //已找到了这张卡
            pos=i;
            break;
        }
    }
    return pos;
}

void deposit()
{
    long accNum;//存款的账号
    double money;//存款的金额
    int pos;
    cout<<"请输入存款的账号:";
    cin>>accNum;
    cout<<"请输入存款金额:";
    cin>>money;
 cout<<endl;
    pos=searchAccount1(accNum);

    if(pos==-1){
        //卡号有误
        cout<<"卡号不存在,请确认后重新输入:"<<endl;
        deposit();
    }else{
        //展示下存款前卡的信息
        cout<<"存款前卡的信息:"<<endl;
        printAccount(array[pos]);
        //找到了该卡号所对应的卡
        array[pos].balance+=money;
  cout<<endl;
         //展示存款后卡的信息
        cout<<"存款后卡的信息:"<<endl;
        printAccount(array[pos]);
        cout<<"存款成功,按任意键返回"<<endl;
        fflush(stdin);
        getchar();
        mainFrame();
    }
 cout<<endl;
}

//取款
/*判断卡是否存在:
*根据卡号查找卡的下标,检验该卡号是否存在。
* 若返回值>=0,卡号正确。
* 若返回值=-1,卡号有误。
*/
int searchAccount2(long accNumber)
{
    int i,pos=-1;
    for(i=0;i<size;i++){
        if(array[i].accNumber==accNumber){
            //已找到了这张卡
            pos=i;
            break;
        }
    }
    return pos;
}


void drawMoney()
{
    long accNum;
    double  money;
    int pos,i;
    Account Pwd;
    cout<<"请输入卡号:";
    cin>>accNum  ;
 if(accNum<0)
 {
  cout<<"卡号不能为负!!请认真核实!!!\n";
  drawMoney();
 }else{
    pos=searchAccount2(accNum);
    if(pos==-1){
        cout<<"卡号不存在!请核!!!\n";
        drawMoney();
    }else{
  for(i=0;i<3;i++)
  {
   cout<<"请输入密码:";
   cin>>Pwd.accPwd;
   if(strcmp(array[pos].accPwd,Pwd.accPwd)==0)
   {
    cout<<"请输入取款金额:";
    cin>>money;
    if(money<=array[pos].balance)
    {
     array[pos].balance-=money;
     cout<<"取款后的卡的信息:\n";
     printAccount(array[pos]);
    }else{
     cout<<"您的余额不足!请先查询您的余额后再取款!\n";
     mainFrame();
    }
    fflush(stdin);
    getchar();
    mainFrame();
   }else{
    if(i==2){
     cout<<"您输入已超过三次!请退出系统.\n";
    }else{
     cout<<"密码错误!请核实后再输入。\n";
    }

   }
  }

 }
 }
}

//查询
/*判断卡是否存在:
*根据卡号查找卡的下标,检验该卡号是否存在。
* 若返回值>=0,卡号正确。
* 若返回值=-1,卡号有误。
*/
int searchAccount3(long accNumber)
{
    int i,pos=-1;
    for(i=0;i<size;i++){
        if(array[i].accNumber==accNumber){
            //已找到了这张卡
            pos=i;
            break;
        }
    }
    return pos;
}

void balance()
{
    long accNum;//查询的账号
    double money;//卡内的金额
    int pos;
    cout<<"请输入所要查询的账号:";
    cin>>accNum;
 cout<<endl;
    pos=searchAccount3(accNum);

    if(pos==-1){
        //卡号有误
        cout<<"卡号不存在,请确认后重新输入"<<endl;
        drawMoney();
    }else{
        cout<<"所要查询的卡的信息为:"<<endl;
        printAccount(array[pos]);
        cout<<"查询成功,按任意键返回"<<endl;
        fflush(stdin);
        getchar();
        mainFrame();
    }
 cout<<endl;
}

//销户
//销户
/*判断卡是否存在:
*根据卡号查找卡的下标,检验该卡号是否存在。
* 若返回值>=0,卡号正确。
* 若返回值=-1,卡号有误。
*/
int searchAccount4(long accNumber)
{
    int i,pos=-1;
    for(i=0;i<size;i++){
        if(array[i].accNumber==accNumber){
            //已找到了这张卡
            pos=i;
            break;
        }
    }
    return pos;
}
//销户
void closeAccount()
{
 long accNum;
    int pos;
 int userAnswer;
 int answer;
 char wrd[20]={0};
    cout<<"请输入您要销户的账号:";
    cin>>accNum;
    cout<<"请输入账号密码:";
 cin>>wrd;
    pos=searchAccount4(accNum);

    if(pos==-1)
 {
        //卡号有误
        cout<<"卡号不存在,请重新选择您要办理的业务!"<<endl;
  mainFrame();
    }
 else
 {
  if(strcmp(array[pos].accPwd,wrd)!=0)
  {
   cout<<"您输入的密码有误!"<<endl;
   cout<<"按1继续办理该业务,按其他数字返回!";
   cin>>answer;
   if(answer==1)
   {
    closeAccount();
   }
   else
   {
    mainFrame();
   }
  }
  else
  {
   cout<<"确认注销此账户?"<<endl;
   cout<<"按1销户,按其他数字返回!";
   cin>>userAnswer;
   if(userAnswer==1)
   {
    array[pos].balance=0;
    strcpy(array[pos].flag,"销户");
    cout<<"销户已成功,按任意键返回!"<<endl;
    fflush(stdin);//清除缓存区
    getchar();//任意键返回
   mainFrame();
   }
   else
   {

    cout<<"您已取消销户任务,按任意键返回。"<<endl;
    fflush(stdin);//清除缓存区
    getchar();//任意键返回
   mainFrame();
   }
  }
 }
}
void tuichu()
{
 cout<<'\n';
 cout<<"谢谢您对储蓄平台的的支持,谢谢光临,再见!";
 cout<<'\n';
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值