📄 phone.cpp
字号:
{
DeleteNode();
cout<<"\n记录已删除\n";
}
else
{
cout<<current_ptr->first_name<<","<<current_ptr->last_name<<"\t"<<current_ptr->phone_num<<"的记录已删除\n";
}
}
current_ptr = current_ptr->next;
}while((current_ptr != head_ptr || head_ptr == NULL));
if(nFlag == 0)
cout<<"\n没有找到相符的记录也没有删除记录.\n";
cin.get();
system("cls");
}
void record::Help()
{
help:
int choice2;
system("cls");
cout<<"欢迎使用帮助文件,请输入帮助类型\n";
cout<<"1:我的记录怎么了\n";
cout<<"2:如何删除所有记录\n";
cout<<"3:新的版本什么时候出来\n";
cout<<"4:新的版本有什么新功能\n";
cout<<"5:退出\n";
cin>>choice2;
switch(choice2)
{
case 1:
cout<<"仔细检查一个叫Friends.dat文件夹及里面的文件\n";
cout<<"如果没有文件,有可能已经丢失,如果文件名不符,应改名为Friend.dat\n";
cout<<"按Enter键继续\n";
cin>>pause;
goto help;
break;
case 2:
cout<<"删除Friends.dat文件\n";
cout<<"按Enter键继续\n";
cin>>pause;
system("cls");
goto help;
break;
case 3:
cout<<"等我有时间的时候\n";
cout<<"按Enter键继续\n";
cin>>pause;
system("cls");
goto help;
break;
case 4:
cout<<"我想加入以下内容\n";
cout<<"多用户和密码\n";
cout<<"百科全书\n";
cout<<"清除所有记录命令\n";
cout<<"修补错误\n";
cout<<"按Enter键继续\n";
cin>>pause;
system("cls");
goto help;
break;
default:
cout<<"按Enter键退出";
cout<<"按Enter键继续\n";
break;
}
}
int record::VerifyDelete()
{
char YesNo;
cout<<"\n确认?(Y/N)";
cin>>YesNo;
cin.ignore(20,'\n');
if((YesNo == 'Y') || (YesNo == 'y'))
return (1);
else
return (0);
}
void record::DeleteNode()
{
if(current_ptr == head_ptr)
DeleteNodeAtEnd();
else
if(current_ptr->next == head_ptr)
DeleteNodeAtEnd();
else
DeleteNodeAtMiddle();
}
void record::DeleteNodeAtHead()
{
if(head_ptr->next != head_ptr)
{
head_ptr = current_ptr->next;
tail_ptr->next = head_ptr;
head_ptr->prior = tail_ptr;
delete current_ptr;
current_ptr = head_ptr;
}
else
{
head_ptr = NULL;
tail_ptr = NULL;
delete current_ptr;
}
}
void record::DeleteNodeAtEnd()
{
friend_node *previous_ptr = current_ptr->prior;
delete current_ptr;
previous_ptr->next = head_ptr;
head_ptr->prior = previous_ptr;
tail_ptr = previous_ptr;
current_ptr = tail_ptr;
}
void record::DeleteNodeAtMiddle()
{
friend_node *previous_ptr = current_ptr->prior;
previous_ptr->next = current_ptr->next;
current_ptr->next->prior = previous_ptr;
delete current_ptr;
current_ptr = previous_ptr;
}
void record::DeleteList()
{
friend_node *temp_ptr;
current_ptr = head_ptr;
do{
temp_ptr = current_ptr->next;
tail_ptr->next =temp_ptr;
temp_ptr->prior = tail_ptr;
delete current_ptr;
current_ptr = temp_ptr;
}while(temp_ptr != NULL && temp_ptr != tail_ptr);
delete current_ptr;
}
void record::SaveFile()
{
ofstream outfile;
outfile.open("FRIENDS.dat",ios::out);
if(outfile)
{
current_ptr = head_ptr;
if(head_ptr != NULL)
{
do{
outfile<<current_ptr->last_name<<endl;
outfile<<current_ptr->first_name<<endl;
outfile<<current_ptr->phone_num<<endl;
current_ptr = current_ptr->next;
}while(current_ptr != head_ptr);
}
outfile<<"文件结束"<<endl;
outfile.close();
}
else
cout<<"打开文件出错.\n";
}
void record::LoadFile()
{
friend_node *new_ptr;
ifstream infile;
int end_loop = 0;
infile.open("FRIENDS.dat",ios::in);
if(infile)
{
do{
new_ptr = new friend_node;
if(new_ptr != NULL)
{
infile.get(new_ptr->last_name,20);
infile.ignore(20,'\n');
if((strcmp(new_ptr->last_name,"") != 0) && (strcmp(new_ptr->last_name,"文件结束") != 0))
{
infile.get(new_ptr->first_name,15);
infile.ignore(20,'\n');
infile.get(new_ptr->phone_num,15);
infile.ignore(20,'\n');
InsertNode(new_ptr);
}
else
{
delete new_ptr;
end_loop = 1;
}
}
else
{
cout<<"警告:没有成功地从磁盘导入文件.\n";
end_loop = 1;
}
}while(end_loop == 0);
infile.close();
}
else
cout<<"没有可用的数据文件,记录表为空.\n";
}
void record::ModifyRecord()
{
system("cls");
char search_string[20];
if(head_ptr == NULL)
{
cout<<"无记录可修改!\n";
return;
}
int nFlag = 0;
current_ptr = head_ptr;
cin.ignore(20,'\n');
cout<<"\n输入你想修改记录的姓氏:";
cin.getline(search_string,20);
friend_node *new_ptr;
while( (strcmp(current_ptr->last_name,search_string) == 0) && head_ptr != NULL )
{
new_ptr = new friend_node;
nFlag = 1;
cout<<"\n找到记录\n";
cout<<current_ptr->first_name<<' '<<current_ptr->last_name<<"\t\t";
cout<<current_ptr->phone_num<<endl;
if(VerifyDelete())
{
cout<<"请输入新记录的姓氏:";
cin.getline(new_ptr->last_name,20);
cout<<"请输入新记录的名字:";
cin.getline(new_ptr->first_name,15);
cout<<"请输入新记录的电话:";
cin.getline(new_ptr->phone_num,12);
if(VerifyDelete())
{
DeleteNode();
InsertNode(new_ptr);
cout<<"\n记录已修改\n";
cout<<new_ptr->first_name<<' ';
cout<<new_ptr->last_name<<endl;
cout<<new_ptr->phone_num<<endl;
current_ptr = head_ptr;
}
}
else
{
cout<<current_ptr->first_name<<","<<current_ptr->last_name<<"\t"<<current_ptr->phone_num<<" 的记录没有被修改\n";
current_ptr = current_ptr->next;
delete new_ptr;
}
}
do{
if(strcmp(current_ptr->last_name,search_string) == 0)
{
nFlag = 1;
new_ptr = new friend_node;
cout<<"\n找到记录\n";
cout<<current_ptr->first_name<<' '<<current_ptr->last_name<<"\t\t";
cout<<current_ptr->phone_num<<endl;
if(VerifyDelete())
{
cout<<"请输入新记录的姓氏:";
cin.getline(new_ptr->last_name,20);
cout<<"请输入新记录的名字:";
cin.getline(new_ptr->first_name,15);
cout<<"请输入新记录的电话:";
cin.getline(new_ptr->phone_num,12);
if(VerifyDelete())
{
friend_node *temp_ptr = current_ptr->prior;
DeleteNode();
InsertNode(new_ptr);
current_ptr = temp_ptr;
cout<<"\n记录已修改\n";
cout<<new_ptr->first_name<<' ';
cout<<new_ptr->last_name<<endl;
cout<<new_ptr->phone_num<<endl;
current_ptr = head_ptr;
}
}
else
{
cout<<current_ptr->first_name<<","<<current_ptr->last_name<<"\t"<<current_ptr->phone_num<<" 的记录没有被修改\n";
delete new_ptr;
}
}
current_ptr = current_ptr->next;
}while(current_ptr != head_ptr || head_ptr == NULL);
if(nFlag == 0)
{
cout<<"找不到相符合的记录\n";
UserInput(); //是否重新寻找
}
system("cls");
}
void record::UserInput() //重试
{
char answer_y_n;
cout<<"再试一次? y/n:";
cin.get(answer_y_n);
if(answer_y_n == 'y' || answer_y_n == 'n')
if(answer_y_n == 'y')
ModifyRecord();
else
{
cout<<"无效输入";
UserInput();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -