该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#include
#include
#define N 100
/*插入*/
#include
#include
using namespace std;
class ACCOUNT {
private:
long zhanghao; //帐号
int mima; //密码
char name[10]; //姓名
double yu; //余额
public:
ACCOUNT( long, int, char *, double);//建构式
int cunkuan( long, int, double); //存款
int qukuan( long, int, double); //取款
double chaxun( long, int); //查询余额
int jiancha( long, int); //检查密码
};
ACCOUNT::ACCOUNT( long id, int pw, char *n, double m)
:zhanghao(id),mima(pw),yu(m)
{
strcpy ( name , n ); //定义初始值
}
int ACCOUNT::cunkuan( long id, int pw, double m)
//存款
{
if (!jiancha(id,pw)) //检查帐号和密码
return 0;
else
{
yu+=m; //存款,余额增加
return 1;
}
}
int ACCOUNT::qukuan( long id, int pw, double m)
//取款
{
if (!jiancha(id,pw) ||( yu
return 0;
else
{
yu-=m; //取款,余额减少
return 1;
}
}
double ACCOUNT::chaxun( long id, int pw)
//查询余额
{
if (jiancha(id,pw))
return yu;
else
return (double)0;
}
int ACCOUNT::jiancha( long id, int pw)
//检查密码
{
if (id==zhanghao && pw==mima)
return 1;
else
return 0;
}
/*插入*/
struct user
{
int user_id;
char user_name[19];//最大18位
char password[13];//最大13位
char like[255];
char sign[255];
};
/*
* 密码长度有效性验证
*/
int length_password(char *p)
{
int len;
len = strlen(p);
if(len<6||len>12)
{
return 0;
}
else
return len;
}
/*
* 密码的有效性验证
*/
int is_password_valid(char *p)
{
int i=0;
for(;*p != '\0'; p++)
{
if(!( (*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <='Z')
||(*p >='0' && *p <= '9'))) //判断字符是否有效
return 0;
}
return 1;
}
int two_password_valid(char *p1,char*p2)
{
if(strcmp(p1,p2)==0)
return 1;
else
return 0;
}
/*
* 完成注册功能
*/
int user_register(struct user *ptr_user,int size)
{
char password[13];
char repassword[13];
printf("请输入注册姓名:");
gets(ptr_user[size].user_name);
printf("请输入注册密码:");
fflush(stdin);
gets(password);
printf("请再次输入注册密码:");
gets(repassword);
if(!two_password_valid(password,repassword))
{
printf("\n两次输入的密码不一致!");
return 0;
}
else
{
strcpy(ptr_user[size].password,password);
}
printf("您的编号为:%d,这将是您的登陆帐号.",ptr_user[size].user_id=10000+size);
return 1;
}
/*
* 如果登陆成功则返回第i+1个用户的信息,否则返回0
*/
int is_my_user(struct user *p,int size)
{
int i;
int zhanghu;
char mima[15];
printf("请输入您的帐号: ");
scanf("%d",&zhanghu);
printf("请输入您的密码: ");
gets(mima);
for(i=0;i
{
if((zhanghu == p[i].user_id)&&(strcmp(mima,p[i].password)==0))
{
return i + 1;
}
}
return 0;
}
void display_user(struct user u)
{
printf("\n你的帐号是:%d",u.user_id);
printf("\n你注册姓名是:%s",u.user_name);
}
int main(){
int x;
struct user our_users[N];
int count = 0;
int current_user;
ACCOUNT acc(zhanghu,mima,"XXX",1000);
int choice;
long id; //储存输入的帐号
int pw; //储存输入的密码
double m; //储存存款金额,取款金额或查询到的余额
while(1){
printf("\n1:登录\n");
printf("\n2:注册\n");
printf("\n3:退出\n");
printf("\n请选择:\n");
scanf("%d",&x);
if(x==1){
if((current_user = is_my_user(our_users,count)))
{
printf("\n登陆成功!");
display_user(our_users[current_user - 1]);
/*插入*/
do {
cout << " \nATM存款机\n";
cout << "------------\n";
cout << "<1> 存款\n";
cout << "<2> 取款\n";
cout << "<3> 查询余额\n";
cout << "<4> 结束\n";
cout << "------------\n";
cout << "请选择:";
cin >> choice;
switch(choice)
{
case 1:
cout << "请输入帐号:";
cin >> id;
cout << "请输入密码:";
cin >> pw;
cout << "请输入存款金额:";
cin >> m;
if (acc.cunkuan(id,pw,m))
{
cout << "存款成功! 您目前存款余额为 ";
cout << acc.chaxun(id,pw) << "元\n";
}
else
cout << "存款失败! 可能是帐号或密码错误...\n";
break;
case 2:
cout << "请输入帐号:";
cin >> id;
cout << "请输入密码:";
cin >> pw;
cout << "请输入取款金额:";
cin >> m;
if (acc.qukuan(id,pw,m))
{
cout << "取款成功! 您目前存款余额为 ";
cout << acc.chaxun(id,pw) << "元\n";
}
else
cout << "取款失败! 可能是帐号或密码错误,或者存款不足...\n";
break;
case 3:
cout << "请输入帐号:";
cin >> id;
cout << "请输入密码:";
cin >> pw;
m = acc.chaxun(id,pw);
if (m>=0)
{
cout << "查询成功! 您目前存款余额为 ";
cout << m << "元\n";
}
else
cout << "查询失败! 可能是帐号或密码错误...\n";
break;
}
}while (choice!=4);
cout << "谢谢使用!";
/*插入*/
}else
printf("\n登陆失败!");
continue;
//登陆
}else if(x==2){
if(user_register(our_users,count))
{
count++;
printf("\n注册成功!");
}
continue;
}else{
break;
}
}
}