<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……╭(╯^╰)╮。謹記於此,以備後忘。