c++_电话薄
来源:互联网 发布:js求一个数组的最大值 编辑:程序博客网 时间:2024/06/11 06:35
编写C++程序完成以下功能:(1) 实现简单电话本功能,用姓名来搜索电话号码;(2) 用户输入姓名,程序查找并输出结果;(3) 用户可以通过输入,添加姓名和电话号码;(4) 用户可以删除姓名和电话号码;(5) 电话本可以保存在指定文件中;(6) 电话可被从指定文件中读入到内存。#include<iostream>#include<fstream>#include<stdio.h>#include<stdlib.h>using namespace std;struct imformationlist{ char name[30]; char num[20]; struct imformationlist* nextPtr;};typedef struct imformationlist List;typedef struct imformationlist* ListPtr;class operate{private: char order; ListPtr HeadPtr;public: operate(char a='2',ListPtr N0=NULL) {order=a;HeadPtr=N0;} ~operate() {} void setoperate(char b='2') {order=b;} void setoperate(ListPtr N=NULL) {HeadPtr=N;} void seek(); void deleteit(); void input(); void print(); void select(); void outfile(); void infile();};void operate::select(){ switch(order) { case '0': deleteit(); break; case '1': seek(); break; case '2': input(); break; case '3': print(); break; case '4': infile(); break; default: break; }}void operate::input(){ ListPtr newPtr=NULL,previousPtr=NULL,currentPtr=NULL; char NAME[30]; char NUM[20]; int i=0,j=0; cout<<"请输入姓名:"<<endl; cin>>NAME; cout<<endl<<"请输入其电话号码:"<<endl; cin>>NUM;// newPtr=new List; newPtr=(ListPtr)malloc(sizeof(List)); if(newPtr!=NULL) { while(NAME[i]!='\0') { (newPtr->name)[i]=NAME[i]; i++; } (newPtr->name)[i]='\0'; while(NUM[j]!='\0') { (newPtr->num)[j]=NUM[j]; j++; } (newPtr->num)[j]='\0'; previousPtr=NULL; currentPtr=HeadPtr; if(currentPtr==NULL) { HeadPtr=newPtr; HeadPtr->nextPtr=NULL; } else { while(currentPtr!=NULL) { previousPtr=currentPtr; currentPtr=currentPtr->nextPtr; } previousPtr->nextPtr=newPtr; newPtr->nextPtr=NULL; } }}void operate::deleteit(){ ListPtr currentPtr=NULL,previousPtr=NULL,holdPtr=NULL; char NAME[30]; int i=0,same=0; cout<<endl<<"请输入要删除信息的联系人名字:"<<endl; cin>>NAME; currentPtr=HeadPtr; if(currentPtr==NULL) { cout<<endl<<"当前电话本为空,不能执行删除操作!"<<endl; } else { while(currentPtr!=NULL) { i=0; while(NAME[i]!='\0'&&(currentPtr->name)[i]!='\0') { if(NAME[i]!=(currentPtr->name)[i]) { same=0; goto PRT; } same=1; i++; } if(!(NAME[i]=='\0'&&(currentPtr->name)[i]=='\0')) { same=0; }PRT: if(same==1) { if(HeadPtr==currentPtr) { previousPtr=HeadPtr; HeadPtr=HeadPtr->nextPtr; } previousPtr->nextPtr=currentPtr->nextPtr; //currentPtr->nextPtr=NULL; free(currentPtr); currentPtr=previousPtr->nextPtr; } else { previousPtr=currentPtr; currentPtr=currentPtr->nextPtr; } } }}void operate::seek(){ ListPtr previousPtr,currentPtr; char NAME[30]; int i=0,same=0,j=0; cout<<endl<<"请输入要查找信息的联系人名字:"<<endl; cin>>NAME; previousPtr=NULL; currentPtr=HeadPtr; if(currentPtr==NULL) { cout<<endl<<"当前电话本为空,不能查找!"<<endl; } else { while(currentPtr!=NULL) { i=0; while(NAME[i]!='\0'&&(currentPtr->name)[i]!='\0') { if(NAME[i]!=(currentPtr->name)[i]) { same=0; goto PRT1; } same=1; i++; } if(!(NAME[i]=='\0'&&(currentPtr->name)[i]=='\0')) { same=0; }PRT1: if(same==1) { cout<<endl<<"要找的电话号码为:"; cout<<(currentPtr->num); cout<<endl; j++; } previousPtr=currentPtr; currentPtr=currentPtr->nextPtr; } if(j==0) { cout<<endl<<"没有要找的联系人信息!"<<endl; } }}void operate::print(){ ListPtr currentPtr; currentPtr=HeadPtr; if(currentPtr==NULL) { cout<<endl<<"当前电话本为空,没有信息!"<<endl; } else { cout<<endl<<"当前电话本信息如下:"<<endl; while(currentPtr!=NULL) { cout<<(currentPtr->name); cout<<": "; cout<<(currentPtr->num); cout<<endl; currentPtr=currentPtr->nextPtr; } }}void operate::outfile(){ ListPtr previousPtr=NULL,currentPtr=NULL; ofstream outf; outf.open("file",ios::out); if(outf.fail()) { cout<<"文件打开失败!"<<endl; return; } currentPtr=HeadPtr; while(currentPtr!=NULL) { outf<<(currentPtr->name)<<" "<<(currentPtr->num)<<endl; previousPtr=currentPtr; currentPtr=currentPtr->nextPtr; } outf.close();}void operate::infile(){ ListPtr previousPtr=NULL,currentPtr=NULL; ifstream inf("file",ios::in); if(inf.fail()) { cout<<"文件打开失败!"<<endl; return; } if(inf.eof()) { cout<<"文件file为空文件!"<<endl; return; } else { currentPtr=(ListPtr)malloc(sizeof(List)); inf.getline(currentPtr->name,30,' '); inf.getline(currentPtr->num,20); HeadPtr=currentPtr; while(!inf.eof()) { previousPtr=currentPtr; currentPtr->nextPtr=(ListPtr)malloc(sizeof(List)); currentPtr=currentPtr->nextPtr; inf.getline(currentPtr->name,30,' '); inf.getline(currentPtr->num,20); } currentPtr->nextPtr=NULL; } inf.close();}int main(){ char x; ListPtr M=NULL; operate Phion; cout<<"请输入指令进行操作:-》删除;"<<endl; cout<<" 1-》查找;"<<endl; cout<<" 2-》添加;"<<endl; cout<<" 3-》查看电话本;"<<endl; cout<<" 4-》读取文件file中的数据;"<<endl; cout<<" 其他-》退出;"<<endl<<endl; cout<<"请输入指令:"<<endl; cin>>x; Phion.setoperate(M); while(x=='0'||x=='1'||x=='2'||x=='3'||x=='4') { Phion.setoperate(x); Phion.select(); cout<<endl<<"请输入指令:"<<endl; cin>>x; if(x!='0'&&x!='1'&&x!='2'&&x!='3'&&x!='4') { goto PRT2; } }PRT2: Phion.outfile(); system("pause"); return 0;}
0 0
- c++_电话薄
- 电话薄
- c语言之电话薄程序
- C语言程序设计案例精编----电话薄管理系统
- c++电话薄
- Linux下C语言双向链表电话薄,能读写文件,连接mysql
- c+_+
- 电话薄程序的雏型
- ASIMA电话薄管理系统
- 简易电话薄的项目
- 电话薄详细设计书
- 开发电话薄系统心得
- 电话薄----文件读写
- Android获取电话薄联系人
- 项目实践:电话薄程序
- java简易电话薄
- Java 写 电话薄
- 调用电话薄打电话
- ognl.NoSuchPropertyException
- 微信开发六 发送消息(客服/群发/模板)
- 分析奇数与偶数之间的关系
- java并发编程 之 线程池的使用
- Implementing a simple majority vote classifer
- c++_电话薄
- IMWeb训练营作业——Select——隔壁IT王大头
- 净土大经科注2014
- Sublime text3 添加代码片段
- 【洛谷P1552】【APIO2012】派遣
- Java类加载器
- tableView的cell之间的分割线长度改变方法
- 自定义UISearchBar,对其进行了简单的封装。方便项目中的使用
- 如何在一个APP中加入欢迎页,以及引导页