通讯录管理系统C++源代码详解

张睿 贡献于2016-01-11

作者 微软用户  创建于2010-07-12 07:08:00   修改者User  修改于2016-01-07 07:01:00字数5311

文档摘要:实现通讯录管理系统任务:自学C语言中有关链表及外部文件的内容,设计出通讯录管理系统。要求如下所述:  建立通讯录信息,信息至少包含编号、姓名、年龄、电话、通讯地址、电子邮箱等; 能够提供添加、删除和修改通讯录信息的功能; 能够提供按不同方式查询的功能;如按姓名或年龄、电话等查询; 将通讯录保存在文件中;   能够按表格方式输出通讯录信息。 要求:②  根据以上功能需求,自己定义单链表结点的存储结构;③  为了保证所有的数据可以长期被使用,要求程序能将相关数据存储在外部数据文件中,具体数据格式和文件名、路径等自定;④  提供友好的用户界面,方便用户操作。
关键词:

 实现通讯录管理系统 任务:自学C语言中有关链表及外部文件的内容,设计出通讯录管理系统。要求如下所述: u      建立通讯录信息,信息至少包含编号、姓名、年龄、电话、通讯地址、电子邮箱等;; u      能够提供添加、删除和修改通讯录信息的功能; u      能够提供按不同方式查询的功能;如按姓名或年龄、电话等查询; u      将通讯录保存在文件中; u      能够按表格方式输出通讯录信息。   要求: ②    根据以上功能需求,自己定义单链表结点的存储结构; ③    为了保证所有的数据可以长期被使用,要求程序能将相关数据存储在外部数据文件中,具体数据格式和文件名、路径等自定; ④    提供友好的用户界面,方便用户操作。 #include #include #include #include using namespace std; struct Student { string num;//学号 string name;//姓名 int age; char tel; char addr; char emal; Student *next; } ; long iCount=0; Student *head=NULL; Student *pEnd=NULL; void LoadRecords(char *path)//从文本里面读取记录 { fstream infile(path,ios::in); if(!infile){} else {    infile>>iCount;    int t=iCount;    if(iCount!=0)    {     for(;iCount>0;iCount --)      {       Student *p=new Student;       infile>>p->num>>p->name>>p->age;       if(head==NULL)       {        head=p;pEnd=p;pEnd->next=NULL;       }       else       {        pEnd->next=p;        pEnd=pEnd->next;        pEnd->next=NULL;       }      }    }    iCount=t; } infile.close(); } void Print(Student *h)//打印记录 { if(h==NULL) {    cout<<"\n****************************************\n\n";    cout<<"没有学生记录!\n";    cout<<"\n****************************************\n";    return; } cout<<"\n********************************************************************************\n\n"; cout<<"所有的学生:\n\n"; cout<<" ------------------------------------------\n"; cout<<"| "<num<<"| "<name <<"| "<age<<"| "<tel <<"| "<addr<<"| "<emal<<"    |\n";     h=h->next;    } cout<<" ------------------------------------------\n"; cout<<"\n********************************************************************************\n\n"; } void Print_All(Student *h)//输出全部 { if(h==NULL){cout<<"\n****************************************\n";cout<<"没有学生记录!\n";cout<<"\n****************************************\n";return;} cout<<"\n********************************************************************************\n"; cout<<"所有学生:\n\n"; cout<<" ------------------------------------------\n"; cout<<"| "<number=1;h->number++}    {       cout<<" ------------------------------------------\n";     cout<<"| "<num<<"| "<name <<"| "<age<<"| "<tel <<"| "<addr<<"| "<emal<<"    |\n";     h=h->next;       } cout<<" ------------------------------------------\n"; cout<<"\n********************************************************************************\n\n"; } void Print_search(Student *h)//查询 { if(h==NULL){cout<<"\n********************************************************************************\n";cout<<"没有学生记录!\n";cout<<"\n****************************************\n";return;} cout<<"\n********************************************************************************\n"; cout<<"所查学生:\n\n"; cout<<" ------------------------------------------\n"; cout<<"| "<number=i)     {      cout<<" ------------------------------------------\n";     cout<<"| "<num<<"| "<name <<"| "<age<<"| "<tel <<"| "<addr<<"| "<emal<<"    |\n";     }     h=h->next;    } cout<<" ------------------------------------------\n"; cout<<"\n********************************************************************************\n\n"; } void Add(Student *s) { if(pEnd==NULL){head=s;pEnd=s;s->next=NULL;} else{pEnd->next=s;pEnd=s;pEnd->next=NULL;} cout<<"\n==================================================\n";cout<name<<" 的资料添加完毕!\n";cout<<"==================================================\n"; iCount++; } void main() { LoadRecords("c:\\test.txt"); int n; cout<<"\n********************************************************************************\n"; cout<<"[1] 增加一个学生\n"    <<"[2] 显示所有的学生以及他们的成绩\n"    <<"[3] 显示数组中 学号为I的学生信息\n"    <<"[4] 存盘并退出\n"; cout<<"********************************************************************************\n\n"; cout<<"请选择操作项:[1-5]   "; cin>>n; while(1) {    switch (n)    {     case 1:      {      Student *p=new Student;      cout<<"\n********************************************************************************\n\n";      cout<<"请输入内容:"<>p->num>>p->name>>p->age>>p->tel>>p->addr>>p->emal;Add(p);      break;      }     case 2:      Print(head);break;     case 3:      Print_search(head);break;     case 4:      {      fstream outfile("c:\\test.txt",ios::out);      if(!outfile){}      else      {       outfile<num<<" "<name<<" "<Maths<<" ";         head=head->next;        }            }      outfile.close();      cout<<"\n==================================================\n";      cout<<"再见"<=1&&n<=5)    {         cout<<"\n********************************************************************************\n";     cout<<"[1] 增加一个学生\n"      <<"[2] 显示所有的学生以及他们的成绩\n"      <<"[3] 显示数组中平均成绩<40的学生以及他们的成绩\n"      <<"[4] 显示数组中学号为I的学生信息\n"      <<"[5] 存盘并退出\n";     cout<<"********************************************************************************\n\n";     cout<<"请选择操作项:[1-5]   ";     cin>>n;    } } }

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 6 金币 [ 分享文档获得金币 ] 7 人已下载

下载文档