1、问题描述
学生信息包括:学号、姓名、性别、年龄、班级等信息。
小学生除了包括学生所有信息外,还包括英语、数学和语文成绩。
大学生除了包括学生所有信息外,还包括专业、英语、程序设计和高等数学等课程。
设计一程序能够对学生成绩进行管理,应用到继承、抽象类、虚函数、虚基类、多态和文件的输入/输出等内容。
2、功能要求
(1)添加功能:程序能够添加不同学生的记录,提供选择界面供用户选择所要添加的类别,要求学号要唯一,如果添加了重复学号的记录时,则提示数据添加重复并取消添加。
(2)显示功能:可显示当前系统中所有学生的记录,每条记录占据一行。
(3)删除功能:主要实现对已添加的学生记录进行删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。
(4)求小学生、大学生各自的平均成绩。
#include<bits/stdc++.h>
#include<iostream>
#include <string>
using namespace std;
class xuesheng
{
public:
char number[20];
char name[20];
char sex;
int age;
int classs ;
};
class xiaoxuesheng :public xuesheng
{
public:
float english;
float math;
float chinese;
xiaoxuesheng(char number[20],char name[20],char sex,int age,int classs,float english,float math,float chinese);
};
class daxuesheng: public xuesheng
{
public:
float major;
float english;
float programming;
float high_math;
d\
daxuesheng(char number[20],char name[20],char sex,int age,int classs,float major,float english;,float programming,float high_math);
};
void input_xiaoxuesheng()
{
cout<<"依次输入小学生信息:学号、姓名、性别、年龄、班级、英语成绩、数学成绩、语文成绩"<<endl;
cin<<number<<name<<sex<<age<<classs<<english<<math<<chinese<<endl;
p1=new xiaoxuesheng;
p1->number=number;p1->name=name;p1->sex->sex;p1->age=age;p1->classs=classs;p1->english=english;p1->math=math;p1->chinese=chinese;
cout<<"增添新同学成功"<<endl;
};
void input_daxuesheng()
{
cout<<"依次输入大学生信息:学号、姓名、性别、年龄、班级、专业成绩、英语成绩、程序设计成绩、高等数学成绩"<<endl;
cin<<number<<name<<sex<<age<<classs<<major<<english<<programming<<high_math<<endl;
p2=new daxuesheng;
p2->number=number;p2->name=name;p2->sex->sex;p2->age=age;p2->classs=classs;p2->major=major;p2->english=english;p2->programming;p2->high_math=high_math;
cout<<"增添新同学成功"<<endl;
};
void delete_xiaoxuesheng
{
delete p1;
} ;
void delete_daxuesheng
{
delete p2;
};
int main()
{
char d;
bool run=1;
//显示系统操作界面
while(run)
{
cout<<">>请输入操作类型<<","[A:对小学生操作]","[B:对大学生操作]","[C:显示全部学生信息]","[D:求小学生和大学生的各自平均值 ]","[E:退出]"<<endl;
cout<<endl;
for(int i=0;i<48;i++)cout<<" ";
cin>>d;
//对小学生进行操作
if(d=='A'){ //对小学生进行操作
cout<<">>请输入操作类型<<","[A:添加学生信息]",,"[B:删除学生信息]","[C:返回上一界面]"<<endl;
bool flag=true;//判断是否退出操作
while(flag)//循环操作
{
for(int i=0; i<42; i++)cout<<" ";
cout<<"请输入操作指令:\n"<<endl;
for(int i=0; i<48; i++)cout<<" ";
cin>>choice;
switch(choice)
{
case 'A':
input_xiaoxuesheng();
case 'B':
delete_xiaoxuesheng();
break;
case 'C':
flag=false;
break;
default :
for(int i=0; i<43; i++)cout<<" ";
cout<<"Input Error!"<<endl; //??????????????????????????????????????
}
}
}
//对大学生进行操作
else if(d=='B'){ //对大学神进行操作
cout<<">>请输入操作类型<<","[A:添加学生信息]",,"[B:删除学生信息]","[C:返回上一界面]"<<endl;
bool flag=true;//判断是否退出操作
while(flag)//循环操作
{
for(int i=0; i<42; i++)cout<<" ";
cout<<"请输入操作指令:\n"<<endl;
for(int i=0; i<48; i++)cout<<" ";
cin>>choice;
switch(choice)
{
case 'A':
input_daxuesheng();
break;
case 'B':
delete_daxuesheng();
break;
case 'C':
flag=false;
break;
default :
for(int i=0; i<43; i++)cout<<" ";
cout<<"Input Error!"<<endl;
}
}
}
//显示全部学生信息
else if(d=='C'){ //显示全部学生信息
cout<<">>全部学生信息<<"<<endl;
show_all_message();
}
//求小学生和大学生各自的成绩平均
else if(d=='D'){ //求小学生和大学社各自成绩的平均
cout<<">>小学生的大学生的各自平均成绩<<"<<endl;
average();
}
//退出程序
else if(d=='E'){
run=0;
cout<<endl;
for(int i=0;i<44;i++)cout<<" ";
cout<<"退出成功!"<<endl;
}
else{
cout<<endl;
for(int i=0;i<40;i++)cout<<" ";
cout<<"输入的操作有误!"<<endl;
}
}
return 0;
};