大象的身高是多少米:C++高手请进!!!!!!!

来源:百度文库 编辑:高考问答 时间:2024/05/07 19:36:55
#include <iostream>
#include <string>
using namespace std;
class Student
{public:
Student (int n,string na,char s,string sp)
{num=n; name=na; sex=s; specializ=sp;}
void set_information();
void show_information();
void delete_information();
private :
int num;
string name;
char sex;
string specializ;};
void Student::set_information ()
{cout<<"请输入您要添加的学生信息:"<<"num:"<<"\n"<<"name:"<<"\n"<<"sex:"<<"\n"<<"specializ:"<<endl;
cin>>num>>name>>sex>>specializ;}
void Student::show_information ()
{cout<<"请输入您要查询的学生的学号:"<<"num:"<<endl;
cin>>num;cout<<"num:"<<this->num <<"name:"<<this->name <<"sex:"<<this->sex<<"specializ:"<<this->specializ <<endl;}
void Student::delete_information ()
{cout<<"请输入您要删除的学生信息的学号:"<<"num:"<<endl;
cin>>num;
cout<<"您已经成功删除此学生的所有信息。";}
int main()
{
Student student(1,"lifuke",'M',"jisuanji");
int a,b,c,d;
cout<<"欢迎进入学生信息管理系统!"<<endl;
cout<<"1.添加学生信息请输入a。"<<endl;
cout<<"2.查询学生信息请输入b。"<<endl;
cout<<"3.删除学生信息请输入c。"<<endl;
cout<<"4.退出请输入d。"<<endl;
if (cin>>a) student.set_information();
else if (cin>>b) student.show_information();
else if (cin>>c) student.delete_information();
else (cin>>d) ;return 0;}

这是我写的一个关于学生信息管理系统的程序,但类的成员函数没有被调用,请问这是怎么回事?????急!!!!!!!!!!!!!
为什么在输入信息后,不能保存下来啊 !再次打开时信息又没了.还有就是删除函数没起作用.望高手解答.急!!!!!!!!!!!!!!!!!!

if (cin>>a) student.set_information();
else if (cin>>b) student.show_information();
else if (cin>>c) student.delete_information();
else (cin>>d) ;return 0;}

上面这段明显有问题。cin>>...返回的不是输入的数据,而是cin对象(这里可以将其理解为 是否输入正确),这样cin>>..>>...>>...这些>>才可以连起来写,你可以看看操作符重载来好好理解这些机制。

所以你只要输入的是整数,永远执行的都是if (cin>>a) student.set_information(); 这一句,除非不是整数,那样输入出错,等待你的下一次输入。这样你再输入一个整数就执行else if (cin>>b) student.show_information(); 这一句,如果你第二次输入的还不是整数那就执行第三个条件。所以根本不是你的本意。

因此必须老老实实地按下面的方法做:
int main()
{
Student student(1,"lifuke",'M',"jisuanji");
int a;
cout<<"欢迎进入学生信息管理系统!"<<endl;
cout<<"1.添加学生信息请输入a。"<<endl;
cout<<"2.查询学生信息请输入b。"<<endl;
cout<<"3.删除学生信息请输入c。"<<endl;
cout<<"4.退出请输入d。"<<endl;

cin >> a;
if (a == 1) student.set_information();
else if (a == 2) student.show_information();
else if (a == 3) student.delete_information();
else (a == 4) ;return 0;
}