この関数では、応答 == 1 に対して 2 つの条件を使用しました。応答 == 1 の場合、ポインターは登録番号によって返され、その関数は完全に正常に動作します。一方、応答 ==2 の場合、ポインターは文字列名によって返されます。新しい入力名を受け取りますが、プログラムは突然終了します。
ポインタ復帰機能と編集機能を両方追加しました!助けてください
// edit student function , helping functions , pointer by registration and name
// at end
void LAB_PROJECT::edit_student()
{
int response = 0;
string search_name;
int search_reg = 0;
cout << "\n \n -- Select Search Option 1 or 2 Accordingly" << endl;
cout << "\n 1--Registration ";
cout << "\n 2--Student's Name" << " >> " ;
cin >> response;
if (response==1)
{
cout << "\n \n Enter Registration No: ";
cin >> search_reg;
Node*temp1;
temp1 = pointer_by_registration(search_reg);
cin.ignore(1,'\n');
string new_name;
cout << "\n \n Enter New Name ";
getline(cin,new_name,'\n');
temp1->student_name = new_name;
return;
}
else if(response==2)
{
cout << "\n \n Enter Student's Name , that you want to search " << endl;
getline(cin,search_name,'\n');
cin.ignore(1,'\n');
Node*temp2;
temp2 = pointer_by_name(search_name);
string new_name;
cout << "\n \n Enter New Name";
getline(cin,new_name,'\n');
cin.ignore(1,'\n');
temp2->student_name=new_name;
return;
}
}
Node* LAB_PROJECT::pointer_by_name(string getin)
{
string checker;
checker = getin;
Node*temp1;
temp1 = startptr;
while(temp1 != NULL)
{
if (checker == temp1->student_name)
{
return (temp1);
}
temp1=temp1->nextptr;
}
}
Node* LAB_PROJECT::pointer_by_registration(int reg_key)
{
int key = 0;
key = reg_key;
Node* temp1;
temp1 = startptr;
while(temp1 !=NULL)
{
if(key == temp1->registration)
{
return(temp1);
}
temp1=temp1->nextptr;
}
}