关于C++一个数据输入输出的问题
代码如下,以我这样的方式打印输出,想问问应该如何保存数据到TXT文件中,又该怎么读
#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
class kecheng //模块一
{
public: //公有数据
void setvalue(); //输入函数
void showke(); //处理、输出函数
string ming[16]; //课程名
string jiao[16]; //教师名
string di[16]; //教室地点
int qi[16]; //课程起始周
int jie[16]; //课程结束周
int xing[16]; //星期
int tang[16]; //第几堂
};
void kecheng::setvalue() //模块二
{
for(int i=0;i<16;i++) //for循环控制输入
{
cout<<"*请输入课程名称(请简写 不要超过6个字)"<<endl;
cin>>ming[i];
cout<<"*请输入课程教师"<<endl;
cin>>jiao[i];
cout<<"*请输入教室"<<endl;
cin>>di[i];
cout<<"*请输入课程的起始周"<<endl;
cin>>qi[i];
if(qi[i]>20)
{
cout<<"输入错误! 请重新输入"<<endl; //错误判断
cin>>qi[i]; //重新输入
}
cout<<"*请输入课程的结束周"<<endl;
cin>>jie[i];
if(jie[i]>20) //错误判断
{
cout<<"输入错误! 请重新输入"<<endl;
cin>>jie[i]; //重新输入
}
cout<<"*请输入课程一周有几天有"<<endl; //一门课一周几节的处理
int s;
cin>>s; //输入节数
{
for(int u=0;u<s;u++) //for循环控制多节输入
{
ming[i+u]=ming[i];
jiao[i+u]=jiao[i];
di[i+u]=di[i];
qi[i+u]=qi[i];
jie[i+u]=jie[i];
cout<<"*请输入第"<<u+1<<"次课是星期几"<<endl;
cin>>xing[i+u];
if(xing[i+u]>7)
{
cout<<"输入错误! 请重新输入"<<endl;
cin>>xing[i+u];
}
cout<<"*请输入课程是第几堂"<<endl;
cin>>tang[i+u];
if(tang[i+u]>5)
{
cout<<"输入错误! 请重新输入"<<endl;
cin>>tang[i+u];
}
}
}
i=i+s;
cout<<"*请问是否继续下一个课程?(Y/N)"<<endl; //是否继续输入
char num;
cin>>num;
if(num=='Y'||num=='y') continue; //继续下一个
else break; //结束输入
}
}
void kecheng::showke() //模块三
{
cout<<" ////////////////////////////////"<<endl; //课表的页眉
cout<<" //课 程 表//"<<endl;
cout<<" ////////////////////////////////"<<endl;
cout<<"_____________________________________________________________________________________________________"<<endl;
cout<<" | 一 | 二 | 三 | 四 | 五 | 六 | 日 | "<<endl;
cout<<"_____________________________________________________________________________________________________"<<endl;
for(int i=1;i<6;i++)
{
int l; //用l来检测此项是否有内容输出
switch(i) //课表的一天节数 输出
{
case 1:cout<<"一(1-2) |";break;
case 2:cout<<"二(3-4) |";break;
case 3:cout<<"三(5-6) |";break;
case 4:cout<<"四(7-8) |";break;
case 5:cout<<"五(9-10) |";break;
}
for(int j=1;j<8;j++)
{
l=0;
for(int n=0;n<16;n++)
{
if(tang[n]==i&&xing[n]==j)
{
cout<<setw(12)<<ming[n]<<"|"; //课名输出
l=1;
}
}
if(l==0)
{
cout<<" |"; //若没有则输出空格
}
}
cout<<endl;
cout<<" | ";
for( j=1;j<8;j++)
{
l=0;
for(int n=0;n<16;n++)
{
if(tang[n]==i&&xing[n]==j)
{
cout<<setw(10)<<jiao[n]<<" | "; //教师输出
l=1;
}
}
if(l==0)
{
cout<<" | "; //若没有则输出空格
}
}
cout<<endl;
cout<<" | ";
for( j=1;j<8;j++)
{
l=0;
for(int n=0;n<16;n++)
{
if(tang[n]==i&&xing[n]==j)
{
cout<<setw(11)<<di[n]<<"| "; //地点输出
l=1;
}
}
if(l==0)
{
cout<<" | "; //若没有则输出空格
}
}
cout<<endl;
cout<<" |";
for( j=1;j<8;j++)
{
l=0;
for(int n=0;n<16;n++)
{
if(tang[n]==i&&xing[n]==j)
{
cout<<" ("<<setw(2)<<qi[n]<<" -"<<setw(2)<<jie[n]<<")周 "; //总周数输出
cout<<"|";
l=1;
}
}
if(l==0)
{
cout<<setw(12)<<" "; //若没有则输出空格
cout<<"|";
}
}
cout<<endl;
cout<<"_____________________________________________________________________________________________________"<<endl;
}
}
int main() //模块四
{
cout<<"***************欢迎使用课程表建立系统 ^-^***************"<<endl<<endl;; //系统进入
kecheng ke;
cout<<" *************** 请输入相关课程信息***************"<<endl<<endl;;
ke.setvalue(); //若没有则输出空格用
ke.showke();
return 0;
}
[解决办法]
修改了下,自己编译下
#include <iostream>
#include <string>
#include <iomanip>
#include <stdlib.h>
#include <iostream>
#include <fstream>
using namespace std;
class kecheng //模块一
{
public: //公有数据
void setvalue(); //输入函数
void showke(); //处理、输出函数
string ming[16]; //课程名
string jiao[16]; //教师名
string di[16]; //教室地点
int qi[16]; //课程起始周
int jie[16]; //课程结束周
int xing[16]; //星期
int tang[16]; //第几堂
};
void kecheng::setvalue() //模块二
{
for(int i=0;i<16;i++) //for循环控制输入
{
cout<<"*请输入课程名称(请简写 不要超过6个字)"<<endl;
cin>>ming[i];
cout<<"*请输入课程教师"<<endl;
cin>>jiao[i];
cout<<"*请输入教室"<<endl;
cin>>di[i];
cout<<"*请输入课程的起始周"<<endl;
cin>>qi[i];
if(qi[i]>20)
{
cout<<"输入错误! 请重新输入"<<endl; //错误判断
cin>>qi[i]; //重新输入
}
cout<<"*请输入课程的结束周"<<endl;
cin>>jie[i];
if(jie[i]>20) //错误判断
{
cout<<"输入错误! 请重新输入"<<endl;
cin>>jie[i]; //重新输入
}
cout<<"*请输入课程一周有几天有"<<endl; //一门课一周几节的处理
int s;
cin>>s; //输入节数
for(int u=0;u<s;u++) //for循环控制多节输入
{
ming[i+u]=ming[i];
jiao[i+u]=jiao[i];
di[i+u]=di[i];
qi[i+u]=qi[i];
jie[i+u]=jie[i];
cout<<"*请输入第"<<u+1<<"次课是星期几"<<endl;
cin>>xing[i+u];
if(xing[i+u]>7)
{
cout<<"输入错误! 请重新输入"<<endl;
cin>>xing[i+u];
}
cout<<"*请输入课程是第几堂"<<endl;
cin>>tang[i+u];
if(tang[i+u]>5)
{
cout<<"输入错误! 请重新输入"<<endl;
cin>>tang[i+u];
}
}
i=i+s;
cout<<"*请问是否继续下一个课程?(Y/N)"<<endl; //是否继续输入
char num;
cin>>num;
if(num=='Y'
[解决办法]
num=='y') continue; //继续下一个
else break; //结束输入
}
}
void kecheng::showke() //模块三
{
// 保存cout流缓冲区指针
streambuf* coutBuf = cout.rdbuf();
ofstream of("kechen.txt");
// 获取文件kechen.txt流缓冲区指针
streambuf* fileBuf = of.rdbuf();
// 设置cout流缓冲区指针为out.txt的流缓冲区指针
cout.rdbuf(fileBuf);
cout<<" ////////////////////////////////"<<endl; //课表的页眉
cout<<" //课 程 表//"<<endl;
cout<<" ////////////////////////////////"<<endl;
cout<<"_____________________________________________________________________________________________________"<<endl;
cout<<"
[解决办法]
一
[解决办法]
二
[解决办法]
三
[解决办法]
四
[解决办法]
五
[解决办法]
六
[解决办法]
日
[解决办法]
"<<endl;
cout<<"_____________________________________________________________________________________________________"<<endl;
for(int i=1;i<6;i++)
{
int j,l; //用l来检测此项是否有内容输出
switch(i) //课表的一天节数 输出
{
case 1:cout<<"一(1-2)
[解决办法]
";break;
case 2:cout<<"二(3-4)
[解决办法]
";break;
case 3:cout<<"三(5-6)
[解决办法]
";break;
case 4:cout<<"四(7-8)
[解决办法]
";break;
case 5:cout<<"五(9-10)
[解决办法]
";break;
}
for(j=1;j<8;j++)
{
l=0;
for(int n=0;n<16;n++)
{
if(tang[n]==i&&xing[n]==j)
{
cout<<setw(12)<<ming[n]<<"
[解决办法]
"; //课名输出
l=1;
}
}
if(l==0)
{
cout<<"
[解决办法]
"; //若没有则输出空格
}
}
cout<<endl;
cout<<"
[解决办法]
";
for(j=1;j<8;j++)
{
l=0;
for(int n=0;n<16;n++)
{
if(tang[n]==i&&xing[n]==j)
{
cout<<setw(10)<<jiao[n]<<"
[解决办法]
"; //教师输出
l=1;
}
}
if(l==0)
{
cout<<"
[解决办法]
"; //若没有则输出空格
}
}
cout<<endl;
cout<<"
[解决办法]
";
for( j=1;j<8;j++)
{
l=0;
for(int n=0;n<16;n++)
{
if(tang[n]==i&&xing[n]==j)
{
cout<<setw(11)<<di[n]<<"
[解决办法]
"; //地点输出
l=1;
}
}
if(l==0)
{
cout<<"
[解决办法]
"; //若没有则输出空格
}
}
cout<<endl;
cout<<"
[解决办法]
";
for( j=1;j<8;j++)
{
l=0;
for(int n=0;n<16;n++)
{
if(tang[n]==i&&xing[n]==j)
{
cout<<" ("<<setw(2)<<qi[n]<<" -"<<setw(2)<<jie[n]<<")周 "; //总周数输出
cout<<"
[解决办法]
";
l=1;
}
}
if(l==0)
{
cout<<setw(12)<<" "; //若没有则输出空格
cout<<"
[解决办法]
";
}
}
cout<<endl;
cout<<"_____________________________________________________________________________________________________"<<endl;
}
of.flush();
of.close();
// 恢复cout原来的流缓冲区指针
cout.rdbuf(coutBuf);
}
int main() //模块四
{
cout<<"***************欢迎使用课程表建立系统 ^-^***************"<<endl<<endl;; //系统进入
kecheng ke;
cout<<" *************** 请输入相关课程信息***************"<<endl<<endl;;
ke.setvalue(); //若没有则输出空格用
ke.showke();
system("pause");
return 0;
}