最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

C++程序设计论文

来源:动视网 责编:小OO 时间:2025-10-03 20:03:01
文档

C++程序设计论文

C++程序设计论文--通讯录管理系统一、题目要求:采用VC++实现通讯录管理,主要涉及的学生信息包括:学号、姓名、生日、性别、班级、电话、宿舍、地址等信息。编写程序来完成如下功能:1、新建学生通讯录:采用头插入的方式建链表,并询问是否保存到文件。2、向学生通讯录插入学生信息:采用头插入的方式把结点插进去。3、在通讯录删除学生信息:删除结点(按学号、姓名删除),并询问是否从文件中删除。4、在通讯录中查询学生信息:按姓名或学号的形式查找,然后显示学生信息。5、在屏幕中输出全部学生信息:输出链表的每
推荐度:
导读C++程序设计论文--通讯录管理系统一、题目要求:采用VC++实现通讯录管理,主要涉及的学生信息包括:学号、姓名、生日、性别、班级、电话、宿舍、地址等信息。编写程序来完成如下功能:1、新建学生通讯录:采用头插入的方式建链表,并询问是否保存到文件。2、向学生通讯录插入学生信息:采用头插入的方式把结点插进去。3、在通讯录删除学生信息:删除结点(按学号、姓名删除),并询问是否从文件中删除。4、在通讯录中查询学生信息:按姓名或学号的形式查找,然后显示学生信息。5、在屏幕中输出全部学生信息:输出链表的每
C++程序设计论文

--通讯录管理系统

一、题目要求:

采用VC++实现通讯录管理,主要涉及的学生信息包括:学号、姓名、生日、性别、班级、电话、宿舍、地址等信息。编写程序来完成如下功能:

1、新建学生通讯录:采用头插入的方式建链表,并询问是否保存到文件。

2、向学生通讯录插入学生信息:采用头插入的方式把结点插进去。

3、在通讯录删除学生信息:删除结点(按学号、姓名删除),并询问是否从文件中删除。

4、在通讯录中查询学生信息:按姓名或学号的形式查找,然后显示学生信息。

5、在屏幕中输出全部学生信息:输出链表的每一个内容,按照一定格式进行显示。

6、修改学生信息:按学号、姓名修改查询到的位置对应的学生信息。

7、统计学生信息学生信息:按性别、班级统计查询到的位置对应的学生信息。

8、保存并退出:告知结束运行系统。向文件写入学生通讯录信息,把链表中的结点都保存到文件中。

二、题目分析:

1、总体思路如下:

三、源代码:

#include

#include

#include

#include

using namespace std;

struct DataType                   //定义所有信息

{

    char number[20];      //学号

    char name[20];       //姓名

    char birthday[20];     //生日

    char sex[1];          //性别

    char class_num[20];    //班级

    char telephone[12];   //电话

    char dom[10];        //宿舍

    char address[20];     //地址

};

struct student     //定义学生信息

{

    DataType data;

    student *next;                 

};

class txl

{

private:

    student *head;     //头指针

    student *currptr;   //当前指针

public:

    txl();

    ~txl();

    void Creat();                     //新建学生通讯录

    void Insert();                    //向学生通讯录插入学生信息

    void Delete();                    //在通讯录删除学生信息

    void WriteFile();                 //从文件中读取通讯录的信息

    void ReadFile();                  //向文件写入学生通讯录信息

    void Search();                    //在通讯录中查询学生信息

    void Display();                   //在屏幕中输出全部学生信息

    void Revise();                    //修改通讯录中学生信息

    void Count();                     //在屏幕中按照统计输出学生信息

    void Exit();         //退出

};

txl::txl()             //构造函数

{

    head=currptr=NULL;

};

txl::~txl()            //析构函数

{

    student *temp=head;             //释放空间

    while(temp)

    {

       delete temp;

    }

}  

//新建学生通讯录

//  功能:采用头插入的方式建链表,并询问是否保存到文件

//  参数:无

//返回值:无

void txl::Creat()                                  

{

cout<<"你想要建立多少个学生的通讯录:";

    int i,n;

    char mf[1];

cin>>n;

cout<<"\\n************录入工作开始**************\\n"< for(i=1;i<=n;i++) //输入学生信息

    {

       currptr=new student;

cout<<"请输入第"< cin>>currptr->data.number;

cout<<"请输入第"< cin>>currptr->data.name;

cout<<"请输入第"< cin>>currptr->data.birthday;

cout<<"请输入第"< cin>>*mf;

       while((*mf)!='m' && (*mf)!='f')   //使输入为男女

   {

cout<<"输入格式有误,请输入'm/f'。"< cout<<"请输入第"< cin>>*mf;

    }

    if((*mf)=='m'||(*mf)=='f')                             //保存

    {

     *(currptr->data.sex)=(*mf);

       }

cout<<"请输入第"< cin>>currptr->data.class_num;

cout<<"请输入第"< cin>>currptr->data.telephone;

cout<<"请输入第"< cin>>currptr->data.dom;

cout<<"请输入第"< cin>>currptr->data.address;

cout<<"\\n************华丽的分割线**************\\n"< currptr->next=head; //头插入建链表

       head=currptr;

    }

cout<};

//向学生通讯录插入学生信息

//  功能:采用头插入的方式把结点插进去,并询问是否保存到文件

//  参数:无

//返回值:无

void txl::Insert()                             

{

    char mf[1];

cout<<"你想要在哪个位置插入:";

    int k,n=0;                               //k记录插入位置,n记录链表长度

cin>>k;

    student *p=head,*q=NULL,*t=head;

    while(t)

    {

t=t->next;

       n++;

    }

if(k>n+1||k<1) //不存在此位置,不能存入

    {

cout<<"此位置不合法";                              

    }

    else{

        currptr=new student;

     cout<<"请输入你要插入的学生的信息!"<        cout<<"请输入学生的学号:";

     cin>>currptr->data.number;

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

     cin>>currptr->data.name;

     cout<<"请输入学生的生日:";

     cin>>currptr->data.birthday;

     cout<<"请输入学生的性别[m/f]:";

     cin>>*mf;

        while((*mf)!='m' && (*mf)!='f')   //使输入为男女

        {

         cout<<"输入格式有误,请输入'm/f'。"<         cout<<"请输入学生的性别:";

         cin>>*mf;

        }

        if((*mf)=='m'||(*mf)=='f')                              //保存

        {

         *(currptr->data.sex)=(*mf);

        }

     cout<<"请输入学生的班级:";

     cin>>currptr->data.class_num;

     cout<<"请输入学生的电话:";

     cin>>currptr->data.telephone;

     cout<<"请输入学生的宿舍:";

     cin>>currptr->data.dom;

     cout<<"请输入学生的地址:";

     cin>>currptr->data.address;

        

        if(k==1)                                      //建链表

        {

         currptr->next=head;

            head=currptr;

        }

        

        else

        {

         for(int i=1;i            {

                q=p;

             p=p->next;

            }

         q->next=currptr;

         currptr->next=p;

        }

    }

 

//在通讯录删除学生信息

//  功能:删除结点,并询问是否从文件中删除(采用覆盖原有文件的形式)

//  参数:无

//返回值:无

void txl::Delete()                   

{

    if(head!=NULL)                      //链表存在时就做删除操作

    { 

        int k,n=0;

        student *cu=head;

     student *p=head,*q=head->next,*t=head;

     cout<<"你可以通过以下方式删除:"<     cout<<"1、按学号删除"<     cout<<"2、按姓名删除"<     cout<<"你想要按什么方式删除(1 或 2):";

        char ch;

     cin>>ch;

        

        while(ch!='1'&&ch!='2')

        {

         cout<         cout<<"操作错误,请重新输入:";

         cin>>ch;

        }//判断输入是否符合

        if(ch=='1')

        {

            char num[20];

         cout<<"请输入你要的学号:";

         cin>>num;

            while(cu!=NULL)

            {

                n++;

             if(strcmp(cu->data.number,num)==0) //判断是否是所查学号

                {       

                    break;

                }

             cu=cu->next;

            }

            if(cu==NULL)

             cout<<"不存在这个学号!"<            else 

            {

                k=n;

                if(k==1)

                 head=head->next;

                else

                {

                 for(int i=1;i                    {

                        p=q;

                     q=q->next;

                    }

                    if(q==NULL)

                        p=NULL;

                    else

                     p->next=q->next;

                }

         cout<<"删除成功!"<            }

        

        }

        else

        {  int n=0;

            char nam[20];

         cout<<"请输入你要的姓名:";

         cin>>nam;

            while(cu!=NULL)

            {

                n++;

             if(strcmp(cu->data.name,nam)==0) //判断是否是所查姓名

                {       

                    break;

                }

             cu=cu->next;

            }

            if(cu==NULL)

             cout<<"不存在这个姓名!未能成功删除!"<            else 

            {

                k=n;

                if(k==1)

                 head=head->next;

                else

                {

                 for(int i=1;i                    {

                        p=q;

                     q=q->next;

                    }

                    if(q==NULL)

                        p=NULL;

                    else

                     p->next=q->next;

                }

         cout<<"删除成功!"<            }

        

        }

    }

}

 

//向文件写入学生通讯录信息

//  功能:把链表中的结点都保存到文件中

//  参数:链表的一个结点

//返回值:无

void txl::WriteFile()                     

{

    student *s=head;

    ofstream fop;

    fop.open("通讯录.dat",ios::binary|ios::trunc);           //以二进制形式打开文件//覆盖原来的文件且重新保存删除后的内容

    if(!fop)

    {

cout<<"通讯录.dat 无法打开!"<       abort();

    }

    char Y_N;

cout<<"您需要保存更改到文件中吗?(Y/N):";    //询问是否保存到文件中

cin>>Y_N;

    while(Y_N!='Y'&&Y_N!='y'&&Y_N!='N'&&Y_N!='n')   //使输入为yes或no

    {

cout<<"请输入 'Y' 或 'N':";

cin>>Y_N;

    }

    if(Y_N=='Y'||Y_N=='y')                              //保存

    {

       while(s)

       {

while(fop.write((char *)&s->data,sizeof(s->data)))

           {

s=s->next;

              flush(cout);

           }

       }

cout<<"保存成功!"<    }

    fop.close();

}

//从文件中读取通讯录的信息

//  功能:从文件中读取内容,并建链表

//  参数:无

//返回值:无

void txl::ReadFile()                      

{

    currptr=new student;

    ifstream fip("通讯录.dat",ios::in|ios::binary);              //以二进制形式打开文件

while(fip.read((char *)&currptr->data,sizeof(currptr->data)))

    {

currptr->next=head;

       head=currptr;

       currptr=new student;

    }

    fip.close();

    delete currptr;

}

//在通讯录中查询学生信息

//  功能:按姓名或学号的形式查找

//  参数:无

//返回值:无

void txl::Search()                      

{

cout<<"你可以通过以下方式查询:"< cout<<"1、按学号查询"< cout<<"2、按姓名查询"< cout<<"你想要按什么方式查询(1 或 2):";

    char ch;

cin>>ch;

cout<<"你要查询的信息是:";

    while(ch!='1'&&ch!='2')

    {

cout< cout<<"操作错误,请重新输入:";

cin>>ch;

    }

    student *cu=head;

    if(ch=='1')                                    //按学号查询

    {

       char num[20];

cin>>num;

       while(cu!=NULL)

       {

if(strcmp(cu->data.number,num)==0) //判断是否是所查学号

           {

cout<<"你要找的学生信息为:"< cout<data.number<<" "<data.name<<" "<data.birthday<<" "<data.sex<<" "

<data.class_num<<" "<data.telephone<<" "<data.dom<<" "<data.address<              break;

           }

cu=cu->next;

       }

       if(cu==NULL)

cout<<"不存在这个学生!"<    }

    else                                           //按姓名查询

    {

       char na[20];

cin>>na;

       while(cu!=NULL)

       {

if(strcmp(cu->data.name,na)==0) //判断是否是所查姓名

           {

cout<<"你要找的学生信息为:"< cout<data.number<<" "<data.name<<" "<data.birthday<<" "<data.sex<<" "

<data.class_num<<" "<data.telephone<<" "<data.dom<<" "<data.address<              break;

           }

cu=cu->next;

       }

       if(cu==NULL)    //查询不到

cout<<"不存在这个学生!"<    }

}

 

//在屏幕中输出全部学生信息

//  功能:输出链表的每一个内容

//  参数:无

//返回值:无

void txl::Display()                    

{

    if(head==NULL)

cout<<"通讯录里没有内容!\\n\\n";

    else{

        student *k=head;

     cout< <     <     <        //设置左对齐输出

    while(k)

    {

cout<data.number< <data.name<data.birthday< <data.sex<data.class_num<     <data.telephone<data.dom

     <data.address<     k=k->next;

    }

cout<    }

}

//修改学生信息

//  功能:修改输入位置对应的学生信息

//  参数:无

//返回值:无

void txl::Revise()                    

{

    if(head!=NULL)                      //链表存在时就做删除操作

    { 

        char mf[1];

        student *cu=head;

     student *p=head,*q=head->next,*t=head;

     cout<<"你可以通过以下方式修改:"<     cout<<"1、按学号修改"<     cout<<"2、按姓名修改"<     cout<<"你想要按什么方式修改(1 或 2):";

        char ch;

     cin>>ch;

        

        while(ch!='1'&&ch!='2')

        {

         cout<         cout<<"操作错误,请重新输入:";

         cin>>ch;

        }//判断输入是否符合

        if(ch=='1')

        {

            char num[20];

         cout<<"请输入你要的学号:";

         cin>>num;

            while(cu!=NULL)

            {

             if(strcmp(cu->data.number,num)==0) //判断是否是所查学号

                {       

                    break;

                }

             cu=cu->next;

            }

            if(cu==NULL)

             cout<<"不存在这个学号!"<            else 

            {

             cout<<"请输入你要更改的学生的信息!"<             cout<<"请输入学生的学号:";

             cin>>cu->data.number;

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

             cin>>cu->data.name;

             cout<<"请输入学生的生日:";

             cin>>cu->data.birthday;

             cout<<"请输入学生的性别[m/f]:";

             cin>>*mf;

                while((*mf)!='m' && (*mf)!='f')   //使输入为男女

                {

                 cout<<"输入格式有误,请输入'm/f'。"<                 cout<<"请输入学生的性别:";

                 cin>>*mf;

                }

                if((*mf)=='m'||(*mf)=='f')                              //保存

                {

                 *(currptr->data.sex)=(*mf);

                }

             cout<<"请输入学生的班级:";

             cin>>cu->data.class_num;

             cout<<"请输入学生的电话:";

             cin>>cu->data.telephone;

             cout<<"请输入学生的宿舍:";

             cin>>cu->data.dom;

             cout<<"请输入学生的地址:";

             cin>>cu->data.address;

             cout<<"\\n修改成功!\\n"<            }

        

        }

        else

        {

            char nam[20];

         cout<<"请输入你要的姓名:";

         cin>>nam;

            while(cu!=NULL)

            {

             if(strcmp(cu->data.name,nam)==0) //判断是否是所查姓名

                {       

                    break;

                }

             cu=cu->next;

            }

            if(cu==NULL)

             cout<<"不存在这个姓名!"<            else 

            {

             cout<<"请输入你要更改的学生的信息!"<             cout<<"请输入学生的学号:";

             cin>>cu->data.number;

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

             cin>>cu->data.name;

             cout<<"请输入学生的生日:";

             cin>>cu->data.birthday;

             cout<<"请输入学生的性别[m/f]:";

             cin>>*mf;

                while((*mf)!='m' && (*mf)!='f')   //使输入为男女

                {

                 cout<<"输入格式有误,请输入'm/f'。"<                 cout<<"请输入学生的性别:";

                 cin>>*mf;

                }

                if((*mf)=='m'||(*mf)=='f')                              //保存

                {

                 *(currptr->data.sex)=(*mf);

                }

             cout<<"请输入学生的班级:";

             cin>>cu->data.class_num;

             cout<<"请输入学生的电话:";

             cin>>cu->data.telephone;

             cout<<"请输入学生的宿舍:";

             cin>>cu->data.dom;

             cout<<"请输入学生的地址:";

             cin>>cu->data.address;

             cout<<"\\n修改成功!\\n"<            }

        

        }

    }

}

//统计学生信息学生信息

//  功能:修改输入位置对应的学生信息

//  参数:无

//返回值:无

void txl::Count()                    

{

cout<<"你可以通过以下方式统计:"< cout<<"1、按性别统计"< cout<<"2、按班级统计"< cout<<"你想要按什么方式统计(1 或 2):";

    char ch;

cin>>ch;

    while(ch!='1'&&ch!='2')

    {

cout< cout<<"操作错误,请重新输入:";

cin>>ch;

    }

    student *cu=head;

    if(ch=='1')                                    //按性别统计

    {

cout<<"你要统计的性别是[m/f]:";

       char sexs[1];

       int n=0;

cin>>sexs;

       if(cu!=NULL)

       {

     cout<<"你要找的学生信息为:"<       while(cu!=NULL)

       {           

if(strcmp(cu->data.sex,sexs)==0) //判断是否是所查性别

           {

              n++;              

cout<data.number<<" "<data.name<<" "<data.birthday<<" "<data.sex<<" "

<data.class_num<<" "<data.telephone<<" "<data.dom<<" "<data.address<           }

cu=cu->next;

       }

      if(n==0)

     cout<<"该班不存在学生!"<       else

cout<<"共有"<       }

    }

    else                                           //按班级统计

    {

cout<<"你要统计的班级是:";

       char cls[20];

       int n=0;

cin>>cls;

       if(cu!=NULL)

       {

     cout<<"你要找的学生信息为:"<       while(cu!=NULL)

       {

if(strcmp(cu->data.class_num,cls)==0) //判断是否是所查班级

           {

              n++;       

cout<data.number<<" "<data.name<<" "<data.birthday<<" "<data.sex<<" "

<data.class_num<<" "<data.telephone<<" "<data.dom<<" "<data.address<           }

cu=cu->next;

       }

       if(n==0)

     cout<<"该班不存在学生!"<       else

cout<<"共有"<       }

    }

}

//保存并推出

//  功能:告知结束运行系统

//  参数:无

//返回值:无

void txl::Exit()                       //退出

{

    WriteFile();            //询问是否保存对文件的修改

cout<<"感谢使用本系统!"<    exit(1);                 //命令整个程序退出;

}

//main.cpp

int main()

{

    system ("color 3F");

cout<<"\\n";

cout<<"***************************欢迎使用通讯管理系统***************************"< cout<<"****************************该系统包含以下功能****************************"< cout<<"* *"< cout<<"* 1.录入学生信息\\";

cout<<"2.插入学生信息\\";

cout<<"3.删除学生信息 *"< cout<<"* *"< cout<<"* 4.查询学生信息\\";

cout<<"5.显示学生信息\\";

cout<<"6.修改学生信息 *"< cout<<"* *"< cout<<"* 7.统计学生信息\\";

cout<<"8.保存管理系统\\";

cout<<"请输入1--8操作 *"< cout<<"* *"< cout<<"**************************************************************************"<    char ch; 

    txl t;

    t.ReadFile();                          //读取文件里的信息

cout<<"读取文件内容成功!"<    do{ 

cout<<"*******************************学生通讯管理系统***************************"< cout<<"* *"< cout<<"* 1.录入学生信息\\";

cout<<"2.插入学生信息\\";

cout<<"3.删除学生信息 *"< cout<<"* *"< cout<<"* 4.查询学生信息\\";

cout<<"5.显示学生信息\\";

cout<<"6.修改学生信息 *"< cout<<"* *"< cout<<"* 7.统计学生信息\\";

cout<<"8.保存退出系统\\";

cout<<"请输入1--8操作 *"< cout<<"* *"< cout<<"**************************************************************************"< cout<<"请选择您要进行的操作前的代码(1-8):";

cin>>ch;

while(ch>'8'||ch<'1') //使选择范围在1~8

       {

cout<<"输入错误,请重新输入(1-8):";

cin>>ch;

       }

       switch(ch)

       {

       case '1':t.Creat();break;                     //1、新建学生通讯录

case '2':cout<<"现在学生的信息如下:"<            t.Display();

            t.Insert();break;                        //2、向学生通讯录插入学生信息

case '3':cout<<"现在学生的信息如下:"<            t.Display();

            t.Delete();break;                        //3、在通讯录删除学生信息                                    

case '4':cout<<"现在学生的信息如下:"<            t.Display();

            t.Search();break;                        //4、在通讯录中查询学生信息

case '5':cout<<"现在学生的信息如下:"<            t.Display();break;                       //5、在屏幕中输出全部学生信息

     case '6':cout<<"现在学生的信息如下:"<            t.Display();

            t.Revise();break;                        //6、在通讯录修改学生信息  

        case '7':t.Count();break;                  //7、在通讯录统计学生信息  

        case '8':t.Exit();break;                        //8、保存并退出

       }

    }while(1);

    return 0;

}

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

文档

C++程序设计论文

C++程序设计论文--通讯录管理系统一、题目要求:采用VC++实现通讯录管理,主要涉及的学生信息包括:学号、姓名、生日、性别、班级、电话、宿舍、地址等信息。编写程序来完成如下功能:1、新建学生通讯录:采用头插入的方式建链表,并询问是否保存到文件。2、向学生通讯录插入学生信息:采用头插入的方式把结点插进去。3、在通讯录删除学生信息:删除结点(按学号、姓名删除),并询问是否从文件中删除。4、在通讯录中查询学生信息:按姓名或学号的形式查找,然后显示学生信息。5、在屏幕中输出全部学生信息:输出链表的每
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top