| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 691 人关注过本帖
标题:自己写的一个简单学生信息管理,高手可以给我看看哪里出错了吗?
只看楼主 加入收藏
小俎俎
Rank: 2
等 级:论坛游民
帖 子:18
专家分:12
注 册:2012-10-6
结帖率:0
收藏
已结贴  问题点数:20 回复次数:7 
自己写的一个简单学生信息管理,高手可以给我看看哪里出错了吗?
程序代码:
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

class Student{
private:
    string NUM;
    string NAME;
    double SCORE;
    friend void OUTPUT();
public:
    Student(){}
    Student(string num,string name,double score){
        NUM = num;
        NAME = name;
        SCORE = score;
    }
    void setStudent(string num,string name,double score){
        NUM = num;
        NAME = name;
        SCORE = score;
    }
    void display(){
        cout<<NUM<<"\t"<<NAME<<"\t"<<SCORE<<endl;
    }
    double getSCORE(){return SCORE;}
    string getNUM(){return NUM;}
};
void WELCOM(){
    cout<<"***************************************"<<endl;
    cout<<"***************************************"<<endl;
    cout<<"**                                   **"<<endl;
    cout<<"**                                   **"<<endl;
    cout<<"**-------------欢迎使用--------------**"<<endl;
    cout<<"**                                   **"<<endl;
    cout<<"**                                   **"<<endl;
    cout<<"***************************************"<<endl;
    cout<<"***************************************"<<endl;
    cout<<"添加学生信息----add"<<endl;
    cout<<"查看学生信息----look"<<endl;
    cout<<"退出系统----exit"<<endl;
}
void INPUT(){
    int n;
    string num,name;
    double score;
    cout<<"请输入这次要存入学生的人数:";
    cin>>n;
    Student stu[n];
    ofstream ofile("student.dat",ios::app|ios::binary);
    ofile.seekp(0,ios::end);
    for(int i=0;i<n;i++){
            cout<<"编号:";cin>>num;
            cout<<"姓名:";cin>>name;
            cout<<"成绩:";cin>>score;
        stu[i].setStudent(num,name,score);
        ofile.write((char *)&stu[i],sizeof(stu[i]));
    }
    cout<<"已存入这"<<n<<"个学生的信息,请继续操作..."<<endl;
    ofile.close();
}
void OUTPUT(){
    char bol;
    string num;
    Student temp;
    ifstream ifile("student.dat",ios::in|ios::binary);
    ifile.seekg(0,ios::beg);
    cout<<"按编号查询(f)或显示全部(a)"<<endl;
    cin>>bol;
    if(bol=='f'){
        cout<<"请输入学生编号:";
        cin>>num;
        ifile.read((char *)&temp,sizeof(temp));
        while(!ifile.eof()){
            if(temp.NUM==num){temp.display();}
            ifile.read((char *)&temp,sizeof(temp));
        }
    }
    else if(bol=='a'){
        ifile.read((char *)&temp,sizeof(temp));
        cout<<"1"<<endl;
        temp.display();
        cout<<"2"<<endl;
        while(!ifile.eof()){
            temp.display();
            ifile.read((char *)&temp,sizeof(temp));
        }
    }
    ifile.close();
}
int main(){
    WELCOM();
    bool Judge=true;
    string Cal;
    while(Judge){
        cin>>Cal;
        if(Cal=="add"){INPUT();}
        else if(Cal=="look"){OUTPUT();}
        else if(Cal=="exit"){Judge=false;}
    }
    return 0;
}



代码如上,觉得是函数OUTPUT出了错,但是找了好久没找到错误。
错误表现为当输出学生信息时显示程序停止运行!我觉得最大的可能是ifile.read()并没有读出学生信息temp,但是,read()函数并没有错误!
理想状态下 输入look后再输入a显示存入的全部学生的信息,比如
输入a回车
101 张三 96
102 李四 97
103 王五 99
但错误状态为
输入a回车
出来对话框:程序停止运行
谢谢楼下的提醒...

[ 本帖最后由 小俎俎 于 2013-7-31 10:51 编辑 ]
搜索更多相关主题的帖子: friend 信息 
2013-07-31 09:41
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:10 
你得告诉别人哪里出错了,也就是你得描述一下你所谓的错误现象。
2013-07-31 10:08
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:10 
回复 2楼 rjsp
他没听懂...

LZ:r同学问你的是,错误现象是什么?
比如,你写程序,是个加法程序
你可以描述现象为,理想状态下,输入1和1,返回2
错误现象,输入1和1返回3

然后如果你懂的自己分析的话,可以除了错误现象,再提供自我描述,比如说你觉得可能是哪个if或者哪个for有问题...或者哪个函数有问题...

[ 本帖最后由 peach5460 于 2013-7-31 10:40 编辑 ]

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-07-31 10:38
小俎俎
Rank: 2
等 级:论坛游民
帖 子:18
专家分:12
注 册:2012-10-6
收藏
得分:0 
回复 2楼 rjsp
当输出学生信息时程序停止运行了就。
2013-07-31 10:47
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
student.dat
路径不对,打不开所以抛异常退出了吧

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-07-31 11:30
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
另外,这代码编不过啊,数组不能用变量声明大小

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-07-31 11:31
小俎俎
Rank: 2
等 级:论坛游民
帖 子:18
专家分:12
注 册:2012-10-6
收藏
得分:0 
回复 5楼 peach5460
"student.dat"没有路径啊,直接存在源程序的目录!!!
2013-07-31 11:42
小俎俎
Rank: 2
等 级:论坛游民
帖 子:18
专家分:12
注 册:2012-10-6
收藏
得分:0 
回复 6楼 peach5460
可能不符合语法规范,我在改改语法上的错误,但是在 codeblocks中我编译过了,我觉得问题可能是OUTPUT()这个函数中!!!
2013-07-31 11:44
快速回复:自己写的一个简单学生信息管理,高手可以给我看看哪里出错了吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027089 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved