电话簿管理序设计报告.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
电话簿管理序设计报告

南京理工大学 Vc++课程设计报告 姓名 学号 日期 电话簿管理 一.程序功能简介 一个电话簿管理小程序。利用文本文件存储电话簿数据,具有添加、删除、显示、查询等的功能。 课程设计要求 1)、将电话簿数据和相应的函数封装在类中,改写程序使之结构化。 2)、增加修改记录的功能,能选择修改用户的姓名、号码。 3)、增加录入时间的显示及存储。 4)、增加缺省的查询方式,即查询时只输入姓名的首字母,所有符合该项条件的电话资料,均会被显示。 二、程序结构分析 1、程序结构 (程序结构图见上) 正如程序结构图所显示的,本电话簿程序采用菜单选项的形式,由用户输入功能项,系统由选择调用相关的函数,从而实现不同的应用。 按照程序要求进行的添加或修改。 将电话簿数据封装在类中,使之结构化 。本程序定义了CNode类和CList类,分别用做结点和链表的数据存储。具体说明见下面。 增加修改功能。在修改这一功能中,程序要求添加修改功能:可以对姓名或号码进行修改操作。因此,加入了两个子菜单:修改姓名或号码,分别由不同的语句来执行 增加录入时间的显示及存储。这个功能由localtime()函数在结点的构造函数中执行,实现了添加数据时把系统时间也一并存储。 新增了智能查找功能,使具姓名有相同首字母的人的名字、号码等信息全部输出。这项功能与按照姓名查找方式类似,在查找时比较的是姓氏的首字母。 二 程序设计。 CNode结点类和CList链表类。 1)、CNode类 class CNode { char lastname[20]; char firstname[20]; char number[20]; int year,month,day,hour,minute; CNode *next; public: CNode(char lname[20],char fname[20],char num[20]); void Show(); friend class CList; }; 其中的姓氏,名字,号码由用户在添加时输入,而时间则是由系统调用函数localtime()自行添加。(关于时间的获得程序,将在下面进行说明。) Cnode类中的next成员是该类的一个指针,存放下一个节点的地址,用来指向下一个节点系统因此而可以访问整个链表。 2)CList类 class CList { CNode *phead; public: CList() { phead=0; }; ~CList() {}; void load_record_from_file();//从文件中读取记录 void add_record_to_file();//从文件中写入记录 CNode *position_insertion_point(char lname[20]);//根据姓氏找到其在链表中的位置,并返回其指针 void insert_node(CNode *);//插入新的记录 void add_record();//增加记录 void display_list();//显示所有的记录 void delete_record();//删除指定记录 void search_by_name();//按名字查找 void change_record();//修改记录 void search_by_lastname();//按姓氏查找 void search_by_first_character(); void help_me();//帮助系统 void handle_choise(int);//处理选择项 void deletelist();//删除所有记录 }; CList类中有大量的成员函数,由该类的对象调用,实现不同的操作。(函数的说明将在下面展现。) 链表 1)、本电话簿管理程序的数据顺序存放,是通过链表来实现的。 链表的每一个结点都由new运算符在程序的运行过程中动态生成,这样就避免类了内存的浪费。但要注意的是,用new运算符申请的空间,系统不能进行自动释放,需要用delete运算符,其格式是: Delete 指针名; 在clist类的析构函数中,就使用了该运算符: void CList ::deletelist() { CNode *ptr1,*ptr2; ptr1=phead; ptr2=ptr1; while(ptr1) { ptr2=ptr1; delete ptr1;

文档评论(0)

jiqingyong12 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档