鱼C论坛

 找回密码
 立即注册
查看: 4109|回复: 6

请大家运行一下,然后指出我的问题,再帮我分析一下问题啦。

[复制链接]
发表于 2013-6-11 15:40:10 | 显示全部楼层 |阅读模式
10鱼币
#include <iostream>
#include <fstream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
struct student
{
string name;
string kemu;
    char chengji;
};
bool instudent();
bool readstudent();
void recordstudent();
bool writestudent(student *studentdata);
int main()
{
int i;

instudent();//初始化数据。
while(1)
{
  cout<<"请选择需要进行的操作\n";
  cout<<"1.打印数据到屏幕\n";
  cout<<"2.写入数据\n";
  cout<<"3.程序结束\n";
  cin>>i;
  switch(i)
  {
   case 1:
    if(readstudent())
     cout<<"成功读取文件\n";
    else
     cout<<"读取文件失败\n";
    break;
   case 2:
    recordstudent();
    break;
   case 3:
    return 0;
  }
}
cout<<"初始化失败!!!\n\n";
return 0;
}
bool instudent()
{
student newstudent = {"洪耀文","C++",'A'};
}
bool readstudent()
{
string tem;
ifstream fileopen("E:\\1.txt");
if(fileopen.is_open())
{
  cout<<" 姓名 "<<" 科目 "<<" 成绩 "<<"\n\n";
  while(getline(fileopen,tem))
  {
   cout<<tem<<"  ";
   cout<<"\n";
  }
  cout<<"\n\n";
  return true;
}
else
  return false;
}
void recordstudent()
{
char jixu,save;
student studentdata;
student *pstudentdata;

jixu='y';
while('y'==jixu)
{
  cout<<"请输入学生姓名";
  cin>>studentdata.name;
  cout<<"请输入科目:";
  cin>>studentdata.kemu;
  cout<<"请输入学生科目成绩:";
  cin>>studentdata.chengji;
  
  cout<<"录入成功,需要保存吗?(Y/N)";
  cin>>save;
  if('Y'==save)
  {
   pstudentdata = &studentdata;
   if(writestudent(pstudentdata))
   {
    cout<<"成功录入文件\n";
   }
   else
    cout<<"录入文件失败\n";
  }
  else
   return;
  }
  cout<<"需要再次录入么?(Y/N)";
  cin>>jixu;
}
bool writestudent(student *studentdata)
{
ofstream fileout("E:\\1.txt",std::ios::app);  //std::ios::app是在老数据后添加新数据
if(fileout.is_open())
{
  fileout<<pstudentdata->name<<" ";
  fileout<<pstudentdata->kemu<<" ";
  fileout<<pstudentdata->chengji<<"\n";
  
  fileout.close();
  cout<<"数据保存成功\n\n";
}
else
  cout<<"数据保存失败\n\n";
}

最佳答案

查看完整内容

其实我好多地方都不懂有什么用。可以说说具体吗?我想帮你改,可是不知道怎么改好。 现在只是调通了,你或者看看,有没有帮助吧,希望对你有帮助。 #include #include #include //用到string的话一定要加这个头文件 using namespace std; /* run this program using the console pause or add your own getch, system("pause") or input loop */ struct student { string name; string k ...
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-11 15:40:11 | 显示全部楼层
本帖最后由 fanki 于 2013-6-11 22:54 编辑

其实我好多地方都不懂有什么用。可以说说具体吗?我想帮你改,可是不知道怎么改好。

现在只是调通了,你或者看看,有没有帮助吧,希望对你有帮助。

#include <iostream>
#include <fstream>
#include <string>        //用到string的话一定要加这个头文件
using namespace std;
/* run this program using the console pause or add your own getch, system("pause") or input loop */
struct student
{
        string name;
        string kemu;
        string chengji;
};

//初始化那个确实不知道有什么用,所以就暂时去掉了。bool instudent();里面做的东西没什么具体作用。
bool readstudent();
void recordstudent();
bool writestudent(student *studentdata);

int main(int argc, char** argv)
{
        int i;
        //初始化数据。要用的话可以直接 student A = {"洪耀文","C++",'A'}; 就好了,其实你不传参的话,这个也没有什么用
        while(1)
        {
                cout << "请选择需要进行的操作\n";
                cout << "1.打印数据到屏幕\n";
                cout << "2.写入数据\n";
                cout << "3.程序结束\n";
                cin >> i;
                switch(i)
                {
                case 1:
                        if( readstudent() )
                                cout << "成功读取文件\n";
                        else
                                cout << "读取文件失败\n";
                        break;
                case 2:
                        recordstudent();
                        break;
                case 3:
                        return 0;
                default:
                        cout << "输入错误,请重新输入\n";
                        break;
                }
        }
}

bool readstudent()
{
        string tem;
        ifstream fileopen( "E:/1.txt" );
        if( fileopen.is_open() )
        {
                cout << " 姓名 " << " 科目 " << " 成绩 " << "\n\n";
                while( !fileopen.eof() )//这里改了一下,getline是返回值不是bool类型的,而且那个我也不熟,哈哈
                {
                        fileopen >> tem;
                        cout << tem;
                }
                cout << "\n\n";
                return true;
        }
        else
                return false;
}

void recordstudent()
{
        char jixu, save;
        student studentdata;
        jixu = 'y';
        while( 'y'== jixu )
        {
                cout << "请输入学生姓名";
                cin >> studentdata.name;
                cout << "请输入科目:";
                cin >> studentdata.kemu;
                cout << "请输入学生科目成绩:";
                cin >> studentdata.chengji;
                cout << "录入成功,需要保存吗?(Y/N)";
                cin >> save;
                if( 'Y' == save )
                {
                        if( writestudent( &studentdata ) )
                        {
                                cout << "成功录入文件\n";
                        }
                        else
                                cout << "录入文件失败\n";
                }
                //这里改了一下,没有了else,如果是return 了,之后都不执行了,而且输入放在while外面对循环没有影响了。
                cout << "需要再次录入么?(Y/N)";
                cin >> jixu;
        }
}

bool writestudent( student *studentdata )
{
        ofstream fileout( "E:/1.txt", ios::app );  //std::ios::app是在老数据后添加新数据
        if( fileout.is_open() )
        {
                //传进来的是studentdata,所以应该用studentdata,而不是pstudentdata,pstudentdata不是全局变量。
                fileout << studentdata->name << " ";
                fileout << studentdata->kemu << " ";
                fileout << studentdata->chengji << "\n";
                fileout.close();
                cout << "数据保存成功\n\n";
                return true;
        }
        else
        {
                cout << "数据保存失败\n\n";
                return false;
        }
}


希望对你有帮助吧,能写的就这些了,加油吖!!一起努力,肯定会学好的。{:7_155:}

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-6-18 16:48:27 | 显示全部楼层


                               
登录/注册后可看大图

不知道看不看的到图片
但是运行后输入第二个数据 他们的数据是连在一起的。
可以不可以另起一行?我改不好。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-19 18:57:28 | 显示全部楼层
a372187663 发表于 2013-6-18 16:48
不知道看不看的到图片
但是运行后输入第二个数据 他们的数据是连在一起的。
可以不可以另起一行?我 ...

看不到图片~~
可以在输出时加回车吗?{:7_175:}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-24 20:55:54 | 显示全部楼层
持楼主ing……
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-25 09:43:13 | 显示全部楼层
{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}支持
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-25 09:45:44 | 显示全部楼层
{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}支持
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-24 11:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表