大型银行,功能全面!!!!

/*
* Copyright (c) 2012, 烟台大学计算机学院 
* All rights reserved. 
* 作    者:张浩  
* 完成日期:2012 年12月23日 
* 版 本 号:v1.0 
* 输入描述: 略
* 问题描述: 银行
* 程序输出:略
* 问题分析: 略
* 算法设计: 
*/
#include <iostream>
#include<string.h>
#include<stdio.h>
#include<iomanip>
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 login();   //登陆
long autoCreament(); //生成银行中自增卡号
void printAccount(Account acc);//输出指定卡的信息
void work();   //操作
void kaihu();   //开户
void xiaohu();  //销户
void cunkuan();  //存款
void qukuan();  //取款
void chaxun();  //查询
void tuichu();  //退出
void cuowu();   //选择错误项的提示
double money=0.0;
int searchAccount(long accNumber);//根据卡号查找卡在数组中的下标
int main()
{
    cout<<"                    ********************************"<<'\n';
    cout<<"                    *                              *"<<'\n';
    cout<<"                    *  欢迎使用储蓄只综合业务平台  *"<<'\n';
    cout<<"                    *                              *"<<'\n';
    cout<<"                    ********************************"<<'\n';
    login ();
	
    return 0;
}
int searchAccount(long accNumber) //根据卡号查找卡在数组中的下标
{
    int i,pos=-1;
    for(i=0;i<size;i++)
    {
        if(array[i].accNumber==accNumber)
		{
			pos=i;
			break;
		}
    }
    return pos;
}
void login()
{
    char name[20];//定义管理员账号
    char mima[20];//定义管理员密码
    int i;
    for(i=0;i<3;i++)
	{
        cout<<"请输入管理员账号:";
        cin>>name;
        cout<<"请输入管理员密码:";
        cin>>mima;
        if(strcmp(name,"zhanghao")==0&&strcmp(mima,"zhang")==0)
		{
			
			work();
        }
        else{
			if(i==2)
			{
				cout<<"您输入已超过三次,退出系统.....\n";
			}
			else
			{
				cout<<"您的用户名或密码错误!请从新输入:\n";
			}
        }
    }
}
void work()
{
    char chioce;
	cout<<'\n';
	cout<<"                    ********************************"<<'\n';
	cout<<"                    *                              *"<<'\n';
	cout<<"                    *       1 开户    2 销户       *"<<'\n';
	cout<<"                    *       3 存款    4 取款       *"<<'\n';
	cout<<"                    *       5 查询    6 退出       *"<<'\n';
	cout<<"                    *                              *"<<'\n';
	cout<<"                    ********************************"<<'\n';
	cout<<'\n';
	cout<<"请选择业务:";
	cin>>chioce;
	switch(chioce)
	{
	case'1':
		kaihu();break;
	case'2':
		//xiaohu();break;
	case'3':
		cunkuan();break;
	case'4':
		qukuan();break;
	case'5':
		chaxun();break;
	case'6':
		tuichu();break;
    default:
		cuowu();break;
	}
	
}
void kaihu()
{
	int i;
	Account Pwd1;
	cout<<"请输入户主:";
	cin>>array[size].accName;
	for(i=0;i<3;i++)
	{
		cout<<"请输入密码:";
		cin>>array[size].accPwd;
		cout<<"请再次输入密码:";
		cin>>Pwd1.accPwd;
		if(strcmp(Pwd1.accPwd,array[size].accPwd)==0)
		{
			cout<<"请输入金额:";
			cin>>array[size].balance;
			strcpy(array[size].flag,"正常");  //确定卡的状态
			array[size].accNumber=autoCreament();    //写卡号
			printAccount(array[size]);
			size++;
			cout<<"开户成功,按任意键返回"<<endl;
			fflush(stdin);
			getchar();
			work();
		}else{
			if(i==2){
				cout<<"密码重复太多次不同!!请重新选择所需业务:\n";
				work();
			}else{
				cout<<"两次输入的密码不同!请重新确定密\n";
			}
		}
	}
	
}
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)<<"                *"<<setw(8)<<acc.accNumber<<setw(8)<<acc.accName<<setw(8)<<acc.accPwd<<setw(8)<<acc.balance<<setw(8)<<acc.flag<<"*"<<endl;
    cout<<"                *"<<"*****************************************"<<endl;
}
void cunkuan ()
{
    long accNum;
    double money;
    int pos;
    cout<<"请输入存款的卡号:";
    cin>>accNum;
    pos=searchAccount(accNum);
    if(pos==-1)
    {
        cout<<"卡号不存在!请核对卡号重新输入:\n";
        cunkuan ();
    }else{
        cout<<"存款前的卡的信息:\n";
        printAccount(array[pos]);
        cout<<"请输入存款金额:";
        cin>>money;
        array[pos].balance+=money;
        cout<<"存款后的卡的信息:\n";
        printAccount(array[pos]);
        fflush(stdin);
		getchar();
        work();
    }
}
void qukuan() //取款
{
    long accNum;
    double  money;
    int pos,i;
    Account Pwd;
    cout<<"请输入卡号:";
    cin>>accNum  ;
    pos=searchAccount(accNum);
    if(pos==-1){
        cout<<"卡号不存在!请核!!!\n";
        qukuan();
    }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";
					work();
				}
				fflush(stdin);
				getchar();
				work();
			}else{
				if(i==2){
					cout<<"您输入已超过三次!请退出系统......\n";
					tuichu();
				}else{
					cout<<"密码错误!请核!!!\n";
				}
				
			}
		}
		
	}	
}
void chaxun()
{
	long accNum;
    int pos,i;
    Account Pwd;
    cout<<"请输入卡号:";
    cin>>accNum  ;
    pos=searchAccount(accNum);
    if(pos==-1)
	{
        cout<<"卡号不存在!请核!!!\n";
        chaxun();
    }
	else
	{
		for(i=0;i<3;i++)
		{
			cout<<"请输入密码:";
			cin>>Pwd.accPwd;
			if(strcmp(array[pos].accPwd,Pwd.accPwd)==0)
			{
				cout<<"您的卡的信息为:\n";
				printAccount(array[pos]);
				cout<<"请按任意键返回!\n";
				fflush(stdin);
				getchar();
				work();
			}
			else
			{
				if(i==2)
				{
					cout<<"您输入已超过三次!请退出系统......\n";
					tuichu();
				}
				else
				{
					cout<<"密码错误!请核!!!\n";
				}
				
			}
		}
		
	}
	
}
void tuichu()
{
	cout<<'\n';
	cout<<"谢谢您对本银行的支持,再见!";
	cout<<'\n';
	exit(0);
}
void cuowu(){
	cout<<"请按主页名提示,选择业务!!!!\n";
	work();
}


运行结果:

心得体会:来指点指点吧!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值