博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通讯录——数据结构课设
阅读量:6035 次
发布时间:2019-06-20

本文共 4320 字,大约阅读时间需要 14 分钟。

      帮同学写了n多课设,认为蛮简单。没怎么在意,这又花20min帮人写了一个,决定发在博客上,以后有谁要类似的就直接给个链接, ;-) 机智的窝

     任务要求:

     题目描写叙述:通讯录的基本属性包含编号、姓名、性别、住址、联系电话等。要求实现最主要的功能模块例如以下:

    (1)通讯录的建立;该模块主要完毕将数据存储工作。

记录能够从文本文件里读入。也能够从键盘逐条输入记                     录。

    (2)通讯录查询;用户能够依照联系人的姓名或电话号码查询。若查到。则显示该记录的信息。否则,显示查找                失败的提示信息。

    (3)通讯录的维护;实现对记录的改动、删除、插入和排序等操作。

    (4)通讯录的输出;实现屏幕显示和将记录信息写入文本文件里

 

     功能要求及说明:

     (1)使用菜单选择操作,具有友好的人机交互提示和显示,方便用户输入及查看程序执行过程、结果。

     (2)程序能够依据用户的选择多次执行,直到用户选择退出;

     (3)对于执行解决这个问题的步骤(比如从键盘输入的数据、输出到显示器的结果),除了可以在显示器上显示以                   外。可以将处理后的结果用文件的方式保存到outfile.txt文件里。

  事实上就是对链表的一些操作了,以下直接贴代码吧:

#include 
#include
#include
#include
using namespace std;typedef struct Node{ //联系人节点信息 string name; string sex; string adress; string phoneNum; struct Node * next; Node(Node * p = NULL ){ next= p;} Node(const string &na,const string &se,const string &ad,const string &ph, Node * p = NULL){ name = na; sex= se; adress = ad; phoneNum =ph; next= p; }}Person;class phonePage{public : phonePage(){ //构造函数。 Head = new Person(); } //为新插入的联系人创建节点 Person *creatP(string na, string se, string ad,string ph){ Person *tmp= new Person(na,se,ad,ph); return tmp; } //为新插入的联系人创建节点 Person *creatP(){ Person *tmp= new Person(); cout<<"输入联系人的姓名:"; cin>> tmp->name; cout<<"输入联系人的性别:"; cin>> tmp->sex; cout<<"输入联系人的地址:"; cin>> tmp->adress; cout<<"输入联系人的号码:"; cin>> tmp->phoneNum; tmp->next= NULL; return tmp; } //文件读取联系人 void addPfromFile(){ ifstream ins; string na,se,ad,ph; ins.open("input.txt"); Person * newP; Person *inse; while(ins>>na>> se>> ad >> ph ){ newP= creatP(na,se,ad,ph); inse = findLast(); inse->next = newP; } cout<< "导入联系人完成"<
next !=NULL ) p=p->next; return p; } //键盘录入联系人信息 void addPformKb(){ Person * newP =creatP(); newP->next = Head->next; Head->next = newP; } //将全部联系人信息写到output.txt void WtoFile(){ ofstream outs; outs.open("output.txt"); Person *p = Head->next; while(p != NULL ){ outs<
name<<" "<< p->sex << " "<< p->adress << " "<< p->phoneNum<< endl; p=p->next; } outs.close(); } //改动联系人信息 void resetPerson(Person *someP){ if(someP == NULL ){ cout<<"查无此人"<
> someP->name; cout<<"输入联系人的性别:"; cin>> someP->sex; cout<<"输入联系人的地址:"; cin>> someP->adress; cout<<"输入联系人的号码:"; cin>> someP->phoneNum; cout<<"改动成功."<
next; int cho; string str; cout<<"输入要删除的联系的信息"<
> cho; if(cho == 1 ) cout<< "输入联系人姓名:"; else if(cho == 2 ) cout<< "输入联系人号码:"; else{ cout<< "选择输入有误."<
> str; while( p!=NULL ){ if(cho == 1 ){ if(p->name == str ) break; }else{ if(p->phoneNum == str ) break; } p=p->next; q=q->next; } if(p!=NULL ) return q; return NULL; } //删除某人 void delP(){ Person * someP= findFrontDelP(); if( someP == NULL ){ cout<< "联系人不存在."<
next); char suredel; cout<< "是否确定删除:"<
> suredel; if(suredel == 'Y' || suredel == 'y'){ Person * del = someP->next; someP->next = someP->next->next; delete del; WtoFile(); } } } //查找联系人,并返回该节点指针 Person *findP(){ Person *p =Head->next; int cho; string str; cout<<"1:按姓名查找."<
> cho; if(cho == 1 ) cout<< "输入联系人姓名:"; else if(cho == 2 ) cout<< "输入联系人号码:"; else{ cout<< "选择输入有误."<
> str; while(p!=NULL){ if(cho == 1 ){ if(p->name == str ) break; }else{ if(p->phoneNum == str ) break; } p=p->next; } if(p == NULL ) return NULL; return p; } //打印全部联系人 void printAll(){ Person *someP= Head->next; int num=0; if(someP == NULL ) cout<< "通讯录为空"<
next; } } //输出查找到的联系人 void printP(Person *somebody){ if(somebody !=NULL ){ cout<<"姓名:" <
name <
sex <
adress <
phoneNum <
> cho; while(cho<1 || cho > 5){ cout<<"输入有误,从新输入."<
>cho; } return cho;}int main(){ phonePage *tml = new phonePage(); int cho; while( cho =mnue()){ if(cho == 1){ int tmp; cout<<"1:文件里导入通讯录"<
>tmp; if(tmp == 1){ tml->addPfromFile(); }else if(tmp == 2){ tml->addPformKb(); }else{ cout<<"输入有误."<
printP( tml->findP() ); }else if(cho == 3){ int tmp; cout<<"1:改动"<
> tmp; if(tmp == 1){ tml->resetPerson( tml->findP() ); }else if(tmp == 2){ tml->delP(); }else if(tmp == 3){ tml->printP( tml->findP() ) ; }else{ cout<<"输入有误."<
printAll(); tml->WtoFile(); }else{ break; } } return 0;}

转载地址:http://iwlhx.baihongyu.com/

你可能感兴趣的文章
浮点数网络传输
查看>>
Mongodb对集合(表)和数据的CRUD操作
查看>>
面向对象类的解析
查看>>
tomcat如何修改发布目录
查看>>
CentOS 5.5 使用 EPEL 和 RPMForge 软件库
查看>>
Damien Katz弃Apache CouchDB,继以Couchbase Server
查看>>
Target runtime Apache Tomcat is not defined.错误解决方法
查看>>
某机字长为32位,存储容量为64MB,若按字节编址.它的寻址范围是多少?
查看>>
VC++ 监视文件(夹)
查看>>
【转】keyCode对照表及JS监听组合按键
查看>>
[Java开发之路](14)反射机制
查看>>
mac gentoo-prefix安装git svn
查看>>
浅尝异步IO
查看>>
C - Train Problem II——(HDU 1023 Catalan 数)
查看>>
Speak loudly
查看>>
iOS-在项目中引入RSA算法
查看>>
[译] 听说你想学 React.js ?
查看>>
gulp压缩合并js与css
查看>>
块级、内联、内联块级
查看>>
Predicate
查看>>