C++通讯录管理

newgxu

贡献于2013-06-07

字数:6278 关键词: C/C++开发 C/C++

 通讯录管理 班级:09计科一班 姓名:唐霖峰 学号:200910510104 指导老师:李娟 1.课程设计目的:通过设计一个《通讯录管理系统》,进一步熟悉C中类的概念基本知识和利用所学的基本知识解决简单的面相对象的程序设计问题。了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对C的理解与Visual C++环境的使用:逐步熟悉程序设计的方法,并养成良好的编程习惯。 2.内容及设计要求:编写一个通讯录管理系统。本系统应完成以下几方面的功能: 1. 通讯录的建立 2. 通讯录信息的添加 3. 通讯录信息的查询 4. 通讯录信息的删除 5. 通讯录信息的输出 0. 退出管理系统 请选择 0—5: 设计要求:1每条信息至少包含:姓名(NAME) 性别(SEX) 电话(PHONE) 编号(NUM) 地址(ADDR) 3.详细功能如下: A添加: 系统将提示用户输入新添加人员信息,输入到文件中,人员信息包括姓名,街道,城市,邮编,国家 B删除: 首先由用户输入要删除的人员的姓名,然后调用删除函数,删除该人员的所有相关资料 C显示所有人员信息:该功能将显示已经保存的所有人员的姓名 街道 城市 邮编 国家 D查询:可由用户输入要查找的人员姓名,然后系统用查找函数查找,接着系统使用相关文件命令输出所查找的人员的全部信息 E退出系统:关闭通讯录管理系统 使用说明及操作展示: 运行环境: Microsoft Visual C++6.0 在此,把软件使用过程写出,并对此程序的一些细节和具体的操作方法加以说明,说明如下: 将软件进行初始化,即在VC++6.0中运行该程序,进入程序主界面,首次运行会建立文件,提示文件是否成功建立。然后按任意键后进入主菜单。 界面面显示的是“主菜单”,主菜单有五个方面: 1,新添记录 2,查询菜单 3,删除联系人 4,保存退出 5,不保存退出 查询菜单包裹三个方面 1,显示所有 2,按姓名查询 3,返回主菜单 输入和存取人员信息,选择菜单界面的第1个选择进入此选择界面,根据提示,输入信息相关信息。 按"2"显示查询的菜单。 按“3”删除指定联系人。 按“4”将输入的联系人信息保存到文件中并退出通讯录。 按“5”退出通讯录,不保存输入的联系人信息。 源代码: #include #include #include #include #include using namespace std; typedef struct { string num; string name; string sex; string phone; string addr; }DataType; typedef struct node { DataType data; struct node *next; }ListNode; typedef ListNode *LinkList; class StudentRecords {public: StudentRecords(){head=new ListNode;head->next=NULL;} ~StudentRecords(); void Build(); void Add(); void Check(); void Delete(); void PrintList(); void cin_file(char*filename); void Preservation_file(); private: LinkList head; }; void StudentRecords::Build() {string NUM; bool flag=false; ListNode *p; cout<<"分别输入编号,姓名,性别,电话,地址(输入0 结束通信录的建立):"<>NUM; if(NUM>"0") { p=new ListNode; p->data.num=NUM; cout<<"姓名:"; cin>>p->data.name; cout<<"性别:"; cin>>p->data.sex; cout<<"电话:"; cin>>p->data.phone; cout<<"地址:"; cin>>p->data.addr; p->next=head->next; head->next=p; } else break; } cout<next;delete p; while(q) {p=q;q=p->next;delete p;} } void StudentRecords::Add() {ListNode *p; bool flag=true; while(flag) {p=new ListNode; cout<<"分别输入编号,姓名,性别,电话,地址:"<>p->data.num; cout<<"姓名:"; cin>>p->data.name; cout<<"性别:"; cin>>p->data.sex; cout<<"电话:"; cin>>p->data.phone; cout<<"地址:"; cin>>p->data.addr; p->next=head->next; head->next=p; cout<>YN; if(YN=='Y')flag=true; else flag=false; } } void StudentRecords::Check() {ListNode *p,*q; int i; bool flag1,flag2,flag3,flag; flag=true; char YN='Y'; string NUM; string NAME; while(flag) {if(!head->next) {cout<<"通信录为空!"<>i; switch(i) {case 1:cout<<"请输入编号:";cin>>NUM;break; case 2:cout<<"请输入姓名:";cin>>NAME;break; default:cout<<"输入错误,请重新输入!"<next; flag1=false; while(p) {flag2=false; switch(i) {case 1:if(NUM==p->data.num) {flag2=flag1=true;q=p;} p=p->next;break; case 2:if(NAME==p->data.name) {flag2=flag1=true;q=p;} p=p->next;break; default:break; } if(flag2){cout<<"该学生信息如下:"<data.num<data.name<data.sex<data.phone<data.addr<>YN; if(YN=='Y')flag=true; else flag=false; } } } cout<next; if(!q){cout<<"通信录为空!"<>NUM; while(q) {if(NUM==q->data.num) {cout<<"删除学生信息如下:"<data.num<data.name<data.sex<data.phone<data.addr<next=q->next; delete q; flag=true; break;} else {p=p->next; q=p->next;} } if(!flag) cout<<"查无此人!"<>YN; if(YN=='Y')flag1=true; else flag1=false; } } cout<next) {first=new ListNode; s=first; cout<<"通信录的全部信息如下:"<next) {Min=head->next ;Max=Min->next ;q=head; while(Max&&Min) {if(Max->data .num data .num ) {Min=Max;Max=Max->next ;} else Max=Max->next ; } while(q->next !=Min)q=q->next ; q->next =Min->next; s->next=Min; s=Min; s->next =NULL; } delete head; head=first; p=head->next; while(p) {cout<data.num <data.name <data.sex <data.phone <data.addr<next;count++; } cout<>ch.data.num) { p=new ListNode; infile>>ch.data.name>>ch.data.sex>>ch.data.phone>>ch.data.addr; p->data.num=ch.data.num;p->data.name=ch.data.name; p->data.sex=ch.data.sex;p->data.phone=ch.data.phone; p->data.addr=ch.data.addr; p->next=head->next;head->next=p; } infile.close(); } void StudentRecords::Preservation_file() {ofstream outfile("RD.txt",ios::out); if(!outfile) {cerr<<"open error!"<next; while(p) { outfile<data.num <data.name <data.sex <data.phone <data.addr<next; } cout<<"记录已保存!"<>m; switch(m) {case 1:RD.Build();break; case 2:RD.Add();break; case 3:RD.Check();break; case 4:RD.Delete();break; case 5:RD.PrintList();break; case 6:RD.Preservation_file();break; case 0:n=0;break; default:cout<<"输入错误,请重新输入!"<

下载文档,方便阅读与编辑

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

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

下载文档

相关文档