视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
c语言 通讯录程序代码
2025-09-29 05:16:31 责编:小OO
文档
#include

#include

#include

#include

#include

class student 

{public:

char num[20];

char name[20];

char address[40];

char tel_num[12];

char post_code[7];

char e_mail[40];

};

class function:public student

{public:

    void add();

    void del();

    void find_num();

    void find_name();

    void list_num();

    void list_name();

    void correct();

    void format();

    void show();

};

//主函数

int main()

{

    function a;

    char select1;

cout<    int m=0;

    do

    {

cout<<"---------------------------------通讯录-----------------------------------"<cout<<"******************************************************************************"<cout<<"*1.通讯录编辑 2.查询联系人  3.按序排列  4.格式化 5.显示通讯录  6.清屏  7.退出*"<cout<<"******************************************************************************"<cout<<"请选择:";

cin>>select1;

cout<<"------------------------------------------------------------------------------"<switch(select1)

{

case'1':cout<<"1.添加 2.删除 3.修改 4.返回主菜单"<    char select2;

cout<<"请选择:"< cin>>select2;

    switch(select2)

    {

    case '1':a.add();

        break;

    case'2':a.del();

        break;

    case'3':a.correct();

        break;

    case'4':break;

default:cout<<"输入错误!"<    }

    break;

case'2':cout<<"1.姓名查找 2.学号查找 3.返回主菜单"<        char select3;

     cout<<"请选择:";

     cin>>select3;

        switch(select3)

        {

        case'1':a.find_name();

            break;

        case'2':a.find_num();

            break;

        case'3':break;

     default:cout<<"输入错误!"<        }

        break;

     case'3':cout<<"1.按学号排序 2.按姓名排序 3.返回主菜单"<         cout<<"请选择:";

            char select4;

         cin>>select4;

            switch(select4)

            {

            case'1':a.list_num();

                break;

            case'2':a.list_name();

                break;

            case'3':break;

         default:cout<<"输入错误!"<            }

            break;

         case'4':cout<<"请确认删除所有资料(Y/N)";

                char select5;

             cin>>select5;

                if(select5=='Y'||select5=='y')

                    a.format();

                break;

            case'5':a.show();break;

            case'6':system("cls");break;//清屏函数

         case'7':m=1;cout<<"谢谢使用!"<         default:cout<<"输入错误!"<}

}while(m!=1); 

    return 0;

}

//添加联系人

void function::add()

{int i;

cout<<"输入添加个数(10个以内):";

cin>>i;

student stud1[40]={0};

ofstream outfile("学生通讯录.dat",ios::app|ios::binary);

if (! outfile)

{

cerr<<"打开错误,程序将退出!";

    abort();

}

for(int j=0;j{

cout<<"学号:";

cin>>stud1[j].num;

cout<<"姓名:";

cin>>stud1[j].name;

cout<<"地址:";

cin>>stud1[j].address;

cout<<"电话号码:";

cin>>stud1[j].tel_num;

cout<<"邮编:";

cin>>stud1[j].post_code;

cout<<"电子邮件:";

cin>>stud1[j].e_mail;

    outfile.write((char*)&stud1[j],sizeof(stud1[j]));

}

outfile.close ();    

}

//删除联系人

void function::del()

{

    student stud2[40]={0};

    char name[20]="\\0";

cout<<"请输入要删除的学生的姓名:";

cin>>name;

    ifstream infile("学生通讯录.dat",ios::binary);

    if (!infile)

    {

     cerr<<"打开错误,程序将退出!";

        abort();

    }

    int k=0;

    while(1)

    {

    infile.read((char*)&stud2[k],sizeof(stud2[k]));

    if(infile.eof())break;

    k++;

    }

    infile.close();

    remove("学生通讯录.dat");

    ofstream outfile("学生通讯录.dat",ios::binary);

    if (!outfile)

    {

     cerr<<"打开错误,程序将退出!";

        abort();

    }

    int i=0;

    while(1)

{if(i>k-1)break;//每删除一项就会减少一组数据,所以是k-1

        if(!strcmp(stud2[i].name,name))

            i=i+1;

     if(i>k-1)break;

        outfile.write((char*)&stud2[i],sizeof(stud2[i]));

        i++;

        

    }

    outfile.close();

    if(k-1==0)

        remove("学生通讯录.dat");

}

//修改联系人

void function::correct()

{

    student stud3[40]={0};

    ifstream infile("学生通讯录.dat",ios::binary);

    int k=0;

    while(1)

    {if(infile.eof())break;

    infile.read((char*)&stud3[k],sizeof(stud3[k]));

    k++;

    }

    infile.close();

    char name[20]="\\0";

cout<<"请输入要修改学生的姓名:";

cin>>name;

    int x;

for(int i=0;i    {

        if(!strcmp(stud3[i].name,name))

            x=i;

    }

    char select;

    

cout<<"1.修改姓名 2.修改学号 3.修改地址 4.修改邮编 5.修改电话号码 6.修改E_MAIL"< cout<<"请选择:";

cin>>select;

        char name1[20]="\\0";

        char num1[20]="\\0";

        char address1[40]="\\0";

        char post_code1[7]="\\0";

        char tel_num1[20]="\\0";

        char e_mail1[40]="\\0";

    switch(select)

    {

case'1':cout<<"输入要修改的姓名:";

     cin>>name1;

        strcpy(stud3[x].name,name1);

     cout<<"修改成功"<        break;

case'2':cout<<"输入要修改的学号:";

        

     cin>>num1;

        strcpy(stud3[x].num,num1);

     cout<<"修改成功"<        break;

case'3':cout<<"输入要修改的地址:";

        

     cin>>address1;

        strcpy(stud3[x].address,address1);

     cout<<"修改成功"<        break;

case'4':cout<<"输入要修改的邮编:";

        

     cin>>post_code1;

        strcpy(stud3[x].post_code,post_code1);

     cout<<"修改成功"<        break;

case'5':cout<<"输入要修改的电话号码:";

        

     cin>>tel_num1;

        strcpy(stud3[x].tel_num,tel_num1);

        break;

case'6':cout<<"输入要修改的E_MAIL";

        

     cin>>e_mail1;

        strcpy(stud3[x].e_mail,e_mail1);

     cout<<"修改成功"<        break;

default:cout<<"输入错误!";break;

    }

    remove("学生通讯录.dat");

    ofstream outfile("学生通讯录.dat",ios::binary);

    int l=0;

    while(1)

{if(l>k-2)break;

    outfile.write((char*)&stud3[l],sizeof(stud3[l]));

    l++;

    }

    outfile.close();

}

//按学号查询

void function::find_num()

{

    student stud4[40]={0};

    ifstream infile("学生通讯录.dat",ios::binary);

    if(infile.peek()==EOF)                             //发现如果不判断文件是否为空,本程序格式化过后查找出现未知数据。

    {

     cout<<"文件为空"<        return;

    }

cout<<"请输入学号:";

    char num[20]="\\0";

cin>>num;

cout<<"------------------------------------------------------------------------------"<    int i=0;

    while(1)

    {

        infile.read((char*)&stud4[i],sizeof(stud4[i]));

        if((!strcmp(stud4[i].num,num))||infile.eof())    break;

        i++;

    }

    if(!infile.eof())

    {

     cout<<"学号:"<        cout<<"姓名:"<     cout<<"地址:"<     cout<<"电话号码:"<     cout<<"邮编:"<     cout<<"E-MAIL:"<    }

    else

         cout<<"输入的学号查不到"<        infile.close();

    

}

//按姓名查找

void function::find_name()

{

    student stud5[40]={0};

    ifstream infile("学生通讯录.dat",ios::binary);

    if(infile.peek()==EOF)

    {

     cout<<"文件为空"<        return;

    }

cout<<"请输入姓名:";

    char name[20]="\\0";

cin>>name;

cout<<"------------------------------------------------------------------------------"< for(int i=0;i<40;i++)

    {

        infile.read((char*)&stud5[i],sizeof(stud5[i]));

        if(!strcmp(stud5[i].name,name)||infile.eof())

        break;

        

    }    

        if(!infile.eof())

        {

     cout<<"学号:"<     cout<<"姓名:"<     cout<<"地址:"<     cout<<"电话号码:"<     cout<<"邮编:"<     cout<<"E-MAIL:"<        }

        else

             cout<<"输入的姓名查不到"<        infile.close();

    

}

//按学号排序

void function::list_num()

{

    student stud6[40]={0};

    ifstream infile("学生通讯录.dat",ios::binary);

    int k=0;

    while(1)

    {if(infile.eof())break;

    infile.read((char*)&stud6[k],sizeof(stud6[k]));

    k++;

    }

                char num[20]="\\0";

                char name[20]="\\0";

                char address[40]="\\0";

                char tel_num[12]="\\0";

                char post_code[7]="\\0";

                char e_mail[40]="\\0";

for(int i=0;i    {

     for(int j=0;j        {

     if(strcmp(stud6[j].num,stud6[j+1].num)>0)

            {

            

                strcpy(num,stud6[j].num);

                strcpy(stud6[j].num,stud6[j+1].num);

                strcpy(stud6[j+1].num,num);

                strcpy(name,stud6[j].name);

                strcpy(stud6[j].name,stud6[j+1].name);

                strcpy(stud6[j+1].name,name);

                strcpy(address,stud6[j].address);

                strcpy(stud6[j].address,stud6[j+1].address);

                strcpy(stud6[j+1].address,address);

                strcpy(tel_num,stud6[j].tel_num);

                strcpy(stud6[j].tel_num,stud6[j+1].tel_num);

                strcpy(stud6[j+1].tel_num,tel_num);

                strcpy(post_code,stud6[j].post_code);

                strcpy(stud6[j].post_code,stud6[j+1].post_code);

                strcpy(stud6[j+1].post_code,post_code);

                strcpy(e_mail,stud6[j].e_mail);

                strcpy(stud6[j].e_mail,stud6[j+1].e_mail);

                strcpy(stud6[j+1].e_mail,e_mail);

            }

        }

    }

    infile.close();

    remove("学生通讯录.dat");

    ofstream outfile("学生通讯录.dat",ios::binary);

    int l=0;

    while(1)

{if(l>k-2)break;

    outfile.write((char*)&stud6[l+2],sizeof(stud6[l+2]));

    l++;

    }

    outfile.close();

}

//按姓名排序

void function::list_name()

{

    student stud7[40]={0};

                char num[20]="\\0";

                char name[20]="\\0";

                char address[40]="\\0";

                char tel_num[20]="\\0";

                char post_code[7]="\\0";

                char e_mail[40]="\\0";

    ifstream infile("学生通讯录.dat",ios::binary);

    int k=0;

    while(1)

    {if(infile.eof())break;

    else

    infile.read((char*)&stud7[k],sizeof(stud7[k]));

    k++;

    }

    infile.close();

for(int i=0;i    {

     for(int j=0;j        {

         if(strcmp(stud7[j].name,stud7[j+1].name)>0)

            {

            

                strcpy(num,stud7[j].num);

                strcpy(stud7[j].num,stud7[j+1].num);

                strcpy(stud7[j+1].num,num);

                strcpy(name,stud7[j].name);

                strcpy(stud7[j].name,stud7[j+1].name);

                strcpy(stud7[j+1].name,name);

                strcpy(address,stud7[j].address);

                strcpy(stud7[j].address,stud7[j+1].address);

                strcpy(stud7[j+1].address,address);

                strcpy(tel_num,stud7[j].tel_num);

                strcpy(stud7[j].tel_num,stud7[j+1].tel_num);

                strcpy(stud7[j+1].tel_num,tel_num);

                strcpy(post_code,stud7[j].post_code);

                strcpy(stud7[j].post_code,stud7[j+1].post_code);

                strcpy(stud7[j+1].post_code,post_code);

                strcpy(e_mail,stud7[j].e_mail);

                strcpy(stud7[j].e_mail,stud7[j+1].e_mail);

                strcpy(stud7[j+1].e_mail,e_mail);

            }

        }

    }

    

    remove("学生通讯录.dat");

    ofstream outfile("学生通讯录.dat",ios::binary);

    int l=0;

    while(1)

{if(l>k-2) break;

    outfile.write((char*)&stud7[l+2],sizeof(stud7[l+2]));

    l++;

    }

    outfile.close();

}

//格式化(删除文件)

void function::format()

{

    remove("学生通讯录.dat");

}

//显示通讯录

void function::show()

{

    student stud8[40]={0};

    ifstream infile("学生通讯录.dat",ios::in|ios::binary);

    infile.seekg(0,ios::beg);

    if(infile.peek()==EOF)

    {

     cout<<"文件为空"<        return;

    }

    int i=0;

    while(1)

    {

        

        infile.read((char*)&stud8[i],sizeof(stud8[i]));

        if(infile.eof())

            break;

        else

         cout<<"学号:"<         cout<<"姓名:"<         cout<<"地址:"<         cout<<"电话号码:"<         cout<<"邮编:"<         cout<<"E-MAIL:"<        i++;        

    }

    infile.close();

}下载本文

显示全文
专题