前文——这学期学完c++的类的搭建,构成,及继承与派生,我将在后续的代码开发过程中逐步实现在结构体中没办法实现的类的封装、数据私密性
一、总体范本
(一) 前文
需使用的头文件、初始化定义结构体、函数调用前声明语句
(二)操作方式
文件的输入输出流
到目前为止,我们已经使用了 iostream 标准库,它提供了 cin 和 cout 方法分别用于从标准输入读取流和向标准输出写入流,同时我们还加入了文件的输入输出流,提供了查询、展示功能
(三)函数介绍
客户资料管理、信息查询菜单、存、取款菜单、排序菜单、汇率转换菜单、页面显示菜单、 贷款评估菜单、密码修改菜单。
续接
续接
注释方式略有不同,属个人习惯有不足之处敬请指正~
#include<iostream>
#include<fstream>
#include<string>
#include<windows.h>
#include <vector>
#include <algorithm>
#include <openssl/md5.h>
using namespace std;
#define N 100
//定义元数据
struct User{
std::string name;
std::string num;
std::string cardnum;
std::string creadit;
std::string password;
long double treasure;
};
struct Creditcard{
std::string creditcard;//信用卡
};
struct Depositscard{
std::string depositscard;//储蓄卡
};
/*···········定义结构体数组···········*/
void menu(User s[],int n);//***************************************************主菜单显示
void Customer(User s[],int n);//***********************************************客户资料管理
void Information(User s[],int n);//********************************************用户信息查询
void Deposit(User s[],int n);//************************************************用户资金管理
void sort(User s[],int n);//***************************************************用户信息排序
void change(User s[],int n);//*************************************************汇率转换功能
void showpage(User s[],int n);//************************************************页面显示
void loanassess(User s[],int n);//**********************************************贷款评估
/*···········调用前函数声明···········*/
void inputsigle(User &s){
cout<<"请输入银行用户信息:"<<endl;
cout<<"姓名\t身份码\t\t\t银行卡号\t\t\t余额\t\t信用等级\t密码"<<endl;
cin>>s.name>>s.num>>s.cardnum>>s.treasure>>s.creadit>>s.password;
}
/*··········· 输入函数 ···········*/
void showsigle(User s){
cout<<"姓名\t身份码\t\t\t银行卡号\t\t余额\t信用等级\t密码"<<endl;
cout<<s.name<<"\t"<<s.num<<"\t"<<s.cardnum<<"\t"<<s.treasure<<"\t"<<s.creadit<<"\t\t"<<s.password<<endl;
}
/*··········· 输出函数 ···········*/
void outfromfile(User s[],int &n){
int i=0;
fstream infile("D:\\高级语言课程设计\\演示\\银行用户信息.txt",ios::in);
if(!infile)
{
cout<<"文件打开失败!"<<endl;
exit(0);
}
while(!infile.eof())
{
infile>>s[i].name>>s[i].num>>s[i].cardnum>>s[i].treasure>>s[i].creadit>>s[i].password;
i++;
}
infile.close();
n=i;//重大修改
}
/*··········· 读取数据 ···········*/
void savetofile(User s[],int n){
int i;
fstream outfile("D:\\高级语言课程设计\\演示\\银行用户信息.txt",ios::out);
if(!outfile)
{
cout<<"文件打开失败!"<<endl;
exit(0);
}
for(i = 0;i < n; i++)
{
outfile<<s[i].name<<"\t"<<s[i].num<<"\t"<<s[i].cardnum<<"\t"<<s[i].treasure<<"\t"<<s[i].creadit<<"\t\t"<<s[i].password;
if(i<n-1)
outfile<<endl;
}
outfile.close();
}
/*··········· 保存数据 ···········*/
void showall(User s[],int &n){
int i;
cout<<"~~~~~~~~~~~~~~~~~~~~ 银行用户信息 ~~~~~~~~~~~~~~~~~~~~"<<endl;
cout<<"姓名\t身份码\t\t\t银行卡号\t\t\t余额\t\t信用等级\t密码"<<endl;
for(i = 0;i < n; i++)
cout<<s[i].name<<"\t"<<s[i].num<<"\t"<<s[i].cardnum<<"\t\t"<<s[i].treasure<<"\t\t"<<s[i].creadit<<"\t\t"<<s[i].password<<endl<<endl;
cout<<"~~~~~~~~~~~~~~~~~~~~网络交易有风险*投资理财需谨慎~~~~~~~~~~~~~~~~~~~~"<<endl;
}
/*···········客户信息展示···········*/
int searchbynum(User s[],int n,string num){
int i;
for(i = 0;i < n; i++)
{
if(s[i].num == num)
return i;
}
return -1;
}
/*···········查找身份信息···········*/
int searchbycardnum(User s[],int n,string cardnum){
int i;
for(i = 0;i < n; i++)
{
if(s[i].cardnum == cardnum)
return i;
}
return -1;
}
/*···········查找银行信息···········*/
void addition(User s[],int &n){
cout<<"~~~~~~~~~~~~~~~~~~~~银行用户信息~~~~~~~~~~~~~~~~~~~~"<<endl<<endl;
cout<<" ▽ ☆ ▽ ☆ ▽ ☆ 增加用户信息 ☆ ▽ ☆ ▽ ☆ ▽"<<endl;
cout<<"----------------------------------------------------"<<endl;
User t;
int result;//存储按身份码查询的结果
inputsigle(t);//增加是先加再查重
result=searchbynum(s,n,t.num);//修改.删除流程都是先查找再删除、修改
if(result == -1)
{
s[n] = t;
n++;
cout<<"添加数据成功!"<<endl;
// cout<<"正在返回上一级菜单……"<<endl;
// Sleep(2000);
// Customer(s,n);
}
else
{
cout<<"该账户已被使用,添加失败!"<<endl;
//cout<<"正在返回上一级菜单……"<<endl;
//Sleep(2000);
// Customer(s,n);
}
n+1;
char c;
Sleep(5000);
cout<<"当前操作已完成"<<endl;
cout<<"是否继续继续录入?(Y/N)"<<endl;
cin>>c;
if(c=='Y'||c=='y')
{
addition(s,n);
}
else
{
cout<<"正在返回上一级菜单……"<<endl;
Sleep(2000);
Customer(s,n);
}
}
/*···········增加用户信息···········*/
void reduce(User s[],int &n){
string num;
int result;
cout<<"~~~~~~~~~~~~~~~~~~~~银行用户信息~~~~~~~~~~~~~~~~~~~~"<<endl<<endl;
cout<<"~~~~~~~~~~~~~~~~~~~~删除用户信息~~~~~~~~~~~~~~~~~~~~"<<endl<<endl;
cout<<"----------------------------------------------------"<<endl;
cout<<"请输入要删除的用户对应的身份码:"<<endl;
cin>>num;
result = searchbynum(s,n,num);
if(result == -1)
{
cout<<"未能实现删除,用户信息不存在~~~" << endl;
}
else
{
cout<<"该银行用户的信息如下"<<endl;
showsigle(s[result]);
char c ;
cout<<"请确认是否要删除以上银行用户信息(Y/N)(Y表示确认此操作,N表示否定)" <<endl;
cin>>c;
if(c == 'Y'){
int j;
for(j=result;j<n+1;j++)
s[j]=s[j+1];
n--;
}
else if(c == 'N'){
cout<<"正在取消删除操作~~~~~"<<endl;
}
else{
cout<<"输入错误!!!"<<endl;
}
}
cout<<"正在返回上一级菜单……"<<endl;
Sleep(2000);
Customer(s,n);
}
/*···········删除用户信息···········*/
void alter(User s[],int &n){
string num;
int result;
cout<<"~~~~~~~~~~~~~~~~~~~~银行用户信息~~~~~~~~~~~~~~~~~~~~"<<endl<<endl;
cout<<"~~~~~~~~~~~~~~~~~~~~修改用户信息~~~~~~~~~~~~~~~~~~~~"<<endl<<endl;
cout<<"----------------------------------------------------"<<endl;
cout<<"请输入要修改的用户对应的身份码:"<<endl;
cin>>num;
result = searchbynum(s,n,num);
if(result == -1)
{
cout<<"未能实现修改,用户信息不存在~~~" << endl;
cout<<"正在返回上一级菜单……"<<endl;
Sleep(2000);
Customer(s,n);
}
else
{
cout<<"该银行用户的信息如下"<<endl;
showsigle(s[result]);
cout<<"请输入新的姓名"<<endl;
cin>>s[result].name;
cout<<"请输入新的余额"<<endl;
cin>>s[result].treasure;
cout<<"请输入新的信用等级"<<endl;
cin>>s[result].creadit;
cout<<"数据修改成功"<<endl;
cout<<"新的银行用户信息如下:"<<endl;
showsigle(s[result]) ;
}
Sleep(5000);
cout<<"当前操作已完成"<<endl;
cout<<"是否继续继续录入?(Y/N)"<<endl;
char c;
cin>>c;
if(c=='Y'||c=='y')
{
alter(s,n);
}
else if(c=='N')
{
cout<<"正在返回上一级菜单……"<<endl;
Sleep(2000);
Customer(s,n);
}
else
{
cout<<"输入错误~~~~~~~~~~~~~~"<<endl;
cout<<"正在返回上一级菜单……"<<endl;
Sleep(2000);
Customer(s,n);
}
}
/*···········修改用户信息···········*/
void Customer(User s[],int n){
int i;//记录菜单编号
while(1)
{
system("cls");
cout<<"============================"<<endl;
showall(s,n);
cout<<" 合计:"<<n<<"人"<<endl;
cout<<"============================"<<endl;
cout<<"信息维护菜单"<<endl;
cout<<"1、增加用户信息"<<endl;
cout<<"2、修改用户信息"<<endl;
cout<<"3、删除用户信息"<<endl;
cout<<"4、返回上一级菜单"<<endl;
cout<<"请输入菜单编号:";
cin>>i;
if(i>=1&&i<=4)
break;
cout<<"输入错误,请重新输入!"<<endl;
Sleep(3000);
}
switch(i)
{
case 1:addition(s,n);break;
case 2:alter(s,n);break;
case 3:reduce(s,n);break;
case 4:
cout<<"正在返回上一级菜单……"<<endl;
Sleep(3000);
menu(s,n);
}
}
/*···········客户资料管理···········*/
void search_num(User s[],int n){
string num;
int result = 0;
int i;
cout<<"按身份码查询银行用户信息"<<endl;
cout<<"请输入要查询的身份码:"<<endl;
cin>>num;
for(i = 0;i < n; i++){
if(num == s[i].num){
result++;
if(result == 1)
cout<<"姓名\t身份码\t\t\t银行卡号\t\t余额\t信用等级\t密码"<<endl;
cout<<s[i].name<<"\t"<<s[i].num<<"\t"<<s[i].cardnum<<"\t"<<s[i].treasure<<"\t "<<s[i].creadit<<"\t\t"<<s[i].password<<endl<<endl;
}
}
char c;
Sleep(5000);
cout<<"当前操作已完成"<<endl;
cout<<"是否继续查询?(Y/N)"<<endl;
cin>>c;
if(c=='Y'||c=='y')
{ system("cls");
search_num(s,n);
}
else
{
cout<<"正在返回上一级菜单……"<<endl;
Sleep(2000);
Information(s,n);
}
}
/*···········身份查询方式···········*/
void search_name(User s[],int n){
string name;
int result = 0;
int i;
cout<<"按姓名查询银行用户信息"<<endl;
cout<<"请输入要查询的姓名:"<<endl;
cin>>name;
for(i = 0;i < n; i++){
if(name == s[i].name){
result++;
if(result == 1){
cout<<"姓名\t身份码\t\t\t银行卡号\t\t余额\t信用等级\t密码"<<endl;
cout<<s[i].name<<"\t"<<s[i].num<<"\t"<<s[i].cardnum<<"\t"<<s[i].treasure<<"\t "<<s[i].creadit<<"\t\t"<<s[i].password<<endl<<endl;
}
}
}
char c;
Sleep(5000);
cout<<"当前操作已完成"<<endl;
cout<<"是否继续查询?(Y/N)"<<endl;
cin>>c;
if(c=='Y'||c=='y')
{ system("cls");
search_name(s,n);
}
else
{
cout<<"正在返回上一级菜单……"<<endl;
Sleep(2000);
Information(s,n);
}
}
/*···········姓名查询方式···········*/
void search_creadit(User s[],int n){
string creadit;
int result = 0;
int i;
cout<<"按信用等级查询银行用户信息"<<endl;
cout<<"请输入要查询的信用等级:"<<endl;
cin>>creadit;
for(i = 0;i < n; i++){
if (creadit ==s[i].creadit ) {
// 打印用户信息
cout << s[i].name << "\t" << s[i].num << "\t" << s[i].cardnum << "\t"
<< s[i].treasure << "\t\t" << s[i].creadit << "\t\t" << s[i].password << endl;
}
}
char c;
Sleep(5000);
cout<<"当前操作已完成"<<endl;
cout<<"是否继续查询?(Y/N)"<<endl;
cin>>c;
if(c=='Y'||c=='y')
{ system("cls");
search_creadit(s,n);
}
else
{
cout<<"正在返回上一级菜单……"<<endl;
Sleep(2000);
Information(s,n);
}
}
/*···········等级查询方式···········*/
void search_treasure(User s[],int n){
long double treasure;
int result = 0;
int i;
cout<<"按余额查询银行用户信息"<<endl;
cout<<"请输入要查询的用户余额的最小值:"<<endl;
cin>>treasure;
for(i = 0;i < n; i++){
if( s[i].treasure >= treasure){
result++;
if(result == 1)
cout<<"姓名\t身份码\t\t\t银行卡号\t\t余额\t信用等级\t密码"<<endl;
cout<<s[i].name<<"\t"<<s[i].num<<"\t"<<s[i].cardnum<<"\t"<<s[i].treasure<<"\t "<<s[i].creadit<<"\t\t"<<s[i].password<<endl<<endl;
}
}
char c;
Sleep(5000);
cout<<"当前操作已完成"<<endl;
cout<<"是否继续查询?(Y/N)"<<endl;
cin>>c;
if(c=='Y'||c=='y')
{ system("cls");
search_treasure(s,n);
}
else
{
cout<<"正在返回上一级菜单……"<<endl;
Sleep(2000);
Information(s,n);
}
}
/*···········余额查询方式···········*/
void search_cardnum(User s[],int n){
string cardnum;
int result = 0;
int i;
cout<<"按银行卡号查询银行用户信息"<<endl;
cout<<"请输入要查询的银行卡号:"<<endl;
cin>>cardnum;
for(i = 0;i < n; i++){
if(cardnum == s[i].cardnum){
result++;
if(result == 1)
cout<<"姓名\t身份码\t\t\t银行卡号\t\t余额\t信用等级\t密码"<<endl;
cout<<s[i].name<<"\t"<<s[i].num<<"\t"<<s[i].cardnum<<"\t"<<s[i].treasure<<"\t "<<s[i].creadit<<"\t\t"<<s[i].password<<endl<<endl;
}
}
char c;
Sleep(5000);
cout<<"当前操作已完成"<<endl;
cout<<"是否继续查询?(Y/N)"<<endl;
cin>>c;
if(c=='Y'||c=='y')
{ system("cls");
search_cardnum(s,n);
}
else
{
cout<<"正在返回上一级菜单……"<<endl;
Sleep(2000);
Information(s,n);
}
}
/*···········卡号查询方式···········*/
void Information(User s[],int n){
string num;
int result;
cout<<"~~~~~~~~~~~~~~~~~~~~ 银行用户信息查询菜单 ~~~~~~~~~~~~~~~~~~~~"<<endl<<endl;
cout<<"~~~~~~~~~~~~~~~~~~~~请输入要查询的用户的信息~~~~~~~~~~~~~~~~~~~~"<<endl<<endl;
cout<<"请选择要查询的方式~~~~"<<endl;
int i;
while(1)
{
system("cls");
cout<<"==========================================================================="<<endl;
cout<<"1、身份码查询方式"<<endl<<endl;
cout<<"2、姓名查询方式"<<endl<<endl;
cout<<"3、等级查询方式"<<endl<<endl;
cout<<"4、余额查询方式"<<endl<<endl;
cout<<"5、卡号查询方式"<<endl<<endl;
cout<<"6、返回上一级菜单" <<endl<<endl;
cout<<"请输入菜单编号:";
cin>>i;
if(i>=1&&i<=6)
break;
cout<<"输入错误,请重新输入!"<<endl;
Sleep(2000);
}
switch(i)
{
case 1:search_num(s,n);break;
case 2:search_name(s,n);break;
case 3:search_creadit(s,n);break;
case 4:search_treasure(s,n);break;
case 5:search_cardnum(s,n);break;
case 6:
cout<<"正在返回上一级菜单"<<endl;
Sleep(2000);
menu(s,n);
break;
}
}
/*···········用户信息查询···········*/
void deposit(User s[],int n,int result){
string c;
long double money;
cout<<"~~~~~~~~~~~~~~~~~~~~ 银行用户取款操作 ~~~~~~~~~~~~~~~~~~~~"<<endl;
cout<<"请输入此账户的密钥:";
cin>>c;
if(c==s[result].password){
cout<<"输入正确"<<endl;
cout<<"即将进行下一步操作........";
Sleep(3000);
cout<<"请您输入要取款的金额:";
cin>> money;
if(money<=s[result].treasure){
cout<<"余额充足——————"<<endl;
cout<<"正在为您执行取款操作......."<<endl;
Sleep(3000);
s[result].treasure-=money;
cout<<"取款成功......."<<endl;
cout<<"当前账户余额为:"<<s[result].treasure<<endl;
}
else{
cout<<"您的账户余额不足哦...要不咱再看看贷款^/^"<<endl;
}
char c;
Sleep(5000);
cout<<"当前操作已完成"<<endl;
cout<<"是否继续取款?(Y/N)"<<endl;
cin>>c;
if(c=='Y'||c=='y')
{ system("cls");
showsigle(s[result]);
deposit(s,n,result);
}
else
{
cout<<"正在返回主菜单……"<<endl;
Sleep(2000);
menu(s,n);
}
}
}
/*··········· 取款操作 ···········*/
void Withdrawal(User s[],int n,int result){
char c;
cout<<"~~~~~~~~~~~~~~~~~~~~ 银行用户存款操作 ~~~~~~~~~~~~~~~~~~~~"<<endl<<endl;
cout<<"您是否向该账户转账?(Y/N)" <<endl;
cin>>c;
if(c=='Y'||c=='y'){
long double money;
cout<<"即将进行下一步操作........";
Sleep(3000);
cout<<"请您输入要存入的金额:";
cin>>money;
s[result].treasure+=money;
cout<<"正在为您执行存款操作......."<<endl;\
cout<<"当前账户余额为:"<<s[result].treasure<<endl;
Sleep(3000);
char c;
Sleep(5000);
cout<<"当前操作已完成"<<endl;
cout<<"是否继续存款?(Y/N)"<<endl;
cin>>c;
if(c=='Y'||c=='y')
{ system("cls");
showsigle(s[result]);
Withdrawal(s,n,result);
}
else if(c=='N')
{ cout<<"已退出存款菜单......"<<endl;
Sleep(2000) ;
cout<<"正在返回主菜单……"<<endl;
Sleep(2000);
menu(s,n);
}
else{
cout<<"输入错误!"<<endl;
cout<<"正在返回主菜单……"<<endl;
Sleep(2000);
menu(s,n);
}
}
else if(c=='N'){
cout<<"已停止转账行为........"<<endl;
cout<<"正在返回主菜单........."<<endl;
menu(s,n);
}
else{
cout<<"输入错误!"<<endl;
cout<<"正在返回主菜单........."<<endl;
menu(s,n);
}
}
/*··········· 存款操作 ···········*/
void Deposit(User s[],int n){
string cardnum;
int result;
cout<<"~~~~~~~~~~~~~~~~~~~~ 银行用户资金管理菜单 ~~~~~~~~~~~~~~~~~~~~"<<endl<<endl;
cout<<"~~~~~~~~~~~~~~~~~~~~请输入要操作的用户的银行卡号~~~~~~~~~~~~~~~~~~~~"<<endl<<endl;
cout<<"请输入银行卡号:";
cin>>cardnum;
result = searchbycardnum(s,n,cardnum);
if(result == -1)
{
cout<<"未能实现操作,用户信息不存在~~~" << endl<<endl;
cout<<"正在返回主菜单................."<<endl;
Sleep(3000);
menu(s,n);
}
else
{
cout<<"该银行用户的信息如下"<<endl;
showsigle(s[result]);
cout<<"请选择要操作的方式~~~~"<<endl;
int i;
while(1)
{
cout<<"=================================="<<endl;
cout<<"1、取款"<<endl;
cout<<"2、存款"<<endl;
cout<<"3、返回主菜单"<<endl<<endl;
cout<<"请输入菜单编号:";
cin>>i;
if(i>=1&&i<=3)
break;
cout<<"输入错误,请重新输入!"<<endl;
Sleep(2000);
}
switch(i)
{
case 1:deposit(s,n,result);break;
case 2:Withdrawal(s,n,result);break;
case 3:
cout<<"返回主菜单中......."<<endl;
Sleep(2000);
menu(s,n);
break;
}
}
}
/*···········用户资金管理···········*/
void sort_num(User s[],int n){
cout<<"& & & & & & & & & &身份信息排序& & & & & & & & & &"<<endl<<endl;
cout<<"--------------------------------------------------"<<endl;
int i = 0;
int j = 0;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (s[j].num > s[j + 1].num) {
// 交换整个User对象
User temp = s[j];
s[j] = s[j + 1];
s[j + 1] = temp;
}
}
}
for(i=0 ; i< n; i++){
cout<<"姓名\t身份码\t\t\t银行卡号\t\t余额\t信用等级\t密码"<<endl;
cout<<s[i].name<<"\t"<<s[i].num<<"\t"<<s[i].cardnum<<"\t"<<s[i].treasure<<"\t"<<s[i].creadit<<"\t\t"<<s[i].password<<endl<<endl;
}
cout<<"显示完毕.........."<<endl<<endl;
system("pause");
cout<<"正在返回主菜单……"<<endl;
Sleep(3000);
menu(s,n);
}
/*···········身份信息排序···········*/
void sort_cardnum(User s[],int n){
cout<<"& & & & & & & & & &卡号信息排序& & & & & & & & & &"<<endl<<endl;
cout<<"--------------------------------------------------"<<endl;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (s[j].cardnum > s[j + 1].cardnum) {
// 交换整个User对象
User temp = s[j];
s[j] = s[j + 1];
s[j + 1] = temp;
}
}
}
// 打印排序后的数组
for (int i = 0; i < n; i++) {
cout << "姓名\t身份码\t\t\t银行卡号\t\t余额\t信用等级\t密码" << endl;
cout << s[i].name << "\t" << s[i].num << "\t" << s[i].cardnum << "\t" << s[i].treasure << "\t" << s[i].creadit <<"\t\t"<<s[i].password<< endl << endl;
}
cout<<"显示完毕.........."<<endl<<endl;
system("pause");
cout<<"正在返回主菜单……"<<endl;
Sleep(3000);
menu(s,n);
}
/*···········卡号信息排序···········*/
void sort_creadit(User s[],int n){
cout<<"& & & & & & & & & &等级信息排序& & & & & & & & & &"<<endl<<endl;
cout<<"--------------------------------------------------"<<endl;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (s[j].creadit > s[j + 1].creadit) {
// 交换整个User对象
User temp = s[j];
s[j] = s[j + 1];
s[j + 1] = temp;
}
}
}
// 打印排序后的数组
for (int i = 0; i < n; i++) {
cout << "姓名\t身份码\t\t\t银行卡号\t\t余额\t信用等级\t密码" << endl;
cout << s[i].name << "\t" << s[i].num << "\t" << s[i].cardnum << "\t" << s[i].treasure << "\t" << s[i].creadit <<"\t\t"<<s[i].password<< endl << endl;
}
cout<<"显示完毕.........."<<endl<<endl;
system("pause");
cout<<"正在返回主菜单……"<<endl;
Sleep(3000);
menu(s,n);
}
/*···········等级信息排序···········*/
void sort_treasure(User s[],int n){
cout<<"& & & & & & & & & &余额信息排序& & & & & & & & & &"<<endl<<endl;
cout<<"--------------------------------------------------"<<endl;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (s[j].treasure > s[j + 1].treasure) {
// 交换整个User对象
User temp = s[j];
s[j] = s[j + 1];
s[j + 1] = temp;
}
}
}
// 打印排序后的数组
for (int i = 0; i < n; i++) {
cout << "姓名\t身份码\t\t\t银行卡号\t\t余额\t\t信用等级" << endl;
cout << s[i].name << "\t" << s[i].num << "\t" << s[i].cardnum << "\t" << s[i].treasure << "\t" << s[i].creadit <<"\t\t"<<s[i].password<< endl << endl;
}
cout<<"显示完毕.........."<<endl<<endl;
system("pause");
cout<<"正在返回主菜单……"<<endl;
Sleep(3000);
menu(s,n);
}
/*···········余额信息排序···········*/
void sort(User s[],int n){
cout<<"请选择排序方式"<<endl<<endl;
cout<<"1、身份信息排序"<<endl<<endl;
cout<<"2、卡号信息排序"<<endl<<endl;
cout<<"3、等级信息排序"<<endl<<endl;
cout<<"4、余额信息排序"<<endl<<endl;
int i;
cin>>i;
switch(i){
case 1:sort_num(s,n);break;
case 2:sort_cardnum(s,n);break;
case 3:sort_creadit(s,n);break;
case 4:sort_treasure(s,n);break;
case 5:
cout<<"返回主菜单中......."<<endl;
Sleep(2000);
menu(s,n);
break;
}
}
/*···········用户信息排序···········*/
void meiyuan(User s[],int n){
long double i;
cout<<"------------------------美元汇率转换------------------------"<<endl;
cout<<"------------------------------------------------------------"<<endl;
cout<<"请您输入转换金额:";
cout<<"¥";
cin>>i;
cout<<"人民币转换金额为:"<<"$"<<i/7.186<<endl;
system("pause");
cout<<"正在返回主菜单······";
Sleep(3000);
menu(s,n);
}
/*···········汇率转换美元···········*/
void ouyuan(User s[],int n){
long double i;
cout<<"------------------------欧元汇率转换------------------------"<<endl;
cout<<"------------------------------------------------------------"<<endl;
cout<<"请您输入转换金额:";
cout<<"¥";
cin>>i;
cout<<"人民币转换金额为:"<<" €"<<i/7.8608<<endl;
system("pause");
cout<<"正在返回主菜单······";
Sleep(3000);
menu(s,n);
}
/*···········汇率转换欧元···········*/
void gangyuan(User s[],int n){
long double i;
cout<<"------------------------港币汇率转换------------------------"<<endl;
cout<<"------------------------------------------------------------"<<endl;
cout<<"请您输入转换金额:";
cout<<"¥";
cin>>i;
cout<<"人民币转换金额为:"<<"港币"<<i/0.9189<<endl;
system("pause");
cout<<"正在返回主菜单······";
Sleep(3000);
menu(s,n);
}
/*···········汇率转换港币···········*/
void change(User s[],int n){
int j;
cout<<"欢迎使用银行汇率转换系统"<<endl;
cout<<"请您选择转换方式"<<endl;
while(1)
{
system("cls");
cout<<"☆ ☆"<<" 欢迎您使用汇率转换功能 "<<"☆ ☆"<<endl<<endl;
cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl;
cout<<"☆ ☆"<<" 1、人民币-----美元 "<<"☆ ☆"<<endl<<endl;
cout<<"☆ ☆"<<" 2、人民币-----欧元 "<<"☆ ☆"<<endl<<endl;
cout<<"☆ ☆"<<" 3、人民币-----港元 "<<"☆ ☆"<<endl<<endl;
cout<<"☆ ☆"<<" 4、退出........... "<<"☆ ☆"<<endl;
cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl;
cin>>j;
if(j>=1&&j<=4)
break;
cout<<"输入错误,请重新输入!"<<endl;
Sleep(3000);
}
switch(j){
case 1:meiyuan(s,n);break;
case 2:ouyuan(s,n);break;
case 3:gangyuan(s,n);break;
case 4:
cout<<"正在返回上一级菜单……"<<endl;
Sleep(3000);
menu(s,n);
}
}
/*··········· 汇率转换 ···········*/
void showpage(User s[],int n) {
int pageSize = 12; // 每页显示的记录数
int pageCount = (n + pageSize - 1) / pageSize; // 总页数,向上取整
int currentPage = 1; // 当前页码
cout << "正在进入显示页面........." << endl;
for (int i = 0; i < n; i++) {
if (i % pageSize == 0) {
system("pause");
system("cls"); // 清屏
cout << "共" << pageCount << "页" << endl;
cout << "当前是第" << currentPage++ << "页" << endl;
cout << "姓名\t\t身份码\t\t\t\t银行卡\t\t\t余额\t信用等级\t密码" << endl;
cout << "-----------------------------------------" << endl;
Sleep(3000); // 等待1秒
}
cout << s[i].name << "\t\t" << s[i].num << "\t\t" <<s[i].cardnum<<"\t"<< s[i].treasure<<"\t "<<s[i].creadit<<"\t\t"<<s[i].password<< endl<<endl;
}
cout<<"已经到底了哦"<<endl;
system("pause");
cout<<"正在返回上一级菜单......"<<endl;
Sleep(3000);
menu(s,n);
}
/*··········· 页面转换 ···········*/
void Record(User s[],int n,string &record,int loan){
record ="成功贷款" +loan;
}
/*··········· 贷款评估记录 ···········*/
void chazhao(User s[],int n,int &result){
string cardnum;
cout<<"请输入您的银行账户"<<endl;
cin>>cardnum;
result=0;//重大失误
for(int i= 0;i<n;i++){
if(cardnum!=s[i].cardnum){
result++;
}
else{
break;
}
}
}
/*··········· 查找功能 ···········*/
void loanassess(User s[],int n){
cout<<"☆ ☆"<<" 欢迎您使用贷款评估功能 "<<"☆ ☆"<<endl<<endl;
int result;
chazhao(s,n,result);
//result=12;
cout<<"姓名\t身份码\t\t\t银行卡号\t\t余额\t信用等级\t密码"<<endl;
cout<<s[result].name<<"\t"<<s[result].num<<"\t"<<s[result].cardnum<<"\t"<<s[result].treasure<<"\t "<<s[result].creadit<<"\t\t"<<s[result].password<<endl<<endl;
//3-20-1:14
string a="A";
string b="B";
string c="C";
long double limit;
string record;//修改
if(s[result].creadit==a){
if(500000<s[result].treasure&&s[result].treasure<=1000000){
cout<<"该账户可贷款100万元........"<<endl;
limit=1000000;}
if(200000<s[result].treasure&&s[result].treasure<=500000){
cout<<"该账户可贷款40万元........"<<endl;
limit=400000;}
if(s[result].treasure<=200000){
cout<<"该账户可贷款20万元........"<<endl;
limit=200000;}
}
if(s[result].creadit==b){
if(500000<s[result].treasure&&s[result].treasure<=1000000){
cout<<"该账户可贷款80万元........"<<endl;
limit=800000;}
if(200000<s[result].treasure&&s[result].treasure<=5000000){
cout<<"该账户可贷款32万元........"<<endl;
limit=320000;}
if(s[result].treasure<=200000){
cout<<"该账户可贷款16万元........"<<endl;
limit=160000;}
}
if(s[result].creadit==c){
long double a=1000000.0;
long double b=500000.0;
long double c=200000.0;
if(b<s[result].treasure&&s[result].treasure<=a){
cout<<"该账户可贷款60万元........"<<endl;
limit=600000;
}
else if(c<s[result].treasure&&s[result].treasure<=b){
cout<<"该账户可贷款25万元........"<<endl;
limit=250000;
}
else if(s[result].treasure<=c){
cout<<"该账户可贷款12万元........"<<endl;
limit=120000;
}
cout<<limit;
}
cout<<"查询完毕........"<<endl;
Sleep(3000);
cout<<"是否进行贷款....(Y/N)" <<endl;
char d;
cin>>d;
if(d=='Y'||d=='y'){
long double loan;
cout<<"您当前的余额为;"<<s[result].treasure<<endl;
cout<<"请您输入贷款的金额:";
cin>>loan;
cout<<"温馨提示————您可贷款的金额为:";
cout<<limit<<endl;
if(loan<=limit){
s[result].treasure+=loan;
cout<<"您当前的余额为;";
cout<<s[result].treasure<<endl;
cout<<"正在退出贷款界面............"<<endl;
Record(s,n,record,loan);
Sleep(3000);
menu(s,n);
}
else{
cout<<"余额不足"<<endl;
cout<<"正在退出贷款界面............"<<endl;
Sleep(3000);
menu(s,n);
}///待改进
}
else{
cout<<"正在退出贷款界面............"<<endl;
Sleep(3000);
menu(s,n);
}
//long double treasure;
//string creadit;
//cin>>treasure>>creadit;
//if(s[result].creadit=='A'){
// cout<<"ok"<<endl;
//}*/
}
/*··········· 贷款评估 ···········*/
int calculalenght(string password){
int length = password.length();
return length;
}
int searchbynum_new(User s[],int n,string num){
int i;
for(i = 0;i < n; i++)
{
if(s[i].num == num)
return i;
}
return -1;
}
/*··········· 查询身份码 ···········*/
void test(User s[],int n,int &choice,int result){
string password;
string newpassword;
int lenght;
cout<<"请输入旧密码"<<endl;
cin>>password;
calculalenght(password);
//cout<<lenght;
//getline(cin,password);
lenght = password.length();
if(lenght!=6){
cout<<"输入密码的长度错误"<<endl;
cout<<"请输入合法的密码(6位)"<<endl;
cout<<"正在返回上一级菜单"<<endl;
Sleep(3000);
menu(s,n);
}
else{
if(password==s[result].password)
{
cout<<"旧密码输入正确......." <<endl;
cout<<"正在为您打开修改密码功能......"<<endl;
Sleep(2000);
cout<<"请您输入要修改的新密码"<<endl ;
cin>>newpassword;
if(newpassword==s[result].password)
{
cout<<"新旧密码重复"<<endl;
cout<<"请重新输入"<<endl;
Sleep(3000);
menu(s,n);
}
else{
s[result].password=newpassword;
cout<<"修改成功...."<<endl;
cout<<"正在返回上一级菜单"<<endl;
Sleep(3000);
menu(s,n);
}
}
else{
cout<<"输入错误"<<endl;
choice++;
cout<<"剩余输入次数为"<<3-choice<<"次"<<endl;
if(choice==3){
cout<<"您已超过输入上限...";
cout<<"该账户已被锁定"<<endl;
cout<<"正在返回上一级菜单....."<<endl;
Sleep(3000);
menu(s,n);
}
test(s,n,choice,result) ;
}
}
}
/*··········· 检验密码次数 ···········*/
void alterkey(User s[],int n){
string num;
int result;
cout<<"请输入您的身份码......"<<endl;
cin>>num;
result = searchbynum_new(s,n,num);
int choice = 0;
if(result == -1)
{
cout<<"输入身份码有误,正在返回上一级菜单....."<<endl;
Sleep(3000);
menu(s,n);
}
else{
int choice = 0;
test(s,n,choice,result);
}
}
/*··········· 修改密码功能 ···········*/
void menu(User s[],int n){
int i;//记录菜单编号
while(1)
{
system("cls");
cout<<"银行用户模拟系统"<<endl;
cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl;
cout<<"☆ ☆"<<"1、 客户资料管理 "<<"☆ ☆"<<endl<<endl;
cout<<"☆ ☆"<<"2、 信息查询菜单 "<<"☆ ☆"<<endl<<endl;
cout<<"☆ ☆"<<"3、 存、取款菜单 "<<"☆ ☆"<<endl<<endl;
cout<<"☆ ☆"<<"4、 排序菜单 "<<"☆ ☆"<<endl<<endl;
cout<<"☆ ☆"<<"5、 汇率转换菜单 "<<"☆ ☆"<<endl<<endl;
cout<<"☆ ☆"<<"6、 页面显示菜单 "<<"☆ ☆"<<endl<<endl;
cout<<"☆ ☆"<<"7、 贷款评估菜单 "<<"☆ ☆"<<endl<<endl;
cout<<"☆ ☆"<<"8、 密码修改菜单 "<<"☆ ☆"<<endl<<endl;
cout<<"☆ ☆"<<"9、 退出系统 "<<"☆ ☆"<<endl<<endl;
cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl;
cout<<"请输入菜单编号:";
cin>>i;
if(i>=1&&i<=9)
break;
cout<<"输入错误,请重新输入!"<<endl;
Sleep(2000);
}
switch(i)
{
case 1:Customer(s,n);break;
case 2:Information(s,n);break;
case 3:Deposit(s,n);break;
case 4:sort(s,n);break;
case 5:change(s,n);break;
case 6:showpage(s,n);break;
case 7:loanassess(s,n);break;
case 8:alterkey(s,n);break;
case 9:
savetofile(s,n);
cout<<"正在退出系统……"<<endl;
Sleep(2000);
exit(0);
break;
}
}
/*···········一级菜单功能···········*/
int main(){
system("color F0");
User s[N];
int size=0;//记录的是数组当前的元素个数
outfromfile(s,size);//文件读取
//cout<<size<<endl;
//for(int i=0;i<size;i++)
//showsigle(s[i]);
menu(s,size);
return 0;//操作记录还款日期 存到底是还贷款还是存钱//区分用户,管理员显示
}
/*···········主函数功能实现 ···········*/