课程设计2号
来源:互联网 发布:cad for mac 编辑:程序博客网 时间:2024/04/28 11:47
李刚是一爱折腾的人,当然爱折腾的人均有梦想,他想当中国的盖次呢。可不,现在个人好友信息多了,复杂了,他想制作一个个人通讯录的制作管理软件。 刚好这个学期学了数据结构课,所以他准备使用数据结构知识来实现了。并考虑使用双向链表作数据结构。并制定了初步要求:
(1)每个好友信息包含姓名、性别、住址、邮编、几岁、电话、QQ、微信帐号、生日等。
(2)作为一个完整的系统,应具有友好的界面和较强的容错能力。
#include<iostream>#include<string>#include<fstream>using namespace std;int x=0;int j=1;char a;struct Number //数据类{char name[30]; //姓名char sex[30]; //性别char home[30]; //住址 char age[30]; //年龄char phoneNumber[30]; //手机电话号码char email[30]; //电子邮箱char qq[30]; //QQchar weixin[30]; //微信char birthday[30]; //生日int s; Number * next; void ReadFile(istream & in); //文件开闭void input();void print();}; void Number::ReadFile(istream & in) //从文件把数据读入到程序{in>>name>>home>>phoneNumber>>email>>qq;} void Number::input() //信息输入{ cout<<"请输入姓名"<<endl;cin>>name;cout<<"请输入性别"<<endl;cin>>sex;cout<<"请输入家庭住址"<<endl;cin>>home;cout<<"请输入年龄"<<endl;cin>>age;cout<<"请输入手机号码"<<endl;cin>>phoneNumber;cout<<"请输入电子邮箱"<<endl;cin>>email;cout<<"请输入QQ号"<<endl;cin>>qq;cout<<"请输入微信号"<<endl;cin>>weixin;cout<<"请输入生日日期"<<endl;cin>>birthday;s=j++;} void Number::print() //信息输出{cout<<"姓名:"<<name<<endl;cout<<"性别:"<<sex<<endl;cout<<"家庭住址:"<<home<<endl;cout<<"年龄:"<<age<<endl;cout<<"手机号码:"<<phoneNumber<<endl;cout<<"电子邮箱:"<<email<<endl;cout<<"QQ:"<<qq<<endl;cout<<"微信:"<<weixin<<endl;cout<<"生日:"<<birthday<<endl;cout<<endl;} class Message //功能类{public:Message(); //构造数据结构 ~Message(); //释放单链表void Save(); //数据保存到文件Number * Search_name(char *); //用名字查找Number * Search_home(char *); //用家庭住址查找 Number * Search_phoneNumber(char *); //用手机号码查找void Show(); //显示void Insert(); //插入void Remove(); //删除指针void Change(); //更改private:Number * front,* rear;ifstream in; //定义读,写文件对象ofstream out;}; Message::Message(){front=new Number; //初始化front->next=new Number;rear=front->next;in.open("Number.txt"); //打开外存文件,看是否有数据存在if(!in) ////打不开cout<<"电话系统中没有任何号码,请输入号码"<<endl;else{while(!in.eof()) //将数据读取到程序,eof()表示文件结束{rear->ReadFile(in); if(rear->name[0]=='\0')break; ////没有数据就跳出rear->next=new Number; ////有数据就插在链表后面rear=rear->next;}in.close();cout<<"读取电话号码系统成功"<<endl;}cout<<"输入任意字母继续"<<endl; cin>>a; } Message::~Message() //释放单链表{Number * temp;while(front->next!=rear){temp=front;front=front->next;delete temp;}delete front,rear; //删除头尾指针} void Message::Save() //保存文件{out.open("Number.txt"); //建立外存文件TeleNumber.txtfor(Number *p=front->next;p!=rear;p=p->next) ////从头走到尾out<<p->name<<"\t"<<p->home<<"\t"<<p->phoneNumber<<"\t"<<p->email<<p->qq<<endl; //将数据存到外存文件out.close();cout<<"保存成功!"<<endl;} void Message::Insert() //插入{rear->input(); //从单链表尾部插入rear->next=new Number;rear=rear->next;cout<<endl<<"插入成功"<<endl;}Number * Message::Search_name(char * name) //用名字查找{for(Number *p=front->next;p!=rear;p=p->next)if(p!=NULL&&!strcmp(p->name,name)){if(x==4){p->print();return p;}elsereturn p;}if(x==4)cout<<"查无此人"<<endl;return 0;} Number * Message::Search_home(char * home) //用家庭住址查找{for(Number *p=front->next;p!=rear;p=p->next)if(p!=NULL&&!strcmp(p->home,home)){if(x==3){p->print();return p;}elsereturn p;}if(x==3)cout<<"查无此人"<<endl;return 0; } Number * Message::Search_phoneNumber(char * phoneNumber) //用手机号码查找{for(Number *p=front->next;p!=rear;p=p->next)if(p!=NULL&&!strcmp(p->phoneNumber,phoneNumber)){if(x==5){p->print();return p;}elsereturn p;}if(x==5)cout<<"查无此人"<<endl;return 0;} void Message::Change() //修改信息{char name[30];cout<<"请输入要修改的人的姓名:";cin>>name;if(Search_name(name)){cout<<"\t\t已找到个人的信息,请输入新的信息!"<<endl;Search_name(name)->input();cout<<"修改成功!"<<endl;}else{cout<<"\t\t查无此人!"<<endl;}} void Message::Remove() //删除{char name[30];Number * p=new Number,*temp=NULL;cout<<"请输入要删除人的姓名:"<<endl;cin>>name;p->next=Search_name(name); //先进行查找,找到所要删除的结点if(Search_name(name)){ temp=p->next;p->next=temp->next; //摘链 p->next->nextdelete temp;cout<<"\t\t删除成功!"<<endl;}else{cout<<"\t\t查无此人!"<<endl;}} void Message::Show(){for(Number * p=front->next;p!=rear;p=p->next)p->print();} int main(){bool flag=true;Message tele;char name[30];char home[30];char phoneNumber[30];while(flag){system("cls");cout<<" 个人电话号码查询系统 "<<endl;cout<<" ********************************* "<<endl;cout<<" * 1.增加电话号码 * "<<endl;cout<<" * 2.显示电话号码 * "<<endl;cout<<" * 3.用家庭住址查找 * "<<endl;cout<<" * 4.用姓名查找 * "<<endl;cout<<" * 5.用手机号码查找 * "<<endl;cout<<" * 6.修改个人信息 * "<<endl;cout<<" * 7.删除个人信息 * "<<endl;cout<<" * 8.保存个人信息 * "<<endl;cout<<" * 0.退出系统 * "<<endl;cout<<" ********************************* "<<endl;cout<<"\n\t\t\n\t\t请选择:";cin>>x;switch(x){case 0:flag=false;break;case 1:tele.Insert();break;case 2:tele.Show();break;case 3:cout<<"请输入查找的家庭住址"<<endl;cin>>home;tele.Search_home(home);break;case 4:cout<<"请输入查找的姓名"<<endl;cin>>name;tele.Search_name(name);break;case 5:cout<<"请输入查找的手机号码"<<endl;cin>>phoneNumber;tele.Search_phoneNumber(phoneNumber);break;case 6:tele.Change();break;case 7:tele.Remove();break;case 8:tele.Save();break;}cout<<"输入任意字母返回"<<endl;cin>>a;}return 0;}
0 0
- 课程设计2号
- 课程设计2
- 数据结构课程设计(2)
- 王爽 《汇编语言》课程设计2
- 王爽 <<汇编语言>> 课程设计2
- 课程设计(续2)
- nachos课程设计 task1.2
- 课程设计:题目2
- 数据结构课程设计 题2
- 课程设计题目2
- C++课程设计2
- 王爽《汇编语言》课程设计2
- PCB课程设计2
- c语言课程设计2
- 课程设计题2
- 课程设计2成绩分析
- 课程设计
- 课程设计
- Jenkins——构建、集成中的问题
- 【来日复制粘贴】数据透视表分类不同账龄
- JBOSS中的TOMCAT调优
- 主题模型TopicModel:PLSA模型及PLSA的EM推导
- Linux下vsftp配置
- 课程设计2号
- POJ 3254 Corn Fields (状压DP+滚动数组)
- 16.左旋转字符串
- hdu1253——胜利大逃亡——————【BFS】
- 重载运算符
- Java的Arrays部分算法详解
- java ArrayList与LinkedList知识点
- ruby on rails安装和hello world
- Qt5学习笔记(2)——二维图形