自己的银行系统1

/*
* 程序的版权和版本声明部分
* Copyright (c)2012, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: fun.cpp
* 作 者:王飞
* 完成日期: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 welcome();
//主界面
void mainFrame();
//生成银行中自增卡号
long autoCreament();
//开户
void openAccount();
//存款
void deposit();
//鉴定密码
void chaxunmima(char Pwd[]);
//输出指定卡的信息
void printAccount(Account acc);
//查询当前的余额
void bid();
//相应的取款
void withdrawal();
//销户
void closed();
//根据卡号查找卡在数组中的下标

int searchAccount(long accNumber);

int main()
{
    char loginName[20];
    char loginPwd[20];
    int i;
    //欢迎界面
    welcome();
    //..
    for(i=0;i<3;i++)
    {
        cout<<endl<<"请输入用户名:";
        cin>>loginName;
        cout<<endl<<"请输入六位登陆密码:";
        cin>>loginPwd;
        if(strcmp(loginName,"admin")==0&&strcmp(loginPwd,"666666")==0)//鉴定管理员的身份
        {
            mainFrame();
            break;
        }
		else
		{
            cout<<endl<<"用户名或密码输入错误"<<endl;
            cout<<endl<<"您还有"<<2-i<<"次机会"<<endl<<endl;
            if(2-i==0){
                cout<<"请办理密码业务后再来!"<<endl;
            }
        }
    }
    return 0;
}
//欢迎界面

void welcome()
{
    cout<<'\t'<<'\t'<<'\t'<<"+----------------------------------+"<<endl;
    cout<<'\t'<<'\t'<<'\t'<<"|                                  |"<<endl;
    cout<<'\t'<<'\t'<<'\t'<<"|--------欢迎登陆银行系统----------|"<<endl;
    cout<<'\t'<<'\t'<<'\t'<<"|                                  |"<<endl;
    cout<<'\t'<<'\t'<<'\t'<<"+----------------------------------+"<<endl;
}
//主菜单
void mainFrame()
{
	int order;
	cout<<endl;
	cout<<"***-----------------------------***"<<endl;
	cout<<"***----------1.开户-------------***"<<endl;
	cout<<"***----------2.存款-------------***"<<endl;
	cout<<"***----------3.取款-------------***"<<endl;
	cout<<"***----------4.销户-------------***"<<endl;
	cout<<"***----------5.查询-------------***"<<endl;
	cout<<"***----------6.退出-------------***"<<endl;
	cout<<"***-----------------------------***"<<endl;
	cout<<endl<<"请输入操作指令: ";
	cin>>order;
	switch(order){
	case 1:
		openAccount();
		break;
	case 2:
		deposit();
		break;
	case 3:
		withdrawal();
		break;
	case 4:
		closed();
		break;
	case 5:
		bid();
		break;
	default:
		break;
	}
}
//创建账户
void openAccount()
{
    cout<<endl<<"请输入户主:";
	
    cin>>array[size].accName;
	fflush(stdin);
    cout<<endl<<"请输入六位数字密码:";
    cin>>array[size].accPwd;
	fflush(stdin);
    chaxunmima(array[size].accPwd);
    cout<<endl<<"请输入开户金额:";
    cin>>array[size].balance;
	fflush(stdin);
    //..
    strcpy(array[size].flag,"正常");
    //写卡号
    array[size].accNumber=autoCreament();
    printAccount(array[size]);
    size++;
    cout<<endl<<"开户成功,按任意键返回"<<endl;
    fflush(stdin);
    getchar();
    mainFrame();
}

//密码的鉴定
void chaxunmima(char Pwd[])
{
    int i;
    char a[7];
	if(strlen(Pwd)!=6)
	{
		cout<<"不是六位数字密码!请重新输入!"<<endl;
		openAccount();
	}
	else
	{
		cout<<endl<<"请您再次输入:";
		for(i=0;i<6;i++)
		{
			cin>>a[i];
		}
		a[6]='\0';
		if(strcmp(a,Pwd)==0)
		{
			cout<<endl<<"创建密码完成!"<<endl;
		}
		else
		{
			cout<<"前后密码输入不一致,请重新输入!"<<endl;
			openAccount();
		}
	}
}
//实现卡号的涨涨
long autoCreament()
{
    if(size==0){
        return INITNUMBER;
    }else{
        return array[size-1].accNumber+1;
    }
}

//输出指定卡的信息
void printAccount(Account acc)
{
    cout<<endl;
    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)<<"正常"<<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){
            //找到了这张卡
            pos=i;
            break;
        }
    }
    return pos;
}
//存款
void deposit()
{
    long accNum;//存款的账号
    double money;//存款的金额
    int pos;
    cin.sync();
    cout<<endl<<"请输入存款的账号:";
    cin>>accNum;
    cout<<endl<<"请输入存款金额:";
    cin>>money;
    pos=searchAccount(accNum);
	
    if(pos==-1){
        //卡号有误
        cout<<"卡号不存在,请重新操作"<<endl;
        //...
        deposit();
    }else{
        //展示下存款前卡的信息
        cout<<endl<<"存款前卡的信息:"<<endl;
        printAccount(array[pos]);
        //找到了该卡号所对应的卡
        array[pos].balance+=money;
		//展示存款后卡的信息
        cout<<endl<<"存款后卡的信息:"<<endl;
        printAccount(array[pos]);
        cout<<endl<<"存款成功,按任意键返回"<<endl;
        fflush(stdin);
        getchar();
        mainFrame();
    }
}

//查询余额
void bid()
{
    int size,accNumber;
    cout<<endl<<"请输入您要查询的卡号:";
    cin>>accNumber;
    size=searchAccount(accNumber);
    printAccount(array[size]);
	cout<<endl<<"查询成功,按任意键返回"<<endl;
    fflush(stdin);
    getchar();
    mainFrame();
}

//取款
void withdrawal()
{
	char key[7];
	int money,i,size,accNumber;
	cout<<endl<<"请输入您的卡号:";
	cin>>accNumber;

	//寻找该卡号
	size=searchAccount(accNumber);
	cout<<endl<<"请输入您的密码:";
	for(i=0;i<6;i++)
		{
			cin>>key[i];
		}
		key[6]='\0';
		if(strcmp(key,array[size].accPwd)==0)
		{
			cout<<endl<<"请输入您要取款的金额:";
			cin>>money;
			//展示下存款前卡的信息
			 cout<<endl<<"取款前卡的信息:"<<endl;
			 printAccount(array[size]);
			 //找到了该卡号所对应的卡
			 if(array[size].balance<money)
			 {
				cout<<endl<<"您的账户余额不足!无法取款啊!"<<endl;
				cout<<endl<<"取款失败,按任意键返回!"<<endl;
				fflush(stdin);
				getchar();
				mainFrame();
			 }
			 else
			 {
				array[size].balance-=money;
	        	//展示存款后卡的信息
			cout<<endl<<"取款后卡的信息:"<<endl;
			printAccount(array[size]);
			cout<<endl<<"取款成功,按任意键返回"<<endl;
			fflush(stdin);
			getchar();
			mainFrame();
			 }

		
		}
		else
		{
			cout<<endl<<"密码有误,请重新操作!!!"<<endl;
		
		}

}

//销户
//销户
void closed()
{
	char key[7];
	int i,size,accNumber;
	cout<<endl<<"请输入您要销户的卡号:";
	cin>>accNumber;
	
	//寻找该卡号
	size=searchAccount(accNumber);
	cout<<endl<<"请输入您的密码:";
	for(i=0;i<6;i++)
		{
			cin>>key[i];
		}
		key[6]='\0';
		if(strcmp(key,array[size].accPwd)==0)
		{
			cout<<endl<<"销户前卡的信息:"<<endl;
			printAccount(array[size]);
			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();
			mainFrame();


		}
		else
		{
			cout<<"密码错误!!!不要妄想销别人的户!!!!!"<<endl;
			cout<<endl<<"按任意键返回"<<endl;
			fflush(stdin);
			getchar();
			mainFrame();
		
		}
}



输出结果:




心得体会:

自己加油!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值