C++课程设计-电话簿管理.doc_第1页
C++课程设计-电话簿管理.doc_第2页
C++课程设计-电话簿管理.doc_第3页
C++课程设计-电话簿管理.doc_第4页
C++课程设计-电话簿管理.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

Visual C+课程设计报告题目:电话薄管理姓名: 学号: 班级:提交时间:1.程序任务: 功能介绍:一个电话薄管理小程序。利用文本文件存储电话簿数据,具有添加、删除、显示和查询联系人号码的功能。(1) 将电话薄数据和相应的函数封装在类中,改写程序使之结构化。(2) 增加记录修改功能,能选择修改用户的姓名、电话。(3) 增加录入时间的显示及存储。(4) 增加缺省的查询方式,即查询时只输入姓名的首字母,所有符合这一条件的电话资料均在屏幕上显示。平定难易等级:A级。2. 所完成的功能: 程序大致流程图如下。程序关闭help_me()write_list_tolist()znsearch_by_name()modify_record()delete_record()search_by_name()display_list()add_record()增加记录显示记录查找记录 帮助退出程序智能查询修改记录删除记录主界面2.1原程序各功能分析与说明 原程序采用结构化的设计方法,通过直接构建链表来实现增加记录,显示记录,根据姓氏查找号码,删除号码,帮助,退出等基本功能。 原程序在主函数中在do-while循环中插入choice选择结构来对用户需要执行的功能进行选择,增加记录功能通过函数add_record()函数来完成,而函数add_record()里面又含有几个子函数。显示记录功能是通过display_list()功能来完成的,查找记录功能是通过search_by_name()函数来完成的,删除记录功能是通过delete_record()来完成的,帮助功能是通过help_me()函数来完成,最后在退出之前,执行delete_list()函数来完成相关记录的保存等工作。2.2课程设计要求的实现 1.类的结构 因为课程设计要求将原程序的电话簿数据和相应的函数封装在类中,于是我就定义了一个Phone_Book的类,但是在封装成类的时候我遇到了很多问题。首先是面对如此多的函数和结构我不知道如何把他们封装到一个类里面去,因此我反复的看了书上有关类的定义,构造函数,析构函数等内容,然后定义了姓,名,电话号码三个字符数组,这三个成员都是私有的,然后我再把原程序中的函数进行了函数原型说明,并在后面定义了函数内容,类的封装的基本结构就成功了。2.增加时间 根据样例程序说明第二部分的讲解和在网上查找了一些资料,我知道了time.h这个头文件的作用,因此我在代码顶部添加了time.h这个头文件,然后定义了tm的指针成员CurrentTime,我再网上查得获得当前时间的代码是time_t timedata=time(0);CurrentTime=localtime(& timedata);new_rec_ptr-nYear=CurrentTime-tm_year+1900;new_rec_ptr-nMonth=CurrentTime-tm_mon+1;new_rec_ptr-nDay=CurrentTime-tm_mday;new_rec_ptr-nHour=CurrentTime-tm_hour;new_rec_ptr-nMinute=CurrentTime-tm_min;基本完成了记录时间的功能。3.增加修改功能 我在类中定义了void modify_record()函数,用来修改用户的姓名、电话。在函数中,我运用了if-else,switch等语句并用search_by_name()函数找到欲修改的节点,对函数修改,并且可以选择修改哪一项,相关代码如下,void Phone_Book:modify_record(void) int n; char last_name120; char first_name115; char phone_num112; search_by_name();/此时current_ptr指向欲修改的节点 if(current_ptr) cout你想修改当前记录的哪一项?; coutn1.姓:; coutn2.名:; coutn; switch(n) case 1: coutlast_name1; cin.ignore(20,n); strcpy(current_ptr-last_name, last_name1); break; case 2: coutfirst_name1; cin.ignore(15,n); strcpy(current_ptr-first_name, first_name1); break; case 3: coutphone_num1; cin.ignore(12,n); strcpy(current_ptr-phone_num, phone_num1); break; default: cout请重新选择!; break; ; cout修改成功!n; coutlast_name first_name endl; coutphone_numendl; getch(); else cout请重新输入!n; system(cls); 4.首字母查询 我通过这面这个函数实现了这个功能。 znsearch_by_name() /智能查找某一记录 system(cls);char last_name_string20;/ 定义一字符型数组用来存放last_namecurrent_ptr = head_ptr; / 移current_ptr指针至链首cin.ignore(20,n);cout last_name, last_name_string) = 0)temp_ptr=current_ptr;cout n找到信息n;cout endl;cout - -n;cout 姓名 电话号码 n;cout - -n;cout.unsetf(ios:left);cout.setf(ios:right);cout last_name first_name ;cout setw(36) phone_num next;current_ptr=temp_ptr;elsecout 没有找到记录n;cout 按回车键继续n;cin.get(pause);system(cls);2.3程序的测试结果这是开始界面,因为我觉得原来的黑色不好看,所以用了蓝色的界面,挺简单的,加入system(color 9f)这行代码就行了。这是系统菜单界面,各个功能均有显示。这是1.增加新的电话簿记录的功能实现。这是2.显示所有记录的功能的实现。这是3。查找确定电话簿记录功能的实现。这是4.删除确定电话簿记录功能的实现。这是5.修改确定电话簿功能的实现。这是6.智能查询功能的实现。这是8.帮助功能的实现。2.4设计中遇到的问题及解决方法 因为课程设计要求将原程序的电话簿数据和相应的函数封装在类中,于是我就定义了一个Phone_Book的类,但是在封装成类的时候我遇到了很多问题。首先是面对如此多的函数和结构我不知道如何把他们封装到一个类里面去,因此我反复的看了书上有关类的定义,构造函数,析构函数等内容,然后定义了姓,名,电话号码三个字符数组,这三个成员都是私有的,然后我再把原程序中的函数进行了函数原型说明,并在后面定义了函数内容,类的封装的基本结构就成功了。 还有就是在储存的数据中提取时间信息,因为infile.get()函数,只能把数据赋给字符型指针,然而我定义的时间变量时整形的,所以我只有重新定义了char nYear115,nMonth115,nDay115,nHour115,nMinute115这组字符数组来储存数据,然后借助atoi()函数把字符型数组转化成整形数据赋值给我之前定义的整形时间变量。3. 设计中尚存在的问题在程序运行过程中无法实时对数据信息进行储存,只能在程序结束正常退出后才可以保存当前的数据,所以如果在程序运行过程中出现故障导致程序不能正常关闭的话,会使得数据丢失。 4.设计的感想和体会虽然拿到这个题目之后,思路很清晰。但程序做起来并不顺利。首先,自从上学期学习c+以来,我并没有自己写过大型的程序,不知道如何去构建程序的整体框架,并且书中所提供的源代码给我的提示也很有限,然而题目要求将电话薄数据和相应的函数封装在类中,改写程序使之结构化。所以我只好先看课本和上网搜索有关类的封装方法,并且与同学进行讨论。多看了几遍书以后,就慢慢可以自己改了,就这样一步一步直到结束。所以我想,无论做什么事,都是首先对自己有信心,遇事不慌,以平和的心态来对待,有一个好的开端,就会成功一大半了。再就是我在这次课程设计之中我学会了自己解决问题,并且查阅参考书的技巧为我以后的学习积累了经验。 此程序的编写让我更加了解C+面向对象的特点。它要求我能够熟练掌握类和对象的知识,复习巩固了以前学习的内容。C+程序设计要求我们有良好的心态,严谨的思维,和丰富的知识基础。在编写程序过程中,小的疏忽就会引起程序很大的错误,因此我必须集中全部精力。编写程序

温馨提示

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

评论

0/150

提交评论