非常紧急非常重要的有关问题(100分啊)多谢了.(关于C++文件删除其中一行,并保存,及用指针处理双向链表.等等有关问题)
非常紧急非常重要的问题(100分啊)谢谢了...(关于C++文件删除其中一行,并保存,及用指针处理双向链表..等等问题)
问题在程序右边的注释处已经写清楚了... 请各位高手花点时间,修改修改,应该几分钟就改好了...这个作业小弟我今天下午就要交了,谢谢了.
问题在程序右边的注释处已经写清楚了... 请各位高手花点时间,修改修改,应该几分钟就改好了...这个作业小弟我今天下午就要交了,谢谢了.
- C/C++ code
#include <iostream> #include <string> #include <iomanip> #include <fstream> using namespace std; //使用标准命名空间std class book { public: book(); char inter_face(); //首界面 void add_person(); //添加联系人 void del_person(); //删除联系人 void show_all(); //显示所有联系人 void alter(); //修改信息 void select(); //查询联系人 void save_new(); //保存新增加的联系人 private: string name; //姓名 string address; //地址 string number; //电话号码 string post; //邮编 string qq; //QQ号 }; struct record //定义一个链表节点结构 { book object; //一个结构体record里有个类的对象,每个节点饱含一个人的信息. record *prior; //指向前躯节点 record *next; //指向后继节点 }; book::book() //定义构造函数 { name="\0"; address="\0"; number="\0"; post="\0"; qq="\0"; } char book::inter_face() //实现首界面的函数 { system("cls"); cout<<endl; cout<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl <<"\t\t※ ※"<<endl <<"\t\t※ 欢迎使用小小通讯录 ※"<<endl <<"\t\t※ ※"<<endl <<"\t\t※ 1. 添加新联系人. 4. 修改信息. ※"<<endl <<"\t\t※ ※"<<endl <<"\t\t※ 2. 删除联系人. 5. 查询联系人. ※"<<endl <<"\t\t※ ※"<<endl <<"\t\t※ 3. 显示所有联系人. 6. 关闭通讯录. ※"<<endl <<"\t\t※ ※"<<endl <<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl<<endl <<"\t\t选择:" ; char choose; cin>>choose; fflush(stdin); return choose; } void book::add_person() //定义添加联系人函数 { cout<<endl<<"根据下面提示输入新联系人信息"<<endl; cout<<"姓名: "; cin>>name; //输入姓名 fflush(stdin); //清空输入缓冲区,为了处理缓冲区残留的回车什么的,经常需要清空输入缓冲区 cout<<"电话: "; cin>>number; //输入电话号码 fflush(stdin); cout<<"QQ: "; cin>>qq; //输入QQ号码 fflush(stdin); cout<<"邮编: "; cin>>post; //输入邮编 fflush(stdin); cout<<"地址: "; cin>>address; //输入地址 fflush(stdin); save_new(); //调用保存输入信息函数 cout<<endl<<"新联系人信息已经保存好!!!"<<endl<<endl; system("pause"); //屏幕暂停 } void book::save_new() //保存新添加的联系人函数 { ofstream outData("pbook.txt", ios::app); //将输入信息输出到磁盘文件pbook.txt中. if(!outData) //检测文件打开是否成功打开 { cout<<endl<<"对不起!!!打开文件失败!!!"<<endl<<endl; system("pause"); return; } outData<<setiosflags(ios::left)<<setw(17)<<name<<" " //将输入信息写入pbook.txt文件中 <<setw(16)<<number<<" "<<setw(18)<<qq<<" " <<setw(14)<<post<<" "<<setw(20)<<address<<endl; outData.close(); //关闭pbook.txt文件 } void book::del_person() //定义删除联系人函数 { //????????????? //*********************************************// // //这里就是问题啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!请看下面...谢谢.在alter()函数中也有问题...谢谢了... // // // // 下面这段被注释的代码实在是搞不懂啊,????? //想实现的功能是输入要删除的姓名或电话号码, //并将与此相关人的全部信息从pbook.txt文件中删除,之后文件中就剩下未被删除的人的信息.这该怎么实现啊????? /* ifstream inData("pbook.txt", ios::in); //打开文件pbook.txt,进行读操作 if(!inData); //判断文件是否打开,即判断文件指针是不是指向文件尾. { cout<<endl<<"对不起!!!找不到文件!!!"<<endl; system("pause"); return; } string sign; cout<<endl<<"你要删除输入姓名或电话号:"; cin>>sign; bool flag=true; //定义布尔型变量flag. string str; //定义一个字符串变量,用来接受除与输入姓名或电话号码相同的行之外的其他信息 while(inData>>name>>number)//???从文件pbook.txt中依次读取与输入的name或number相同的信息.这里(inData>>name>>number)并不是很清楚??? { //read line at time until end-of-file getline(inData, str); //???getline()应该是把上一行的name或者number中的信息送入字符串str中吧??? if((sign==name)||(sign==number)) { cout<<endl<<"你想删除的联系人:"<<endl; cout<<setiosflags(ios::left)<<setw(17)<<name<<" "<<number<<str<<endl; //输出要删除的人的信息 flag=false; break; } } if(flag) { cout<<endl<<"对不起!!!联系人中没你找的人!!!"<<endl<<endl; } else { while(getline(inData,str)) { cout<<setiosflags(ios::left)<<setw(17)<<name<<" "<<number<<str<<endl; //输出要删除的人的信息 } //outData.close(); //关闭temp.txt文件 inData.close(); //关闭pbook.txt文件 ofstream out("pbook.txt", ios::out); //ifstream in("temp.txt", ios::in); if(!out); //||!in) { cout<<endl<<"对不起不能打开文件!!!"<<endl<<endl; system("pause"); return; } while(getline(in,str)) { out<<str<<endl; } out.close(); //关闭pbook.txt文件 //in.close(); //关闭temp.txt文件 cout<<endl<<"这个人的信息已经从你的通迅录中删除!!!"<<endl<<endl; }*/ system("pause"); } void book::show_all() //定义显示所有所有联系人信息函数 { ifstream inData("pbook.txt",ios::in); //打开文件pbook.txt,并进行读操作 if (!inData) //判断文件是否打开,即判断文件指针是不是指向文件尾 { cout<<endl<<"对不起!!!没有找到文件!!!"<<endl; system("pause"); return; } bool flag=true; string allpersons; //定义allpersons字符串,用来接收文件中的所有人的信息 while(getline(inData, allpersons)) { if(flag) { cout<<"所有联系人信息如下:"<<endl; } cout<<allpersons<<endl; flag=false; } if(flag) { cout<<endl<<"你的通迅录中没有联系人!!!"<<endl<<endl; } else { cout<<"所有联系人已经全部显示出来!!!"<<endl; } system("pause"); }