查找"<<endl<<endl ;5、修改学生信息 ***************
时间: 2024-09-21 22:07:35 浏览: 20
在编程中,`endl << endl;`通常是在C++标准库中使用的,它代表了换行符(`\n`)两次,用于在控制台上输出文本时强制插入两行空行。当你想要在打印一些信息之后,让输出看起来更清晰地分隔开,就可以使用这个操作。
而提到“修改学生信息”,这通常是数据库操作的一部分,或者在面向对象编程中处理数据结构。如果你有一个表示学生的类,比如`Student`,你可以定义一个方法如`setInfo()`,接受新的学生信息作为参数,并更新该对象的属性。例如:
```cpp
class Student {
private:
string name;
int id;
public:
void setInfo(string newName, int newID) {
name = newName;
id = newID;
// 可能还有其他信息需要更新
cout << "学生信息已修改:" << endl << "姓名: " << name << endl << "学号: " << id << endl;
}
};
// 使用示例
Student stu;
stu.setInfo("张三", 1001);
```
在这个例子中,通过`setInfo`函数可以修改学生的信息并打印出更新后的结果。
相关问题
#include <iostream> using namespace std; typedef tuple<list<Teacher>, list<Student>, list<Dean>, list<Chancellor>> Totality; Totality input() { Totality per; Teacher t1; cout << "请输入5名教师信息:" << endl; for (int i = 0; i < 1; i++) { t1.inputData(); get<0>(per).push_back(t1); } return per; } int found(Totality tota, string s) { for (auto it = get<0>(tota).begin(); it != get<0>(tota).end(); it++) { if (s == it->getName()) { cout << *it << endl; return 1; } } for (auto it = get<1>(tota).begin(); it != get<1>(tota).end(); it++) { if (s == it->getName()) { cout << *it << endl; return 2; } } for (auto it = get<2>(tota).begin(); it != get<2>(tota).end(); it++) { if (s == it->getName()) { cout << *it << endl; return 3; } } for (auto it = get<3>(tota).begin(); it != get<3>(tota).end(); it++) { if (s == it->getName()) { cout << *it << endl; return 4; } } cout << "没有匹配的信息!查询失败!"; return 0; } int main() { Totality per; Teacher t1; Student s1; Chancellor c1; Dean d1; string sName;int num = found(per, sName); if (num == 1) { for (auto it = get<0>(per).begin(); it != get<0>(per).end(); it++) { if (sName == it->getName()) get<0>(per).remove(*it); } } else if (num == 2) { for (auto it = get<1>(per).begin(); it != get<1>(per).end(); it++) { if (sName == it->getName()) get<1>(per).remove(*it); } } else if (num == 3) { for (auto it = get<2>(per).begin(); it != get<2>(per).end(); it++) { if (sName == it->getName()) get<2>(per).remove(*it); } } else if (num == 4) { for (auto it = get<3>(per).begin(); it != get<3>(per).end(); it++) { if (sName == it->getName()) get<3>(per).remove(*it); } } 哪里有错,代码怎么改
这段代码有几个问题:
1. 在 `main()` 函数中,没有从用户获取输入的人员姓名 `sName`。
2. 在 `main()` 函数中,调用 `found()` 函数时 `per` 还没有被赋值,所以 `found()` 函数中的四个列表都是空的,会导致查询失败。
3. 在 `found()` 函数中,如果找到了匹配的信息,应该直接返回,而不是继续查找其他列表。
4. 在 `found()` 函数中,如果找不到匹配的信息,应该在所有列表都查找完之后再提示查询失败。
下面是修改后的代码:
```cpp
#include <iostream>
#include <tuple>
#include <list>
using namespace std;
class Person {
protected:
string name;
int age;
string gender;
public:
Person() {}
Person(string n, int a, string g) : name(n), age(a), gender(g) {}
void setName(string n) { name = n; }
string getName() const { return name; }
void setAge(int a) { age = a; }
int getAge() const { return age; }
void setGender(string g) { gender = g; }
string getGender() const { return gender; }
virtual void inputData() {
cout << "请输入姓名:";
cin >> name;
cout << "请输入年龄:";
cin >> age;
cout << "请输入性别:";
cin >> gender;
}
virtual void showData() const {
cout << "姓名:" << name << endl;
cout << "年龄:" << age << endl;
cout << "性别:" << gender << endl;
}
virtual ~Person() {}
};
class Teacher : public Person {
protected:
string course;
public:
Teacher() {}
Teacher(string n, int a, string g, string c) : Person(n, a, g), course(c) {}
void setCourse(string c) { course = c; }
string getCourse() const { return course; }
void inputData() {
Person::inputData();
cout << "请输入课程:";
cin >> course;
}
void showData() const {
Person::showData();
cout << "课程:" << course << endl;
}
~Teacher() {}
};
class Student : public Person {
protected:
int score;
public:
Student() {}
Student(string n, int a, string g, int s) : Person(n, a, g), score(s) {}
void setScore(int s) { score = s; }
int getScore() const { return score; }
void inputData() {
Person::inputData();
cout << "请输入成绩:";
cin >> score;
}
void showData() const {
Person::showData();
cout << "成绩:" << score << endl;
}
~Student() {}
};
class Dean : public Person {
protected:
string department;
public:
Dean() {}
Dean(string n, int a, string g, string d) : Person(n, a, g), department(d) {}
void setDepartment(string d) { department = d; }
string getDepartment() const { return department; }
void inputData() {
Person::inputData();
cout << "请输入所在系:";
cin >> department;
}
void showData() const {
Person::showData();
cout << "所在系:" << department << endl;
}
~Dean() {}
};
class Chancellor : public Person {
protected:
string university;
public:
Chancellor() {}
Chancellor(string n, int a, string g, string u) : Person(n, a, g), university(u) {}
void setUniversity(string u) { university = u; }
string getUniversity() const { return university; }
void inputData() {
Person::inputData();
cout << "请输入所在大学:";
cin >> university;
}
void showData() const {
Person::showData();
cout << "所在大学:" << university << endl;
}
~Chancellor() {}
};
typedef tuple<list<Teacher>, list<Student>, list<Dean>, list<Chancellor>> Totality;
Totality input() {
Totality per;
Teacher t1;
cout << "请输入5名教师信息:" << endl;
for (int i = 0; i < 5; i++) {
t1.inputData();
get<0>(per).push_back(t1);
}
Student s1;
cout << "请输入5名学生信息:" << endl;
for (int i = 0; i < 5; i++) {
s1.inputData();
get<1>(per).push_back(s1);
}
Dean d1;
cout << "请输入1名系主任信息:" << endl;
d1.inputData();
get<2>(per).push_back(d1);
Chancellor c1;
cout << "请输入1名校长信息:" << endl;
c1.inputData();
get<3>(per).push_back(c1);
return per;
}
int found(Totality tota, string s) {
for (auto it = get<0>(tota).begin(); it != get<0>(tota).end(); it++) {
if (s == it->getName()) {
cout << *it << endl;
return 1;
}
}
for (auto it = get<1>(tota).begin(); it != get<1>(tota).end(); it++) {
if (s == it->getName()) {
cout << *it << endl;
return 2;
}
}
for (auto it = get<2>(tota).begin(); it != get<2>(tota).end(); it++) {
if (s == it->getName()) {
cout << *it << endl;
return 3;
}
}
for (auto it = get<3>(tota).begin(); it != get<3>(tota).end(); it++) {
if (s == it->getName()) {
cout << *it << endl;
return 4;
}
}
cout << "没有匹配的信息!查询失败!" << endl;
return 0;
}
int main() {
Totality per = input();
string sName;
cout << "请输入要查询的人员姓名:" << endl;
cin >> sName;
int num = found(per, sName);
if (num == 1) {
for (auto it = get<0>(per).begin(); it != get<0>(per).end(); it++) {
if (sName == it->getName()) {
get<0>(per).remove(*it);
cout << "已删除教师:" << endl;
it->showData();
break;
}
}
}
else if (num == 2) {
for (auto it = get<1>(per).begin(); it != get<1>(per).end(); it++) {
if (sName == it->getName()) {
get<1>(per).remove(*it);
cout << "已删除学生:" << endl;
it->showData();
break;
}
}
}
else if (num == 3) {
for (auto it = get<2>(per).begin(); it != get<2>(per).end(); it++) {
if (sName == it->getName()) {
get<2>(per).remove(*it);
cout << "已删除系主任:" << endl;
it->showData();
break;
}
}
}
else if (num == 4) {
for (auto it = get<3>(per).begin(); it != get<3>(per).end(); it++) {
if (sName == it->getName()) {
get<3>(per).remove(*it);
cout << "已删除校长:" << endl;
it->showData();
break;
}
}
}
return 0;
}
```
用C++编写代码,设计一个学生管理系统,具有添加、修改、删 除、排序、查找、显示和保存功能。系统菜单如下:一 *********************************************
很高兴为您解答。以下是C++编写的学生管理系统代码,具有添加、修改、删除、排序、查找、显示和保存功能。系统菜单如下:
```c++
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
struct Student {
string name;
int id;
double score;
};
vector<Student> students;
void addStudent() {
Student student;
cout << "请输入学生姓名:";
cin >> student.name;
cout << "请输入学生学号:";
cin >> student.id;
cout << "请输入学生分数:";
cin >> student.score;
students.push_back(student);
cout << "添加成功!" << endl;
}
void modifyStudent() {
int id;
cout << "请输入要修改的学生学号:";
cin >> id;
for (auto& student : students) {
if (student.id == id) {
cout << "请输入学生姓名:";
cin >> student.name;
cout << "请输入学生分数:";
cin >> student.score;
cout << "修改成功!" << endl;
return;
}
}
cout << "未找到该学生!" << endl;
}
void deleteStudent() {
int id;
cout << "请输入要删除的学生学号:";
cin >> id;
for (auto it = students.begin(); it != students.end(); ++it) {
if (it->id == id) {
students.erase(it);
cout << "删除成功!" << endl;
return;
}
}
cout << "未找到该学生!" << endl;
}
bool compareScore(const Student& a, const Student& b) {
return a.score > b.score;
}
void sortStudents() {
sort(students.begin(), students.end(), compareScore);
cout << "排序成功!" << endl;
}
void searchStudent() {
int id;
cout << "请输入要查找的学生学号:";
cin >> id;
for (auto& student : students) {
if (student.id == id) {
cout << "学生姓名:" << student.name << endl;
cout << "学生学号:" << student.id << endl;
cout << "学生分数:" << student.score << endl;
return;
}
}
cout << "未找到该学生!" << endl;
}
void showStudents() {
for (auto& student : students) {
cout << "学生姓名:" << student.name << endl;
cout << "学生学号:" << student.id << endl;
cout << "学生分数:" << student.score << endl;
cout << endl;
}
}
void saveStudents() {
ofstream outfile("students.txt");
for (auto& student : students) {
outfile << student.name << " " << student.id << " " << student.score << endl;
}
outfile.close();
cout << "保存成功!" << endl;
}
void loadStudents() {
ifstream infile("students.txt");
if (!infile) {
cout << "未找到文件!" << endl;
return;
}
students.clear();
string name;
int id;
double score;
while (infile >> name >> id >> score) {
Student student = {name, id, score};
students.push_back(student);
}
infile.close();
cout << "读取成功!" << endl;
}
int main() {
while (true) {
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 << "请选择操作:";
int choice;
cin >> choice;
switch (choice) {
case 1:
addStudent();
break;
case 2:
modifyStudent();
break;
case 3:
deleteStudent();
break;
case 4:
sortStudents();
break;
case 5:
searchStudent();
break;
case 6:
showStudents();
break;
case 7:
saveStudents();
break;
case 8:
loadStudents();
break;
case 0:
return 0;
default:
cout << "输入错误,请重新选择!" << endl;
break;
}
}
return 0;
}
```