C++课程设计报告(简单通 讯 录管理).doc_第1页
C++课程设计报告(简单通 讯 录管理).doc_第2页
C++课程设计报告(简单通 讯 录管理).doc_第3页
C++课程设计报告(简单通 讯 录管理).doc_第4页
C++课程设计报告(简单通 讯 录管理).doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

C+语言课程设计报告一、课题名称:简单通讯录管理二、程序功能:一个简单的通讯录管理程序 ,具有插入、删除、显示、修改和查询联系人通讯方式等功能。三、课题分析;本课程设计的数据有每个人的姓名,电话号码和Email地址,并且所有人的数据默认以姓名为关键字按升序排放,排序方式可修改,同时为了减少执行“添加”、“删除”等过于复杂和繁琐的操作,采用单向链表来进行数据的存储和操作。同时需要一个文本文件来存储联系人信息,数据可从该文本文件中导出。四、设计中的问题与解决方法:从文本文件中载入数据时,出现不能读的情况,解决的办法是分情况,写程序分别进行处理。此外从文本文件中载入数据时,出现不同类数据合并现象,原因是数据之间无空格,解决方法是增大字段占用宽度。五、对设计的感想和心得:程序的编写应是:三分编写,七分调试;熟能生巧,这次在用指针处理单向链表时, 感觉很吃力,以前对这块内容并不十分清楚,所以在今后的编程之中,尽可能把基本技能练习熟练;为了方便使用,我选择了汉化菜单;3.程序源代码(及简单注释):主函数如下:#include#include#include#include#include#include#include简单通讯录.hvoid add(AddrList &addrlist)/增加记录char name10;/姓名char mobilephone15;/手机号码char email20;/Email地址Node *nodeptr;/定义一个Node类对象nodeptr=new Node;cout请依次输入:n姓名 手机号码 Email地址namemobilephoneemail;nodeptr-SetName(name);/调用类内置入函数给结点赋值nodeptr-SetMobilePhone(mobilephone);nodeptr-SetEMail(email);addrlist.AddSort(nodeptr);cout添加成功!n;cin.get();cin.get();void del(AddrList &addrlist) /删除记录char name10,c;coutname;cout你确定要删除namec;if(c=y|c=Y)addrlist.Delete(name);/调用addrlist类的删除成员函数cin.get();cin.get();void showall(AddrList &addrlist) /显示所有记录addrlist.ShowAll();/调用addrlist的成员函数cin.get();cin.get();void query(AddrList &addrlist) /按姓名查找并显示一条记录char name10;/姓名Node *p;coutname;coutsetw(11)姓名setw(16)手机号码setw(21)Show();elsecout没有name!n;cin.get();cin.get();void modify(AddrList &addrlist) /按姓名修改一条记录char name110;Node *p;coutname1;if(addrlist.GetTag()=1)p=addrlist.LookUp(name1);coutn;char name10,mobilephone15,email20;if(n=1)coutname;p-SetName(name);tag=1;addrlist.Sort(tag);else if(n=2)coutmobilephone;p-SetMobilePhone(mobilephone);tag=2;addrlist.Sort(tag);else coutemail;p-SetEMail(email);cout修改成功!n;cin.get();cin.get();void addfromtxtfile(AddrList &addrlist) /从正文文件中添加数据到库表中char filename26;coutfilename;ifstream in(filename,ios:nocreate);if(!in)cout不能打开filename文件!nodenum;for(i=0;inamemobilephoneemail;nodeptr-SetName(name);nodeptr-SetMobilePhone(mobilephone);nodeptr-SetEMail(email);addrlist.AddSort(nodeptr);cout添加成功!n;in.close();cin.get();cin.get();void writetotxtfile(AddrList &addrlist) /将库表中的数据导出到征文文件Node *nodeptr=addrlist.GetHeadPtr();if(nodeptr=NULL)cout无数据!n;elsechar filename26;coutfilename;fstream out(filename,ios:out);if(!out)cout不能打开filename文件!Getnext();outnodenumendl;nodeptr=addrlist.GetHeadPtr();for(i=0;inodenum;i+)outsetw(11)GetName()setw(16)GetMobilePhone()setw(21)GetEMail()Getnext();cout写入成功!n;out.close();cin.get();cin.get();void sort(AddrList &addrlist) /排序库链表int tag;/排序标志char c;/判断标志tag=addrlist.GetTag();if(tag=1)cout现在是按名字排序!n;cout您确定要按手机号码排序吗? 是(y)/否(n)n;elsecout现在是按手机号码排序!n;coutc;if(c=y|c=Y)if(tag=1) tag=2;else tag=1;addrlist.Sort(tag);cin.get();cin.get();void dela(AddrList &addrlist) /删除所有记录char c;coutc;if(c=y|c=Y)addrlist.AddrList();cout已全部删除!n;elsecout未删除!n;cin.get(); cin.get();void quit(AddrList &addrlist) /退出系统,内部做到结尾工作addrlist.WriteToFile(AddrList.dat);int menu_select();void main() /主函数AddrList addrlist;addrlist.CreateList(addrlist.dat);for( ; ; )switch(menu_select()case 1:add(addrlist);system(pause);break;case 2:del(addrlist);system(pause);break;case 3:showall(addrlist);system(pause);break;case 4:query(addrlist);system(pause);break;case 5:modify(addrlist);system(pause);break;case 6:addfromtxtfile(addrlist);system(pause);break;case 7:writetotxtfile(addrlist);system(pause);break;case 8:sort(addrlist);system(pause);break;case 9:dela(addrlist);system(pause);break;case 0:quit(addrlist);system(pause);exit(0);int menu_select() /选择函数char *m11=1.增加一条记录, 2.删除一条记录, 3.显示所有记录, 4.按姓名修改查找并显示一条记录, 5.按姓名修改查找并修改一条记录, 6.从文件中添加数据到库表中, 7.将库表中的数据写入文件, 8.排序, 9.清空, 0.退出系统;int i;char c;dosystem(cls);/*清屏*/coutnn=欢迎使用通讯录管理系统=nn;for(i=0;i10;i+)coutmiendl;coutn=n;coutc;while(c9);return(c-0);头文件如下:class Node /节点类char Name10;/姓名char MobilePhone15;/手机号码char EMail20;/email地址Node *next;/下一结点指针public:Node(char *name=NULL,char *mobilephone=NULL,char *email=NULL) /构造函数,各参数均有缺省值if(name) strcpy(Name,name);else strcpy(Name, );if(mobilephone) strcpy(MobilePhone,mobilephone);else strcpy(MobilePhone, );if(email)strcpy(EMail,email);else strcpy(EMail, ); void Show() /显示节点数据coutsetw(11)Namesetw(16)MobilePhonesetw(21)EMailnext=NULL;if(!HeadPtr)HeadPtr=p;else TailPtr-next=p;TailPtr=p;void AddrList:AddSort(Node *p) /将p指针的节点按Tag指定的顺序插入到链表中p-next=NULL;if(HeadPtr=NULL)HeadPtr=TailPtr=p;return;else Node *p1=HeadPtr, *p2;while(Tag=1)&strcmp(p-Name,p1-Name)0 & p1-next)|(Tag=2)&(strcmp(p-MobilePhone,p1-MobilePhone)0 & p1-next)p2=p1;p1=p1-next;if(Tag=1)&strcmp(p-Name,p1-Name)MobilePhone,p1-MobilePhone)next=p1;HeadPtr=p;elsep2-next=p;p-next=p1;elsep1-next=p;TailPtr=p;Node *AddrList:LookUp(char *name) /按姓名查找节点,返回该节点指针Node *p;p=HeadPtr;while(p!=NULL)if(strcmp(p-Name,name)=0) return p;p=p-next;return NULL;void AddrList:Delete(char *name) /删除指定姓名的节点Node *p1,*p2;if(HeadPtr=NULL)coutName,name)=0)p1=HeadPtr;HeadPtr=HeadPtr-next;coutnext;while(strcmp(p2-Name,name) & p2)p1=p2;p2=p2-next;if(p2 & strcmp(p2-Name,name)=0)p1-next=p2-next;cout删除成功!n;else coutnameTag=tag;while(p1)p2=p1;p1=p1-next;newptr-AddSort(p2);HeadPtr=newptr-HeadPtr;TailPtr=newptr-TailPtr;Tag=newptr-Tag;newptr-HeadPtr=NULL;newptr-TailPtr=NULL;delete newptr;void AddrList:ShowAll() /显示全部节点,每10个显示一屏if(HeadPtr=NULL)cout无数据!n; cin.get(); cin.get(); elseint n=0;Node *p=HeadPtr;coutsetw(11)姓名setw(16)手机号码setw(21)Email地址Show();p=p-next;n+;if(n%10=0 | p=NULL)system(pause);void AddrList:SetTag(int t) /置tag值Tag=t;int AddrList:GetTag() /取tag值return Tag;Node * AddrList:GetHeadPtr() /取首指针return HeadPtr;AddrList:AddrList() /释放链表空间Node *p;while(HeadPtr)p=HeadPtr;HeadPtr=HeadPtr-next;delete p;void AddrList:CreateList(char *filename) /从指定文件中读入数据,构造链表ifstream in(filename,ios:in|ios:b

温馨提示

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

评论

0/150

提交评论