带文件的银行系统

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <iomanip>
//文件操作必写
#include <fstream>
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 login();
//主界面
void mainFrame();
//密码检测
bool decide( char pass[]); 
//生成银行中自增卡号
long autoCreament();
//开户
void openAccount();
//存款
void deposit();
//取款
void draw();
//销户
void closed();
//查询
void demand();
//退出
void quit();
//输出指定卡的信息
void printAccount(Account acc);
void read();   //文件读取
void preserve();  //文件保存
//根据卡号查找卡在数组中的下标
int searchAccount(long accNumber);

int main()
{
	read();
	//欢迎界面
	welcome();
	//登录
	login();
	while(1)
	{
		//业务选择
		mainFrame();
		preserve();
	}
	return 0;
}


//管理员登陆
void login()
{
    char loginName[20];
    char loginPwd[20];
    int i;
	//..
    for(i=1;i<4;i++)
    {
        cout<<"请输入管理员账号:";
		fflush(stdin);
		gets(loginName);
		cout<<"请输入管理员密码:";
		fflush(stdin);
		gets(loginPwd);
		//判断
		if(strcmp(loginName,"田宇")==0&&strcmp(loginPwd,"计124-3")==0)
		{
			break;
		}
		else
		{
			if(i<3)
			{
				cout<<"账号或密码错误!请核对后重新输入\n";
				cout<<"您还有"<<3-i<<"次机会重新输入账号和密码。"<<endl;
			}
			else
			{
				cout<<"密码错误超过3次,退出系统……\n";
				exit(0);
			}	
		}
	}	
}


//总界面
void welcome()
{
    cout<<"                 +------------------------------------------+"<<endl;
    cout<<"                 |-----------欢迎登陆田氏银行系统-----------|"<<endl;
    cout<<"                 +------------------------------------------+"<<endl;
}


//用户界面
void mainFrame()
{
	int order;
	cout<<"                    |-----------------------------------|"<<endl;
	cout<<"                    |--------------1.开户---------------|"<<endl;
	cout<<"                    |-----------------------------------|"<<endl;
	cout<<"                    |--------------2.存款---------------|"<<endl;
	cout<<"                    |-----------------------------------|"<<endl;
	cout<<"                    |--------------3.取款---------------|"<<endl;
	cout<<"                    |-----------------------------------|"<<endl;
	cout<<"                    |--------------4.销户---------------|"<<endl;
	cout<<"                    |-----------------------------------|"<<endl;
	cout<<"                    |--------------5.查询---------------|"<<endl;
	cout<<"                    |-----------------------------------|"<<endl;
	cout<<"                    |--------------6.退出---------------|"<<endl;
	cout<<"                    |-----------------------------------|"<<endl;
	cout<<"请输入操作指令"<<endl;
	cin>>order;
	switch(order){
	case 1:
		openAccount();
		break;
	case 2:
		deposit();
		break;
	case 3:
		draw();
		break;
	case 4:
		closed();
		break;
	case 5:
		demand();
		break;
	case 6:
		quit();
		break;
	default:
		break;
	}
}


//开户
void openAccount()
{
	Account mm;
    cout<<"请输入户主:";
    cin>>array[size].accName;
    cout<<"请输入密码(六位纯数字):";
	cin>>array[size].accPwd;
	if(decide(array[size].accPwd))
	{	
		cout<<"请再次输入密码(六位纯数字):";
		cin>>mm.accPwd;
		if(strcmp(array[size].accPwd,mm.accPwd)==0)
		{
			cout<<"请输入金额:";
			cin>>array[size].balance;
			strcpy(array[size].flag,"正常");
			//写卡号
			array[size].accNumber=autoCreament();
			printAccount(array[size]);
			size++;
			cout<<"开户成功,按enter键返回"<<endl;
			preserve();
			fflush(stdin);
			getchar();
			mainFrame();
		}
		else
		{
			cout<<"两次输入的密码不一致,请重新开户"<<endl;
			openAccount();
		}
		
	}
	else
	{
		cout<<"密码必须为6位数字,请重新开户"<<endl;
		openAccount();
	}
	
	
}

//用户信息读取
void read()
{
	ifstream account("yinhang.txt",ios::in);
	int s1;
	if(!account)
	{
		cerr<<"open error"<<endl;
		exit(1);
	}
	account>>size;
	for(s1=0;s1<size;++s1)
	{
		account>>array[s1].accNumber;
		account>>array[s1].accName;
		account>>array[s1].accPwd;
		account>>array[s1].balance;
		account>>array[s1].flag;
	}
	account.close();
}

//用户信息写入
void preserve()
{
	ofstream account("yinhang.txt",ios::out);
	int s1;
		if(!account)
	{
		cerr<<"open error"<<endl;
		exit(1);
	}
	
	for(s1=0;s1<size;++s1)
	{
		account<<s1+1<<"	";
		account<<array[s1].accNumber<<"  ";
		account<<array[s1].accName<<"  ";
		account<<array[s1].accPwd<<"  ";
		account<<array[s1].balance<<"  ";
		account<<array[s1].flag<<"  ";
		account<<endl;
	}
	account.close();
}

//密码鉴定
bool decide( char pass[])
{
	bool flag=true;
	int len,i;
	len=strlen(pass);
	if(len==6)
	{
		for(i=0;i<len;i++)
		{
			if(pass[i]<48||pass[i]>57){
				flag=false;
				break;
			}
		}
	}else{
		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)<<" 有 "<<setw(8)<<acc.balance<<setw(8)<<acc.flag<<"|"<<endl;
    cout<<"                  |----------------------------------------|"<<endl;
}

/*根据卡号查找卡的下标
* 若返回值=-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,accNum1;//存款的账号
    double money;//存款的金额
    int pos;
	char a;
    cout<<"请输入存款账号:";
    cin>>accNum;
    pos=searchAccount(accNum);
	if(strcmp(array[pos].flag,"已销户")==0)
	{
		cout<<"此卡已销户,重新输入卡号请按Y  返回主菜单请按其他键"<<endl;
		cin>>a;
		if(a=='Y' || a=='y')
		{
			deposit();
		}
		else
		{
			mainFrame();
		}
	}
	
    if(pos==-1)
	{
        //卡号有误
        cout<<"卡号不存在,请重新输入卡号"<<endl;
        //...
        deposit();
    }
	cout<<"请再次输入存款账号:";
	cin>>accNum1;
	if(accNum!=accNum1)
	{
		cout<<"两次输入的账号不一致,请确认后再次输入"<<endl;
		deposit();
	}
	else
	{
		cout<<"请输入存款金额:";
		cin>>money;
        //展示下存款前卡的信息
        cout<<"存款前卡的信息:"<<endl;
        printAccount(array[pos]);
        //找到了该卡号所对应的卡
        array[pos].balance+=money;
		//展示存款后卡的信息
        cout<<"存款后卡的信息:"<<endl;
        printAccount(array[pos]);
        cout<<"存款成功,按enter键返回"<<endl;
		preserve();
        fflush(stdin);
        getchar();
        mainFrame();
	}
}


//取款
void draw()
{
	long accNum;//取款的账号
    double money;//取款的金额
    int pos,i;
	char a,b;
	Account mm;
	cout<<"请输入取款的账号:";
	cin>>accNum;
	pos=searchAccount(accNum);
	if(strcmp(array[pos].flag,"已销户")==0)
	{
		cout<<"此卡已销户,重新输入卡号请按Y  返回主菜单请按其他键"<<endl;
		cin>>a;
		if(a=='Y' || a=='y')
		{
			draw();
		}
		else
		{
			mainFrame();
		}
	}
	if(pos==-1)
	{
		//卡号有误
		cout<<"卡号不存在,请重新输入卡号"<<endl;
		//...
		draw();
	}
	else
	{	
		for(i=1;i<4;i++)
		{
			
			cout<<"请输入密码:";
			cin>>mm.accPwd;
			if(strcmp(array[pos].accPwd,mm.accPwd)==0)	
			{
				break;
			}
			else
			{
				if(i<3)
				{
					cout<<"账号或密码错误!请核对后重新输入\n";
					cout<<"您还有"<<3-i<<"次机会重新输入账号和密码。"<<endl;
				}
				else
				{
					cout<<"密码错误超过3次,退出系统……\n";
					exit(0);
				}
				
			}
		}
	}  
	cout<<"请输入取款金额:";
	cin>>money;
	//展示下取款前卡的信息
	cout<<"取款前卡的信息:"<<endl;
	printAccount(array[pos]);
	if(array[pos].balance<money)
	{
		cout<<"您的余额不足,重新输入取款账号和密码请按Y  返回主菜单请按其他键"<<endl;
		cin>>b;
		if(b=='Y' || b=='y')
		{
			draw();
		}
		else
		{
			mainFrame();
		}
	}
	else
	{
		//找到了取卡号所对应的卡
		array[pos].balance-=money;
	}
	//展示存款后卡的信息
	cout<<"取款后卡的信息:"<<endl;
	printAccount(array[pos]);
	cout<<"取款成功,按enter键返回"<<endl;
	preserve();
	fflush(stdin);
	getchar();
	mainFrame();
    
}


//查询
void demand()
{
	long accNum;//查询的账号
    int pos,i;
	char a;
	Account mm;
	cout<<"请输入要查询的账号:";
	cin>>accNum;
	pos=searchAccount(accNum);
	if(pos==-1)
	{
		//卡号有误
		cout<<"卡号不存在,重新输入卡号请按Y  返回主菜单请按其他键"<<endl;
		cin>>a;
		if(a=='Y' || a=='y')
		{
			demand();
		}
		else
		{
			mainFrame();
		}
	}
	else
	{	
		for(i=1;i<4;i++)
		{
			
			cout<<"请输入密码:";
			cin>>mm.accPwd;
			if(strcmp(array[pos].accPwd,mm.accPwd)==0)	
			{
				break;
			}
			else
			{
				if(i<3)
				{
					cout<<"账号或密码错误!请核对后重新输入\n";
					cout<<"您还有"<<3-i<<"次机会重新输入账号和密码。"<<endl;
				}
				else
				{
					cout<<"密码错误超过3次,退出系统……\n";
					exit(0);
				}
				
			}
		}
	}  
	
	//展示卡的信息
	cout<<"此卡的信息:"<<endl;
	printAccount(array[pos]);
	cout<<"查询成功,按enter键返回"<<endl;
	fflush(stdin);
	getchar();
	mainFrame();
}


//销户
void closed()
{
	long accNum;//销户的账号
    int pos,i;
	char a;
	Account mm;
	cout<<"请输入要销户的账号:";
	cin>>accNum;
	pos=searchAccount(accNum);
	if(pos==-1)
	{
		//卡号有误
		cout<<"卡号不存在,请重新输入卡号"<<endl;
		//...
		closed();
	}
	else
	{	
		for(i=1;i<4;i++)
		{
			
			cout<<"请输入密码:";
			cin>>mm.accPwd;
			if(strcmp(array[pos].accPwd,mm.accPwd)==0)	
			{
				cout<<endl<<"销户前卡的信息:"<<endl;
				printAccount(array[pos]);
				cout<<"您将进行销户!!!!!!"<<endl;
				cout<<" 确定请按Y 按其他键返回主菜单 "<<endl;
				cin>>a;
				if(a=='Y' || a=='y')
				{
					getchar();
					array[pos].balance=0;
					strcpy(array[pos].flag,"已销户");
					strcpy(array[pos].accName,"无");
					cout<<endl<<"销户后卡的信息:"<<endl;
					printAccount(array[pos]);
					cout<<endl<<"销户成功,按enter键返回"<<endl;
					preserve();
					fflush(stdin);
					getchar();
					mainFrame();
				}
				else
				{
					mainFrame();	
				}
			}
			else
			{
				
				if(i<3)
				{
					cout<<"账号或密码错误!请核对后重新输入\n";
					cout<<"您还有"<<3-i<<"次机会重新输入账号和密码。"<<endl;
				}
				else
				{
					cout<<"密码连续3次错误!!!销户失败!!!"<<endl;
					cout<<endl<<"按enter键返回"<<endl;
					fflush(stdin);
					getchar();
					mainFrame();
					
				}
			}
		}
	}
}

//退出
void quit()
{
	char a;
	cout<<"退出请按Y 按其他键返回主菜单 "<<endl;
	cin>>a;
	if(a=='Y' || a=='y')
	{
		cout<<"感谢您本次的使用,欢迎下次光临。"<<endl;
		exit(0);
	}
	else
	{
		mainFrame();
	}
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
系统根据B/S,即所谓的电脑浏览器/网络服务器方式,运用Java技术性,挑选MySQL作为后台系统系统主要包含对客服聊天管理、字典表管理、公告信息管理、金融工具管理、金融工具收藏管理、金融工具银行卡管理、借款管理、理财产品管理、理财产品收藏管理、理财产品银行卡管理、理财银行卡信息管理、银行卡管理、存款管理、银行卡记录管理、取款管理、转账管理、用户管理、员工管理等功能模块。 文中重点介绍了银行管理的专业技术发展背景和发展状况,随后遵照软件传统式研发流程,最先挑选适用思维和语言软件开发平台,依据需求分析报告模块和设计数据库结构,再根据系统功能模块的设计制作系统功能模块图、流程表和E-R图。随后设计架构以及编写代码,并实现系统能模块。最终基本完成系统检测和功能测试。结果显示,该系统能够实现所需要的作用,工作状态没有明显缺陷。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。进入银行卡列表,管理员可以进行查看列表、模糊搜索以及相关维护等操作。用户进入系统可以查看公告和模糊搜索公告信息、也可以进行公告维护操作。理财产品管理页面,管理员可以进行查看列表、模糊搜索以及相关维护等操作。产品类型管理页面,此页面提供给管理员的功能有:新增产品类型,修改产品类型,删除产品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值