| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1642 人关注过本帖
标题:设计一个Student类。遇到蛮多问题的(SetInfo(形参表)函数可以修改学生的基 ...
只看楼主 加入收藏
kekin
Rank: 2
等 级:论坛游民
帖 子:59
专家分:85
注 册:2010-3-26
结帖率:83.33%
收藏
已结贴  问题点数:10 回复次数:8 
设计一个Student类。遇到蛮多问题的(SetInfo(形参表)函数可以修改学生的基本信息函数),还请前辈指教!
题目:
设计一个Student类
1.    基本信息:学号、姓名、出生日期、班级、专业;
其中:基本信息为private属性,成员函数为public属性;
2.Student类有多个构造函数:缺省构造函数、带参数的构造函数、带默认参数的构造函数
3.基本功能
    1)SetInfo(形参表)函数可以修改学生的基本信息函数,例如:班级、专业等;
    2)Show()函数显示学生信息。
*测试数据:
    学号:2009001 姓名:张立 出生日期:91/4/3 班级:09级3班   专业:会计
学号:2009002 姓名:李明 出生日期:91/5/6 班级:09级3班   专业:会计
学号:2009003 姓名:王波 出生日期:91/7/8 班级:09级3班   专业:会计
学号:2009004 姓名:陈伟 出生日期:91/1/2 班级:09级3班   专业:会计
*实验提示:1)注意带参数的构造函数和带默认参数的构造函数的声明与定义;
           2)当输入数据为不合理数据时,提示用户输入错误;
           3)可以让学号自动按输入顺序生成
           4)主程序建立一个有4个元素的Student对象数组,通过对象指针访问对象数组,使程序顺序显示对象数组的每个Student对象信息。
程序如下:(但不编译通过不了)请高手指点下!谢啦!
搜索更多相关主题的帖子: Student 函数 SetInfo 形参 前辈 
2010-05-15 13:55
kekin
Rank: 2
等 级:论坛游民
帖 子:59
专家分:85
注 册:2010-3-26
收藏
得分:0 
头文件(类):
class student  
{
    int n;
    long num;
    char name[10];
    char brith[10];
    char grate[10];
    char major[20];
public:
    student();
    student(int count);
    student(long number=0, char name[10]=0,char grade[10]=0, char brith[10]=0,char major[20]=0);
    void setinfor();
    void show();
    virtual ~student();

};
2010-05-15 13:56
kekin
Rank: 2
等 级:论坛游民
帖 子:59
专家分:85
注 册:2010-3-26
收藏
得分:0 
其他的函数:
#include "student.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

student::student()
{

}

student::student(int count)
{
    n=count;
}

student::student(long number, char na[10],char gra[10], char bri[10],char ma[20])
{

}

void student::setinfor()
{
    int i;
    cout<<"请按学号、姓名、年级(0901)、生日(**/**/**)专业顺序输入学生信息"<<endl;
    for(i=1;i<=n;i++)
    {
        cout<<"学生"<<i<<endl;
        cin>>stu.num>>stu.name>>stu.grate>>stu.brith>>stu.major;
    }
}

void student::show()
{
    int i;
    cout<<"输出学生信息:"<<endl;
    for(i=1;i<=n;i++)
    {
        cout<<"学生"<<i<<endl;
        cout<<"学号"<<stu.num<<"姓名"<<stu.name<<"年级"<<stu.grate<<"生日"<<stu.brith<<"专业"<<stu.major<<endl;
    }
}


student::~student()
{

}

main()
{
    student stu;
    student stu1(4);
    student stu2(2009001,"lihua");
    void setinfor();
    void show();
    return 0;
}
2010-05-15 13:57
kekin
Rank: 2
等 级:论坛游民
帖 子:59
专家分:85
注 册:2010-3-26
收藏
得分:0 
编译报错如下:请前辈解释下为什么?谢啦~~
student.cpp
E:\面向对象C++\student.cpp(33) : error C2065: 'stu' : undeclared identifier
E:\面向对象C++\student.cpp(33) : error C2228: left of '.num' must have class/struct/union type
E:\面向对象C++\student.cpp(33) : error C2228: left of '.name' must have class/struct/union type
E:\面向对象C++\student.cpp(33) : error C2228: left of '.grate' must have class/struct/union type
E:\面向对象C++\student.cpp(33) : error C2228: left of '.brith' must have class/struct/union type
E:\面向对象C++\student.cpp(33) : error C2228: left of '.major' must have class/struct/union type
E:\面向对象C++\student.cpp(44) : error C2228: left of '.num' must have class/struct/union type
E:\面向对象C++\student.cpp(44) : error C2228: left of '.name' must have class/struct/union type
E:\面向对象C++\student.cpp(44) : error C2228: left of '.grate' must have class/struct/union type
E:\面向对象C++\student.cpp(44) : error C2228: left of '.brith' must have class/struct/union type
E:\面向对象C++\student.cpp(44) : error C2228: left of '.major' must have class/struct/union type
E:\面向对象C++\student.cpp(56) : error C2668: 'student::student' : ambiguous call to overloaded function
2010-05-15 13:59
kekin
Rank: 2
等 级:论坛游民
帖 子:59
专家分:85
注 册:2010-3-26
收藏
得分:0 
最新发现:把
cin>>stu.num>>stu.name>>stu.grate>>stu.brith>>stu.major;
cout<<"学号"<<stu.num<<"姓名"<<stu.name<<"年级"<<stu.grate<<"生日"<<stu.brith<<"专业"<<stu.major<<endl;
这两句的“stu.”。
和注释掉“student stu;”这句就可以运行,但不能输入,只输出“printf any key to continue..”
恳请路过的前辈高手指点迷津,学生我将感激不尽!先谢啦!
2010-05-16 00:12
最近不在
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:204
专家分:842
注 册:2010-2-28
收藏
得分:4 
#include "student.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

student::student()
{

}

student::student(int count)   
{
    n=count;
}

student::student(long number, char na[10],char gra[10], char bri[10],char ma[20])
{

}

void student::setinfor()
{
    int i;      //我觉得不应该定义一个构造函数,就为了传入几个学生信息。可用cin>>n,来确定
    cout<<"请按学号、姓名、年级(0901)、生日(**/**/**)专业顺序输入学生信息"<<endl;
    for(i=1;i<=n;i++)
    {
        cout<<"学生"<<i<<endl;      //stu.XX是结构体调用成员的方法,你类定义里德私有成员声明,并不是结构,可以直接使用,无需要stu.
        cin>>stu.num>>stu.name>>stu.grate>>stu.brith>>stu.major;
    }
}

void student::show()
{
    int i;         
    cout<<"输出学生信息:"<<endl;
    for(i=1;i<=n;i++)
    {
        cout<<"学生"<<i<<endl;
        cout<<"学号"<<stu.num<<"姓名"<<stu.name<<"年级"<<stu.grate<<"生日"<<stu.brith<<"专业"<<stu.major<<endl;
    }
}


student::~student()
{

}

main()
{
    student stu;   //这里无需stu,没作用
    student stu1(4);  
    student stu2(2009001,"lihua");  //照你原有的意思应该还是stu1,应该与上面是同一对象,同一对象,调用不同成员函数。好像有点混乱
    void setinfor();  //这里无需void,声明定义时要加上返回类型
    void show();
    return 0;
}

//造成无法输入的原因的原意,你调用你用stu1初始化n = 4;确用stu初始化成员信息,下面你使用类成员函数,要通过对象调用。
//建议整理下,重写一个。感觉有点乱。如果你想通过stu.XX,就在类定义里声明一个结构体
收到的鲜花
  • kekin2010-05-16 11:23 送鲜花  2朵  
2010-05-16 10:56
kekin
Rank: 2
等 级:论坛游民
帖 子:59
专家分:85
注 册:2010-3-26
收藏
得分:0 
可是题目要求:Student类有多个构造函数:缺省构造函数、带参数的构造函数、带默认参数的构造函数。
这个怎么实现?
2010-05-16 11:39
最近不在
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:204
专家分:842
注 册:2010-2-28
收藏
得分:6 
student stu1();
student .....;
student *stu[4] = {&stu1,.......}
for() stu[i]->output()....

Student(int n = 4.........);
Student::()
{
    m_n = 0......
}
Student::(int n....)
{
    m_n = n;........
}
//Student::(Student &r)
2010-05-16 12:08
kekin
Rank: 2
等 级:论坛游民
帖 子:59
专家分:85
注 册:2010-3-26
收藏
得分:0 
回复 8楼 最近不在
别弄那么多省略号行吗?我是初学者,越看越晕呀!
2010-05-16 13:02
快速回复:设计一个Student类。遇到蛮多问题的(SetInfo(形参表)函数可以修改学生 ...
数据加载中...
 
   



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

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