<pre name="code" class="cpp">温馨提示:亲爱的学弟学妹,复制时别忘把名字改掉。
</pre><pre name="code" class="cpp">/*
**作者:孙铭
**项目名称:银行储蓄业务管理系统
**实现功能:实现银行对用户账户的操作
**日期:2015/07/15
*/
#include <iostream>
#include <stdio.h>
#include <cstdio>
#include <cstring>
#include <windows.h>
#include <cmath>
#include <cstdlib>
#include <algorithm>
using namespace std;
struct node //定义结构体
{
char ID[19]; //用户编号
char name[64]; //用户名
char PWD[18]; //用户密码
float money; //用户的金额
int status; //用户的状态 1:正常 0:冻结
} User[60],New_user; //最多开60个户
int Total = 0; //记录用户总数
int pos; //记录用户位置
/*********管理员*************/
void Start();//管理员登录
void Administrator();//管理员
/**********功能函数**********/
void Save_Money(); //存款
void TakeMoney(); //取款
void Query(); //查询函数
void Creat_Administrator(); //开户
void Move_money(); //转账
void CloseAnAccount(); //销户
void LoseCard(); //挂失
void OpenCard(); //解挂
void Change_password(); //修改密码
/**********界面设计**************/
void Welcome(); //欢迎界面
void welcome_star(); //开始界面
void CloseAnAccount_show(); //销户
void Save_Money_show(); //存款界面
void TakeMoney_show(); //取款界面
void Query_show(); //查询界面
void Creat_Administrator_show(); //开户界面
void Move_money_show(); //转账界面
void LoseCard_show(); //挂失界面
void OpenCard_show(); //解挂界面
void Change_password_show(); //修改密码界面
/**********判断函数************/
bool User_Log(); //检验用户登录
bool User_Judge(char s[]); //判断用户位置的函数
bool Username_Judge(char s[]); //检验用户名中的非法字符
bool Money_Judge(float n); //检验小数点后是否为4位
/**********变量转化操作************/
float Money_Trans(char s); //将字符型数据转化成浮点型
/**********文件操作************/
void Write_Data(); //存入文件
void Read_Data(); //从文件读出
/*************************************************
Function: 主函数
Description: 修改程序界面的颜色,尺寸,以及
开始运行程序。
Calls: Start()
Called By: 无
Input: 无
Output: 无
*************************************************/
int main()
{
system("color 1f");
system("mode con: cols=80 lines=80");
while(1)
{
Start();
}
return 0;
}
/*************************************************
Function: Start()
Description: 管理员登陆函数
Calls: Administrator()
Called By: main()
Input: 无
Output: 无
*************************************************/
void Start()
{
printf("\t正在进入,请稍后。。。。\n");
printf("\t");
for(int i=0; i<10; i++)
{
printf("██");
Sleep(50);
}
system("CLS");
Welcome();
int ant = 0;
while(1)
{
char str[6],pwd[6];
printf("请输入管理员名:");
scanf("%s",str);
printf("请输入管理员密码:");
scanf("%s",pwd);
if(!strcmp(str,"admin") && !strcmp(str,"admin"))
{
Read_Data();
printf("\t正在进入,请稍后。。。。\n");
printf("\t");
for(int i=0; i<10; i++)
{
printf("██");
Sleep(50);
}
Administrator();
}
else
{
ant++;
if(ant<3)
printf("\n用户名或密码输入错误,请重新输入.\n");
else
{
printf("\n用户密码输入错误3次,退出系统!\n");
exit(0);
}
}
}
}
/*************************************************
Function: Administrator()
Description: 管理员操作界面
Calls: Administrator()
Called By: Save_Money(); TakeMoney();Query();Creat_Administrator();CloseAnAccount(); Move_money(); LoseCard();OpenCard();Change_password();Start();
Input: 无
Output: 无
*************************************************/
void Administrator()
{
system("CLS");
welcome_star();
char ch;
getchar();
printf("\t请输入您的选择:");
while(~scanf("%c",&ch))
{
if((ch >= '0' && ch <='9') || ch == 'n' || ch == 'N')
{
switch(ch)
{
case '0':
exit(0); //退出
break;
case '1':
Save_Money(); //存款
break;
case '2':
TakeMoney(); //取款
break;
case '3':
Query(); //查询
break;
case '4':
Creat_Administrator(); //开户
break;
case '5':
CloseAnAccount(); //销户
break;
case '6':
Move_money(); //转账
break;
case '7':
LoseCard(); //挂失
break;
case '8':
OpenCard(); //解挂
break;
case '9':
Change_password(); //修改密码
break;
case 'n':
Start(); //注销
break;
case 'N':
Start(); //注销
break;
default:
break;
}
}
else
{
cout<<"\t非法输入,请重试!!"<<endl;
}
getchar();
cout<<"\t请输入您的选择:";
}
}
/*************************************************
Function: User_Log()
Description: 检验用户的合法性
Calls: 无
Called By: CloseAnAccount();TakeMoney();Save_Money();
OpenCard();Move_money();LoseCard();OpenCard();
Input: 无
Output: 无
Return: 合法:true 非法:false
*************************************************/
bool User_Log()
{
char str[19],pwd[13];
while(1)
{
cout<<"\t请输入您的ID(只能包含6位,不包含特殊字符):";
cin>>str;
if(strlen(str)!=6 || Username_Judge(str) == false)
{
printf("\n\t输入格式错误,请重新输入 ");
cin>>str;
}
cout<<endl;
cout<<"\t请输入您的6位数密码: ";
getchar();
gets(pwd);
while(strlen(pwd)!=6 ||Username_Judge(pwd) == false)
{
printf("\n\t输入格式错误,请重新输入");
gets(pwd);
}
if(User_Judge(str))
{
if(!strcmp(pwd,User[pos].PWD))
{
if(User[pos].status == 1)
{
printf("\t正在进入,请稍后。。。\n\t");
for(int i=0; i<10; i++)
{
printf("██");
Sleep(30);
}
return true;
}
else
{
cout<<"\t对不起,该用户已冻结!!"<<endl;
return false;
}
}
else
{
cout<<"\t对不起,密码输入错误。"<<endl;
return false;
}
}
else
{
cout<<"\t该用户不存在。"<<endl;
return false;
}
}
}
/*************************************************
Function: User_Log()
Description: 检验小数点后是否为4位
Calls: 无
Called By: CloseAnAccount();TakeMoney();Save_Money();
OpenCard();Move_money();LoseCard();OpenCard();
Input: 无
Output: 无
Return: 合法:true 非法:false
*************************************************/
bool Money_Judge(char s[])
{
int num = 0;
float flag = false;
for(int i=0; s[i]!='\0'; i++)
{
if((s[i]>='0' && s[i]<='9') || s[i]=='.')
{
if(s[i]=='.')
{
num = 0;
flag = true;
}
if(flag && s[i] == '.')
return false;
else
num++;
}
else
return false;
}
if(flag)
{
if(num<=4)
return true;
return false;
}
else
return true;
}
/*************************************************
Function: float Money_Trans(char s)
Description: 将字符型数据转化成浮点型
Calls: 无
Called By: CloseAnAccount();TakeMoney();Save_Money();
OpenCard();Move_money();LoseCard();OpenCard();
Input: 无
Output: 无
Return: 合法:true 非法:false
*************************************************/
float Money_Trans(char s[])
{
float c;
c=atof(s);
return c;
}
/*************************************************
Function: Username_Judge(char s[])
Description: 检验用户名中的非法字符
Calls: 无
Called By: CloseAnAccount();TakeMoney();Save_Money();
OpenCard();Move_money();LoseCard();OpenCard();
Input: 无
Output: 无
Return: 合法:true 非法:false
*************************************************/
bool Username_Judge(char s[])
{
for(int i=0; s[i]!='\0'; i++)
{
if((s[i]>='a' && s[i]<='z') || (s[i]>='A' && s[i]<='Z') || (s[i]>='0' && s[i]<='9') )
continue;
else
return false;
}
return true;
}
/*************************************************
Function: Welcome()
Description: 欢迎界面
Calls: 无
Called By: 无
Input: 无
Output: 无
Return: 无
*************************************************/
void Welcome()
{
printf("\t ╭___ ╭╭╭╭╭__╮\n");
printf("\t︳ ︳ ╭――――――—╮\n");
printf("\t︳ ︳ ︳ ΗΕ∟∟Ο ︳\n");
printf("\t︳ ● ╭――╮ ● ︳ ○ ︳ 请输入您的信息 ︳\n");
printf("\t︳≡ | ● ● ▏ ≡ ︳ О ╰───────―╯\n");
printf("\t︳ ╰── ╯ ︳\n");
printf("\t╰─—┳○――――┳―○-╯\n");
printf("\t\n");
}
/*************************************************
Function: welcome_star()
Description: 开始操作欢迎界面
Calls: 无
Called By: 无
Input: 无
Output: 无
Return: 无
*************************************************/
void welcome_star()
{
system("CLS");
printf("\t***************************************************************\n");
printf("\t** ╭___ ╭╭╭╭╭__╮ **\n");
printf("\t**︳ ︳ ╭――――――—╮ **\n");
printf("\t**︳ ︳ ︳ ΗΕ∟∟Ο ︳ **\n");
printf("\t**︳ ● ╭──╮ ● ︳ ○ ︳ 请输入您的选择 ︳ **\n");
printf("\t**︳≡ │ ● ●│ ≡ ︳ О ╰───────―╯ **\n");
printf("\t**︳ ╰──―╯ ︳ *******\n");
printf("\t**╰─—┳○――――┳―○-╯ *********************\n");
printf("\t**存款 (1) ** 开户 (4) ** 挂失 (7) ** **\n");
printf("\t**取款 (2) ** 销户 (5) ** 解挂 (8) ** **\n");
printf("\t**查询 (3) ** 转账 (6) ** 退出 (0) ** **\n");
printf("\t** 修改密码 (9) 注销 (N) ** **\n");
printf("\t***************************************************************\n");
}
/*************************************************
Function: Creat_Administrator_show()
Description: 开户系统欢迎界面
Calls: 无
Called By: 无
Input: 无
Output: 无
Return: 无
*************************************************/
void Creat_Administrator_show()
{
printf("\t**************************************************************\n");
printf("\t** **\n");
printf("\t** --------->欢迎访问开户系统<--------- **\n");
printf("\t** **\n");
printf("\t**************************************************************\n");
printf("\t** 1.创建一个新用户 2.返回首页 3.注销 **\n");
printf("\t**************************************************************\n");
}
/*************************************************
Function: Query_show()
Description: 查询系统欢迎界面
Calls: 无
Called By: 无
Input: 无
Output: 无
Return: 无
*************************************************/
void Query_show()
{
printf("\t**************************************************************\n");
printf("\t** **\n");
printf("\t** --------->欢迎访问查询系统<--------- **\n");
printf("\t** **\n");
printf("\t**************************************************************\n");
printf("\t** 1.查询用户 3.注销 **\n");
printf("\t** 2.返回首页 **\n");
printf("\t**************************************************************\n");
}
/*************************************************
Function: CloseAnAccount_show()
Description: 销户系统欢迎界面
Calls: 无
Called By: 无
Input: 无
Output: 无
Return: 无
*************************************************/
void CloseAnAccount_show()
{
printf("\t**************************************************************\n");
printf("\t** **\n");
printf("\t** --------->欢迎访问销户系统<--------- **\n");
printf("\t** **\n");
printf("\t**************************************************************\n");
printf("\t** 1.销户 3.注销 **\n");
printf("\t** 2.返回首页 **\n");
printf("\t**************************************************************\n");
}
/*************************************************
Function: Move_money_show()
Description: 转账系统欢迎界面
Calls: 无
Called By: 无
Input: 无
Output: 无
Return: 无
*************************************************/
void Move_money_show()
{
printf("\t**************************************************************\n");
printf("\t** **\n");
printf("\t** --------->欢迎访问转账系统<--------- **\n");
printf("\t** **\n");
printf("\t**************************************************************\n");
printf("\t** 1.转账 3.注销 **\n");
printf("\t** 2.返回首页 **\n");
printf("\t**************************************************************\n");
}
/*************************************************
Function: Save_Money_show()
Description: 欢迎界面
Calls: 无
Called By: 无
Input: 无
Output: 无
Return: 无
*************************************************/
void Save_Money_show()
{
printf("\t**************************************************************\n");
printf("\t** **\n");
printf("\t** --------->欢迎访问存款系统<--------- **\n");
printf("\t** **\n");
printf("\t**************************************************************\n");
printf("\t** 1.存款 3.注销 **\n");
printf("\t** 2.返回首页 **\n");
printf("\t**************************************************************\n");
}
/*************************************************
Function: TakeMoney_show()
Description: 取款系统欢迎界面
Calls: 无
Called By: 无
Input: 无
Output: 无
Return: 无
*************************************************/
void TakeMoney_show()
{
printf("\t**************************************************************\n");
printf("\t** **\n");
printf("\t** --------->欢迎访问取款系统<--------- **\n");
printf("\t** **\n");
printf("\t**************************************************************\n");
printf("\t** 1.取款 3.注销 **\n");
printf("\t** 2.返回首页 **\n");
printf("\t**************************************************************\n");
}
/*************************************************
Function: LoseCard_show()
Description: 挂失系统欢迎界面
Calls: 无
Called By: 无
Input: 无
Output: 无
Return: 无
*************************************************/
void LoseCard_show()
{
printf("\t**************************************************************\n");
printf("\t** **\n");
printf("\t** --------->欢迎访问挂失系统<--------- **\n");
printf("\t** **\n");
printf("\t**************************************************************\n");
printf("\t** 1.挂失 3.注销 **\n");
printf("\t** 2.返回首页 **\n");
printf("\t**************************************************************\n");
}
/*************************************************
Function: OpenCard_show()
Description: 解挂系统欢迎界面
Calls: 无
Called By: 无
Input: 无
Output: 无
Return: 无
*************************************************/
void OpenCard_show()
{
printf("\t**************************************************************\n");
printf("\t** **\n");
printf("\t** --------->欢迎访问解挂系统<--------- **\n");
printf("\t** **\n");
printf("\t**************************************************************\n");
printf("\t** 1.解挂 3.注销 **\n");
printf("\t** 2.返回首页 **\n");
printf("\t**************************************************************\n");
}
/*************************************************
Function: Change_password_show()
Description: 修改密码欢迎界面
Calls: 无
Called By: 无
Input: 无
Output: 无
Return: 无
*************************************************/
void Change_password_show()
{
printf("\t**************************************************************\n");
printf("\t** **\n");
printf("\t** --------->欢迎访问修改密码系统<--------- **\n");
printf("\t** **\n");
printf("\t**************************************************************\n");
printf("\t** 1.修改密码 3.注销 **\n");
printf("\t** 2.返回首页 **\n");
printf("\t**************************************************************\n");
}
/*************************************************
Function: Creat_Administrator()
Description: 实现用户的开户操作
Calls: Creat_Administrator_show();
Write_Data();Administrator();Start();
Return: 无
*************************************************/
void Creat_Administrator()//开户
{
printf("\t正在进入,请稍后。。。。\n");
printf("\t");
for(int i=0; i<10; i++)
{
printf("██");
Sleep(50);
}
char ch[5];
while(1)
{
system("CLS");
Creat_Administrator_show();
printf("\t请输入您的选择:");
scanf("%s",ch);
if(!strcmp(ch,"1"))
{
printf("\t请输入一个新用户6位数ID号(不包含特殊字符):");
scanf("%s",New_user.ID);
while(strlen(New_user.ID)!=6 || Username_Judge(New_user.ID) == false)
{
printf("\n\t输入格式错误,请重新输入\n");
scanf("\t%s",New_user.ID);
}
printf("\n\t请输入用户的姓名:");
getchar();
gets(New_user.name);
printf("\t请输入您的6位数密码: ");
gets(New_user.PWD);
while(strlen(New_user.PWD)!=6 || Username_Judge(New_user.PWD) == false)
{
printf("\n\t输入格式错误,请重新输入");
scanf("%s",New_user.PWD);
}
char pwd[18];
printf("\n\t请再输入一遍密码:");
scanf("%s",pwd);
if(strcmp(pwd,New_user.PWD))
{
for(int i=1; i<=3; i++)
{
printf("\t对不起,您前后两次输入的密码不一致,请重新输入。\n");
printf("\n\t请输入用户的密码:");
scanf("%s",New_user.PWD);
while(strlen(New_user.PWD)!=6)
{
printf("\n\t输入格式错误,请重新输入");
scanf("%s",New_user.PWD);
}
printf("\t请再输入一遍密码:");
scanf("%s",pwd);
while(strlen(New_user.PWD)!=6)
{
printf("\n\t输入格式错误,请重新输入");
scanf("%s",New_user.PWD);
}
if(!strcmp(pwd,New_user.PWD))
break;
else
{
if(i==3)
{
printf("\t对不起,系统繁忙,请重新选择。\n");
printf("\t正在返回上一页.....\n");
printf("\n\t");
for(int j=0; j<10; j++)
{
printf("██");
Sleep(50);
}
Creat_Administrator();
}
}
}
}
New_user.status = 1;
if(User_Judge(New_user.ID) == false)
{
User[++Total] = New_user;
printf("\n\t--------------------------创建成功-------------------------------------\n");
printf("\t身份证号\t\t姓名\t\t 金额\t\t状态\n");
printf("\t%-18s\t%-10s\t%10.4f\t",User[Total].ID,User[Total].name,User[Total].money);
if(User[Total].status == 1)
printf("正常");
else
printf("冻结");
printf("\n");
printf("\t-----------------------------------------------------------------------\n");
Write_Data();
printf("\t\t*************************\n");
printf("\t\t** 是否立即存款? **\n");
printf("\t\t** 1.是 **\n");
printf("\t\t** 2.否 **\n");
printf("\t\t*************************\n");
char sp[5];
scanf("%s",sp);
if(!strcmp(sp,"1"))
{
Save_Money();
}
}
else
{
printf("\t该账号已经存在!!!\n");
}
}
else if(!strcmp(ch,"2"))
{
Administrator();
}
else if(!strcmp(ch,"3"))
{
Start();
}
else
{
printf("\t非法输入,请重试!\n");
for(int i=0; i<10; i++)
{
printf("██");
Sleep(30);
}
system("CLS");
}
system("pause");
printf("\t按任意键返回上一步\n");
system("pause");
printf("\t正在返回,请稍后。。。\n\t");
for(int i=0; i<10; i++)
{
printf("██");
Sleep(30);
}
}
}
/*************************************************
Function: User_Judge(char s[])
Description: 查找用户
Calls: 无
Return: true false
*************************************************/
bool User_Judge(char s[])
{
for(int i=0; i<=Total; i++)
{
if(!strcmp(s,User[i].ID))
{
pos = i;
return true;
}
}
return false;
}
/*************************************************
Function: Save_Money()//存款
Description: 实现用户的存款操作
Calls: Write_Data();Administrator();Start();
User_Log();
Return: 无
*************************************************/
void Save_Money()//存款
{
printf("\t正在进入,请稍后。。。。\n");
printf("\t");
for(int i=0; i<10; i++)
{
printf("██");
Sleep(50);
}
while(1)
{
system("CLS");
Save_Money_show();
printf("\t请输入您的选择:");
char ch[5];
scanf("%s",ch);
char money[20];
if(!strcmp(ch,"1"))
{
if(User_Log()==true)
{
printf("\n\t请输入存款金额:");
scanf("%s",money);
if(Money_Judge(money) == true)
{
float Money;
Money = Money_Trans(money);
printf("\t\t*********************\n");
printf("\t\t** 是否存入? **\n");
printf("\t\t** 1.是 **\n");
printf("\t\t** 2.否 **\n");
printf("\t\t*********************\n");
char cc[5];
printf("\t");
scanf("%s",cc);
if(!strcmp(cc,"1"))
{
User[pos].money += Money;
Write_Data();
printf("\t\t存款成功。\n");
printf("\t-----------------------您的用户信息-----------------------------\n");
printf("\t身份证号\t\t姓名\t\t 金额\t\t状态\n");
printf("\t%-18s\t%-10s\t%10.4f\t",User[pos].ID,User[pos].name,User[pos].money);
if(User[Total].status == 1)
printf("正常");
else
printf("冻结");
printf("\n");
printf("\t----------------------------------------------------------------\n");
}
}
else
{
printf("\t输入格式错误,请稍后重试!\n");
}
}
}
else if(!strcmp(ch,"2"))
{
Administrator();
}
else if(!strcmp(ch,"3"))
{
Start();
}
else
{
printf("\t非法输入,请重试!\n");
}
printf("\t按任意键返回上一步");
system("pause");
printf("\t正在返回,请稍后。。。\n\t");
for(int i=0; i<10; i++)
{
printf("██");
Sleep(30);
}
system("CLS");
}
}
/*************************************************
Function: TakeMoney()//取款
Description: 实现用户的取款操作
Calls: Write_Data();Administrator();Start();
User_Log();
Return: 无
*************************************************/
void TakeMoney()
{
printf("\t正在进入,请稍后。。。。\n");
printf("\t");
for(int i=0; i<10; i++)
{
printf("██");
Sleep(50);
}
while(1)
{
system("CLS");
TakeMoney_show();
printf("\t请输入您的选择:");
char ch[5];
scanf("%s",ch);
float Money;
char money[20];
if(!strcmp(ch,"1"))
{
if(User_Log()==true)
{
printf("\n\t请输入取款金额:");
scanf("%s",money);
if(Money_Judge(money) == true)
{
Money = Money_Trans(money);
printf("\t\t*********************\n");
printf("\t\t** 是否取款? **\n");
printf("\t\t** 1.是 **\n");
printf("\t\t** 2.否 **\n");
printf("\t\t*********************\n");
char cc[5];
printf("\t");
scanf("%s",cc);
if(!strcmp(ch,"1"))
{
if(Money > User[pos].money)
{
printf("\t余额不足!此次操作失败。\n");
}
else
{
User[pos].money -= Money;
printf("\t\t取款成功。\n");
printf("\t-----------------------您的用户信息-----------------------------\n");
printf("\t身份证号\t\t姓名\t\t 金额\t\t状态\n");
printf("\t%-18s\t%-10s\t%10.4f\t",User[pos].ID,User[pos].name,User[pos].money);
if(User[Total].status == 1)
printf("正常");
else
printf("冻结");
printf("\n");
printf("\t-----------------------------------------------------------------\n");
Write_Data();
}
}
}
else
{
printf("\t输入格式错误,请稍后重试!\n");
}
}
}
else if(!strcmp(ch,"2"))
{
Administrator();
}
else if(!strcmp(ch,"3"))
{
Start();
}
else
{
printf("\t非法输入,请重试!\n");
}
printf("\t按任意键返回上一步");
system("pause");
printf("\t正在返回,请稍后。。。\n\t");
for(int i=0; i<10; i++)
{
printf("██");
Sleep(30);
}
system("CLS");
}
}
/*************************************************
Function: Query()//查询
Description: 实现用户的查询操作
Calls: Administrator();Start();User_Log();
User_Log();Query_show();
Return: 无
*************************************************/
void Query()//查询
{
printf("\t正在进入,请稍后。。。。\n");
printf("\t");
for(int i=0; i<10; i++)
{
printf("██");
Sleep(50);
}
while(1)
{
system("CLS");
Query_show();
printf("\t请输入您的选择:");
char ch[5];
scanf("%s",ch);
if(!strcmp(ch,"1"))
{
if(User_Log() == true)
{
printf("\n\t-----------------------您要查询的用户信息-----------------------------\n");
printf("\t用户ID号\t\t姓名\t\t 金额\t\t状态\n");
printf("\t%-18s\t%-10s\t%10.4f\t",User[pos].ID,User[pos].name,User[pos].money);
if(User[pos].status == 1)
printf("正常");
else
printf("冻结");
printf("\n");
printf("\t-----------------------------------------------------------------------\n");
}
}
else if(!strcmp(ch,"2"))
{
Administrator();
}
else if(!strcmp(ch,"3"))
{
Start();
}
else if(!strcmp(ch,"4"))
{
printf("-----------------------您要查询的用户信息-----------------------------------\n");
printf("\t身份证号\t\t姓名\t\t 金额\t\t状态\n");
for(int i=0; i<=Total; i++)
{
printf("\t%-18s\t%-10s\t%10.4f\t",User[i].ID,User[i].name,User[i].money);
if(User[i].status == 1)
printf("正常");
else
printf("冻结");
printf("\n");
}
printf("----------------------------------------------------------------------------\n");
}
else
{
printf("\t非法输入,请重试!\n");
}
printf("\t按任意键返回上一步");
system("pause");
printf("\t正在返回,请稍后。。。\n\t");
for(int i=0; i<10; i++)
{
printf("██");
Sleep(30);
}
system("CLS");
}
}
/*************************************************
Function: CloseAnAccount()//销户
Description: 实现用户的销户操作
Calls: Write_Data();Administrator();Start();
User_Log();CloseAnAccount_show();
Return: 无
*************************************************/
void CloseAnAccount()//销户
{
printf("\t正在进入,请稍后。。。。\n");
printf("\t");
for(int i=0; i<10; i++)
{
printf("██");
Sleep(50);
}
while(1)
{
system("CLS");
CloseAnAccount_show();
printf("\t请输入您的选择:");
char ch[5];
scanf("%s",ch);
if(!strcmp(ch,"1"))
{
if(User_Log() == true)
{
printf("\n\t*********************************************************************\n");
printf("\t**身份证号\t\t姓名\t\t 金额\t\t状态 **\n");
printf("\t**%-18s\t%-10s\t%10.4f\t",User[pos].ID,User[pos].name,User[pos].money);
if(User[Total].status == 1)
printf("正常");
else
printf("冻结");
printf(" **\n");
printf("\t** 您确定要销除该账号,销除后将无法恢复! **\n");
printf("\t** 1.是 2.否 **\n");
printf("\t*********************************************************************\n");
char cc[10];
scanf("%s",cc);
if(!strcmp(cc,"1"))
{
for(int i=pos; i<Total; i++)
{
User[i] = User[i+1];
}
Total--;
printf("\t\t\t删除成功\n\n");
Write_Data();
}
else
{
printf("\t\t\t删除失败!\n\n");
}
}
}
else if(!strcmp(ch,"2"))
{
Administrator();
}
else if(!strcmp(ch,"3"))
{
Start();
}
else if(!strcmp(ch,"4"))
{
printf("-----------------------您要查询的用户信息-----------------------------\n");
printf("\t身份证号\t\t姓名\t\t 金额\t\t状态\n");
for(int i=0; i<=Total; i++)
{
printf("\t%-18s\t%-10s\t%10.4f\t",User[i].ID,User[i].name,User[i].money);
if(User[Total].status == 1)
printf("正常");
else
printf("冻结");
printf("\n");
}
printf("-----------------------------------------------------------------------\n");
}
else
{
printf("\t非法输入,请重试!\n");
}
printf("\t按任意键返回上一步");
system("pause");
printf("\t正在返回,请稍后。。。\n\t");
for(int i=0; i<10; i++)
{
printf("██");
Sleep(30);
}
system("CLS");
}
}
/*************************************************
Function: Move_money()//转账
Description: 实现用户的转账操作
Calls: Write_Data();Administrator();Start();
User_Log();Move_money_show();
Return: 无
*************************************************/
void Move_money()//转账
{
printf("\t正在进入,请稍后。。。。\n");
printf("\t");
for(int i=0; i<10; i++)
{
printf("██");
Sleep(50);
}
while(1)
{
system("CLS");
Move_money_show();
printf("\n\t请输入您的选择:");
char ch[5];
scanf("%s",ch);
if(!strcmp(ch,"1"))
{
if(User_Log()==true)
{
int pos1 = pos;
printf("\n\t请输入要转入的账号:");
char str[19];
scanf("%s",str);
char money[20];
float Money;
if(User_Judge(str))
{
if(User[pos].status == 1)
{
if(User[pos1].money == 0)
{
printf("\n\t您的账余额为 0.0000\n");
}
else
{
int pos2 = pos;
printf("\t请输入转账金额:");
scanf("%s",money);
if(Money_Judge(money) == true)
{
Money = Money_Trans(money);
printf("\t\t*********************\n");
printf("\t\t** 是否转账? **\n");
printf("\t\t** 1.是 **\n");
printf("\t\t** 2.否 **\n");
printf("\t\t*********************\n");
char cc[5];
printf("\t");
scanf("%s",cc);
if(!strcmp(ch,"1"))
{
if(Money > User[pos1].money)
{
printf("\t对不起,账户余额不足。\n");
}
else
{
User[pos1].money -= Money;
printf("\t\t转账成功。\n");
printf("\t-----------------------您的用户信息-----------------------------------\n");
printf("\t身份证号\t\t姓名\t\t 金额\t\t状态\n");
printf("\t%-18s\t%-10s\t%10.4f\t",User[pos1].ID,User[pos1].name,User[pos1].money);
if(User[Total].status == 1)
printf("正常");
else
printf("冻结");
printf("\n");
printf("\t-----------------------------------------------------------------------\n");
User[pos2].money += Money;
Write_Data();
}
}
else
{
printf("\t转账失败!\n");
}
}
else
{
printf("\t输入格式错误,请稍后再试!\n");
}
}
}
else
{
printf("\t该账号已被冻结!\n");
}
}
}
}
else if(!strcmp(ch,"2"))
{
Administrator();
}
else if(!strcmp(ch,"3"))
{
Start();
}
else
{
printf("\t非法输入,请重试!\n");
}
getchar();
printf("\t按任意键返回上一步");
system("pause");
printf("\t正在返回,请稍后。。。\n\t");
for(int i=0; i<10; i++)
{
printf("██");
Sleep(30);
}
system("CLS");
}
}
/*************************************************
Function: LoseCard()//挂失
Description: 实现用户的挂失操作
Calls: Write_Data();Administrator();Start();
User_Log();LoseCard_show();
Return: 无
*************************************************/
void LoseCard()//挂失
{
printf("\t正在进入,请稍后。。。。\n");
printf("\t");
for(int i=0; i<10; i++)
{
printf("██");
Sleep(50);
}
while(1)
{
system("CLS");
LoseCard_show();
printf("\n\t请输入您的选择:");
char ch[5];
scanf("%s",ch);
if(!strcmp(ch,"1"))
{
if(User_Log() == true)
{
printf("\n\t\t*******************************\n");
printf("\t\t** 是否冻结该账号信息? **\n");
printf("\t\t** 1.是 2.否 **\n");
printf("\t\t*******************************\n");
char cp[5];
scanf("%s",cp);
if(!strcmp(cp,"1"))
{
User[pos].status = 0;
printf("\t挂失成功。\n");
Write_Data();
}
else
{
printf("\t挂失失败。\n");
}
}
}
else if(!strcmp(ch,"2"))
{
Administrator();
}
else if(!strcmp(ch,"3"))
{
Start();
}
else
{
printf("\t非法输入,请重试!\n");
}
getchar();
printf("\t按任意键返回上一步");
system("pause");
printf("\t正在返回,请稍后。。。\n\t");
for(int i=0; i<10; i++)
{
printf("██");
Sleep(30);
}
system("CLS");
}
}
/*************************************************
Function: OpenCard()//解挂
Description: 实现用户的解挂操作
Calls: Write_Data();Administrator();Start();
User_Log();LoseCard_show();
Return: 无
*************************************************/
void OpenCard()//解挂
{
printf("\t正在进入,请稍后。。。。\n");
printf("\t");
for(int i=0; i<10; i++)
{
printf("██");
Sleep(50);
}
while(1)
{
system("CLS");
OpenCard_show();
printf("\n\t请输入您的选择:");
char ch[5];
scanf("%s",ch);
if(!strcmp(ch,"1"))
{
char str[19];
printf("\t请输入您的挂失ID:");
scanf("%s",str);
if(User_Judge(str) == true)
{
if(User[pos].status == 0)
{
char pwd[13];
printf("\n\t请输入账号密码:");
scanf("%s",pwd);
if(!strcmp(pwd,User[pos].PWD))
{
printf("\n\t\t*******************************\n");
printf("\t\t** 是否解冻该账号信息? **\n");
printf("\t\t** 1.是 2.否 **\n");
printf("\t\t*******************************\n");
char cc[5];
scanf("%s",cc);
if(!strcmp(cc,"1"))
{
User[pos].status = 1;
printf("\t解挂成功,您可以正常使用。\n");
Write_Data();
}
else
{
printf("\t解挂失败。\n");
}
}
else
{
printf("\t对不起密码输入错误,请重试!\n");
}
}
else
{
printf("\t您的账号未挂失。\n");
}
}
}
else if(!strcmp(ch,"2"))
{
Administrator();
}
else if(!strcmp(ch,"3"))
{
Start();
}
else
{
printf("\t非法输入,请重试!\n");
}
printf("\t按任意键返回上一步");
system("pause");
printf("\t正在返回,请稍后。。。\n\t");
for(int i=0; i<10; i++)
{
printf("██");
Sleep(30);
}
system("CLS");
}
}
/*************************************************
Function: Change_password()//密码修改
Description: 实现用户的密码修改操作
Calls: Write_Data();Administrator();Start();
User_Log();Change_password_show();
Return: 无
*************************************************/
void Change_password()//密码修改
{
printf("\t正在进入,请稍后。。。。\n");
printf("\t");
for(int i=0; i<10; i++)
{
printf("██");
Sleep(50);
}
while(1)
{
system("CLS");
Change_password_show();
printf("\t请输入您的选择:");
char ch[5];
scanf("%s",ch);
if(!strcmp(ch,"1"))
{
if(User_Log() == true)
{
printf("\n\t请输入新密码(6位数,不能包含特殊字符):");
char pwd[13];
scanf("%s",pwd);
int ant = 0;
while(strlen(pwd)!=6 || Username_Judge(pwd) == false)
{
ant++;
printf("\n\t输入格式错误,请重新输入 ");
scanf("%s",pwd);
if(ant == 3)
{
printf("\t密码输入错误3次,请稍后再试!");
printf("\t按任意键返回上一步");
system("pause");
printf("\t正在返回,请稍后。。。\n\t");
for(int i=0; i<10; i++)
{
printf("██");
Sleep(30);
}
continue;
}
}
strcpy(User[pos].PWD,pwd);
printf("\t修改成功。\n");
Write_Data();
}
}
else if(!strcmp(ch,"2"))
{
Administrator();
}
else if(!strcmp(ch,"3"))
{
Start();
}
else
{
printf("\t非法输入,请重试!\n");
}
printf("\t按任意键返回上一步");
system("pause");
printf("\t正在返回,请稍后。。。\n\t");
for(int i=0; i<10; i++)
{
printf("██");
Sleep(30);
}
system("CLS");
}
}
/*************************************************
Function: Read_Data()//文件的读入
Description: 实现用户的文件的读入操作
Return: 无
*************************************************/
void Read_Data()//文件的读入
{
int i=0;
FILE *fp;
if((fp=fopen("Bank_data.txt","rb+"))==NULL)
{
fp=fopen("Bank_data.txt","wb+");
}
if(feof(fp))
{
printf("\t文件中没有信息,请添加信息!\n");
}
while(!feof(fp))
{
fscanf(fp,"%s %s %s %f %d",User[i].ID,User[i].name,User[i].PWD,&User[i].money,&User[i].status);
i++;
}
fclose(fp);
Total = i-2;
}
/*************************************************
Function: Write_Data()//文件的写入
Description: 实现用户的文件的写入操作
Return: 无
*************************************************/
void Write_Data()
{
int i;
FILE *fp;
if((fp=fopen("Bank_data.txt","w+"))==NULL)
{
printf("Can't open the file\n");
exit(0);
}
for(i=0; i<=Total; i++)
{
fprintf(fp,"%s %s %s %f %d\n",User[i].ID,User[i].name,User[i].PWD,User[i].money,User[i].status);
}
fclose(fp);
}