/*設計壹個Student(學生)類,並使Student類具有以下特點:
該類具有學生姓名、學號、程序設計、信號處理、數據結構三門課程的成績。
學生全部信息由鍵盤輸入,以提高程序的適應性。
通過成員函數分別統計每個學生的平均成績和每門課程的平均成績,當課程 數量增加或減少時成員函數無需修改仍可求取平均成績。
輸出學生的各科成績與平均成績。
學生對象的定義采用對象數組實現。
統計不及格學生人數。
表格輸出整齊美觀。
能以最方便的方式實現對課程數量和學生人數的修改。
采用多文件方式組織程序。
1.添加 2.修改 3.顯示 4.不及格學生人數 5.排序
請根據妳的需要選擇(1~5):1
請依次輸入該學生的相關信息:
學號:1001
姓名:張三
信號處理:67
數據結構:65
C語言:87
1.添加 2.修改 3.顯示 4.不及格學生人數 5.排序
請根據妳的需要選擇(1~5):1
請依次輸入該學生的相關信息:
學號:1002
姓名:王龍龍
信號處理:78
數據結構:89
C語言:98
1.添加 2.修改 3.顯示 4.不及格學生人數 5.排序
請根據妳的需要選擇(1~5):1
請依次輸入該學生的相關信息:
學號:1003
姓名:王麗麗
信號處理:76
數據結構:89
C語言:90
1.添加 2.修改 3.顯示 4.不及格學生人數 5.排序
請根據妳的需要選擇(1~5):3
學號:1001 姓名:張三 信號處理:67 數據結構:65 C語言:87 總分:219 平均分:73
學號:1002 姓名:王龍龍 信號處理:78 數據結構:89 C語言:98 總分:265 平均分:88.3333
學號:1003 姓名:王麗麗 信號處理:76 數據結構:89 C語言:90 總分:255 平均分:85
1.添加 2.修改 3.顯示 4.不及格學生人數 5.排序
請根據妳的需要選擇(1~5):4
不及格學生人數: 0
1.添加 2.修改 3.顯示 4.不及格學生人數 5.排序
請根據妳的需要選擇(1~5):2
請輸入要修改的學生學號:
1001
該學號的學生信息如下:
學號:1001 姓名:張三 信號處理:67 數據結構:65 C語言:87 總分:219 平均分:73
請輸入新的學生信息:
學號:1001
姓名:張三
信號處理:67
數據結構:75
C語言:40
1.添加 2.修改 3.顯示 4.不及格學生人數 5.排序
請根據妳的需要選擇(1~5):3
學號:1001 姓名:張三 信號處理:67 數據結構:75 C語言:40 總分:182 平均分:60.6667
學號:1002 姓名:王龍龍 信號處理:78 數據結構:89 C語言:98 總分:265 平均分:88.3333
學號:1003 姓名:王麗麗 信號處理:76 數據結構:89 C語言:90 總分:255 平均分:85
1.添加 2.修改 3.顯示 4.不及格學生人數 5.排序
請根據妳的需要選擇(1~5):4
不及格學生人數: 1
1.添加 2.修改 3.顯示 4.不及格學生人數 5.排序
請根據妳的需要選擇(1~5):7
謝謝使用!!!
*/
#include <iostream>
#include <string>
using namespace std;
struct Student //聲明壹個名為student的結構體類型
{
string name; //姓名
long number; //學號
double xhcl; //信號處理
double sjjg; //數據結構
double Cyuyan; //C語言
double ZF; //總分
double PJF; //平均分
};
class Students //聲明類Students
{
public:
Students(){n=0;} //構造函數
void add();//添加
void show();//顯示
void change();//修改
void PX();//排序
void bjg();//統計不及格學生人數
private:
Student stu[1000];//定義壹個結構體類型Students的變量stu,其最大值為100
int n;
};
void Students::add()//添加
{
cout<<"學號:";
cin>>stu[n].number;
cout<<"姓名:";
cin>>stu[n].name;
cout<<"信號處理:";
cin>>stu[n].xhcl;
cout<<"數據結構:";
cin>>stu[n].sjjg;
cout<<"C語言:";
cin>>stu[n].Cyuyan;
stu[n].ZF= stu[n].xhcl+ stu[n].sjjg+ stu[n].Cyuyan;
stu[n].PJF=stu[n].ZF/3;
n++;//學生個數增加壹個
}
void Students::show()//顯示
{
for(int i=0;i<n;i++)
cout<<"學號:"<<stu[i].number<<' '<<"姓名:"<<stu[i].name<<' '<<"信號處理:"<<stu[i].xhcl<<' '<<"數據結構:"<<stu[i].sjjg<<' '<<"C語言:"<<stu[i].Cyuyan<<' '<<"總分:"<<stu[i].ZF<<' '<<"平均分:"<<stu[i].PJF<<endl;
}
void Students::change() //修改
{long num;
cout<<"請輸入要修改的學生學號:"<<endl;
cin>>num;
for(int i=0;i<n;i++)
if(stu[i].number==num)
{cout<<"該學號的學生信息如下:"<<endl;
cout<<"學號:"<<stu[i].number<<' '<<"姓名:"<<stu[i].name<<' '<<"信號處理:"<<stu[i].xhcl<<' '<<"數據結構:"<<stu[i].sjjg<<' '<<"C語言:"<<stu[i].Cyuyan<<' '<<"總分:"<<stu[i].ZF<<' '<<"平均分:"<<stu[i].PJF<<endl;
cout<<"請輸入新的學生信息:"<<endl;
cout<<"學號:";
cin>>stu[i].number;
stu[n].number=stu[i].number;
cout<<"姓名:";
cin>>stu[i].name;
stu[n].name=stu[i].name;
cout<<"信號處理:";
cin>>stu[i].xhcl;
stu[n].xhcl=stu[i].xhcl;
cout<<"數據結構:";
cin>>stu[i].sjjg;
stu[n].sjjg=stu[i].sjjg;
cout<<"C語言:";
cin>>stu[i].Cyuyan;
stu[n].Cyuyan=stu[i].Cyuyan;
stu[i].ZF= stu[i].xhcl+ stu[i].sjjg+ stu[i].Cyuyan;
stu[i].PJF=stu[i].ZF/3;
break;
}
if(stu[i].number!=num)
cout<<"無此學生信息!!"<<endl;
}
void Students::PX() //排序
{cout<<"請選擇排序方式:";
cout<<"1.按學生總分排序";
cout<<"2.按學生平均分排序";
cout<<"3.返回"<<endl;
int k;
cin>>k;
switch (k)
{
case 1://按學生總分排序
{
Student p;
for(int i=0;i<n;i++)
for(int j=0;j<n-i;j++)
{
if(stu[j].ZF<stu[j+1].ZF)
{
p=stu[j];
stu[j]=stu[j+1];
stu[j+1]=p;
}
}
cout<<"學號 姓名 信理 數構 C語言 平均分"<<endl;
for(int m=0;m<n;m++)
cout<<stu[m].number<<" "<<stu[m].name<<" "<<stu[m].xhcl<<" "<<stu[m].sjjg<<" "<<stu[m].Cyuyan<<" "<<stu[m].PJF<<endl;
}
break;
case 2://按學生平均分排序
{ Student p;//定義壹個Student類型的變量p
for(int i=0;i<n;i++)
for(int j=0;j<n-i;j++)
{
if(stu[j].PJF<stu[j+1].PJF)
{
p=stu[j];
stu[j]=stu[j+1];
stu[j+1]=p;
}
}
cout<<"學號 姓名 信號處理 數據結構 C語言 平均分"<<endl;
for(int m=0;m<n;m++)
cout<<stu[m].number<<" "<<stu[m].name<<" "<<stu[m].xhcl<<" "<<stu[m].sjjg<<" "<<stu[m].Cyuyan<<" "<<stu[m].PJF<<endl;
}break;
case 3:return;//返回
}
}
void Students::bjg()//統計不及格學生人數
{
int count=0;
for(int m=0;m<n;m++)
if(stu[m].xhcl<60||stu[m].sjjg<60||stu[m].Cyuyan<60)
count++;
cout<<"不及格學生人數: "<<count<<endl;
}
void main()
{
Students person;
int b;
do
{
cout<<" 1.添加 2.修改 3.顯示 4.不及格學生人數 5.排序 "<<endl;
cout<<"請根據妳的需要選擇(1~5):";
cin>>b;
switch(b)
{
case 1:
cout<<"請依次輸入該學生的相關信息:"<<endl;
person.add();
break;
case 2:
person.change();
break;
case 3:
person.show();
break;
case 4:
person.bjg();
break;
case 5:
person.PX();
break;
case 6:
cout<<"謝謝使用!!!"<<endl;
}
}while(b<7);
}