将下列函数addStudent的参数由引用改成非引用 void addStudent(Grade& grade) { cout << "请输入学生的学号:"; string stuNumber; cin >> stuNumber; cout << "请输入学生的姓名:"; string stuName; cin >> stuName; Student stu(stuNumber, stuName); if (grade.addStudent(stu) == true) { cout << "添加学生成功!" << endl; } else { cout << "班级已经满员,不能添加学生了!" << endl; } }
时间: 2024-01-06 20:03:13 浏览: 36
void addStudent(Grade grade)
{
cout << "请输入学生的学号:";
string stuNumber;
cin >> stuNumber;
cout << "请输入学生的姓名:";
string stuName;
cin >> stuName;
Student stu(stuNumber, stuName);
if (grade.addStudent(stu) == true)
{
cout << "添加学生成功!" << endl;
}
else
{
cout << "班级已经满员,不能添加学生了!" << endl;
}
}
将函数参数由引用改为非引用,意味着在函数内部对参数进行的修改不会影响到原始的对象。这里改为值传递,函数内部创建了一个临时的Grade对象进行操作,操作完成后不会影响原始的Grade对象。
相关问题
将下列代码改成面向对象程序设计代码,形成一个用户界面类,并使用该类实现程序用户界面交互功能。 #include "Student.h" #include "Grade.h" #include "iostream" //在"Student.h"中使用了名字空间std class UserInterface { public: void showOperateInfo(); void addStudent(Grade& grade); void deleteStudent(Grade&
在面向对象程序设计中,我们可以将不同的功能抽象出来,形成不同的类。在这个例子中,我们可以创建一个名为UserInterface的类,用于实现程序用户界面交互功能。
下面是修改后的代码:
```
#include "Student.h"
#include "Grade.h"
#include "iostream"
using namespace std;
class UserInterface {
public:
void showOperateInfo();
void addStudent(Grade& grade);
void deleteStudent(Grade& grade);
};
void UserInterface::showOperateInfo() {
cout << "请选择您要进行的操作:" << endl;
cout << "1. 添加学生信息" << endl;
cout << "2. 删除学生信息" << endl;
cout << "3. 退出程序" << endl;
}
void UserInterface::addStudent(Grade& grade) {
string name;
int id;
cout << "请输入学生姓名:" << endl;
cin >> name;
cout << "请输入学生学号:" << endl;
cin >> id;
Student student(name, id);
grade.addStudent(student);
cout << "添加学生信息成功!" << endl;
}
void UserInterface::deleteStudent(Grade& grade) {
int id;
cout << "请输入要删除的学生学号:" << endl;
cin >> id;
grade.deleteStudent(id);
cout << "删除学生信息成功!" << endl;
}
int main() {
UserInterface ui;
Grade grade;
while (true) {
ui.showOperateInfo();
int choice;
cin >> choice;
switch (choice) {
case 1:
ui.addStudent(grade);
break;
case 2:
ui.deleteStudent(grade);
break;
case 3:
exit(0);
default:
cout << "输入错误!" << endl;
break;
}
}
return 0;
}
```
在这个例子中,我们将原来的代码中的函数全部放入了UserInterface类中,并将原来的全局变量Grade改为了UserInterface类中的一个成员变量。同时,我们在main函数中创建了一个UserInterface对象ui,并通过调用ui的函数实现了程序的用户界面交互功能。
检查一下代码有没有错误#include<iostream> #include<vector> using namespace std; class Student{ private: string name; int id; char gender; int age; float score; public: void addStudent(string n, int i, char g, int a, float s){ name = n; id = i; gender = g; age = a; score = s; } void deleteStudent(vector<Student>& vec, int i){ vec.erase(vec.begin()+i-1); } void modifyStudent(vector<Student>& vec, int i, string n, char g, int a, float s){ vec[i-1].name = n; vec[i-1].gender = g; vec[i-1].age = a; vec[i-1].score = s; } void queryStudent(vector<Student>& vec, int i){ cout<<"姓名:"<<vec[i-1].name<<endl; cout<<"学号:"<<vec[i-1].id<<endl; cout<<"性别:"<<vec[i-1].gender<<endl; cout<<"年龄:"<<vec[i-1].age<<endl; cout<<"成绩:"<<vec[i-1].score<<endl; } }; int main(){ vector<Student> stuVec; Student stu; stu.addStudent("张三", 1, 'M', 20, 90); stuVec.push_back(stu); stu.addStudent("李四", 2, 'F', 21, 85); stuVec.push_back(stu); stu.addStudent("王五", 3, 'M', 22, 95); stuVec.push_back(stu); int op, id; string name; char gender; int age; float score; while(true){ cout<<"请选择操作:\n1.添加学生\n2.删除学生\n3.修改学生信息\n4.查询学生信息\n5.退出\n"; cin>>op; if(op==1){ cout<<"请输入学生姓名:"; cin>>name; cout<<"请输入学生学号:"; cin>>id; cout<<"请输入学生性别:"; cin>>gender; cout<<"请输入学生年龄:"; cin>>age; cout<<"请输入学生成绩:"; cin>>score; stu.addStudent(name, id, gender, age, score); stuVec.push_back(stu); cout<<"添加成功!\n"; } else if(op==2){ cout<<"请输入要删除的学生学号:"; cin>>id; for(int i=0;i<stuVec.size();i++){ if(stuVec[i].id==id){ stu.deleteStudent(stuVec,i+1); cout<<"删除成功!\n"; } } } else if(op==3){ cout<<"请输入要修改的学生学号:"; cin>>id; for(int i=0;i<stuVec.size();i++){ if(stuVec[i].id==id){ cout<<"请输入学生姓名:"; cin>>name; cout<<"请输入学生性别:"; cin>>gender; cout<<"请输入学生年龄:"; cin>>age; cout<<"请输入学生成绩:"; cin>>score; stu.modifyStudent(stuVec,i+1,name,gender,age,score); cout<<"修改成功!\n"; } } } else if(op==4){ cout<<"请输入要查询的学生学号:"; cin>>id; for(int i=0;i<stuVec.size();i++){ if(stuVec[i].id==id){ stu.queryStudent(stuVec,i+1); } } } else if(op==5){ break; } else{ cout<<"输入有误,请重新选择!\n"; } } return 0; }
这段代码是一个学生信息管理系统的程序,包括添加学生、删除学生、修改学生信息和查询学生信息等功能。它使用了一个名为 Student 的类来表示学生信息,其中包括学生姓名、学号、性别、年龄和成绩等属性,并提供了相应的方法来修改和查询这些信息。在主函数中,使用了一个 vector 容器来存储所有的学生信息,并通过一个循环来不断接受用户的操作选择,直到用户选择退出程序。代码看起来没有语法错误,但是没有对用户的输入进行严格的检查和错误处理,可能会导致程序崩溃或者出现不可预料的错误。同时,它的主要目的是演示如何使用类和容器来实现一个简单的学生信息管理系统,具体实现细节还需要根据实际需求进行修改和完善。