C++设计实例-----毕业生收入预测分析系统

来源:互联网 发布:0基础学美工 编辑:程序博客网 时间:2024/05/01 21:36

本设计主要是用C++编程来实现每类学生的预期工资和预期奖金的分类,以三类学生为例,每类学生的预期工资和预期奖金可以是各不相同的。这三类学生分别为本科生、硕士生、博士生。先用基类来定义本科生,然后用继承的方法来定义硕士生和博士生,共用四个虚函数,并调用基类的构造函数,最后输出每类学生的预期工资和预期奖金。

算法

用define函数进行宏定义,把学生的预期奖金和预期工资用标识符表示出来,

S_Salary取值为1000     G_Salary取值为2000       D_Salary取值为3000

S_Rewards取值为200  G_Rewards取值为200    D_Rewards取值为400

 

定义一个基类CStudent

{

受保护成员变量:

grade  为double型变量

Name  为长度20的字符数组

Age   为double型变量

公有成员方法:

定义一个含有两个参数(char和double型)的构造函数CStudent

{对成员变量grade 和Name进行赋值}

定义返回值为double的成员函数getGrade

{返回整型变量grade}

定义返回指针值的成员函数GetName

{返回字符数组Name}

定义返回值为double型的成员函数getage

{返回整型变量Age}

定义返回值为double型的虚函数Caculate

{返回为grade与S_Salary的乘积}

定义返回值为double型的虚函数Rewards

{返回值为S_Rewards}

}

 

定义一个子类CGraduateStudent,公有继承基类CStudent

{

公有成员方法:

定义一个含有两个参数(char和double型)的构造函数CGraduateStudent

{调用基类的构造函数CStudent}

重新定义返回值为double型虚函数Caculate

{返回为grade与G_Salary的乘积

重新定义返回值为double型虚函数Rewards

{返回值为G_Rewards}

}

 

定义一个子类CDoctorStudent,公有继承基类CStudent

{

公有成员方法:

定义一个含有两个参数(char和double型)的构造函数CDoctorStudent

{调用基类的构造函数CStudent}

重新定义返回值为double型虚函数Caculate

{返回为grade与D_Salary的乘积

重新定义返回值为double型虚函数Rewards

{返回值为D_Rewards}

}

 

空类型主函数main

{

定义基类的指针变量temp

定义基类的对象s1,并使化

定义派生类CGraduateStudent的对象s2,并使化

定义派生类CDoctorStudent的对象s3,并使化

用temp来指向对象s1

调用GetName函数来输出学生姓名

调用Caculate函数来输出本科生预期工资

调用Rewards函数来输出本科生预期奖金

用temp来指向对象s2

调用GetName函数来输出学生姓名

调用Caculate函数来输出硕士生预期工资

调用Rewards函数来输出硕士生预期奖金

用temp来指向对象s3

调用GetName函数来输出学生姓名

调用Caculate函数来输出博士生预期工资

调用Rewards函数来输出博士生预期奖金

}

 

 

 

 

 

 

 

 

三、       程序

#include <iostream>       //头文件

#include <string.h>

using namespace std;

#define S_Salary  1000      //用define函数对标识符进行宏定义

#define G_Salary  2000

#define D_Salary  3000

#define S_Rewards  200

#define G_Rewards  200

#define D_Rewards  400

class CStudent                  //定义基类CStudent

{

 protected:                    //定义受保护成员

 double Wyear;

 charName[20];             //定义一个字符数组Name长度为20

 double a;

 double Age;

  public:                      //定义公有成员

    CStudent(char *name,double w,double age)   //定义含有两个参数的构造函数CStudent

 {

  strcpy_s(Name,name);       //将字符串name复制给字符数组Name

   Wyear=w;

   Age=age;

 }

    doublegetWyear()              //定义基类成员函数getWyear

 {

   return Wyear;

 }

            doublegetage()

 {

             return Age;

  }

 char*GetName()           //定义返回指针值的基类成员函数GetName

 { return Name;}

 virtual doubleCaculate()       //定义虚函数Caculate

 { returnWyear*S_Salary;}

 virtual doubleRewards()       //定义虚函数Rewards

 { returnS_Rewards*(Wyear-0.6);}

 virtual voidlevel()

 {a=Wyear*S_Salary;

   if(500<a&&a<1500)

            cout<<"分析此学生收入偏低"<<endl;

   else if  (1500<a&&a<2500)

            cout<<"分析此学生收入中等"<<endl;

   else if(2500<a&&a<3500)

   cout<<"分析此学生收入较高"<<endl;

   else if(a&&a<500)

   cout<<"分析此学生收入过低"<<endl;

   else

            cout<<"分析此学生收入高"<<endl;

 }

   virtual voiddevelopment()

 {  a=Wyear*S_Salary;

  if(Age<28&&500<a&&a<1500)

   cout<<"分析此学生发展潜力大"<<endl;

   else if(Age<28&&1500<a&&a<2500)

            cout<<"分析此学生发展潜力较大"<<endl;

   else if(Age>28&&500<a&&a<1500)

   cout<<"分析此学生发展潜力较小"<<endl;

   else if(Age>28&&1500<a&&a<2500)

   cout<<"分析此学生发展潜力小"<<endl;

   else

            cout<<"分析此学生发展潜力中等"<<endl;

 }

 };

class CGraduateStudent:public CStudent 

//定义CStudent类的子类CGraduateStudent,公有继承

 {

  public:

    CGraduateStudent(char *name,double Wyear,double age):CStudent(name,Wyear,age)

  //定义派生类的构造函数CGraduateStudent,调用基类的构造函数CStudent

  {   }

  doubleCaculate()    //重新定义虚函数Caculate

  { returnWyear*G_Salary;}

        doubleRewards()    //重新定义虚函数Rewards

     { returnG_Rewards*(Wyear-0.6);}

                        voidlevel()

  { a=Wyear*G_Salary;

   if(500<a&&a<1500)

            cout<<"分析此学生收入偏低"<<endl;

   else if  (1500<a&&a<2500)

            cout<<"分析此学生收入中等"<<endl;

   else if(2500<a&&a<3500)

   cout<<"分析此学生收入较高"<<endl;

   else if(a&&a<500)

   cout<<"分析此学生收入过低"<<endl;

   else

            cout<<"分析此学生收入高"<<endl;

 }

            voiddevelopment()

 {  a=Wyear*G_Salary;

  if(Age<28&&500<a&&a<1500)

   cout<<"分析此学生发展潜力大"<<endl;

   else if(Age<28&&1500<a&&a<2500)

            cout<<"分析此学生发展潜力较大"<<endl;

   else if(Age>28&&500<a&&a<1500)

   cout<<"分析此学生发展潜力较小"<<endl;

   else if(Age>28&&1500<a&&a<2500)

   cout<<"分析此学生发展潜力小"<<endl;

   else

            cout<<"分析此学生发展潜力中等"<<endl;

 }

 };

class CDoctorStudent: public CStudent 

//定义CStudent类的子类CDoctorStudent,公有继承

  {

 public:

     classCDoctorStudent(char *name,double Wyear,double age):CStudent(name,Wyear,age)

          //定义派生类的构造函数CDoctorStudent,调用基类的构造函数CStudent

     {   }

          double Caculate()          //重新定义虚函数Caculate

      { returnWyear*D_Salary;}

        doubleRewards()          //重新定义虚函数Rewards

          {return D_Rewards*(Wyear-0.6);}

                        voidlevel()

  {a=Wyear*D_Salary;

   if(500<a&&a<1500)

            cout<<"分析此学生收入偏低"<<endl;

   else if  (1500<a&&a<2500)

            cout<<"分析此学生收入中等"<<endl;

   else if(2500<a&&a<3500)

   cout<<"分析此学生收入较高"<<endl;

   else if(a&&a<500)

   cout<<"分析此学生收入过低"<<endl;

   else

            cout<<"分析此学生收入高"<<endl;

 }

            voiddevelopment()

 {  a=Wyear*D_Salary;

  if(Age<28&&500<a&&a<1500)

   cout<<"分析此学生发展潜力大"<<endl;

   else if(Age<28&&1500<a&&a<2500)

            cout<<"分析此学生发展潜力较大"<<endl;

   else if(Age>28&&500<a&&a<1500)

    cout<<"分析此学生发展潜力较小"<<endl;

   else if(Age>28&&1500<a&&a<2500)

   cout<<"分析此学生发展潜力小"<<endl;

   else

            cout<<"分析此学生发展潜力中等"<<endl;

 }

 };

 voidmain()   //定义主函数

 {

  cout<<" 学生预期的收入情况如下"<<endl;

   CStudents1("wang",3,30),*temp;

  CGraduateStudent s2("zhang",1,29);

  CDoctorStudent s3("li",1,27);

   CStudents4("huang",1,27);

  CDoctorStudent s5("den",1,35);

  temp=&s1;   //指向基类CStudent的象

  cout<<"姓名\t"<<temp->GetName();

     cout<<"\t工作年数\t"<<temp->getWyear() ;

            cout<<"\t学生年龄\t"<<temp->getage();

  cout<<"\t本科毕业生\t月薪\t";

  cout<<temp->Caculate();  //调用Caculate函数,输出本科毕业生月薪

   cout<<"\t\t年终奖金\t";

  cout<<temp->Rewards()<<endl;    //调用Rewards函数,输出本科毕业生年终奖金

   s1.level();

  s1.development();

  temp=&s2;                    //指向派生类CGraduateStudent的对象

  cout<<"姓名\t"<<temp->GetName();

  cout<<"\t工作年数\t"<<temp->getWyear() ;

  cout<<"\t学生年龄\t"<<temp->getage() ;

  cout<<"\t硕士毕业生\t月薪\t";

  cout<<temp->Caculate();   //调用Caculate函数,输出硕士毕业生月薪

   cout<<"\t\t年终奖金\t";

  cout<<temp->Rewards()<<endl;    //调用Rewards函数,输出硕士毕业生年终奖金

   s2.level();

  s2.development();

      temp=&s3;                   //指向派生类CDoctorStudent的对象

  cout<<"姓名\t"<<temp->GetName();

  cout<<"\t工作年数\t"<<temp->getWyear() ;

  cout<<"\t学生年龄\t"<<temp->getage() ;

  cout<<"\t博士毕业生\t月薪\t";

  cout<<temp->Caculate();  //调用Caculate函数,输出博士毕业生月薪

   cout<<"\t\t年终奖金\t";

  cout<<temp->Rewards()<<endl;   //调用Rewards函数,输出博士毕业生年终奖金

   s3.level();

  s3.development();

   temp=&s4;

  cout<<"姓名\t"<<temp->GetName();

  cout<<"\t工作年数\t"<<temp->getWyear() ;

  cout<<"\t学生年龄\t"<<temp->getage() ;

  cout<<"\t本科毕业生\t月薪\t";

  cout<<temp->Caculate();

  cout<<"\t\t年终奖金\t";

  cout<<temp->Rewards()<<endl;

   s4.level();

  s4.development();

   temp=&s5;

   cout<<"姓名\t"<<temp->GetName();

     cout<<"\t工作年数\t"<<temp->getWyear() ;

            cout<<"\t学生年龄\t"<<temp->getage();

  cout<<"\t本科毕业生\t月薪\t";

  cout<<temp->Caculate();  //调用Caculate函数,输出本科毕业生月薪

   cout<<"\t\t年终奖金\t";

  cout<<temp->Rewards()<<endl;    //调用Rewards函数,输出本科毕业生年终奖金

   s5.level();

   s5.development();

   while(1);

 }

总结

C++语言是一种优秀的面向对象的程序设计语言,它是在C语言的基础上发展起来的一种新型的编程语言。通过对C++语言的学习,我们可以解决很多的实际问题,就拿本题来说,它可以通过来解决每类学生预期收入和奖金的分类,这只是它其中的一个小小的用途,我们还可以用它来输出N类学生的信息的分类 ,如N个学生的M门科目的成绩,个人资料等,还可以用来设计各种窗口,网页等方面的问题。经过一段时间C++的学习,我感觉自己学到了很多,当然了,要学得更好,就得花更多的时间来研究它,而且它在日后的学习中将会有更大的用途。C++语言学的好与不好,很大程序上取决于上机编程,因此,我们应该在这方面加强,从而提高自己的C++语言的水平。

0 0
原创粉丝点击