阅读背景:

银行系统(好像是这样、、)

来源:互联网 
/*        
* 程序的版权和版本声明部分        
* Copyright (c)2012, 烟台大学计算机学院        
* All rightsreserved.        
* 文件名称:1.cpp                                   
* 作    者:李慧慧                                   
* 完成日期:2012年12月27日        
* 版 本 号: v1.0              
* 输入描述:  无      
* 问题描述:略       
* 程序输出: 银行系统的操作程序     
* 问题分析:略       
*/    
#include <iostream>
#include <string.h>
#include<iomanip>
#include <stdio.h>
using namespace std;
//银行中最大的账户数量
#define MAXACCOUNTNUMBER 100000
//银行卡的开号初始值
#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 login();
//主界面
void work();
//选择操作指令
void choose();
//开户
void openAccount();
//生成自增卡号
long autoCreament();
//输出指定卡的信息
void printAccount(Account acc);
//根据卡号查找卡在数组中的下标
int searchAccount(long accNumber);
//校验密码必须是6-8位,而且是纯数字
bool isPassLegal(char pass[]);
//存款
void deposit();
//取款
void draw();
//查询
void demand();
//销户
void close();
//退出
void quit();
int main()
{
    welcome();
    login();
    work();
    choose();
    return 0;
}
void welcome()
{
    cout<<"+--------------------------------------------+"<<endl;
	cout<<"|                                            |"<<endl;
	cout<<"|         欢迎使用储蓄业务综合平台           |"<<endl;
	cout<<"|                                            |"<<endl;
	cout<<"+--------------------------------------------+"<<endl;
}
void login()
{
    int i;
    char loginname[10];
    char loginPwd[10];
	for(i=0;i<3;i++)
	{
		cout<<"请输入管理员账号:";
	    cin>>loginname;
		cout<<endl;
		cout<<"请输入管理员密码:";
		cin>>loginPwd;
		cout<<endl;
		if(strcmp(loginname,"admin")==0&&strcmp(loginPwd,"admin")==0)
		{
			cout<<endl;
			break;
		}
		else
		{
			if(i<2)
			{
				cout<<"用户名或密码错误,请重新输入,您还有"<<2-i<<"次机会";
				cout<<endl;
			}else{
				cout<<"对不起,您连续3次错误,退出系统!";
				cout<<endl;
				return;
			}
		}
	}
}
void work()
{
	cout<<"+------------------------------------------------+"<<endl;
	cout<<"|                                                |"<<endl;
	cout<<"|            1: 开户        2: 存款              |"<<endl;
	cout<<"|            3:取款        4:查询              |"<<endl;
	cout<<"|            5:销户        6:退出              |"<<endl;
    cout<<"|                                                |"<<endl;
	cout<<"+------------------------------------------------+"<<endl;
}
void choose()
{
    char i;
    cout<<"请输入操作指令:"<<endl;
	cin>>i;
    switch(i)
	{
	case'1':
		openAccount();
		break;
    case'2':
        deposit();
        break;
	case'3':
	    draw();
		break;
	case'4':
	    demand();
		break;
    case'5':
        close();
        break;
    case'6':
        quit();
        break;
	default:
		cout<<"对不起,输入错误!"<<endl;
			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();
            work();
            choose();
        }
        else
        {
            cout<<"密码必须是纯数字,并且是6-8位"<<endl;
            openAccount();
        }
    }
    else
    {
        cout<<"两次密码输入不一致"<<endl;
        openAccount();
    }
}
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;
}
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;
    for(i=0;i<size;i++)
    {
        if(array[i].accNumber==accNumber)
        {
            pos=i;//找到了这张卡
            break;
        }
        else{
        pos=-1;
        }
    }
    return pos;
}
//存款
void deposit()
{
    long accNum,accNum1;//存款的账号
    double money;//存款的金额
    int pos;
    cout<<"请输入存款账号:";
    cin>>accNum;
    pos=searchAccount(accNum);
    if(pos==-1)
    {
        cout<<"账号有误,请重新输入账号"<<endl;
        deposit();
    }
    cout<<"请再次输入账号:";
    cin>>accNum1;
    if(accNum!=accNum1)
    {
        cout<<"两次输入的账号不一致,请确认后再次输入"<<endl;
    }
    else{
        ////输出存款前的信息
        cout<<"存款前卡的信息"<<endl;
        printAccount(array[pos]);//找到了这张卡所对应的卡
        cout<<"请输入您要存款的金额:"<<endl;
        cin>>money;
        array[pos].balance+=money;
        //输出存款后的信息
        cout<<"存款后卡的信息"<<endl;
        printAccount(array[pos]);
        cout<<"存款成功,按任意键返回"<<endl;
        fflush(stdin);
        getchar();
        work();
        choose();
    }
}
//取款
void draw()
{
    long accNum;//取款的账号
    double money;//取款的金额
    int pos,i;
    Account Pwd;
    cout<<"请输入取款账号:";
    cin>>accNum;
    pos=searchAccount(accNum);
    if(pos==-1)
    {
        //卡号有误
        cout<<"卡号有误,请重新输入账号"<<endl;
        draw();
    }
    else
    {
        for(i=0;i<3;i++)
        {
            cout<<"请输入密码:";
            cin>>Pwd.accPwd;
            if(strcmp(array[pos].accPwd,Pwd.accPwd)==0)
            {
                break;
            }
            else
            {
                if(i<2)
                {
                    cout<<"密码错误,请请确认后重新输入,您还有"<<2-i<<"次机会";
                    cout<<endl;
                }
                else
                {
                    cout<<"您连续3次输入错误,退出系统!";
                    cout<<endl;
                    return;
                }
            }
        }
    }
    //输出取款前的信息
    cout<<"取款前卡的信息"<<endl;
    printAccount(array[pos]);//找到了这张卡所对应的卡
    cout<<"请输入取款金额";
    cin>>money;
    if(array[pos].balance<money)
    {
        cout<<"您的余额不足,请重新输入取款金额"<<endl;
        cout<<"*****按任意键返回*****"<<endl;
        draw();
    }
    else
    {
        array[pos].balance-=money;
    }
    //输出取款后的信息
    cout<<"取款后卡的信息"<<endl;
    printAccount(array[pos]);
    cout<<"取款成功,按任意键返回"<<endl;
        fflush(stdin);
        getchar();
        work();
        choose();
}
//查询
void demand()
{
    int i,pos;
    long accNum;
    Account Pwd;
    cout<<"请输入查询账号:";
    cin>>accNum;
    pos=searchAccount(accNum);
    if(pos==-1)
    {
        cout<<"卡号有误,请重新输入账号"<<endl;
        demand();
    }
    else
    {
        for(i=0;i<3;i++)
        {
            cout<<"请输入密码:";
            cin>>Pwd.accPwd;
            if(strcmp(array[pos].accPwd,Pwd.accPwd)==0)
            {
                break;
            }
            else
            {
                if(i<2)
                {
                    cout<<"密码错误,请请确认后重新输入,您还有"<<2-i<<"次机会";
                    cout<<endl;
                }
                else
                {
                    cout<<"您连续3次输入错误,退出系统!";
                    cout<<endl;
                    return;
                }
            }
        }
    }
    cout<<"您卡的信息如下"<<endl;
    printAccount(array[pos]);
    cout<<"*****按任意键返回*****"<<endl;
        fflush(stdin);
        getchar();
        work();
        choose();
}
void close()
{
    int i,pos;
    long accNum,accNum2;
    Account Pwd;
    cout<<"请输入销户账号:";
    cin>>accNum;
    pos=searchAccount(accNum);
    if(pos==-1)
    {
        cout<<"卡号有误,请重新输入账号"<<endl;
        close();
    }
    cout<<"请再次输入账号:";
    cin>>accNum2;
    if(accNum!=accNum2)
    {
        cout<<"两次输入的账号不一致,请确认后再次输入"<<endl;
    }
    else
    {
        for(i=0;i<3;i++)
        {
            cout<<"请输入密码:";
            cin>>Pwd.accPwd;
            if(strcmp(array[pos].accPwd,Pwd.accPwd)==0)
            {
                break;
            }
            else
            {
                if(i<2)
                {
                    cout<<"密码错误,请请确认后重新输入,您还有"<<2-i<<"次机会";
                    cout<<endl;
                }
                else
                {
                    cout<<"您连续3次密码输入错误,销户失败!"<<endl;
                    cout<<"*****按任意键返回*****"<<endl;
                    fflush(stdin);
                    getchar();
                    work();
                    choose();
                    return;
                }
            }
        }
    }
    cout<<"销户前卡的信息"<<endl;
    printAccount(array[pos]);//找到了这张卡所对应的卡
    cout<<"您将进行销户!"<<endl;
    getchar();
    array[size].balance=0;
    strcpy(array[size].flag,"异常");
    strcpy(array[size].accName,"异常");
    cout<<endl<<"销户后卡的信息:"<<endl;
    printAccount(array[size]);
    cout<<endl<<"销户成功,按任意键返回"<<endl;
    fflush(stdin);
    getchar();
    work();choose();
 }
void quit()
{
    cout<<"谢谢使用,欢迎下次光临。"<<endl;
    return;
}




/*        
* 程序的版权和版本声明部分        
* Copyright (



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: