各位大虾,您好。
我有几个疑问,希望能指点一下。
类的成员函数是否可以有查找功能?如果有,请问怎样实现?
还有,其实我想把类中的name,pass,还有一些Login调用的函数做成protected,但是=,-在访问的时候出很多毛病。比如查找功能,查找正确的用户名和正确的密码,类不分配空间,没办法确认对象,所以在类的成员函数里做查找功能怎么实现我很不理解,希望能指点下。
就这些,先谢谢各位鸟^_^
----------------------源代码-------------------------------------------------
该程序有三个文件:
// Bosn_1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
static int count_reg=0;
int main(int argc, char* argv[])
{
//数据数组模块-MASHENGBO
Account Data[100];
//主菜单模块-ERXING
MainMenu:
fflush(stdin);
{
int x=1;
char a;
while(x)
{
cout<<"1-Login 2-Register 3-About 4-Help 5-Exit"<<endl;
cin>>a;
switch(a)
{
case'1'://login
{
//登陆模块.检密-MASHENGBO√
int user;
char in_name[20],in_pass[20];
for(;;)
{
int count_name=0;
cout<<"请输入您的用户名:"<<endl;
cin>>in_name;
for (int i=0;i<=count_reg-1;i++)
{
if (strcmp(Data[i].name,in_name)==0)
{
count_name=1;
}
}
if (count_name==1) break;
else cout<<"该用户不存在!!!\n";
}
cout<<"请输入您的密码:"<<endl;
cin>>in_pass;
int count_check=0;
for (int i=0;i<=count_reg-1;i++)
{
if (Data[i].Check(in_name,in_pass)==1)
{
user=count_reg-1; count_check=1;
}
}
if (count_check==1)
{
count_check=0;
Data[user].Account::Login();
}
else
{
cout<<"密码输入错误,请重新登陆"<<endl;
goto MainMenu;
}
break;
}
case'2'://Register
//注册模块-MASHENGBO
{
char in_pass_1[20],in_pass_2[20],in_name[20];
for(;;)
{
for(;;)
{
int count_name=0;
cout<<"请输入用户名:"<<endl;
cin>>in_name;
for (int i=0;i<=count_reg;i++)
if (strcmp(Data[i].name,in_name)==0)
{
cout<<"该用户名已被占用"<<endl;
count_name=1;
}
if (count_name==1) ;
else
{
count_name=0;
break;
}
}
cout<<"请输入密码:"<<endl;
cin>>in_pass_1;
cout<<"请确认密码:"<<endl;
cin>>in_pass_2;
if (strcmp(in_pass_1,in_pass_2)!=0)
{
cout<<"注册失败,两次密码输入不同!"<<endl;
break;
}
cout<<"注册成功!"<<endl;
count_reg++;
strcpy (Data[count_reg-1].name,in_name);
strcpy (Data[count_reg-1].pass,in_pass_1);
cout<<"1-继续注册"<<" 2-返回主菜单"<<endl;
cout<<"选择:";
int cho_a;
cin>>cho_a;
if (cho_a==1) continue;
else if (cho_a==2) goto MainMenu;
else
{
cout<<"没有这个选择.";
break;
}
break;
}
break;
}
case'3'://About
{
cout<<"本程序由BOSN工作小组制作,民院网络3-4班.^_^\n";
break;
}
case'4'://Help
{
cout<<"寻求帮助可以报答110,我们现在忙,谢谢合作!\n";
break;
}
case'5'://Exit
{
exit(1);
break;
}
}
}
}
return 0;
}
------------------------------------------------------------------------------------------------------
//StdAfx.cpp
#include "stdafx.h"
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
//构造函数-MASHENGBO
Account::Account()
{
strcpy(name,"noname");
strcpy(pass,"void");
dollars=0;
}
//析构函数-MASHENGBO
Account::~Account()
{
;
}
//检密函数-MASHENGBO
int Account::Check(char x[20],char y[20])
{
if(strcmp(x,this->name)==0)
{
if (strcmp(y,this->pass)==0) return 1;
else return 0;
}
else return 0;
}
//登陆函数-YANGMAOSHENG
void Account::Login()
{
double m,g;
for(;;)
{
fflush(stdin);
cout<<"1--存取"<<endl;
cout<<"2--查询"<<endl;
cout<<"3--修改密码"<<endl;
cout<<"4--注销"<<endl;
cout<<"请选择:"<<endl;
char input;
cin>>input;
switch(input)
{
case'1':
{
cout<<"1--存款"<<endl;
cout<<"2--取款"<<endl;
switch(getchar())
{
case'1': cout<<"请输入您要存入的金额:";
cin>>m;
dollars+=m;
cout<<"交易成功!";
case'2': cout<<"请输入您要取出的金额:";
cin>>g;
if(dollars<g)
{
cout<<"对不起,您的余额不足。"<<endl;
g=0;
}
else
{
dollars-=g;
cout<<"请稍等,正在为您准备现金。。。\n";
cout<<"请提款,谢谢使用!"<<endl;
}
break;
}
}
case'2':
{
cout<<"余额为"<<dollars<<"$"<<endl;
break;
}
case'3':
//修改密码模块-ERXING
{
char a[20],b[20],c[20];
while(1)
{
cout<<"请输入原密码:";
cin>>a;
cout<<"请输入新密码:";
cin>>b;
cout<<"请再次输入密码:";
cin>>c;
if(strcmp(a,pass)!=0)
cout<<"原密码输入错误,请重新输入\n";
else if(strcmp(b,c)!=0)
cout<<"两次密码输入不同,请重新输入!\n";
else
{
cout<<"修改成功!\n";
strcpy(pass,b);
break;
}
}
}//case 3
case'4': goto jump;
}//switch
jump: break;
}
}
------------------------------------------------------------------------
//StdAfx.h
#include <iostream.h>
#include <string.h>
class Account
{
public:
char name[20],pass[20];//用户名和密码
double dollars;//余额
Account();//构造函数
~Account();//析构函数
int Check(char *,char *);//检密函数
void Login();//登陆函数
protected:
};
[此贴子已经被作者于2006-11-14 18:53:11编辑过]