利用C++編寫一個學生成績管理系統?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
具體內容如下
/*要求:設立程序管理學生如下信息:學生學號、姓名、班級,語文、數學、英語成績。
至少要有10名以上學生。
能夠實現根據以下關鍵字查詢:學生姓名 、學號、班級、課程名稱。
能夠實現按照單科成績、總成績、平均成績、學號排序。
能夠實現學生信息的插入、刪除和修改。
能夠查詢每個課程的最高分、最低分及相應學生姓名、班級和學號。
能夠查詢每個班級某門課程的優秀率(90分及以上)、不及格率,并進行排序。*/
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
class student
{
int num;
char name[20];
char class1[20];
double chinese;
double math;
double english;
double youxiu;//優秀率
double bujige;//不及格率
double sum;//總成績
double aver1;//平均成績
public:
void set()
{
cout<<"\t學生學號:";
cin>>num;
cout<<"\t學生姓名:";
cin>>name;
cout<<"\t學生班級:";
cin>>class1;
cout<<"\t語文成績:";
cin>>chinese;
cout<<"\t英語成績:";
cin>>english;
cout<<"\t數學成績:";
cin>>math;
}
void show()
{
cout<<"該學生的學號:"<<num<<endl;
cout<<"該學生的姓名:"<<name<<endl;
cout<<"該學生的班級:"<<class1<<endl;
cout<<"該學生的語文成績:"<<chinese<<endl;
cout<<"該學生的數學成績:"<<math<<endl;
cout<<"該學生的英語成績:"<<english<<endl;
}
double ad(){return sum=chinese+english+math;}
double aver()
{
aver1=(chinese+english+math)/3;
return aver1;
}
friend void show();
friend void search();
friend void change();
friend void add();
friend void paixu();
friend void del();
};
void input();
void show();
void search();
void change();
void add();
void paixu();
void del();
student s[100];
int n=0;
int main()
{
int select;
while(1)
{
system("cls");
cout<<"\t ******************歡迎使用******************\n";
cout<<"\t **************學生成績管理系統**************\n";
cout<<"\t *------------------------------------------*\n";
cout<<"\t * 1——錄入學生信息 *\n";
cout<<"\t * 2——顯示學生信息 *\n";
cout<<"\t * 3——查詢學生信息 *\n";
cout<<"\t * 4——修改學生信息 *\n";
cout<<"\t * 5——添加學生信息 *\n";
cout<<"\t * 6——排序學生信息 *\n";
cout<<"\t * 7——刪除學生信息 *\n";
cout<<"\t * 0——退出 *\n";
cout<<"\t *------------------------------------------*\n";
cout<<"\t 你要輸入的編號是(0--7):";
cin>>select;
if(select==0) break;
switch(select){
case 1:
input(); //調用input函數錄入數據
system("pause");
break;
case 2:
show(); //調用show函數顯示學生信息
system("pause");
break;
case 3:
search(); //調用search函數查詢學生信息
system("pause");
break;
case 4:
change(); //調用change函數修改學生信息
system("pause");
break;
case 5:
add(); //調用add函數添加學生信息
system("pause");
break;
case 6:
paixu(); //調用add函數添加學生信息
system("pause");
break;
case 7:
del(); // 調用del函數刪除學生信息
system("pause");
break;
system("pause");
default:
cout<<"沒有此選項,請重新選擇!"<<endl;
}
}
return 0;
}
void input() //錄入學生信息的函數
{
char sel;
do
{
n++;
cout<<"\t請輸入第"<<n<<"個學生信息:\t"<<endl;
s[n].set();
cout<<"是否要繼續錄入學生信息(Y/N):";
cin>>sel;
}while(sel=='Y' || sel=='y' );
}
void show()
{
cout<<left; //設置輸出左對齊
cout<<setw(10)<<"學生學號"
<<setw(10)<<"學生姓名"
<<setw(13)<<"學生班級"
<<setw(12)<<"語文成績"
<<setw(12)<<"數學成績"
<<setw(12)<<"英語成績"
<<endl;
for(int i=1;i<=n;i++)
{
cout<<setw(10)<<s[i].num
<<setw(10)<<s[i].name
<<setw(13)<<s[i].class1
<<setw(12)<<s[i].chinese
<<setw(12)<<s[i].math
<<setw(12)<<s[i].english<<endl;
}
cout<<endl;
}
void search()//查詢
{
int a,b,i;char c[20];
cout<<"請選擇查詢方式:"<<endl;
cout<<"按學生姓名查詢請按1"<<endl;
cout<<"按學生學號查詢請按2"<<endl;
cin>>a;
switch(a)
{
case 1:
{char sel;
do{
cout<<"請輸入你要查的學生的姓名:"<<endl;
cin>>c;
for(i=1;i<=n;i++)
if(strcmp(s[i].name,c)==0)
{cout<<"你要查的學生信息為:"<<endl;
cout<<"學生學號:"<<s[i].num<<endl<<"學生姓名:"
<<s[i].name<<endl<<"學生班級:"
<<s[i].class1<<endl<<"語文成績:"
<<s[i].chinese<<endl<<"數學成績:"
<<s[i].math<<endl<<"英語成績:"
<<s[i].english<<endl;
break;
}
else if(strcmp(s[i].name,c)!=0&&i==n)
{cout<<"沒有這個學生!"<<endl;break;}
cout<<"是否要繼續查詢學生信息(Y/N):";
cin>>sel;
}while(sel=='Y' || sel=='y' );
break;
}
case 2:
{ char sel;
do{
cout<<"請輸入你要查的學生的學號:"<<endl;
cin>>b;
for(i=1;i<=n;i++)
if(s[i].num==b)
{
cout<<"你要查的學生信息為:"<<endl;
cout<<"學生學號:"<<s[i].num<<endl<<"學生姓名:"
<<s[i].name<<endl<<"學生班級:"
<<s[i].class1<<endl<<"語文成績:"
<<s[i].chinese<<endl<<"數學成績:"
<<s[i].math<<endl<<"英語成績:"
<<s[i].english<<endl;
break;
}
else if(s[i].num!=b&&i==n)
{cout<<"沒有這個學生!請核對后再輸入!"<<endl;break;}
cout<<"是否要繼續查詢學生信息(Y/N):";
cin>>sel;
}while(sel=='Y' || sel=='y' );
break;}
default:
cout<<"您的輸入有誤!"<<endl;
}
}
void change()
{
{ char sel;
int d,i,e,f,g=0;
do{
cout<<"請輸入你要修改的學生的學號:"<<endl;
cin>>d;
for(i=1;i<=n;i++)
if(s[i].num==d)
{
cout<<"你要修改的學生信息為:"<<endl;
cout<<"學生學號:"<<s[i].num<<endl<<"學生姓名:"
<<s[i].name<<endl<<"學生班級:"
<<s[i].class1<<endl<<"語文成績:"
<<s[i].chinese<<endl<<"數學成績:"
<<s[i].math<<endl<<"英語成績:"
<<s[i].english<<endl;
e=1;
break;
}
else if(s[i].num!=d&&i==n)
{cout<<"沒有這個學生!請核對后再輸入!"<<endl;
e=0;break;}
while(e==1)
{ {cout<<"請輸入該學生要修改的信息對應的數字:"<<endl;
cout<<"學生學號:1"
<<'\t'<<"學生姓名:2"
<<'\t'<<"學生班級:3"
<<'\t'<<"語文成績:4"
<<'\t'<<"數學成績:5"
<<'\t'<<"英語成績:6"<<endl;
}
cin>>f;
switch(f)
{case 1:cout<<"\t新的學生學號為:";
cin>>s[i].num;break;
case 2:cout<<"\t新的學生姓名為:";
cin>>s[i].name;break;
case 3:cout<<"\t新的學生班級為:";
cin>>s[i].class1;break;
case 4:cout<<"\t新的語文成績為:";
cin>>s[i].chinese;break;
case 5:cout<<"\t新的數學成績為:";
cin>>s[i].math;break;
case 6:cout<<"\t新的英語成績為:";
cin>>s[i].english;break;
default:cout<<"您的輸入有誤,請重新輸入!";
cin>>f;}
e=0;
g=1;
}
if(g==1)
{ cout<<"修改成功!";}
cout<<"是否要繼續修改學生信息(Y/N):";
cin>>sel;
}while(sel=='Y' || sel=='y' );
}
}
void add()
{
char sel;
do
{
n++;
cout<<"\n請輸入第"<< n <<"個學生信息:\n";
cout<<"\t學生學號:";
cin>>s[n].num;
cout<<"\t學生姓名:";
cin>>s[n].name;
cout<<"\t學生班級:";
cin>>s[n].class1;
cout<<"\t語文成績:";
cin>>s[n].chinese;
cout<<"\t數學成績:";
cin>>s[n].math;
cout<<"\t英語成績:";
cin>>s[n].english;
cout<<"是否要繼續添加學生信息(Y/N):";
cin>>sel;
}while(sel=='Y' || sel=='y' );
}
void paixu()
{
int a;
cout<<"請選擇排序方式:"<<endl;
cout<<"1.按學號排序;"<<endl
<<"2.按總成績排序;"<<endl
<<"3.按平均成績排序;"<<endl;
cin>>a;
switch(a)
{
case 1:
{int t=0;
for(int i=0;i<n-1;i++)
for(int j=0;j<n-i;j++)
if(s[j].num>s[j+1].num)
{ t=s[j].num;
s[j].num=s[j+1].num;
s[j+1].num=t;}
cout<<"按學號排序結果:"<<endl;
cout<<left; //設置輸出左對齊
cout<<setw(10)<<"學生學號"
<<setw(10)<<"學生姓名"
<<setw(13)<<"學生班級"
<<setw(12)<<"語文成績"
<<setw(12)<<"數學成績"
<<setw(12)<<"英語成績"
<<endl;
for(i=1;i<=n;i++)
{ cout<<setw(10)<<s[i].num
<<setw(10)<<s[i].name
<<setw(13)<<s[i].class1
<<setw(12)<<s[i].chinese
<<setw(12)<<s[i].math
<<setw(12)<<s[i].english<<endl;}
}
break;
/* case 2:
{double t;
for(int i=0;i<n-1;i++)
{ for(int j=0;j>n-i-1;j++)
{
if(s[j].sum>s[j+1].sum)
t=s[j].sum; s[j].sum=s[j+1].sum; s[j+1].sum=t;
}
}
cout<<"按總成績排序結果:"<<endl;
for(i=1;i<=n;i++)
cout<<"學號:"<<s[i].num<<"\t"<<"姓名:"<<s[i].name<<"\t"<<"班級:"<<s[i].class1<<"\t"
<<"語文成績:"<<s[i].chinese<<"\t"<<"數學成績:"<<s[i].math<<"\t"<<"英語成績"<<s[i].english<<"\t總成績"<<s[i]sum<<endl;
cout<<endl;
}
break;*/
/* case 3:
int t;
for(int i=0;i<n-1;i++)
{ for(int j=0;j>n-1-i;j++)
{
if(s[j].aver()>s[j+1].aver())
t=s[j].aver(); s[j].aver()=s[j+1].aver(); s[j+1].aver()=t;
}
}
cout<<"按平均成績排序結果:"<<endl;
for(i=0;i<n;i++)
cout<<"學號:"<<s[i].num<<"\t"<<"姓名:"<<s[i].name<<"\t"<<"班級:"<<s[i].class1<<"\t"
<<"語文成績:"<<s[i].chinese<<"\t"<<"數學成績:"<<s[i].math<<"英語成績"<<s[i].english<<endl;
cout<<endl;
}
break ;
*/
default:
{cout<<"您的輸入有誤!請重新輸入!"<<endl;
cin>>a;}
}
}
void del()
{
int j,i,k;char c[10],sel,y;
do{
cout<<"請輸入你要刪除的學生的姓名:"<<endl;
cin>>c;
for(i=1;i<=n;i++)
if(strcmp(s[i].name,c)==0)
{cout<<"你要刪除的學生信息為:"<<endl;
cout<<"學生學號:"<<s[i].num<<endl
<<"學生姓名:"<<s[i].name<<endl
<<"學生班級:"<<s[i].class1<<endl
<<"語文成績:"<<s[i].chinese<<endl
<<"數學成績:"<<s[i].math<<endl
<<"英語成績:"<<s[i].english<<endl;
cout<<"確認刪除?(y/n):";
cin>>y;
if(y=='Y'||y=='y')
{
for(j=i;j<=n+1;j++)
{
s[j]=s[j+1];
} k=1;
}
else
cout<<"刪除失??!"<<endl;
break;
}
else if(strcmp(s[i].name,c)!=0&&i==n)
{cout<<"沒有這個學生!請核對后再輸入!"<<endl;
k=0;break;}
while(k==1)
{
if(y=='Y'||y=='y')
cout<<"刪除成功!";
n--;
k=0;
}
cout<<"是否要繼續刪除學生信息(Y/N):";
cin>>sel;
}while(sel=='Y' || sel=='y' );
}效果圖:

關于利用C++編寫一個學生成績管理系統問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。