设计一个学生管理系统,要求如下:
1.学生来自英语系,数学系、计算机系,每个学生的公共信息部包括:学号、姓名、年龄、系别,高数成绩、英语成绩、体育成绩;英语系学生有综合英语、口语等课程成绩;数学系学生有实变函数、泛函分析、微分几何等课程成绩;计算机系学生有计算机组成原理、计算机体系结构、汇编语言等课程成绩。每个学生可以查询相应信息(学号、姓名、年龄、系别及成绩信息);可以各门课程的平均成绩。用类及类的派生实现上述功能,要求使用类的集成、虚函数、虚基类的C++语言特性;要求每个类采用不同的方式实现构造函数;
2.设计一个学生管理类,其中包含可变学生数目,要求实现:1)初始化,所有学生的信息组织以链表方式实现;2)实现指定学生的信息查询(如利用学号、姓名等方式);3)按照公共课平均成绩排序;//4)按照学生所有课程的平均成绩排序;5)增加学生;6)删除指定学生。
3.注意构造函数和析构函数的实现方式。每个类的申明需放在单独的头文件中(即一个类的申明放在一个后缀名为h的文件中),每个类的实现放在一个单独的cpp文件中。测试程序(即包含main函数的程序)单独放在一个cpp文件中。
/*Student.h*/
#pragma once
#include<string.h>
using namespace std;
#include<string>
class Student
{
public:
//ID age name math english sport 专业 是子类都具有的 所以就在基类中声明
int ID;
int age;
string major = "1";
char name[20];
float math, english, sport;
Student *next; //链表指针
//一下get函数 因为子类的专业不同 所以实现的方式不同 声明虚函数 在子类中实现
virtual float get_shi_bian_fun();
virtual float get_fan_han_fen_xi() ;
virtual float get_wei_fen_jihe();
virtual float get_zonghe_english();
virtual float get_spoken_english();
virtual float get_zu_cheng_yuanli();
virtual float get_ti_xi_jie_gou();
virtual float get_hui_bian();
virtual string get_major();
//因为每个子类遍历的东西也不同 所以遍历函数也要为虚函数 在子类中以不同的方式来实现
virtual void traverse(Student *t);
virtual float get_main_average();//取平均数也一样,返回平均成绩
virtual float get_average_score();
virtual void change(); //每个成员的科目不一样,需要修改的东西也不一样
Student();
virtual ~Student();
};
/*Student.cpp
/*Math_Student.h*/
#pragma once
#include "Student.h"
#include <string>
class Math_Student :
public Student
{
public:
//特有的科目成员 都声明为float
float shi_bian_fun;
float fan_han_fen_xi;
float wei_fen_jihe;
string major = "Math_Student";//专业直接初始化
Math_Student();
~Math_Student();
//get函数 方便在manage类里面拿到数据信息
float get_shi_bian_fun();
float get_fan_han_fen_xi() ;
float get_wei_fen_jihe() ;
float get_main_average();
float get_average_score();
string get_major();
//遍历信息
void traverse(Student *t);
void change(); //修改信息
};
/*Math_Student.cpp*/
#include "Math_Student.h"
#include<iostream>
#include"string.h"
using namespace std;
Math_Student::Math_Student()
{
cout << "请输入学生信息:" << endl;
cout << "age:" << endl;
cin >> age;
getchar();
cout << "name:";
cin >> name;
getchar();
cout << "ID:" << endl;
cin >> ID;
getchar();
cout << "sport_score:" << endl;
cin >>sport;
getchar();
cout << "math_score:" << endl;
cin >> math;
getchar();
cout << "english_score" << endl;
cin >> english;
getchar();
cout << "shi_bian_fun_score" << endl;
cin >>shi_bian_fun;
getchar();
cout << "fan_han_fen_xi_score" << endl;
cin >>fan_han_fen_xi;
getchar();
cout << "wei_fen_jihe_score" << endl;
cin >>wei_fen_jihe;
getchar();
cout << "录入成功!" << endl;
}
Math_Student::~Math_Student()
{
}
void Math_Student::change() {
cout << " 实变函数:" << endl;
cin >> shi_bian_fun;
getchar();
cout << " 泛函分析:" << endl;
cin >> fan_han_fen_xi;
getchar();
cout << " 微分几何:" << endl;
cin >> wei_fen_jihe;
getchar();
}
void Math_Student::traverse(Student *t) {
//公共的信息修改 在 manage 里面 这里来到类里面来修改特有的信息
cout << "学生信息为:" << endl
<< " 学号:" << t->ID << " 姓名:" <<name << " 年龄:" <<age << " 专业:" <<major << endl
<<"公共课成绩:"<<endl
<< " 数学:" <<math << " 英语:" <<english << " 体育:" << sport << endl
<< "专业课成绩:"<<endl
<<" 实变函数:"<<t->get_shi_bian_fun()<<" 泛函分析:"<<t->get_fan_han_fen_xi()<<" 微分几何:"<<t->get_wei_fen_jihe()<<endl
<<endl;
}
float Math_Student::get_main_average() {
return ((math + english + sport) / 3.0);
}
float Math_Student::get_average_score() {
float av = 0;
av += math; av += sport; av += english, av += shi_bian_fun, av += fan_han_fen_xi, av += wei_fen_jihe;
return (av / 6.0);
}
float Math_Student:: get_shi_bian_fun() {
return shi_bian_fun;
}
float Math_Student ::get_fan_han_fen_xi() {
return fan_han_fen_xi;
}
float Math_Student::get_wei_fen_jihe() {
return wei_fen_jihe;
}
string Math_Student::get_major() {
return major;
}
;
/*English_Student.h*/
#pragma once
#include "Student.h"
#include <string>
class English_Student :
public Student
{
public:
//特有成员变量
float zonghe_english;
float spoken_english;
string major = "English_Student";
English_Student();
~English_Student();
float get_zonghe_english();
float get_spoken_english();
string get_major();
float get_main_average();
void change();
void traverse(Student *t);
float get_average_score();
};
/*English_Student.cpp*/
#include "English_Student.h"
#include<iostream>
#include"string.h"
using namespace std;
English_Student::English_Student()
{
cout << "age:" << endl;
cin >> age;
getchar();
cout << "name:";
cin >> name;
getchar();
cout << "ID:" << endl;
cin >> ID;
getchar();
cout << "sport_score:" << endl;
cin >> sport;
getchar();
cout << "math_score:" << endl;
cin >> math;
getchar();
cout << "english_score" << endl;
cin >> english;
cout << "zonghe_english_score" << endl;
cin >> zonghe_english;
cout << "spoken_english_score" << endl;
cin >> spoken_english;
getchar();
cout << "录入成功!" << endl;
}
English_Student::~English_Student()
{
}
void English_Student::change() {
//公共的信息修改 在 manage 里面 这里来到类里面来修改特有的信息
cout << " 综合英语:" << endl;
cin >> zonghe_english;
cout << " 口语英语:" << endl;
cin >> spoken_english;
getchar();
}
void English_Student:: traverse(Student *t) {
//因为实在 类里面 可以直接访问到数据
//输出的信息 分了 几行 便于好看
cout << "学生信息为:" << endl
<< " 学号:" << ID << " 姓名:" << name << " 年龄:" << age << " 专业:" << major << endl
<<"公共课成绩:"<<endl
<< " 数学:" << math << " 英语:" << english << " 体育:" << sport << endl
<< "专业课成绩:" <<endl
<<" 综合英语:"<< t->get_zonghe_english() << " 口语英语:" << t->get_spoken_english() <<endl
<<endl;
}
float English_Student::get_average_score() {
float av = 0.0; //来求和 在类里面 可以访问到数据
av += math; av += sport; av += english;
av += zonghe_english; av += spoken_english;
return (av / 5.0) ; //返回平均分 /5.0 为float
}
float English_Student::get_main_average() {
//直接返回 公共课平均分 为float
return ((math + english + sport) / 3.0);
}
float English_Student::get_zonghe_english() {
return zonghe_english; //返回综合英语的分
}
float English_Student::get_spoken_english() {
return spoken_english;//返回口语英语的分
}
string English_Student::get_major() {
return major; //返回专业 为string
}
;
/*IT_Student.h*/
#pragma once
#include "Student.h"
#include <string>
class IT_Student :
public Student
{
public:
//特有科目成员变量
float zu_cheng_yuanli;
float ti_xi_jie_gou;
float hui_bian;
string major = "IT_Student";
//一系列get函数 返回float
float get_zu_cheng_yuanli();
float get_ti_xi_jie_gou();
float get_hui_bian();
float get_average_score();
float get_main_average();
string get_major();
IT_Student();
~IT_Student();
void traverse(Student *t);
void change();
};
/*IT_Student.cpp*/
#include "IT_Student.h"
#include<iostream>
#include"string.h"
using namespace std;
IT_Student::IT_Student()
{
cout << "age:" << endl;
cin >> age;
getchar();
cout << "name:";
cin >> name;
getchar();
cout << "ID:" << endl;
cin >> ID;
getchar();
cout << "sport_score:" << endl;
cin >> sport;
getchar();
cout << "math_score:" << endl;
cin >> math;
getchar();
cout << "english_score" << endl;
cin >> english;
cout << "zu_cheng_yuanli_score" << endl;
cin >> zu_cheng_yuanli;
cout << "ti_xi_jie_gou_score" << endl;
cin >> ti_xi_jie_gou;
cout << "hui_bian_score" << endl;
cin >> hui_bian;
getchar();
cout << "录入成功!" << endl;
}
IT_Student::~IT_Student()
{
}
void IT_Student::change() {
//公共的信息修改 在 manage 里面 这里来到类里面来修改特有的信息
cout << " 组成原理:" << endl;
cin >> zu_cheng_yuanli;
cout << " 体系结构:" << endl;
cin >> ti_xi_jie_gou;
cout << " 汇编语言:" << endl;
cin >> hui_bian;
getchar();
}
float IT_Student::get_main_average() {
return ((math + english + sport) / 3.0);
}
void IT_Student::traverse(Student *t) {
//因为实在 类里面 可以直接访问到数据
//输出的信息 分了 几行 便于好看
cout << "学生信息为:" << endl
<< " 学号:" << ID << " 姓名:" << name << " 年龄:" << age << " 专业:" << major << endl
<<"公共课成绩:"<<endl
<< " 数学:" <<math << " 英语:" << english << " 体育" << sport << endl
<< "专业课成绩: "<<endl
<<" 组成原理:"<< t->get_zu_cheng_yuanli() << " 体系结构:" << t->get_ti_xi_jie_gou() <<" 汇编语言:"<<t->get_hui_bian()<< endl
<<endl;
}
float IT_Student::get_average_score() {
float av = 0;
av += math; av += sport; av += english;
av += zu_cheng_yuanli; av += ti_xi_jie_gou; av += hui_bian;
return (av / 6.0);
}
float IT_Student::get_zu_cheng_yuanli() {
return zu_cheng_yuanli;
}
/*main.cpp*/
**#include "manage_student.h"
#include "Student.h"
#include<iostream>
#include "Math_Student.h"
#include "IT_Student.h"
#include "English_Student.h"
using namespace std;
/*void traverse(Student *head) {
int index = 1; // 用于计数第几个学生
Student *temp = head;
while (temp != NULL) { //同样一直到后面没有地址结束
cout << temp->math;
temp = temp->next;
}
}*/
void menu(Student *head,manage_student Chead) {
int m = 0;
int ID = 0;
int conter = 0;
while (1) {
cout << " ***************请选择您需要的操作:****************" << endl;
cout << " * 1. 增加学生信息 *" << endl;
cout << " * 2. 删除学生信息 *" << endl;
cout << " * 3. 修改学生信息 *" << endl;
cout << " * 4. 按学号ID查询 *" << endl;
cout << " * 5. 查询某位学生的平均分 *" << endl;
cout << " * 6. 某个学生的三科平均成绩 *" << endl;
cout << " * 7. 按公共课平均分从高到低排序 *" << endl;
cout << " * 8. 遍历学生信息 *" << endl;
cout << " * 9. 结束功能并把信息写入文件中 *" << endl;
cout << " * 0. 退出程序 *" << endl;
cout << " ***************************************************" << endl;
rewind(stdin);
cin >> m;
if (m >=0 && m < 10) {
switch (m) {
case 1: Chead.append_student(head); break;
case 2: {cout << "要删除学生信息的学号:";
cin >> ID;
head = Chead.delete_student(head, ID, Chead.getlength(head)); }break;
case 3: {cout << "需要修改学生信息的同学ID:";
cin >> ID;
Chead.change_message(head, ID); }break;
case 4: {cout << "按学号查询 请输入需要查询的同学的ID为:";
cin >> ID;
Chead.search(head, ID); }break;
case 5: {
cout << "请输入您需要查询学生的平均成绩的ID:";
cin >> ID;
Chead.get_average_score(head,Chead.getlength(head),ID );
}break;
case 6: {
cout << "请输入您需要查询学生的平均成绩的ID:";
cin >> ID;
Student *t = head;
while (t != NULL) {
if (t->ID == ID) {
cout << "该同学的公共课平均成绩为:" << t->get_main_average() << endl;
}t = t->next;
}
break;
}
case 7: {
Chead.rank_average_score(head, Chead.getlength(head));
cout << "排序成功!"; break;
}
case 8: {
Student *t = head;
while (t != NULL) {
t->traverse(t);
t=t->next;
}break;
}
case 9: {
Chead.openfile(head, Chead.getlength(head));
cout << "写入文件成功!"; break;
}
case 0: {
Chead.release(head);//结束之前free掉链表
return; }
}
}
else cout << "输入有错误 请输入0-9的整数"; continue;
}
/*manage_student.h*/
#pragma once
#include<iostream>
#include "Student.h"
class manage_student
{
public:
//存入文件 传入头指针和长度
void openfile(Student *head, int len);
//成绩排序 传入头指针和长度
void rank_average_score(Student *head,int len);
//修改信息 指定ID找到学生信息 修改 传入头 和 ID
void change_message(Student *head, int ID);
//增加信息 传入头就可以
void append_student(Student *head);
//删除学生信息 传入头 需要删除学生信息的ID 链表长度
Student * delete_student(Student *head,int ID,int len);
//创建链表
Student * create();
//搜索查询学生信息 根据ID搜索
void search(Student *head, int ID);
//得到链表的长度 传入头 返回链表长度
int getlength(Student *head);
//得到平均分 显示平均分
void get_average_score(Student *head, int len,int ID);
void release(Student *head);
manage_student();
~manage_student();
};
/*manage_student.cpp*/
#include "manage_student.h"
#include "Student.h"
#include<iostream>
#include "Math_Student.h"
#include "IT_Student.h"
#include "English_Student.h"
#include<string.h>
using namespace std;
#include<fstream>
#include<iomanip>
manage_student::manage_student()
{
}
manage_student::~manage_student()
{
}
Student * manage_student:: create() {
int num = 0; //来计数 输入的第几个学生
int temp; //用来输入选择初始化的学生的专业
int len = 0; //表示链表的长度
cin >> len; //也就是初始输入需要添加的学生数目
Student stu;//用来初始化指针
Student *pre = &stu;
Student *c = &stu;
Student *Head = &stu; //最后要返回的头指针
while (num < len) {
cout << "************您需要添加此学生的专业是? 1:数学系 2:英语系 3:计算机系" << endl;
cin >> temp;
if (temp == 1) {
c = new Math_Student; //一定要new一个**********不然会覆盖之前的
if (num == 0) { // 千万不能 Math_Student c 这个错误调了几天!!!!!!
Head = c; // 头指针的地址
Head->next = NULL; //第一个的尾给空
pre = Head; //pre指向 前一个 也就是头
}
if (num) {
pre->next = c; //前一个的尾接到下一个的地址
pre = pre->next; //pre 指向next指针
pre->next = NULL; //next指针指向的 弄为空
}
++num;
continue;
}
else if (temp ==2 ) {
c = new English_Student;
if (num == 0) {
Head = c; // 头指针的地址
Head->next = NULL; //第一个的尾给空
pre = Head; //pre指向 前一个 也就是头
}
if (num) {
pre->next = c; //前一个的尾接到下一个的地址
pre = pre->next; //pre 指向next指针
pre->next = NULL; //next指针指向的 弄为空
}
++num;
continue;
}
else if (temp == 3) {
c = new IT_Student;
if (num == 0) {
Head = c; // 头指针的地址
Head->next = NULL; //第一个的尾给空
pre = Head; //pre指向 前一个 也就是头
}
if (num) {
pre->next = c; //前一个的尾接到下一个的地址
pre = pre->next; //pre 指向next指针
pre->next = NULL; //next指针指向的 弄为空
}
++num;
continue;
}
else {
cout << "输入有误!请重新输入" << endl; continue;
}
}
return Head; //把头指针返回到main里 便于取用
}
int manage_student::getlength(Student * head)
{
int num = 1; //=0 或者 =1 取决于while的判断条件
Student *t=head;
while (t->next != 0) { //当head指向后面没有了 它就是NULL 结束
++num;
t = t->next; //如果head 不是NULL ++num后要把head指针指向最后
}
return num; //返回int长度
}
void manage_student::search(Student *head,int ID) {
Student *t = head; //用*t来遍历
while (t != NULL) { //只要t不是空 就进入
if (t->ID == ID) { //如果匹配到 ID
t->traverse(t); //用基类的指针调用子类的遍历方法
}t = t->next;
}
}
void manage_student::release(Student *head) {
Student *n; //需要一个指针存着下一个地址
while (head != NULL) {
n = head->next; //把n指向下一块要释放的地址
free(head);
head = n; //然后再把head从前一个地址移到下一个地址
}
}
void manage_student::append_student(Student *head) {
Student *c = head; //都用基类的指针来操作
Student *t = head;
int temp;
while (t->next != NULL) {
t = t->next; //把t移动到最后一块链表
}
cout << "************您需要添加此学生的专业是? 1:数学系 2:英语系 3:计算机系" << endl;
cin >> temp;
if (temp == 1) {
c = new Math_Student; //一定要new一个
t->next = c; //前一个的尾接到下一个的地址
t = t->next; //pre 指向next指针
t->next = NULL; //next指针指向的 弄为空
}
else if (temp == 2) {
c = new English_Student; //一定要new一个
t->next = c; //前一个的尾接到下一个的地址
t = t->next; //pre 指向next指针
t->next = NULL; //next指针指向的 弄为空
}
else if (temp == 3) {
c = new IT_Student; //一定要new一个
t->next = c; //前一个的尾接到下一个的地址
t = t->next; //pre 指向next指针
t->next = NULL; //next指针指向的 弄为空
}
else {
cout << "输入有误!请重新输入" << endl;
}
}
Student * manage_student::delete_student(Student *head, int ID,int len)
{
//用*t来遍历
Student *t = head;
Student *temp;//临时指针
for (int i = 0; i < (len - 1); ++i) {
if (i == 0) { //如果就是第一块链表 需要特殊处理 因为头Head会变
if (head->ID == ID) { head = head->next; delete t; return head; } //一定要返回一个新的头Head
if ((t->next)->ID == ID) { //如果是第二块链表匹配
temp = t->next; //把第一块跟第三块连接起来
t->next = (t->next)->next;
delete temp; return head; //delete调 第二块 返回头Head
}
}
if (i != 0) {
if ((t->next)->ID == ID) { //如果遍历的不是第一块了,操作都一样
temp = t->next; //前一块的next
t->next = (t->next)->next; //前后连接
delete temp; return head; //删掉中间
}t = t->next;
}
}cout << "删除成功!" << endl; return head; //返回头指针
}
void manage_student::change_message(Student *head, int ID) {
Student *t = head;
while (t!= NULL) {
if (t->ID == ID) {//ID匹配 进入
// 匹配属于数学系
if (t->get_major() == "Math_Student") {
//在此处修改公共的信息
cout << "*******请输入要修改的学生信息:" << endl;
cout << " ID:" << endl;
cin >> t->ID;
cout << " 姓名:" << endl;
cin >> t->name;
cout << " 年龄:" << endl;
cin >> t->age;
cout << " 数学:" << endl;
cin >> t->math;
cout << " 英语:" << endl;
cin >> t->english;
cout << " 体育:" << endl;
cin >> t->sport;
t->change(); //然后再去子类里面调用change修改特有的成员变量
}
if (t->get_major() == "English_Student") {
cout << "*******请输入要修改的学生信息:" << endl;
cout << " ID:" << endl;
cin >> t->ID;
cout << " 姓名:" << endl;
cin >> t->name;
cout << " 年龄:" << endl;
cin >> t->age;
cout << " 数学:" << endl;
cin >> t->math;
cout << " 英语:" << endl;
cin >> t->english;
cout << " 体育:" << endl;
cin >> t->sport;
t->change();
}
if (t->get_major() == "IT_Student") {
cout << "*******请输入要修改的学生信息:" << endl;
cout << " ID:" << endl;
cin >> t->ID;
cout << " 姓名:" << endl;
cin >> t->name;
cout << " 年龄:" << endl;
cin >> t->age;
cout << " 数学:" << endl;
cin >> t->math;
cout << " 英语:" << endl;
cin >> t->english;
cout << " 体育:" << endl;
cin >> t->sport;
t->change();
}
cout << "信息修改完成!"<<endl; return;
}
t = t->next;
}
cout << "对不起!查无此人,请重新确认学号是否输入正确,谢谢!"<<endl;
}
void manage_student::rank_average_score(Student *head,int len) {
Student *t = head; //用*t来 遍历
Student *pre = head;//把前面的存着 来跟后面的比较
t = t->next; //t往后移动一个
int ID;
char name[20];
float math, english, sport;
for (int i = 0; i < (len - 1); ++i) {
while (t != NULL) {
//如果后面的平均分比前面的平均分高 就进入
if ( t->get_average_score() >pre->get_average_score() ){
strcpy_s(name, t->name); strcpy_s(t->name, pre->name); strcpy_s(pre->name, name);
ID = t->ID; t->ID = pre->ID; pre->ID = ID;
math = t->math; t->math = pre->math; pre->math = math;
sport = t->sport; t->sport = pre->sport; pre->sport = sport;
english = t->english; t->english = pre->english; pre->english = english;
}
t = t->next;
//t每次循环完了之后 就把pre后移一个 t接在pre的后面
}pre = pre->next; t = pre->next;
}
}
void manage_student::openfile(Student *head, int len) {
//同样用t遍历
Student *t = head;
ofstream ofile; //定义输出文件
ofile.open("D:\\学生信息"); //作为输出文件打开
//for循环把链表 里面的信息写入文件
for (int i = 0; i < len; ++i) {
//判断系别 因为每个专业的成员不一样
if (t->get_major() == "Math_Student") {
ofile << "录入的各学生的信息如下: " << endl;
ofile << " 基本信息:" << " 学号" << t->ID << " 姓名:" << t->name << " 年龄:" << t->age << " 专业:" << t->get_major() << endl
<< " 公共课成绩:" << " 数学:" << t->math << " 英语:" << t->english << " 体育:" << t->sport << endl
<< " 专业课成绩:" << " 实变函数" << t->get_shi_bian_fun() << " 泛函分析:" << t->get_fan_han_fen_xi() << " 微分几何" << t->get_wei_fen_jihe() << endl;
t = t->next; continue;
}
if (t->get_major() == "English_Student") {
ofile << "录入的各学生的信息如下: " << endl;
ofile << " 基本信息:" << " 学号" << t->ID << " 姓名:" << t->name << " 年龄:" << t->age << " 专业:" << t->get_major() << endl
<< " 公共课成绩:" << " 数学:" << t->math << " 英语:" << t->english << " 体育:" << t->sport << endl
<< " 专业课成绩:" << " 综合英语:" << t->get_zonghe_english() << " 口语英语:" << t->get_spoken_english() << endl;
t = t->next; continue;
}
if (t->get_major() == "IT_Student") {
ofile << "录入的各学生的信息如下: " << endl;
ofile << " 基本信息:" << " 学号" << t->ID << " 姓名:" << t->name << " 年龄:" << t->age << " 专业:" << t->get_major() << endl
<< " 公共课成绩:" << " 数学:" << t->math << " 英语:" << t->english << " 体育:" << t->sport << endl
<< " 专业课成绩:" << " 组成原理:" << t->get_zu_cheng_yuanli() << " 体系结构:" << t->get_ti_xi_jie_gou() << " 汇编语言:" << t->get_hui_bian() << endl;
t = t->next; continue;
}
}
ofile.close();
return ;
}
void manage_student::get_average_score(Student *head, int len,int ID) {
Student *t = head; //用t遍历
for (int i = 0; i < len; ++i) {
if (t->ID == ID) {
//用基类的指针调用子类的函数 返回平均分 输出
cout << "该学生的平均成绩为:" << t->get_average_score() << endl; return;
}
t = t->next;
}
cout << "请确认您输入的ID是否有误" << endl;
}
;
}
void main() {
cout << "欢迎进入学生管理系统!请输入需要添加的学生数: "<<endl;
Student temp; //用来初始化指针
Student *Head=&temp;
Student *t=&temp;
int len;
manage_student Chead;
Head=Chead.create();//把头地址传回来给Head 指向的是第一个类stu
menu(Head, Chead); //调用菜单函数
system("pause");
return;
}
float IT_Student::get_ti_xi_jie_gou() {
return ti_xi_jie_gou;
}
float IT_Student::get_hui_bian() {
return hui_bian;
}
string IT_Student::get_major() {
return major;
}
;
*/
#include "Student.h"
#include<iostream>
Student::Student()
{
}
Student::~Student()
{
}
//这些函数都是假的 真正实现在子类里面
float Student::get_average_score() {
return 0;
}
float Student::get_main_average() {
return 0;
}
void Student::traverse(Student *t) {
cout << "我在Student 里面" << endl;
}
float Student:: get_shi_bian_fun() {
return 0;
}
float Student::get_fan_han_fen_xi() {
return 0;
}
float Student::get_wei_fen_jihe() {
return 0;
}
float Student::get_zonghe_english() {
return 0;
}
float Student::get_spoken_english() {
return 0;
}
float Student::get_zu_cheng_yuanli() {
return 0;
}
float Student::get_ti_xi_jie_gou() {
return 0;
}
float Student::get_hui_bian() {
return 0;
}
string Student::get_major() {
return 0;
}
void Student::change() {
}
;