当前位置:编程学习 > C/C++ >>

用C++编写程序。

题目:对现实中的学生实体进行抽象并定义学生类。该类应包含学生个人的基本信息,如姓名、年龄、性别、学号、专业、班级等。还应包含学生的三门考试成绩信息。为该类设计函数成员,通过成员函数来对数据成员进行操纵,例如设置数据成员的值、将数据成员的值进行输出,求三门成绩的平均分等。在主函数中定义该类的对象,并使用该对象,例如求某学生的考试平均分并输出。

答案:

#include <iostream>
#include <cstring>
using namespace std;


class Student
{
 // 封装一个对象属性
 struct Attribute
 {
  string name;    // 姓名
  string  age;    // 年龄
  string sex;     // 性别
  string s_id; // 学号
  string prof;    // 专业
  string klass;   // 班级
};
 public:
  // 默认构造函数
  Student() :obj(Attribute()),math(0),chinese(0),english(0) {}  // 初始化各成员
  // 赋值构造函数 本想把属性外置而减少参数传递
  //但看你题目需要通过成员赋值 所以就这么做了
  Student(const string & name,const string &age,const string & sex,
       const string & s_id,const string & prof,const string & klass,
    double mt = 0,double chs = 0,double eng = 0)  
  {// 属性项为必填 3主课分数可以使用默认 可以通过以下成员函数修改
   obj.name = name;
   obj.age = age;
   obj.sex = sex;
   obj.s_id = s_id;
   obj.prof = prof;
   obj.klass = klass;
   math = mt;
   chinese = chs;
   english = eng;
  }
        // 修改主课分数
  void ModMark(double mt,double chs,double eng)
  {
   math = mt;
   chinese = chs;
   english = eng;
  }
  // 修改属性项
  void ModAttribute(const string & name,const string &age,const string & sex,
                 const string & s_id,const string & prof,const string & klass)
  {
   obj.name = name;
   obj.age = age;
   obj.sex = sex;
   obj.s_id = s_id;
   obj.prof = prof;
   obj.klass = klass;
  }
  void Print()
  {
   cout << "Name: " << obj.name.c_str();
   cout << " Age: " << obj.age.c_str();
   cout << " Sex: " << obj.sex.c_str();
   cout << " ID: "  << obj.s_id.c_str();
   cout <<" Professional: " << obj.prof.c_str();
   cout << " Class: " << obj.klass.c_str()<< "\n";
   cout << "Chinese: " << chinese<< "\nMath: " << math << "\nEnglish: " << english << endl;
  }
  // 平均分数
  void AvgMark()
  {
   cout << "Average mark: " << (math + chinese + english) / 3 << endl;
  }
 private:
  Attribute obj;
  // 3个主课分数
  double   math;
  double   chinese;
  double   english;
};

int main(int argc, char* argv[])
{
 // 两种不同赋值
 Student st("小强","1","不明","888","编程","强强",99,88.5,77.5);
 Student sd,sc;
 sd = Student("小明","2","不明","999","编程","明明");
 sc = sd;
 sd.ModMark(99.5,88,88.5);
 st.Print();
 st.AvgMark();
 sd.Print();
 sd.AvgMark();
 sc.ModAttribute("张辽","28","男","++","长枪","步弓手");
 sc.ModMark(99,99,99);
 sc.Print();
 sc.AvgMark();
 return 0;
}

呵呵,有点困了。所以写的不是很规范,稍作修改即可::

 


#include<iostream>
#include<string>
using namespace std;
class Student
{
public:
 Student(string na,int a,char s,int n,string mj,string bj,float c1,float c2,float c3):name(na),age(a),sex(s),num(n),major(mj),banji(bj),cj1(c1),cj2(c2),cj3(c3){}
 int display();
 float average();
private:
 string name;
 int age;
 char sex;
 int num;
 string major;
 string banji;
 float cj1;
 float cj2;
 float cj3;
};
int Student::display()
{
 cout<<name<<" "<<age<<" "<<sex<<" "<<num<<" "<<major<<" "<<banji<<cj1<<" "<<cj2<<" "<<cj3<<endl;
 return 0;
}
float Student::average()
{
 return((cj1+cj2+cj3)/3);
}
int main()
{
 Student a[2]={
  Student("XXX",20,'n',11,"23","34",30,30,60),
  Student("XXX",21,'n',12,"34","45",50,50,50)
 };
 cout<<a[0].display()<<a[0].average()<<endl;
 cout<<a[1].display()<<a[1].average()<<endl;
 return 0;
}

 

 

class studentClass
{
public:
 studentClass(char *name,char *StuNo,char *major = NULL,UCHAR age =0,bool sxe = TRUE,UINT grade =3);
 void setObject(float o1 = 60,float o2 = 60,float o3 =60 );//设置科目分数
 float getAvg();//获取平均值
private:
 char m_cStuName[32]; //姓名
 char m_cStuNo[32]; //学号
 char m_cStuMajor[32];//专业
 UCHAR m_UStuAge;  //年龄
 bool m_bStuSex;  //性别
 UINT m_iStuGrade; //年级
 float m_fObject1;  //科目1
 float m_fObject2;
 float m_fObject1;

};

上一个:如何学好C++?
下一个:c++的小问题

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,