资源预览内容
第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
第9页 / 共17页
第10页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
南京航空航天大学C C+ + +程程序序设设计计 课程设计报告课程设计报告选题名称选题名称: 系(院)系(院): 专专 业业: 班班 级级: 姓姓 名名: 学学 号号: 指导教师指导教师: 学年学期学年学期: 2011 2012 学年 第 二 学期程序菜单功能程序菜单功能 主要利用 c 语言的文件操作能力设计开发一个小型的通讯录管理系统,至少具有如下功能: 记录通讯录内的人员的姓名,办公室电话,住宅电话,手机号码,电子邮件地址。显示所有人员的信息。通过输入姓名查找人员信息。通过输入姓名查找到要删除的人员信息,然后可以进行删除。通过输入姓名查找到要修改的人员信息,然后可以进行修改。添加人员信息。从正文文件中批量添加数据到库表中将库表中的数据写入正文文件排序删除全体结点系统功能描述系统功能描述:本程序的功能是为用户提供简单的通讯录进行管理,通过该程序存储联系人信息,提供关键字(只能是英文关键字进行查找)查找功能,可以对数据进行修改、删除、添加等操作。各按钮的功能如下: 1. 显示菜单显示菜单选择 19,0 进行操作源代码: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:delall(addrlist);system(“pause“);break;case 0:quit(addrlist);system(“pause“);exit(0);int menu_select()char*m=“1.Add Record(增加记录)“,“2.Delete Record(删除记录)“,“3.Display All Record(显示所有记录)“,“4.Query(按姓名查找并显示一个记录)“,“5.Modify Record(按姓名查找,修改一个记录)“,“6.Add from a Text File(从正文文件中批量添加数据到库表中)“,“7.Write to a Text File(将库表中的数据写入正文文件)“,“8.sort(排序)“,“9.Delete All(删除全体结点)“,“0.Goodbue!“,NULL;int i;int choice;dosystem(“cls“);coutchoice;while(choice5);return(choice); 2. 增加记录增加记录输入数字 1 进行该操作。新记录加入后,通讯录按指定的排序顺序排序。初始时,默认按“姓名”排序;选择“8.Sort(排序) ”后可修改排序顺序为按“办公室电话”排序。指定一种排序方法后,就一直保持此排序方法,直到重新指定。void add(AddrList if(addrlist.LookUp(name)!=NULL) /判断成员是否已经存在coutSetName(name);coutofficephone;p-SetOfficePhone(officephone);couthomephone;p-SetHomePhone(homephone);coutmobilephone;p-SetMobilePhone(mobilephone);coutemail;p-SetMail(email);addrlist.AddSort(p); /按指定的排序方式插入3. 删除记录删除记录选择“2.Delete Record”输入待删除记录的姓名,显示改姓名下的所有信息,让用户确认是否要删除代码如下:void del(AddrList p=addrlist.LookUp(name);if(p) /用指针判断该人员是否存在p-Show();coutk;if(k=Y)addrlist.Delete(name);else cout键继续直接调用类 AddrList 的成员函数 5.查找记录查找记录以姓名为关键字,查找并显示该记录。若查找不到,则显示“未查找到” ;原代码如下:void query(AddrList char name10;coutname;if(addrlist.LookUp(name)=NULL)coutShow(); 6从正文文件批量添加数据到库表中从正文文件批量添加数据到库表中用户可事前建立一个正文文件,存放待加入的数据,然后从该文件中一次性导入多个人员的数据。程序运行时,用户需输入正文文件的文件名。源代码如下:void addfromtxtfile(AddrList int op,hp;int i,n;Node *p;coutfilename;ifstream infile;infile.open(filename);if(!infile)coutn;for(i=1;inameophpmpem; /读取成员信息p=new Node;p-SetName(name);p-SetHomePhone(op);p-SetOfficePhone(hp);p-SetMobilePhone(mp);p-SetMail(em);infile.close();coutfilename;addrlist.writetotxt(filename);coutnext;outNameOfficePhoneHomePhoneMobilePhoneEMailnext;out.close();coutt;if(t=Y|t=y)if(k=1)addrlist.SetTag(2);elseaddrlist.SetTag(1);addrlist.Sort(addrlist.GetTag();coutg;if(g=Y|g=y)addrlist.AddrList();cout#include#include#include#includeclass AddrList;class Nodechar Name10; /姓名int OfficePhone; /办公室电话int HomePhone; /住宅电话char MobilePhone15; /手机号码char EMail20; /电子邮件Node*next;public:Node(char name10=“0“, int op=1,int hp=1,char mp15=“0“,char em20=“0“)/缺省构造函strcpy(Name,name);OfficePhone=op;HomePhone=hp;strcpy(MobilePhone,mp);strcpy(EMail,em);next=NULL;void Show(); /显示结点数据void SetName(char*name); /修改姓名void SetOfficePhone(int op); /修改办公室电话void SetHomePhone(int hp); /修改住宅电话void SetMobilePhone(char*mp); /修改手机号码void SetMail(char*mail); /修改电子邮件friend class AddrList;/-void Node:Show()coutnext=p;TailPtr=p;/-void AddrList:AddSort(Node*p)if(tag=1)Node*p1,*p2;if(HeadPtr=NULL) /原链表为空链表HeadPtr=p;p-next=NULL;return;p1=HeadPtr;while(strcmp(p-Name,p1-Name)=1p1=p1-next; /指向后一个结点。p2 指向的结点在 p1 指向的结点之前if(strcmp(p1-Name,p-Name)=1) /插在 p1 之前p-next=p1; if(HeadPtr=p1) HeadPtr=p; /插在链表首部else p2-next=p; /插在链表中部else /插在链表尾结点之后p1-next=p;p-next=NULL;return;else if(tag=2)Node*p1,*p2;if(HeadPtr=NULL) /原链表为空链表HeadPtr=p;p-next=NULL;return;p1=HeadPtr;while(p-OfficePhone)(p1-OfficePhone)p1=p1-next; /指向后一个结点。p2 指向的结点在 p1 指向的结点之前if(p-OfficePhone)OfficePhone) /插在 p1 之前p-next=p1; if(HeadPtr=p1) HeadPtr=p; /插在链表首部else p2-next=p; /插在链表中部else /插在链表尾结点之后p1-next=p;p-next=NULL;return;/-Node*AddrList:
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号