回 帖 发 新 帖 刷新版面

主题:求助

自己从网上找了一段代码自己试着修改了以下,加了个排序,但运行时老是出现“遇到问题需要关闭”不知是为什么。希望各位大虾帮忙下,不胜感激...

#include<iostream> 
#include<string> //控制字符串的头文件 
using namespace std; 
class tong //建立同学录的一个类 

public: 
    tong(); //构造函数 
    tong(char n[20],char se[20],char ag[20],char te[100],char qq[100]); 
    ~tong(); 
    void Set();//添加 
    void Delete();//删除 
    void Alter();//修改 
    void List();//显示 
    void RearchN(); 
    void RearchT(); 
    void RearchQ(); 
    void paixu();
private: 
    char name[20];char age[20];char telphone[100];char QQ[100];char sex[20]; 
    
}; 

tong::tong(){} //构造函数 
tong::tong(char n[20],char se[20],char ag[20],char te[100],char qq[100]) 

    strcpy(name, n); 
    strcpy(sex, se); 
    strcpy(age, ag); 
    strcpy(telphone, te); 
    strcpy(QQ, qq); 

tong::~tong(){} 

tong*s[50];int i=0;int j=0; 
char name[20];char age[20];char telphone[100];char QQ[100];char sex[20]; 

void tong::Set() 

    cout<<"请输入姓名:"<<endl;  
    cin>>name;  
    cout<<"请输入性别:"<<endl; 
    cin>>sex; 
    cout<<"请输入年龄:"<<endl;  
    cin>>age;  
    cout<<"电话号码:"<<endl;  
    cin>>telphone;  
    cout<<"QQ号码:"<<endl;  
    cin>>QQ;  
    j++;  
    s[i]=new tong(name,sex,age,telphone,QQ);  
    i++;  




void tong:: Delete() //(2)删除人员(Delete) 
{  
    cout<<"请输入您要删除的学生姓名:"<<endl;  
    cin>>name;  
    for(int h=0;h<i;h++)  
    {  
        if(strcmp(name,s[h]->name)==0)  
        {  
            i--;  
            s[h]=s[h+1];  
            h++;  
        } 
        else cout<<"您要求删除的对象本来就不存在!请检查输入的正确性!";  
    } 



void tong::Alter() //(3)修改数据(Alter) 
{  
    cout<<"请输入您要修改的学生的姓名:"<<endl;  
    cin>>name;  
    for(int h=0;h<i;h++)  
    {  
        if(strcmp(name,s[h]->name)==0)  
        { char se[20];char ag[20];char qq[100];char te[100]; 
        cout<<"请输入性别:"<<endl; 
        cin>>se; 
        cout<<"请输入年龄:"<<endl;  
        cin>>ag;  
        cout<<"电话号码:"<<endl;  
        cin>>te; 
        cout<<"QQ号码:"<<endl; 
        cin>>qq;  
        strcpy(s[h]->sex,se);  
        strcpy(s[h]->age,ag);  
        strcpy(s[h]->telphone,te); 
        strcpy(s[h]->QQ,qq); 
        cout<<"数据修改成功!";  
        } 
        else cout<<"您要修改的学生本来就不存在!请检查重新输入!"<<endl; 
    } 
}  


void tong::List() //(4)显示记录(List) 
{  
    cout<<"本系统所有通讯录的数据如下:"<<endl;  
    if(i==0)  
        cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl;  
    for(int k=0;k<i;k++)  
    {  
        cout<<"姓名:"<<s[k]->name<<" "<<  
            "性别:"<<s[k]->sex<<" "<<"年龄:"<<s[k]->age  
            <<" "<<"电话号码:"<<s[k]->telphone<<" "<<"QQ号码:" 
            <<s[k]->QQ<<endl;  
    }  
}  

void tong::RearchN() 

    if(i==0) 
        cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl; 
    cout<<"请输入你要查询的学生姓名"<<endl; 
    cin>>name; 
    for(int j=0;j<i;j++) 
    { 
        if(strcmp(name,s[j]->name)==0) 
        { 
            cout<<"您要查询的学生是:"<<s[j]->name<<endl; 
            cout<<"性别: "<<s[j]->sex<<" "<<"年龄: "<<s[j]->age<<" "<<"电话号码:"<<s[j]->telphone 
                <<" "<<"QQ号码:"<<s[j]->QQ<<endl; 
        } 
        
        else 
            cout<<"对不起!您要查询的学生不存在!"<<endl; 
    } 
}  

void tong::RearchT() 

//    char n; 
    if(i==0) 
        cout<<"管理系统中没有输入数据!"<<endl; 
    cout<<"请输入你要查询的学生的电话"<<endl; 
    cin>>telphone; 
    for(int j=0;j<i;j++) 
    { 
        if(strcmp(s[j]->telphone,telphone)==0) 
        { 
            cout<<"您要查询的学生是:"<<s[j]->name<<endl; 
            cout<<" 性别: "<<s[j]->sex<<" "<<"年龄: "<<s[j]->age<<" "<<"电话号码:"<<s[j]->telphone 
                <<" "<<"QQ号码:"<<s[j]->QQ<<endl; 
        } 
        else cout<<"对不起!您要查询的学生不存在!"<<endl;  
    } 
    


void tong::RearchQ() 

    char n[100]; 
    if(i==0) 
        cout<<"管理系统中没有输入数据!"<<endl; 
    cout<<"请输入你要查询的学生的QQ"<<endl; 
    cin>>n; 
    for(int j=0;j<i;j++) 
    { 
        if(strcmp(s[j]->QQ,n)==0) 
        { 
            cout<<"您要查询的学生是:"<<s[j]->name<<endl; 
            cout<<" 性别: "<<s[j]->sex<<" "<<"年龄: "<<s[j]->age<<" "<<"电话号码:"<<s[j]->telphone 
                <<" "<<"QQ号码:"<<s[j]->QQ<<endl; 
        } 
        else cout<<"对不起!您要查询的学生不存在!"<<endl;  
    } 


void tong::paixu()

    if(i==0) 
        cout<<"管理系统中没有输入数据!"<<endl; 
        for(int l=0;l<i-1;l++)
    {
        for(int k=0;k<i-l;k++)
        {
            if(strcmp(s[k]->telphone,s[k+1]->telphone)>0)
            {
                char name[20];char age[20];char telphone[100];char QQ[100];char sex[20];
                
                strcpy(telphone,s[k]->telphone);
                strcpy(s[k]->telphone,s[k+1]->telphone);
                strcpy(s[k+1]->telphone,telphone);
                
                strcpy(name,s[k]->name);
                strcpy(s[k]->name,s[k+1]->name);
                strcpy(s[k+1]->name,name);
                
               /* strcpy(address,st[j].address);
                strcpy(st[j].address,st[j+1].address);
                strcpy(st[j+1].address,address);*/ 
                
                strcpy(age,s[k]->age);
                strcpy(s[k]->age,s[k+1]->age);
                strcpy(s[k+1]->age,age);
                
                strcpy(QQ,s[k]->QQ);
                strcpy(s[k]->QQ,s[k+1]->QQ);
                strcpy(s[k+1]->QQ,QQ);
                 
                strcpy(sex,s[k]->sex);
                strcpy(s[k]->sex,s[k+1]->sex);
                strcpy(s[k+1]->sex,sex);
            }
        }
    }
    for(int f=0;f<i;f++)
    {
        int x=0;
        if(strcmp(s[f]->telphone,"0"))
        {
            cout<<s[f]->name<<endl; 
            cout<<" 性别: "<<s[f]->sex<<" "<<"年龄: "<<s[f]->age<<" "<<"电话号码:"<<s[f]->telphone 
                <<" "<<"QQ号码:"<<s[f]->QQ<<endl; 
            x=1;
        }
        if(x==1)
        {
            cout<<endl;
            cout<<"-----------------------------------------------------------------------------"<<endl;
        }
    }
}
void caozuo(int p) 
{ tong t; 
switch(p) 

case 0:t.Set();break; 
case 1:t.Set();break; 
case 2:t.Delete();break; 
case 3:t.Alter();break; 
case 4:t.List();break; 
case 5:t.RearchN();break; 
case 6:t.RearchT();break; 
case 7:t.RearchQ();break;
case 8:t.paixu();break;
case 9:exit(0);break; 





int main() 
{  
    char w; 
    do{ 
        cout<<"请输入操作代码(0 通讯录录入/1 增加人员/2 删除人员/3 修改数据/4 显示记录/ 5 按姓名查询/6 按电话查询/7 按QQ查询/8 按电话排序/9 退出)"<<endl;  
        int a;cin>>a; caozuo(a); 
        cout<<"您想继续进行其他操作吗?(y/n)"<<endl;  
        cin>>w; 
    }while(w=='y'); 
    
    
    
    return 0;  
} //利用while语句又回到了前面的循环

回复列表 (共2个回复)

沙发

if(i==0) 
        cout<<"管理系统中没有输入数据!"<<endl; 
        for(int l=0;l<i-1;l++)
    {
        for(int k=0;k<i-l;k++)
改成
    if(i==0) 
        cout<<"管理系统中没有输入数据!"<<endl; 
        for(int l=0;l<i-1;l++)
    {
        for(int k=0;k<i-1-l;k++)      //冒泡法排序
其它还有没有错不知道,好像没出现你说的问题

板凳


这排序是按什么顺序排的啊??

我来回复

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