C++课程设计中的电话本管理.docx_第1页
C++课程设计中的电话本管理.docx_第2页
C++课程设计中的电话本管理.docx_第3页
C++课程设计中的电话本管理.docx_第4页
C++课程设计中的电话本管理.docx_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+课程设计电话本管理一、实验题目:电话本管理 二、功能描述: 这是一个电话簿管理小程序,利用文本文件储存电话簿数据,具有添加、删除、显示和查询联系人电话号码功能。在这个小型管理程序中,类与类之间通过链表将各个数据相连接,形成一个通畅的应用小程序在程序中,对于用户需求尽可能的予以满足. 三、算法设计与实验步骤 四、流程图: 按ENTER进入电话本功能界面 电话本功能界面(用户根据界面说明进行选择操作) 6234510 删查姓首显添进 除找名字示加入记并查母全联帮 录 修找近部系助 联似记改 人 系查录 7 人 找 退出 电话用户 根据输入显示逐一输入输入簿根据提示联系电话删除姓名首字 程帮助薄全联系用户人姓查找 母匹序 部数人数新建名,查程序 配查并联系找修据,据 找 保人姓首先改 存输入名和 电联系电话话 人姓号码 簿名 数据 ?好文网-专业的文档分享下载平台? 用户选择0后进入帮助界面 2 1 4 5 3 怎样怎样什么退出什么显示产生时候帮助时候我的一个有一进入我有 电话新纪种新电话一种本 簿功录 版面 新版 能界面 面 电话本功能界面 四、类与对象结构描述,核心程序代码(需要有相应的注释) 1.程序中所定义的类 (1)电话簿记录类 class CTelRecord private: int nYear,nMonth,nDay,nHour,nMinute,nSecond; /时间单元 char szName20; /电话簿数据:姓名和电话号码 char Last20; char szNumber20; public: CTelRecord() /构造函数 CTelRecord(char *name,char *number); void SetRecord(char *name,char *last,char *number); /输出时间 int Compare(char *name); /根据姓名查找 void SetName(char *name)strcpy(szName,name); void SetNum(char *num)strcpy(szNumber,num); void SetLast(char *last)strcpy(Last,last); char *GetName(void)return szName; /需通过函数访问的私有成员 char *GetLast(void)return Last; char *GetNum(void)return szNumber; int GetYear(void)return nYear; int GetMonth(void)return nMonth; ?好文网-专业的文档分享下载平台? int GetDay(void)return nDay; int GetHour(void)return nHour; int GetMinute(void)return nMinute; int GetSecond(void)return nSecond; void Show(); /打印数据 void Modify(char *number); /修改结点函数 int LookChar(char *szName); /按首字母查找匹配姓名 ; (2)定义结点类 class CNode private: CTelRecord *pData; /用于指向数据类指针 CNode *pNext; /指向链表下一个结点指针 public: CNode()pData=0;pNext=0; /结点构造 CNode(CNode &node); /拷贝构造函数 void ShowNode()pData-Show(); /指向打印函数 CTelRecord *GetData(void)return pData; friend class CList; /定义链表类为友元类 ; (3) 定义链表类 class CList CNode *head_ptr,*current_ptr; public: CList()head_ptr=NULL; /构造函数 void Help_me(); /帮助函数 void AddNode(); /在首部添加结点 void DeleteNode(); /删除结点 void ShowList(); /显示所有记录 void DeleteList(); /删除所有记录 void Search(); /查找 CNode *GetListHead()return head_ptr; void Insert(CNode *new_rec_ptr); /按顺序插入新节点 CNode*Position_insertion_point(char name20); void ModNum(void); /修改号码 void SearchFriends(void); /查找具有相似名的记录 void load_list_from_file(void); /保存文件 void write_list_to_file(); /把文件数据写入链表中 ; 2. 新增函数说明 根据姓氏,返回其在链表中的正确位置,新节点即将插入此点。 CNode*CList:Position_insertion_point(char name20) char temp_name20; CNode *temp_ptr; ?好文网-专业的文档分享下载平台? int tempint; if(head_ptr-pNext!=NULL) / 如果有多于一个结点的链表,查找结点在链表中的正确位置 current_ptr=head_ptr; temp_ptr=current_ptr-pNext; strcpy(temp_name,temp_ptr-pData-GetName(); tempint=strcmp(name,temp_name); /*比较链表中的姓氏与欲插入的姓氏 的大小*/ while(tempint0)¤t_ptr-pNext!=NULL) /*若欲插入的姓氏大于链表中当前结点的姓氏,继续向下查找*/ current_ptr=temp_ptr; if(current_ptr-pNext!=NULL) temp_ptr=current_ptr-pNext; strcpy(temp_name,temp_ptr-pData-GetName(); tempint=strcmp(name,temp_name); else /如果只有一个头结点,返回头结点的位置,新结点插在头节点后 current_ptr=head_ptr; return(current_ptr); 3.电话簿记录在链表的读取与写入 (1)从链表读取数据 void CList:load_list_from_file(void) /从数据文件FRIENDS.DAT中读取数据,重建链表处理函数 CNode *new_rec_ptr; /CTelRecord *Phonebook; ifstream infile; int end_loop=0; infile.open(FRIENDS.DAT,ios:in); if(infile) /打开文件正确 do new_rec_ptr=new CNode; new_rec_ptr-pData=new CTelRecord; if(new_rec_ptr!=NULL) char name20,last20,number20; int year,month,day,hour,minute,second; infile.getline(name,20); new_rec_ptr-pData-SetName(name); infile.getline(last,20); ?好文网-专业的文档分享下载平台? new_rec_ptr-pData-SetLast(last); if(strcmp(new_rec_ptr-pData-GetName(),)!=0) &(strcmp(new_rec_ptr-pData-GetName(),END OF FILE)!=0) infile.getline(number,20); new_rec_ptr-pData-SetNum(number); infileyear; infile.get(pause); infilemonth; infile.get(pause); infileday; infile.get(pause); infilehour; infile.get(pause); infileminute; infile.get(pause); infilesecond; infile.get(pause); new_rec_ptr-pData-SetTime(year,month,day,hour,minute,second); Insert(new_rec_ptr); else /读到文件尾 delete new_rec_ptr; end_loop=1; else /如果结点分配空家出错 coutWARNING:Memory error.Load from disk wan unsuccessful.n; end_loop=1; while(end_loop=0); infile.close(); else /如果打开文件出错 coutNo usable data file located.List is empty.n; (2)将数据写入链表 void CList:write_list_to_file() /将链表写入文件 ofstream outfile; outfile.open(FRIENDS.DAT,ios:out); /打开文件 if(outfile) /打开正确 current_ptr=head_ptr; if(head_ptr!=NULL) /链表不为空,循环写入 ?好文网-专业的文档分享下载平台? do outfilepData-GetName()endl; outfilepData-GetLast()endl; outfilepData-GetNum()endl; outfilepData-GetYear()endl; outfilepData-GetMonth()endl; outfilepData-GetDay()endl; outfilepData-GetHour()endl; outfilepData-GetMinute()endl; outfilepData-GetSecond()pNext; while(current_ptr!=NULL); outfileEND OF FILEendl; outfile.close(); else /打开文件出错 coutError opening file!n; 4(课程设计要求的实现 (1)记录修改函数实现 void CList:ModNum(void) /修改号码 system(cls); char search_string20,new_phone_number20; current_ptr=head_ptr; cin.ignore(20,n); coutpData-Compare(search_string)!=0) current_ptr=current_ptr-pNext; if(current_ptr!=NULL) /如果找到匹配的结点,输出结点信息 coutShowNode(); coutpData-Modify(new_phone_number); else /查找万整个链表,未查到匹配的结点 ?好文网-专业的文档分享下载平台? coutNO MATCH FOUNDn; couttm_year+1900); nMonth=times-tm_mon; nDay=times-tm_mday; nHour=times-tm_hour; nMinute=times-tm_min; nSecond=times-tm_sec; (3)首字母查询功能 void CList:SearchFriends(void) system(cls); char FirstWords20,name20;int length,k=0; current_ptr=head_ptr; cin.ignore(20,n); coutpData-GetName(); namelength=0; if(strcmp(name,FirstWords)=0) /如果找到匹配的结点,输出结点信息 if(k=0)coutShowNode(); k=1; current_ptr=current_ptr-pNext; if(k=0) /查找万整个链表,未查到匹配的结点 ?好文网-专业的文档分享下载平台? coutNO MATCH FOUNDn; coutPress Enter Continuen; cin.get(pause); system(cls); 五、运行界面、运行结果与使用说明 ?好文网-专业的文档分享下载平台? ?好文网-专业的文档分享下载平台? 六、小结与思考: 1( 在做了课程实验以后,我对C+的了解更深了,很多知识得到了巩固,一些不懂的知识也渐渐明了这其中主要是对类的封装收获很多,在类的封装过程中,对数据的访问控制问题很重要;在面向对象程序设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论