回 帖 发 新 帖 刷新版面

主题:[讨论]大家帮我看看我写的这个程序

关于一个WIN32控制台下的通讯录程序,连接时提示无错误,当选择1进入录入名字时,输入后便出错,无法继续执行,我用的是VC6.0编译环境。

#include "person.h"
#include "iostream.h"


int wait()
{
    char  comm;
    cout<<"请选择功能:"<<endl<<"1-录入"<<endl<<"2-按姓名查询"<<endl<<"3-显示全部"<<endl<<"4退出程序"<<endl;
    cin>>comm;
    if(comm=='1'||comm=='2'||comm=='3'||comm=='4')
        return comm;
    else 
        return 0;
}

void main()
{
    const int number=10;
    int count,Return,sumone=0;
    char Check[10];
    cout<<"欢迎使用WIN32控制台通讯录"<<endl;
    
    Return=wait();
    person *pPeo[number];
    while(Return!='4')
    {
        
        if(Return=='1')
        {
            if(sumone==10)
                cout<<"程序录入最大人数已满!"<<endl;
            else
            {
                pPeo[sumone]->setperson();
                sumone++;
            }
            Return=wait();
        }
        
        else if(Return=='2')
        {
            cout<<"请输入要查找的姓名"<<endl;
            cin>>Check;
            for(count=0;count<=sumone;count++)
                pPeo[count]->checkname(Check);
            Return=wait();
        }
        
        else if(Return=='3')
        {
            for(count=0;count<=sumone;count++)
                pPeo[count]->printperson();
            Return=wait();
        }
        else 
        {
            cout<<"非法输入!请重新输入"<<endl;
            Return=wait();
            
        }
        if(Return=='4')
        {
            cout<<"程序退出"<<endl;
            
        }
        
        
    }
}


person类的定义(.h内)
private:
    char m_Name[100];
    char m_Address[100];
    char m_Phone[100];
    
public:
    person();
    setperson();
    printperson();
    checkname(char* name);
    
    virtual ~person();
    person::person()
{
    
    
}
.cpp内:
person::~person()
{
    
    
}
person::setperson()
{
    
    cout<<"请依次输入姓名、地址、电话号码"<<endl;
    cin>>m_Name>>m_Address>>m_Phone;
}

person::printperson()
{
    cout<<"姓名"<<m_Name<<"地址"<<m_Address<<"电话号码"<<m_Phone<<endl;
    
}
person::checkname(char* name)
{
    
    if(m_Name==name)
    {
        cout<<"姓名"<<m_Name<<"地址"<<m_Address<<"电话号码"<<m_Phone<<endl;
        
    }
    
}

回复列表 (共6个回复)

沙发

~*><*~ ( 脸红)对不起貌似我又 void main了...

板凳

pPeo[sumone]->setperson();
这是咋回事……跟结构体混了吧
调用方法应该用.操作符
程序里这个问题不止一处,改改

3 楼

还有个问题,影响结果的
person::checkname(char* name)
{
    
    if(m_Name==name)
    {
        cout<<"姓名"<<m_Name<<"地址"<<m_Address<<"电话号码"<<m_Phone<<endl;
        
    }
    
}
char*是不能用==判断相等的,要用strcmp,或者用string类……

4 楼

最后,main里面为什么要一个一个去if……可以switch case的,字符串不行但是字符是可以的(可以隐式强转成int)

5 楼

我觉得  你好像只是定义了一个类  而没有将这个类 实例化,也就是这个类根本就没有存在的内存空间

6 楼

创意哦!楼主高人啊 谢

我来回复

您尚未登录,请登录后再回复。点此登录或注册