询问用户是否要添加重复信息
Ask the user whether he wants to add duplicate information?
我正在编写这个程序,它允许用户将信息添加到.txt学生列表中。如果输入的信息与列表中的一个学生完全相同(相同的姓名,相同的出生日期,相同的地址,相同的入学年份和相同的专业),我想让程序询问用户是否还想将该学生添加到列表中。知道怎么做吗?下面是我的代码:
void StudentList:: Add_Student () {
int new_pid, new_ent_year;
string new_fname, new_dob, new_addr, new_major;
cout << endl << "Enter student information:" << endl;
cout << "Full name: "; cin.ignore(1); getline (cin,new_fname);
cout << "Date of birth: "; getline (cin,new_dob);
cout << "Address: "; getline (cin,new_addr);
cout << "Entrance year: "; cin >> new_ent_year;
cout << "Major: "; cin.ignore(1); getline (cin,new_major);
new_pid = tail->Get_pid()+1;
Student *p = new Student (new_pid, new_fname, new_dob, new_addr, new_ent_year, new_major);
// p->Show();
AddTail (p);
// write to file
f.seekg(0, ios::end);
f << endl << new_pid << ":" << new_fname << ":" << new_dob << ":" << new_addr << ":" << new_ent_year << ":" << new_major;
}
您已经有了Student
对象的列表,因此只需在其中循环查找具有匹配信息的现有Student
。
bool StudentList::Student_Exists(const string &fname, const string &dob, const string &addr, int ent_year, const string &major)
{
// search the list of Student objects for matching values
// and return true/false accordingly...
}
void StudentList::Add_Student()
{
int new_pid, new_ent_year;
string new_fname, new_dob, new_addr, new_major;
cout << endl << "Enter student information:" << endl;
cout << "Full name: "; cin.ignore(1); getline (cin,new_fname);
cout << "Date of birth: "; getline (cin,new_dob);
cout << "Address: "; getline (cin,new_addr);
cout << "Entrance year: "; cin >> new_ent_year;
cout << "Major: "; cin.ignore(1); getline (cin,new_major);
if (Student_Exists(new_fname, new_dob, new_addr, new_ent_year, new_major))
{
string choice;
cout << "That student already exists. Add anyway? [y/n] "; cin.ignore(1); getline (cin, proceed);
if ((choice != "y") && (choice != "Y"))
return;
}
new_pid = tail->Get_pid()+1;
Student *p = new Student (new_pid, new_fname, new_dob, new_addr, new_ent_year, new_major);
// p->Show();
AddTail (p);
// write to file
f.seekg(0, ios::end);
f << endl << new_pid << ":" << new_fname << ":" << new_dob << ":" << new_addr << ":" << new_ent_year << ":" << new_major;
}
显然,您必须实现Student_Exists()
才能在Student
列表中搜索与指定条件匹配的现有条目。如何做到这一点取决于StudentList
实际上如何跟踪Student
对象。
// ...
bool duplicate = is_duplicate(new_pid, new_ent_year, new_fname, new_dob, new_addr, new_major); // call function to check for duplicate info
if (duplicate) {
string proceed;
cout << "That's a duplicate! Proceed? [y/n] "; cin.ignore(1); getline (cin, proceed);
if (proceed != "y") {
return;
}
}
Student *p = new Student (new_pid, new_fname, new_dob, new_addr, new_ent_year, new_major);
// ...
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 使用霍华德·欣南特的日期库将时间信息添加到year_month_day
- 使用 ffmpeg 添加元数据信息
- 如何将信息从 txt 文件添加到哈希表
- 如何将 git 版本信息添加到 cython 构建的 .so 文件中?
- 如何编写一个程序,我可以像 Ubuntu 中的命令一样添加信息(例如:程序 -u "Hello World" )
- 如何将有关最顶层调用/上下文的信息添加到异常
- SolarisStudio正在对象文件中添加当前目录信息
- 在 DirectX 11 中添加着色器的法线信息 - 法线在着色器中不可见
- 我在哪里可以找到在NS2库的cpp文件中生成的打印信息,其中我添加了一些cout()函数来打印一些信息
- 如何将调色板添加到位图信息
- 使用visual studio 2013为win32软件添加过期信息
- 如何使用boost异常将信息添加到std::异常中
- 创建一个二进制文件,向其中添加信息,并从中读取所有记录(电话簿)
- Qt5 c++:向QFileSystemModel添加附加信息
- 询问用户是否要添加重复信息
- 添加资源.Rc文件信息项目
- 将多个文件中的信息添加到一个文件中
- 如何在链接存档文件时将库版本信息添加到elf文件中,所有存档文件都有其版本信息
- 将异常信息添加到小型转储时,堆栈信息将消失