BUG之路——14.11.11關於指針

<pre name="code" class="cpp">//《C++教程》鄭莉、李寧,人民郵電出版社,2010第一版
//第五章 抽象與分類

//簡單的學生信息系統,有錄入、查詢、輸出功能
//BUG:<span style="font-family: Arial, Helvetica, sans-serif;"> </span>

#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;

class Student{
private:
	string strName;//姓名
	unsigned long nIndex;//學號
	int nScore;//成績
public:
	Student(string _name="somebody",unsigned long _index=2008010001,int _score=100):strName(_name),nIndex(_index),nScore(_score){}//構造函數初始化列表
	~Student(){}
	string getName();
	unsigned long getIndex();
	int getScore();
	void setName(string strNameNew);
	void setIndex(unsigned long nIndexNew);
	void setScore(int nScoreNew);

};

string Student::getName(){
	return strName;
}
unsigned long Student::getIndex(){
	return nIndex;
}
int Student::getScore(){
	return nScore;
}
void Student::setName(string strNameNew){
	strName = strNameNew;
}
void Student::setIndex(unsigned long nIndexNew){
	nIndex = nIndexNew;
}
void Student::setScore(int nScoreNew){
	nScore = nScoreNew;
}

//遍歷查詢函數
void Query(bool &flag,Student *sList,int size){
	unsigned long index;
	unsigned long num;
	char yOrN;
	bool isFound = false;
	cout<<"請輸入要查詢的學生學號:";
	cin>>index;
	for (int i = 0;i<size;i++)
	{
		num = sList[i].getIndex();
		if (num == index)
		{
			cout<<"姓名:"<<sList[i].getName()<<endl;
			cout<<"學號:"<<sList[i].getIndex()<<endl;
			cout<<"成績:"<<sList[i].getScore()<<endl;
			isFound = true;
			break;
		}
	}
	if (!isFound)
	{
		cout<<"該學號信息不存在!"<<endl;
	}
	cout<<"是否繼續查詢?(y/n):";
	cin>>yOrN;
	if (yOrN == 'y'||yOrN == 'Y')
	{
		flag = true;
	}
	if (yOrN == 'n'||yOrN == 'N')
	{
		flag = false;
	}

}
//輸出函數
void printAll(Student *sList,int size){
	for (int i=0;i<size;i++)
	{
		cout<<"姓名:"<<sList[i].getName();
		cout<<"\t學號:"<<sList[i].getIndex();
		cout<<"\t成績:"<<sList[i].getScore()<<endl;
	}

}

int main(int argc, char* argv[])
{
	Student *sList;
	int size;//要錄入信息的學生個數
	string _name;
	unsigned long _index;
	int _score;
	cout<<"請輸入學生總數:";
	cin>>size;
	<span style="color:#ff0000;">sList = new Student[size];//BUG:一開始沒有這句,所以運行起來後提示的錯誤信息是"The variable 'sList' is being used without being initialized"</span>
	for (int i=0;i<size;i++)
	{
		cout<<"學生姓名:";
		cin>>_name;
		cout<<"學生學號:";
		cin>>_index;
		cout<<"學生分數:"; 
		cin>>_score;
		sList[i] = Student(_name,_index,_score);
	}
	bool flag = false;
	char YorN;
	cout<<"是否進行查詢?(y/n):";
	cin>>YorN;
	if (YorN == 'y'||YorN == 'Y')
	{
		flag = true;
	}
	while (flag)
	{
		Query(flag,sList,size);
	}
	cout<<"------------------------"<<endl;//當查詢結束,自動打印出所有學生信息
	cout<<"所有學生數據"<<endl;
	printAll(sList,size);
	return 0;
}

唉,指針不初始化就不能用,犯了多少次還是會出這種弱智錯誤,我真是個傻X……╭(╯^╰)╮。謹記於此,以備後忘。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章