课程设计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
原创粉丝点击