现在的位置: 首页 > 综合 > 正文

求教 选择2时输出怎么是无限的

2013年01月19日 ⁄ 综合 ⁄ 共 2672字 ⁄ 字号 评论关闭

#include <iostream>
#include <fstream>
#include <iomanip>               //流格式控制预处理命令
using namespace std;

class Student
{
private:
 int no;
    char name[16];
 int score;
public:
 void Input()
 {
  cin>>no>>name>>score;
 }
 void Show() const
 {
  cout<<setw(16)<<no<<setw(18)<<name<<setw(16)<<score<<endl;
 }
};

//学生管理类
class StudentManage
{
private:
 static void Write();            //写入学生信息
 static void Show();              //显示学生信息

public:
 static void  Run();               //运行学生管理
};

//管理类的部分实现
void StudentManage::Write()                                           //写入学生信息
{
 Student objStu;                                                   //学生对象
 ofstream outFile("stud.dat",ios::binary|ios::app);                //定义文件对象
 if (!outFile)
 {
  cout<<"打开文件失败!"<<endl;
  exit(1);
 }

 char flag='Y';                                                     //判断是否继续输入的标志,初始化为'Y'
    cout<<"输入学生信息数据(学号 姓名 成绩):"<<endl;
 while (toupper(flag)=='Y')
 {
  objStu.Input();                                                  //输入学生信息
  outFile.write((char *)&objStu,sizeof(objStu));                   //写入文件
  cout<<"是否继续录入信息?(Y/N)";
  cin>>flag;
 }

 outFile.close();                                                     //关闭文件
}

void StudentManage::Show()                                             //显示学生信息
{
 Student objStu;                                                    //学生对象
 ifstream inFile("stud.dat",ios::binary);                            //定义文件对象
 if(!inFile)
 {
  cout<<"打开文件失败!"<<endl;
  exit(2);
 }

 cout<<"显示学生信息"<<endl;
 cout<<setw(16)<<"学号"<<setw(18)<<"姓名"<<setw(16)<<"成绩"<<endl;
    inFile.read((char *)&objStu,sizeof(objStu));                                            //从文件读数据
 
 while (!inFile.eof())                                                                 //循环显示学生信息
 {
  
  objStu.Show();                                                                       //显示学生信息
        inFile.read((char *)&objStu,sizeof(objStu));                                    //从文件中读数
  cout<<"jixu?"<<endl;
 }

 inFile.close();                                                //关闭文件
}
 
   
void StudentManage::Run()
{
 int select;                                                     //临时变量
 do
 {
  cout<<"选择(1.写入学生信息 2.显示学生信息 3 退出):";
  cin>>select;                                               //输入选择
  switch (select)
  {
  case 1:
   Write();                                                //写入学生信息
   break;
  case 2:
   Show();                                                  //显示学生信息
   break;
  case 3:
   break;                                                   //退出

  default:                                                     //其他情况,表示选择有误
   cout<<"选择有误!"<<endl;
   break;
  }
 }while(select!=3);
}

 

int main(void)
{
 StudentManage::Run();                                       //运行学生管理

    system ("PAUSE");
 return 0;
}
    

抱歉!评论已关闭.