您的位置:首页 > 编程语言 > C语言/C++

改进银行项目2(Code::Blocks能进行的在C++6.0中不能进行的 进行修改)

2013-01-05 17:21 393 查看
#include <iostream>
#include <string.h>
#include <iomanip>
#include <stdio.h>
using namespace std;

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

struct Account
{
    long accNumber;//卡号
    char accName[20];//户主
    char accPwd[10];//密码
    double balance;//余额
    char flag[6];//卡的状态
} array[MAXACCOUNTNUMBER];

//银行中所有卡
int size=0;
//生成银行中自增卡号
long autoCreament();
//开户
void openAnAccount();
//存款
void deposit();
//取款
void withdraw();
//查询
void query();
//销户
void closeAnAcount();
//菜单
void mainFrame();
//输出指定卡的信息
void printAccount(Account acc);
//根据卡号查找卡在数组中的下标
int searchAccount(long accNumber);
//检查密码输入是否满足长度   
bool isPassLegal(char pass[]); 
int main()
{
    cout<<"+------------------------+"<<endl;
    cout<<":                        :"<<endl;
    cout<<":欢迎使用储蓄综合业务平台:"<<endl;
    cout<<":                        :"<<endl;
    cout<<"+------------------------+"<<endl;
    cout<<endl;
    char loginName[20];//户名
    char loginPwd[20];//密码
    int i=0;
    while (i<3)
    {
        cout<<"请输入您的用户名:";
        cin>>loginName;
        cout<<endl;
        cout<<"请输入密码:";
        cin>>loginPwd;
        if (strcmp(loginName,"admin")!=0||strcmp(loginPwd,"admin")!=0)
        {
            i++;
            cout<<"用户名或密码错误!"<<endl;
            cout<<endl;
        }
        else
            break;
    }
    if(i>=3)
    {
        cout<<"您输入的次数已达限制,请退出程序!";
    }
    if(i<3)
        mainFrame();
    return 0;
}
void mainFrame()
{
    cout<<"+------------------------+"<<endl;
    cout<<"|存款 请按1    开户 请按4|"<<endl;
    cout<<"|取款 请按2    销户 请按5|"<<endl;
    cout<<"|查询 请按3    退出 请按0|"<<endl;
    cout<<"+------------------------+"<<endl;
    cout<<"请输入您的选择:";
    int choose;
    cin>>choose;
    switch (choose)
    {
    case 0:
        cout<<"-----您选择了退出-----"<<endl;
        break;
    case 1:
        cout<<"-----您选择了存款-----"<<endl;
        deposit();
        break;
    case 2:
        cout<<"-----您选择了取款-----"<<endl;
        withdraw();
        break;
    case 3:
        cout<<"-----您选择了查询-----"<<endl;
        query();
        break;
    case 4:
        cout<<"-----您选择了开户-----"<<endl;
        openAnAccount();
        break;
    case 5:
        cout<<"-----您选择了销户-----"<<endl;
        closeAnAcount();
        break;
    default:
		{
			cout<<"请重新选择!"<<endl;
			mainFrame();
			break;
		}
		
    }
	
}
//检查密码输入是否满足长度   
bool isPassLegal(char pass[])  
{  
    bool flag=true;  
    int len=strlen(pass),i;  
    if(len==6)
	{  
        //满足6位   
        for(i=0;i<len;i++)
		{  
            if(pass[i]<48||pass[i]>57)
			{  
                flag=false;  
                break;  
            }  
        }  
    }
	else
	{  
        //不满足6位   
        flag=false;  
    }  
    return flag;  
}  
//开户   
void openAnAccount()  
{  
	int i;
    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;   
			mainFrame();
        }  
        else  
        {  
			cout<<"密码必须是纯数字,并且是6位"<<endl;  
			cout<<"按任意数字键继续"<<endl;
			cout<<"按1键返回主菜单"<<endl;
			cin>>i;
		 if (i==1)
			mainFrame();
		 else
			openAnAccount();
        }  
    }  
    else  
    {  
        //2次输入的密码不一致   
        cout<<"两次输入的密码不一致"<<endl;  
        openAnAccount();  
    }  
}  

  long autoCreament()
  {
  if (size==0)
  {
  return INITNUMBER;
  }
  else
  {
  return array[size-1].accNumber+1;
  }
}
//输出指定卡的信息
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 searchAccount(long accNumber)
{
    int i,pos=-1;
    for(i=0; i<size; i++)
    {
        if(array[i].accNumber==accNumber&&strcmp(array[i].flag,"已销户")!=0)
        {
            //找到了这张卡
            pos=i;
            break;
        }
    }
    return pos;
}
void deposit()//存款
{ 
    long accNum;//存款的账号
    double money;//存款的金额
    int pos,i;
    cout<<"请输入存款的账号:";
    cin>>accNum;
    cout<<"请输入存款金额:";
    cin>>money;
    pos=searchAccount(accNum);
    if(pos==-1)
    {
        //卡号有误
        cout<<"卡号不存在!!"<<endl;
        cout<<"按任意数字键继续"<<endl;
        cout<<"按1键返回主菜单"<<endl;
        cin>>i;
        if (i==1) 
			mainFrame();
        else
			deposit();
    }
    else
    {
        //展示下存款前卡的信息
        cout<<"存款前卡的信息:"<<endl;
        printAccount(array[pos]);
        //找到了该卡号所对应的卡
        array[pos].balance+=money;
        //展示存款后卡的信息
        cout<<"存款后卡的信息:"<<endl;
        printAccount(array[pos]);
        cout<<"**********存款成功,按任意键返回**********"<<endl;
        fflush(stdin);
        getchar();
        mainFrame();
    }
}
void withdraw()//取款
{
    long accNum;//取款的账号
    char accPwd[10];//
    double money;//取款的金额
    double money1;//用于比较的金额
    int pos,i;
    cout<<"请输入取款的账号:";
    cin>>accNum;
    pos=searchAccount(accNum);
    if(pos==-1)
    {
        //卡号有误
        cout<<"卡号不存在,请重新输入!"<<endl;
        cout<<"按任意数字键继续"<<endl;
        cout<<"按1键返回主菜单"<<endl;
        cin>>i;
        if (i==1)
			mainFrame();
        else
			withdraw();
    }
    else
    {
        cout<<"请输入密码:";
        cin>>accPwd;
    }
    if  (strcmp(array[pos].accPwd,accPwd)==0)
    {
        cout<<"请输入取款金额:";
        cin>>money;
        //展示下取款前卡的信息
        cout<<"取款前卡的信息:"<<endl;
        printAccount(array[pos]);
        //找到了该卡号所对应的卡
        money1=array[pos].balance-money;
        if(money1<=0)
        {
            cout<<"您账户内的余额不足,请查询后再取款!";
            cout<<endl;
            mainFrame();
        }
        else
        {
            array[pos].balance-=money;
            //展示取款后卡的信息
            cout<<"取款后卡的信息:"<<endl;
            printAccount(array[pos]);
            cout<<"**********取款成功,按任意键返回**********"<<endl;
            fflush(stdin);
            getchar();
            mainFrame();
        }
    }
    else
    {
        cout<<"您输入的密码不正确!"<<endl;
        cout<<"按任意数字键继续"<<endl;
        cout<<"按1键返回主菜单"<<endl;
        cin>>i;
        if (i==1)
			mainFrame();
        else
			withdraw();
    }
}
void query()//查询
{
    long accNum;//查询的账号
    char accPwd[10];//密码
    int pos,i;
    cout<<"请输入查询的账号:";
    cin>>accNum;
    pos=searchAccount(accNum);
    if(pos==-1)
    {
        //卡号有误
        cout<<"卡号不存在,请重新输入!"<<endl;
        cout<<"按任意数字键继续"<<endl;
        cout<<"按1键返回主菜单"<<endl;
        cin>>i;
        if (i==1)
			mainFrame();
        else
			query();
    }
    else
    {
        cout<<"请输入密码:";
        cin>>accPwd;
    }
    if  (strcmp(array[pos].accPwd,accPwd)==0)
    {
		
        cout<<"您的账户信息为:"<<endl;
        printAccount(array[pos]);
        cout<<"****************按任意键返回**************"<<endl;
        fflush(stdin);
        getchar();
        mainFrame();
    }
    else
    {
        cout<<"您输入的密码不正确!"<<endl;
        cout<<"按任意数字键继续"<<endl;
        cout<<"按1键返回主菜单"<<endl;
        cin>>i;
        if (i==1)
			mainFrame();
        else
			query();
    }
    mainFrame();
}

void closeAnAcount()//销户
{
    long accNum;//销户的账号
    char accPwd[10];//
    int pos,i;
    cout<<"请输入销户的账号:";
    cin>>accNum;
    pos=searchAccount(accNum);
    if(pos==-1)
    {
        //卡号有误
        cout<<"卡号不存在!!"<<endl;
        cout<<"按任意数字键继续"<<endl;
        cout<<"按1键返回主菜单"<<endl;
        cin>>i;
        if (i==1)
			mainFrame();
        else
			closeAnAcount();
    }
    else
    {
        cout<<"请输入密码:"<<endl;
        cin>>accPwd;
    }
    if  (strcmp(array[pos].accPwd,accPwd)==0)
    {
		
        cout<<"您的账户信息为:"<<endl;
        printAccount(array[pos]);
        cout<<"************按回车键进行销户**************"<<endl;
        fflush(stdin);
        getchar();
        array[pos].balance=0;
        strcpy(array[pos].flag,"已销户");
        printAccount(array[pos]);
        cout<<"***************您已成功销户***************"<<endl;
        cout<<"****************按回车返回****************"<<endl;
        fflush(stdin);
        getchar();
        mainFrame();
    }
    else
    {
        cout<<"您输入的密码不正确!"<<endl;
        cout<<"按任意数字键继续"<<endl;
        cout<<"按1键返回主菜单"<<endl;
        cin>>i;
        if (i==1)
			mainFrame();
        else
			closeAnAcount();
    }
    mainFrame();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐