1、通讯录C+代码 黔南民族师范学院 C+课程设计 名称: 通讯录管理系统 指导老师: 学 号: 姓 名: 系 别:计算机科学系 班 级:B12 计 科1、问题描述定义通讯录类,属性有:编号、姓名、性别、通讯地址、邮箱地址、电话等信息和相关的对属性做操作的行为。主要完成对通讯录的简单管理。2、功能要求(1)添加功能:程序能够添加通讯录信息,要求编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。(2)查询功能:可根据姓名、电话、邮箱地址等信息对已添加的信息进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息;(3)显示功能:可显示当前系统中所有通讯信息,每条记
2、录占据一行。(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。(5)删除功能:主要实现对已添加的通讯记录进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作。(6)保存功能:可将当前系统中通讯录记录存入文件中,存入方式任意。(7)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。3、问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤: (1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系; (3)根据问题描述,设计系统的类层次; (4)完成类层次中各个类的描述; (5
3、)完成类中各个成员函数的定义; (6)完成系统的应用模块; (7)功能调试;(8)完成系统总结报告。实体间与属性联系:Class PersonClass manageNoNamemepostaddreTelSex友元类SaveLookdeleteFind NoName功能描述添加功能:能够向链表之中输入相关的信息,在编号重复时取消本次输入,并且一次只能输入一条信息。删除功能:根据唯一标识一个对象的属性,删除与之对应的信息。修改功能:根据唯一标识一个对象的属性,选选择要修改的数据项进行修改。阅览功能:是对所有的数据进行访问,不能改变其中任何数据。查询功能:按照当前给定的信息,查询详细详细。保持功
4、能:时对所有数据进行存档,方便以后的操作,如果一个程序没有保持功能,每一次使用时会更繁琐,保存其实是程序不可缺少的功能之一。读取功能:将已存在的数据从文档中读取出来;本程序是通过在建立对象时,系统自己调用 构造函数实现的,如果将其单独作为一功能也是可以的,但是那样似乎比较繁琐。建立类:Person:数据成员string No; /编号 string post; /邮箱地址 string addre; /联系地址 char Name20; /姓名 char Sex10; /性别string Tel; /联系方式成员函数Person(string ID,char *Name,char *Sex,s
5、tring post,string Tel,string addre) 构造函数friend class Manage; manage作为有元函数,可以访问person类manage: 数据成员Person *person 建立了一个基类指针成员函数Manage() 构造函数 Manage() /析构函数 void FindName();/按姓名查找 oid FindID();/按编号查找 void Add(); /添加加信息 void Delete(); /删除信息 void Modify(); /修改信息 void Save(); /保存数据 void Load(); /读入数据 void
6、 Look();/预览程序首页添加功能阅览功能查找功能删除功能修改功能 代码源程序:#include#include#includeusing namespace std;string ID;/编号唯一性class Personprotected: string No; /编号 string post; /邮箱地址 string addre; /联系地址 char Name20; /姓名 char Sex10; /性别 string Tel; /联系方式 Person *next; /建立联系人的指针nextpublic: Person(string ID,char *Name,char *S
7、ex,string post,string Tel,string addre) /有参构造函数 strcpy(this-Name,Name); strcpy(this-Sex,Sex); this-Tel=Tel; /this指针是指当前对象指针 this-No=ID; this-post=post; this-addre=addre; friend class Manage; /把manage作为有元函数,可以访问person类;class Manageprotected: Person *person;public: Manage() person=0; Load(); /建立对象的同时,
8、调用了读取这个函数 Manage() /析构函数 void FindName();/按姓名查找 void FindID();/按编号查找 void Add(); /添加加信息 void Delete(); /删除信息 void Modify(); /修改信息 void Save(); /保存数据 void Load(); /读入数据 void Look();/预览 ;void Manage:Add() Person *p,*p2; /新结点指针 string No,post,Tel,addre; char Name20,Sex10; char c; coutn* 新增联系人通讯录 *n; co
9、utNo; coutNo=No) break; else p1=p1-next; if(p1!=NULL) cout该编号已存在,取消改该联系人的信息添加endlendl; return; cout输入:姓名 性别 邮箱地址 联系方式 联系地址,(并用逗号隔开)NameSexpostTeladdre; p=new Person(No,Name,Sex,post,Tel,addre); p-next=0; /联系人结点加入链表 if(person) /若已经存在结点 p2=person; while(p2-next) /查找尾结点 p2=p2-next; p2-next=p; /连接 else
10、/若不存在结点(表空) person=p; /连接 return ;void Manage:Delete() /删除联系人 char c; string No; coutn* 删除信息 *n; coutNo; coutNo=No) break; else p2=p1; p1=p1-next; /删除结点 if(p1!=NULL)/若找到结点,则删除 if(p1=person) /若要删除的结点是第一个结点 person=p1-next; delete p1; else /若要删除的结点是后续结点 p2-next=p1-next; delete p1; couttt*删除成功*n; return
11、 ; else /未找到结点 cout未找到该联系人!n; void Manage:Modify() coutID; coutNo=ID) cout所要修改的联系人的信息如下:nendl; cout编号: Not姓名:Namet性别:Sext年龄:postt电话:Telt联系地址:addreendl; coutendlnext; if(p1!=NULL)/若找到结点 do cout1. 修改姓名 2. 修改性别 3. 修改邮箱地址 4. 修改联系方式 5.修改联系地址 0. 退出 nendl; cout请选择(1-5)要修改的信息nc; if(c!=0) coutp1-Name; break;
12、 case 2: cinp1-Sex; break; case 3: cinp1-post; break; case 4: cinp1-Tel; break; case 5: cinp1-addre; break; default: break; while(c!=0); coutt *修改成功*nendlendl; return ; else cout未找到该学生!n; /fPersonNo Name Sex post Telendl;void Manage:Save() /数据写入到文件 ofstream fPerson(Person.txt,ios:out); if(!fPerson)
13、cerropen error!endl;abort(); char c; coutc; if(toupper(c)!=Y) return; Person *p=person; while(p) fPersonNo Name Sex post Tel addrenext; fPerson.close(); coutn保存成功.n; void Manage:Load() /数据读入 ifstream fPerson; Person *p=person; string No,Tel,post,addre; char Name20,Sex10; fPerson.open(person.txt,ios:
14、in); if(!fPerson) cerropen errorNoNameSexpostTeladdre; while(fPerson.good() p=new Person(No,Name,Sex,post,Tel,addre); p-next=0; /联系人结点加入链表 if(person) /若已经存在结点 Person *p2; p2=person; while(p2-next) /查找尾结点 p2=p2-next; p2-next=p; /连接 else /若不存在结点(表空) person=p; /连接 fPersonNoNameSexpostTeladdre; fPerson.
15、close(); void Manage:FindID() coutID; coutNo=ID) cout编号: Not姓名:Namet性别:Sext年龄:postt电话:Telt联系地址:addreendlnext; if(p1!=NULL) else cout未找到该联系人endl;void Manage:FindName() char Name20; coutName; coutName,Name)=0) count+; cout编号: Not姓名:Namet性别:Sext年龄:postt电话:Telt联系地址:addreendlnext; if(count) coutt查询成功!end
16、lendl; else coutntt未找到该联系人!nendl;void Manage:Look() Person *p1; int count=0; char c; p1=person; while(p1) cout编号: Not姓名:Namet性别:Sext年龄:postt电话:Telt联系地址:addrenext; if(count!=0) coutendl; return ; int main(void) Manage m; int c; do coutendlendl; cout * *. 欢迎来到通讯录菜单 . * *endl; cout * *endl; cout * 1.新增
17、通讯录 5.删除通讯录 *endl; cout * 2.修改通讯录 6.编号查询详细信息 *endl; cout * 3.预览信息 7.姓名查询详细信息 *endl; cout * 4.保存数据 0.退出 *endl; cout * * * * * * * * * * * * * * * * * * * * *endl; coutc; switch(c) case 1: m.Add(); break; case 2:m.Modify();break; case 3: m.Look(); break; case 4: m.Save(); break; case 5: m.Delete();break; case 6: m.FindID(); break; case 7: m.FindName(); break; case 0:break; default: break; while(c!=0); int s; cout是否要保存您的所有操作(1.保存 0.不保存):s; if(s=1) m.Save(); return 0;THANKS !致力为企业和个人提供合同协议,策划案计划书,学习课件等等打造全网一站式需求欢迎您的下载,资料仅供参考
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1