回 帖 发 新 帖 刷新版面

主题:急!急!帮忙修改一个课程设计

请大家帮忙修改一下这个程序 使用输入输出流将数据写入文件,使得在以后每次启动程序后不必重新输入数据,程序设计马上到时间了,麻烦大家快点帮忙改改,本人将不胜感激!麻烦各位大家了
     主要代码
//           研究生类             //

void Graduate::set()
{
     cout<<"输入研究生信息\n"<<"学号      姓名     性别(man/woman)     导师     三科成绩     出生年\n";
     cin>>num>>name>>sex>>instruct>>ch>>en>>ma>>birth;
}

int Graduate::getid()
{return id;}

char*Graduate::getins()
{return instruct;}

Graduate::Graduate():Base()
{
    id=1;
}

void Graduate::display()
{
    cout<<"\n研究生:\n"<<num<<"      "<<name<<"      "<<sex<<"      "<<instruct<<"      "<<(ch+en+ma)/3<<"      "<<(2011-birth)<<endl;
}
//研究生类中重载输入输出符
ostream& operator<<(ostream& out,const Graduate& right)
{
 out<<right.num<<"      "<<right.name<<"      "<<right.sex<<"      "<<right.instruct<<"      "<<(right.ch+right.en+right.ma)/3<<"      "<<(2011-right.birth)<<endl;
 return out;
}

istream& operator>>(istream& in,Graduate& right)
{
 in>>right.num>>right.name>>right.sex>>right.instruct>>right.ch>>right.en>>right.ma>>right.birth;
 return in;
}
       //主函数 
int main()
{
    int getin,j;//主菜单中接受选择
    int c1,c2,c3,c4,c5,c6,c7,c8;//case中用来接收选择
    Base * p[100];
    int hao[100],htp;// case 8
    int m,n;//case 8
    double zong[100],ztp;//case 8
    static int i=0;//静态,用来统计对象创建的个数

    ofstream out("com.txt");
    ifstream in("com.txt");

lab2:system("cls");
    cout<<"\n\n\n";
    cout<<"                  *----------学生信息管理系统----------*\n\n";
    cout<<"                              1.录入信息\n";
    cout<<"                              2.显示全部学生\n";
    cout<<"                              3.计算平均成绩\n";
    cout<<"                              4.删除一个学生\n";
    cout<<"                              5.按年级输出学生信息\n";
    cout<<"                              6.按性别输出学生信息\n";
    cout<<"                              7.按姓名检索学生\n";
    cout<<"                              8.按总分排序\n";
    cout<<"                              9.结束程序运行\n\n";
    cout<<"输入您的选择(1~8):";
    cin>>getin;

    switch(getin)
    {
    case 1://录入信息

lab1:    system("cls");
        cout<<"1.录入本科生信息"<<endl;
        cout<<"2.录入研究生信息"<<endl;
        cout<<"3.保存所有信息"<<endl;
        cout<<"4.返回上一级菜单"<<endl;
        cout<<"选择:";
        cin>>c1;
        cout<<endl;
        switch(c1)
        {

        case 1:{
                 p[i]=new College;
                 p[i]->set();
                 i++;
                 goto lab1;
               }

        case 2:{
                 p[i]=new Graduate;
                 p[i]->set();
                 i++;
                 goto lab1;
               }
        case 3://输出文件

                 for(j=0;j<i;j++)
                 {
                     if(p[j]->getid()==1)
                        out<<p[j]->getnum()<<" "<<p[j]->getname()<<" "<<p[j]->getsex()<<" "<<p[j]->getch()<<" "<<p[j]->geten()<<" "<<p[j]->getma()<<" "<<2011-p[j]->getbirth()<<endl;
                     if(p[j]->getid()==0)
                        out<<p[j]->getnum()<<" "<<p[j]->getname()<<" "<<p[j]->getsex()<<" "<<p[j]->getch()<<" "<<p[j]->geten()<<" "<<p[j]->getma()<<" "<<2011-p[j]->getbirth()<<endl;
                 }
                 cout<<"          保存成功!";
                 goto lab1;


           default:
               goto lab2;
        }
        break;

    case 2: //显示全部信息
        system("cls");
        cout<<"学生信息\n"<<"学号      姓名     性别(man/woman)     专业/导师     平均成绩     年龄\n";
        for(j=0;j<i;j++)
            p[j]->display();
            cout<<"\n\n输入任意数字返回主菜单:";
        cin>>c2;
        switch(c2)
        {
        case 1:case 2:case 3:default: goto lab2;
        }
    case 3://计算平均成绩
        system("cls");
        cout<<endl<<endl;
        cout<<"                    ------计算平均成绩-----\n";
        cout<<"                       1. 语文平均成绩\n";
        cout<<"                       2. 英语平均成绩\n";
        cout<<"                       3. 数学平均成绩\n";
        cout<<"                    -----------------------\n";
        cout<<"         你的选择:";
        cin>>c3;
        switch(c3)
        {
        case 1:{

                 double sumy=0;
                 for(j=0;j<i;j++)
                 {
                    sumy=sumy+p[j]->getch();
                 }
                 cout<<"\n语文平均成绩:"<<(sumy/i)<<endl;
                 break;
               }
        case 2:{
                 double sume=0;
                 for(j=0;j<i;j++)
                 {
                    sume=sume+p[j]->getch();
                 }
                 cout<<"\n英语平均成绩:"<<(sume/i)<<endl;
                 break;
               }
        case 3:{
                  double summ=0;
                  for(j=0;j<i;j++)
                  {
                    summ=summ+p[j]->getch();
                  }
                  cout<<"\n数学平均成绩:"<<(summ/i)<<endl;
                  break;
               }
        default :
            goto lab2;
        }
        cout<<"\n\n输入任意数字返回主菜单:";
        cin>>c3;
        switch(c3)
        {
        case 1:case 2:case 3:default: goto lab2;

        }

    case 4://删除一个学生
               system("cls");
               cout<<endl<<endl;
               cout<<"                    ------删除一个学生-----\n";
               cout<<"                        1. 按学号删除\n";
               cout<<"                        2. 按姓名删除\n";
               cout<<"                        3. 返回上级\n";
               cout<<"                    -----------------------\n";
               cout<<"         你的选择:";
               cin>>c4;
               switch(c4)
               {
               case 1:
                         int xuehao;
                         cout<<"输入学生的学号:";
                         cin>>xuehao;
                         for(j=0;j<i;j++)
                         {
                             if(p[j]->getnum()==xuehao)
                             {
                                 for(int del=j;del<i;del++)
                                     p[del]=p[del+1];
                                 i--;
                             }
                         }
                cout<<" \n成功删除.......!\n";
                cout<<"\n\n输入任意数字返回主菜单:";
                cin>>c3;
                switch(c3)
                {
                  case 1:case 2:case 3:default: goto lab2;

                }

               case 2:
                         char ming[20];
                         cout<<"输入学生的姓名:";
                         cin>>ming;
                         for(j=0;j<i;j++)
                         {
                             if(p[j]->getname()==ming)
                             {
                                 for(int del=j;del<i;del++)
                                     p[del]=p[del+1];
                                 i--;
                             }
                         }
                cout<<" \n成功删除........!\n";
                cout<<"\n\n输入任意数字返回主菜单:";
                cin>>c3;
                switch(c3)
                {
                  case 1:case 2:case 3:default: goto lab2;

                }
               default:goto lab2;
               }
    case 5:  ////按年级输出学生信息////
               system("cls");
               cout<<"\n\n\n";
               cout<<"                       ---------按年级输出学生信息---------\n";
               cout<<"                            1.按本科生输出学生信息\n";
               cout<<"                            2.按研究生输出学生信息\n";
               cout<<"                       ------------------------------------\n";
               cout<<"                  你的选择:";
               cin>>c5;
               switch(c5)
               {
               case 1:
                    cout<<"学号      姓名      性别      专业      平均成绩      年龄\n";
                    for(j=0;j<i;j++)
                    {
                        if(p[j]->getid()==0)
                           p[j]->display();
                    }
                    cout<<"\n输入任意数字返回主菜单:";
                    cin>>c5;
                    switch(c5)
                    {
                      case 1:case 2:case 3:default: goto lab2;
                    }
               case 2:
                    cout<<"学号      姓名      性别      导师      平均成绩      年龄\n";
                    for(j=0;j<i;j++)
                    {
                        if(p[j]->getid()==1)
                           p[j]->display();
                    }
                    cout<<"\n输入任意数字返回主菜单:";
                    cin>>c5;
                    switch(c5)
                    {
                      case 1:case 2:case 3:default: goto lab2;
                    }
               default:
                    cout<<"\n输入错误!\n";
                    break;
                    cout<<"\n输入任意数字返回主菜单:";
                    cin>>c5;
                    switch(c5)
                    {
                      case 1:case 2:case 3:default: goto lab2;
                    }
               }
    case 6://按性别输出学生信息
                 system("cls");
                 cout<<endl<<endl;
                 cout<<"                          --------按性别输出学生信息-------\n";
                 cout<<"                                   1.显示全部女生\n";
                 cout<<"                                   2.显示全部男生\n";
                 cout<<"                          ---------------------------------\n";
                 cout<<"                  你的选择:";
                 cin>>c6;
                 if(c6==1)
                 {
                      for(j=0;j<i;j++)
                     {
                         if(p[j]->getsex()=="man")
                             p[j]->display();
                      }
                 }
                 else if(c6==2)
                     for(j=0;j<i;j++)
                     {
                         if(p[j]->getsex()=="woman")
                             p[j]->display();
                      }
                else
                    cout<<"\n\n              Error!\n";
                cout<<"\n\n输入任意数字返回主菜单:";
                cin>>c6;
                switch(c6)
                {
                  case 1:case 2:case 3:default: goto lab2;

                }


    case 7://按姓名检索学生
               system("cls");
               cout<<"\n\n\n\n\n\n";
               char xingm[20];
               cout<<"输入学生的姓名:";
               cin>>xingm;
               for(j=0;j<i;j++)
               {
                 if(p[j]->getname()==xingm)
                {
                    p[j]->display();
                }
               }
                cout<<"\n\n输入任意数字返回主菜单:";
                cin>>c7;
                switch(c7)
                {
                  case 1:case 2:case 3:default: goto lab2;

                }
    case 8://按总分排序


                for(int ci=0;ci<i;ci++)
                {
                     hao[ci]=p[ci]->getnum();
                     zong[ci]=p[ci]->getsum();
                }

                 for(n=0;n<i;n++)
                 {
                     for(m=n+1;m<i;m++)
                     {
                         if(zong[n]>zong[m])
                         {
                             htp=hao[m];
                             hao[m]=hao[n];
                             hao[n]=htp;
                             ztp=zong[m];
                             zong[m]=zong[n];
                             zong[n]=ztp;
                         }
                     }
                 }
                 system("cls");
                 cout<<endl<<endl;
                 cout<<"                            ---------按总分排序--------\n";
                 cout<<"                           学生学号                  总分\n";
                 for(j=0;j<i;j++)
                 {
                 cout<<"                           "<<hao[j]<<"                           "<<zong[j]<<endl;
                 }

                cout<<"\n\n输入任意数字返回主菜单:";
                cin>>c8;
                switch(c8)
                {
                  case 1:case 2:case 3:default: goto lab2;

                }


    }//switch end !

    for(j=0;j<i;j++)//释放内存空间
        delete p[j];


}// main end !







回复列表 (共9个回复)

沙发

你的College,Graduate的定义呢? 代码补全,再说修改的事儿。

板凳

好了,快帮忙改吧!先谢谢了。。。。。。。。
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
class Base
{
protected:
    int id;//本科生,研究生识别
    int num;
    char name[20];
    char sex[5];
    double ch,en,ma;//成绩
    int birth;

public:
    Base();
    virtual int getid()=0;//本科生,研究生识别
    virtual void set()=0;//纯虚函数,在派生类中调用
    virtual void display()=0;
    double getsum();//取总成绩
    char * getsex();//取性别
    double getch();//取各科成绩
    double geten();
    double getma();
    int getbirth();
    int getnum();//取学号
    char* getname();//取姓名
};


Base::Base()//基类构造
{
    num=0;
    ch=0;en=0;ma=0;
    birth=1900;
}

int Base::getbirth()
{return birth;}

double Base::getsum()
{return ch+en+ma;}

double Base::getch()
{return ch;}

double Base::geten()
{return en;}

double Base::getma()
{return ma;}

int Base::getnum()
{return num;}

char *Base::getsex()
{return sex;}

char * Base::getname()
{return name;}
class College:public Base//本科生类
{
private:
    int id;//本科生识别
    char subject[20];//专业
public:
    College();//College构造
    int getid();//本科生识别
    char* getsub();
    void set();
    void display();
    friend ostream& operator<<(ostream&,const College&);
    friend istream& operator>>(istream&,College&);
};
void College::set()
{
     cout<<"输入本科生信息\n"<<"学号      姓名     性别(man/woman)    专业     三科成绩     出生年\n";
     cin>>num>>name>>sex>>subject>>ch>>en>>ma>>birth;
}

College::College():Base()//College构造
{
    id=0;
}

char*College::getsub()
{return subject;}

int College::getid()
{return id;}

void College::display()//打印
{
    cout<<"\n本科生:\n"<<num<<"      "<<name<<"      "<<sex<<"      "<<subject<<"      "<<(ch+en+ma)/3<<"      "<<(2011-birth)<<endl;
}

//本科生类中重载输入输出符
ostream& operator<<(ostream& out,const College& right)
{

 out<<right.num<<"      "<<right.name<<"      "<<right.sex<<"      "<<right.subject<<"      "<<(right.ch+right.en+right.ma)/3<<"      "<<(2011-right.birth)<<endl;
 return out;
}

istream& operator>>(istream& in,College& right)
{

    in>>right.num>>right.name>>right.sex>>right.subject>>right.ch>>right.en>>right.ma>>right.birth;
    return in;
}
 //研究生类     

class Graduate:public Base
{
private:
    int id;//研究生识别
    char instruct[20];//导师
public:
    Graduate();//Graduate构造
    int getid();
    void set();
    void display();
    char*getins();
    friend ostream& operator<<(ostream&,const Graduate&);
    friend istream& operator>>(istream&,Graduate&);
};

3 楼

qq:1285305730
你想怎么改?qq说吧

4 楼

哦,看到了,数据写文件,是吧? 可以啊。QQ联系

5 楼

你怎么这样啊!会了就拜托你改改了,就快要答辩了,我真的不会弄,学了一年,还不会这种大程序!拜托了!时间紧迫来不及和你说废话的,。。。。。。。。。。。。。

6 楼

你就这么扔上来一大坨代码,而且刚开始还扣扣巴巴的不把代码放全,然后就希望有人帮你改,你任何问题都没有提,也从没说过哪些是你不明白的或看不懂的。就这么就希望别人直截了当帮你改,你也太觉得别人的劳动廉价了吧,也太一劳永逸了吧。改, 没问题。你这也算不得什么“大程序”。不夸张的说,难度是零。加上GUI都行,别说读文件了。关键是你的态度,如果是思考后,不懂,需要解惑,没问题,两肋插刀帮你。如果是直接改,那另说。让你QQ联系,你还不乐意了。行,那就不用废话了。谁爱改谁改吧,还懒得看了。

7 楼

我是第一次用论坛的,不太会弄字数多放不下,所以才放了主要代码,后来你一说我就补全了,我一上来就说明了问题,只是让修改一下能读入读出文件,不必每次都录入数据,程序是懂了,只是不会改,程序学的不太好,输入输出流读文件老师也没怎么讲,不知该如何修改。只所以不想用QQ,是因为我没电脑,手机QQ只能登3g,收发信息太慢,根本就不行。我只是希望有人帮我改一下,我自己再看看,不懂了再请教,并没别的意思,由于平时接触的都是用数组输入很少的数据读入文件的,现在变的这么多数据,真的没有思路。,。。。。。。。。。。。。。。

8 楼

上午8点多QQ上的信息是你发的吗? 无任何说明,我ignore了。
晚上改好,发至1104253988@qq.com , 你注意查收。

9 楼

谢了,大师!。。。。。。。。。。。

我来回复

您尚未登录,请登录后再回复。点此登录或注册