C++程序设计大作业(含源代码)

  • 格式:doc
  • 大小:52.00 KB
  • 文档页数:11

面向对象程序设计大作业姓名:叶尔凯西学院(系):计科系班级:计科系07-1班学号:设计本程序的目的:关于一些并不太复杂的集体来说,一般需要管理集体中的每个人的基本信息的,本程序专门为一些在校学生的基本信息的管理而设计的,主要目的是通过本程序来实现简单的记录和查找学生的基本信息;程序功能简介:本程序是通过面向对象的最重要的特点“类”来设计出来的,其功能是实现简单的学生基本信息管理。

包括一些要求用户从键盘输入(记录)学生的基本信息、输出学生的基本信息和用学生的学号来查找学生信息表中的某个学生的基本信息等功能;程序功能的详细介绍:本人设计程序时考虑到的很所内容,其中输入输出学生的基本信息是最基本的功能。

下面来给大家介绍程序的核心类的构建:①在程序中共建立了两种类,分别是person类和student类。

person作为student类的基类,其内部是如下设计的:class person{public:void SetPersonAddress(char *AddressFromMain);void ShowPersonSex();void ShowPersonAddress();private:char Address[25];char Sex[2];};可以看到,在上面分别声明了四个成员函数和两个数据成员。

四个成员函数的作用是对私有数据成员进行访问(包括输入和输出)。

所以当建立了一个person类之后就可以通过它的对象来访问该类的数据成员。

下面分别说明每一个成员函数的具体定义:(1)设置(输入)人地址的成员函数:void person::SetPersonAddress(char *AddressFromMain){strcpy(Address,AddressFromMain);}通过strcpy把字符指针的内容送入person类中的数据成员Address。

(2)设置(输入)人性别的成员函数:void person::SetPersonSex(char *SexFromMain){strcpy(Sex,SexFromMain);}通过strcpy把字符指针SexFromMain的内容作为地址的存储单元中的内容送入person类中Sex数据成员。

(3)输出地址成员函数:void person::ShowPersonAddress(){cout<<Address<<endl;}输出person类中的Address数据成员的内容;(4)输出性别的成员函数:void person::ShowPersonSex(){cout<<Sex<<endl;}输出person类中的Sex数据成员的内容;②接下来就是person基类的派生类student类的内部设计如下:class student: public person{public:void SetStudentInformation(char*NameFromMain,char *StudentAddressFromMain,char *StudentSexFromMain,char *StudentNumberFromMain, int *score);void ShowStudentInformation();friend void FindStudentNumber(student *data);friend void FindStudentName(student *data);private:intMathResult,EnglishResult,CResult,CompilationLanguageResult,DigitalLogicResult,MarksismResu lt;char StudentNumber[25];char Name[25];float Average;int total;};当设计student派生类的时候,最主要的特点就是利用了“类”的一个特点继承。

(public),下面来给大家介绍student类的内部构造:①成员函数共有设置(输入)学生信息、输出学生信息等两个。

还有一个非成员函数的一个函数,它为该student类的友元函数,其功能是实现查找。

除此之外还有从基类person类继承下来的一些成员函数;②数据成员分别为整形变量的学生成绩(包括数学成绩、英语成绩、C++成绩、汇编语言成绩、数字逻辑成绩、马克思哲学成绩等),字符数组的学生学号和学生姓名以及整型变量的学生的总分和单精度变量的平均分;下面介绍student派生类中的各个成员函数的定义部分:设置(输入)学生信息的成员函数:Void student::SetStudentInformation(char*NameFromMain,char*StudentAddressFromMain,char* StudentSexFromMain,char *StudentNumberFromMain, int *score){strcpy(Name,NameFromMain);SetPersonAddress(StudentAddressFromMain);SetPersonSex(StudentSexFromMain);strcpy(StudentNumber ,StudentNumberFromMain);for(int i=0; i<6; i++){switch(i){case 0:MathResult=score[0];case 1:EnglishResult=score[1];case 2:CResult=score[2];case 3:CompilationLanguageResult=score[3];case 4:DigitalLogicResult=score[4];case 5:MarksismResult=score[5];}}total=MathResult+EnglishResult+CResult+CompilationLanguageResult+DigitalLogicResult+Ma rksismResult;Average=total/6.0;}可以看到在设计student类的输入成员函数时其内部同时调用了从基类继承下来的一些成员函数,这就是继承的特点。

下面将会详细地介绍该成员函数的功能:首先是student类的两个字符数组变量学生姓名和学生学号的赋值通过strcpy来直接实现,也就是可通过该类的成员函数来给数据成员赋值。

还有两个数据成员是不能够被继承下来的基类的两个字符数组学生性别和家庭地址,它们是通过student派生类的成员函数中调用从基类person中继承下来的成员函数,从而改变对不能被继承下来的基类的数据成员赋值。

接着就是对student类中自己的数据成员学生成绩的赋值,它们是通过一个简单的switch case语句来实现的。

输出学生信息的成员函数:void student::ShowStudentInformation(){cout<<endl;cout<<"学生的基本信息如下: "<<endl<<endl;cout<<"学生的姓名: "<<Name<<endl<<endl;;cout<<"学生的学号为: "<<StudentNumber<<endl<<endl;cout<<"学生的家庭地址为: ";ShowPersonAddress();cout<<endl;cout<<"学生的性别为: ";ShowPersonSex();cout<<endl;cout<<"学生的考试课程成绩如下: "<<endl<<endl;cout<<"学生的离散数学课程成绩为: "<<MathResult<<"分"<<endl<<endl;cout<<"学生的英语课程成绩为: "<<EnglishResult<<"分"<<endl<<endl;cout<<"学生的C++课程成绩为: "<<CResult<<"分"<<endl<<endl;cout<<"学生的汇编语言课程成绩为: "<<CompilationLanguageResult<<"分"<<endl<<endl;cout<<"学生的数字逻辑课程成绩为: "<<DigitalLogicResult<<"分"<<endl<<endl;cout<<"学生的马克思主义哲学课程成绩为: "<<MarksismResult<<"分"<<endl<<endl;cout<<"学生的总分为:"<<total<<"分"<<endl<<endl;cout<<"学生的平均分为:"<<Average<<"分"<<endl<<endl;}输出学生信息的成员函数的定义中不难发现输出时不仅会输出student派生类自己的数据成员的值还会同时输出不能被继承下来的基类person中的数据成员的值。

这显然只能通过继承下来的成员函数来实现(如ShowPersonAddress()和ShowPersonSex())。

下面来介绍三个非成员函数,其中两个为student类的友元函数。

它就是实现查找功能的(分别用学生学号和学生姓名来进行查找),另一个是一个单独的普通函数。

其功能是当程序运行时保持一个用户界面的功能。