C++實現學生成績資訊登記表
C++實現學生成績資訊登記表
學生成績資訊登記表:
每個學生的資料包括:學號,姓名,和語數英三門的成績
實現效果:
1.從鍵盤輸入3名學生的資料
2.顯示每個學生的三門課的平均分
3.顯示每門課的全班平均分
4.按平均分高低排名,並按名次降序輸出學生的所有資料
//學生成績資訊登記表
//每個學生的資料包括:學號,姓名,和語數英三門的成績
//實現效果:
//1.從鍵盤輸入3名學生的資料
//2.顯示每個學生的三門課的平均分
//3.顯示每門課的全班平均分
//4.按平均分高低排名,並按名次降序輸出學生的所有資料
#include <iostream>
using namespace std;
#define STU 3 //設定學生的人數
//定義學生結構體
struct Student {
int num;//學號
string name;//姓名
int gradeChinese;//語文成績
int gradeMath;//數學成績
int gradeEnglish;//英語成績
};
//得到輸入的學生的資訊
void getStudentInfo(Student a[STU]) {
for (int i = 0;i < STU;i++)
{
cout << "請輸入第" << i + 1 << "個同學的" << "學號:" ;
cin >> a[i].num;
cout << "請輸入第" << i + 1 << "個同學的" << "姓名:" ;
cin >> a[i].name;
cout << "請輸入第" << i + 1 << "個同學的" << "語文成績:" ;
cin >> a[i].gradeChinese;
cout << "請輸入第" << i + 1 << "個同學的" << "數學成績:" ;
cin >> a[i].gradeMath;
cout << "請輸入第" << i + 1 << "個同學的" << "英語成績:" ;
cin >> a[i].gradeEnglish;
}
cout << endl;
}
//計算每個學生的三門平均分
void averageStudent(Student a[STU]) {
for (int i = 0;i < STU;i++)
{
cout << "第" << i + 1 << "名同學的語數英平均分為:"
<< (a[i].gradeChinese + a[i].gradeEnglish + a[i].gradeMath) / 3
<< endl;
}
cout << endl;
}
//計算每門課的全班平均分
void averageClass(Student a[STU]) {
int a_math = 0;//全班數學總分
for (int i = 0;i < STU;i++)
{
a_math = a_math + a[i].gradeMath;
}
int a_chinese = 0;//全班語文總分
for (int i = 0;i < STU;i++)
{
a_chinese = a_chinese + a[i].gradeChinese;
}
int a_english = 0;//全班英語總分
for (int i = 0;i < STU;i++)
{
a_english = a_english + a[i].gradeEnglish;
}
cout << "全班語文的平均分為:"<<a_chinese/STU<<endl;
cout << "全班數學的平均分為:"<<a_math/STU<<endl;
cout << "全班英語的平均分為:"<<a_english/STU<<endl;
cout << endl;
}
//按平均分降序排名
void rankStudentGrade(Student a[STU]) {
int b[STU];//定義b陣列存放每個人的平均分
for (int i = 0;i < STU;i++)
{
b[i] = (a[i].gradeChinese + a[i].gradeEnglish + a[i].gradeMath) / 3;
}
//把b陣列資料存一份資料給c陣列
//b陣列中存放的是未排序的平均分,c陣列中存放的是排序過後的平均分
int c[STU];
for (int i = 0;i < STU;i++)
{
c[i] = b[i];
}
//氣泡排序
for (int i = 0;i < STU - 1;i++)
{
for (int j = 0;j < STU - 1 - i;j++)
{
int temp = 0;
if (c[j] < c[j + 1])
{
temp = c[j + 1];
c[j + 1] = c[j];
c[j] = temp;
}
}
}
//測試輸出
//for (int i = 0;i < STU;i++)
//{
// cout << "按平均分降序排名為:" << c[i] << endl;
//}
//比較b和c陣列,輸出對應平均分同學的成績
for (int i = 0;i < STU;i++)
{
for (int j = 0;j < STU;j++)
{
if (c[i] == b[j])
{
cout << "第" << i + 1 << "名是:" << a[j].name << " 平均分為:" << b[j]
<<" 學號為:"<<a[j].num
<< " 語文成績為:" << a[j].gradeChinese
<< " 數學成績為:" << a[j].gradeMath
<< " 英語成績為:" << a[j].gradeEnglish
<< endl;
}
}
}
}
int main()
{
Student a[STU];
getStudentInfo(a);//得到輸入的學生的資訊
//cout << "第三位同學的英語成績為:" << a[STU - 1].gradeEnglish << endl;//測試是否接收成功
averageStudent(a);//計算每個學生的三門平均分
averageClass(a);//計算每門課的全班平均分
rankStudentGrade(a);//按平均分降序排名
system("pause");
return 0;
}
轉載自:黑鳳梨の部落格
相關文章
- Django學生資訊管理系統(6)學生成績新增和學生成績查詢(多對對關係)Django
- python mysql實現學生成績管理系統蠖脲PythonMySql
- 學生成績管理
- 學生成績等級判斷
- SpringBoot + Spring Security 學習筆記(五)實現簡訊驗證碼+登入功能Spring Boot筆記
- 利茲大學:研究發現不吃早飯的學生成績更差
- 2-2 學生成績連結串列處理 (20分)——C語言實現C語言
- vue-admin-template 學習筆記 登入實現Vue筆記
- PTA (學生成績讀取與排序)排序
- sql統計-關於學生成績SQL
- vue實現登入和個人資訊元件展示Vue元件
- C++實現迷宮的生成與解決C++
- HTTPS通訊的C++實現HTTPC++
- 『研究發現不吃早飯的學生成績更差』今日資料行業日報(2019.11.25)行業
- C語言陣列求學生成績C語言陣列
- jwt加meta元資訊實現登入後校驗JWT
- C++實現查詢本機資訊並且上報C++
- 基於 Session 實現簡訊登入Session
- C++筆記——C++基本思想與實現(一)C++筆記
- python學生成績管理系統【完整版】Python
- QT:用QWebSocket實現webchannel,實現C++與HTML通訊QTWebC++HTML
- C# 呼叫 C++ 生成的 dll 關鍵實現部分C#C++
- 通訊錄管理系統(C++實現)C++
- vue實現簡訊驗證碼登入Vue
- uniapp 實現簡訊驗證碼登入APP
- EasyExcel資料匯出實現、動態表頭生成、SpringBoot3框架ExcelSpring Boot框架
- 教育視訊對學習有什麼影響?84%教師認為可以提高學生成績
- 【PTA】 學生成績錄入及查詢 (20分)
- 學生成績管理系統(C++指標、連結串列、檔案及物件導向的運用)C++指標物件
- 報表和儀表板生成器Stimulsoft資訊:將所有資料嵌入資源
- 基於OpenSSL的HTTPS通訊C++實現HTTPC++
- 說說如何在登入頁實現生成驗證碼功能
- 小技巧 EntityFrameworkCore 實現 CodeFirst 透過模型生成資料庫表時自動攜帶模型及欄位註釋資訊Framework模型資料庫
- 利用pandas進行資料清洗,利用神經網路預測成績(參考資料酷客,學生成績預測)神經網路
- Vue.js實現可配置的登入表單Vue.js
- Flutter實現用視訊背景的登入頁Flutter
- Spring Security系列之實現簡訊登入(十)Spring
- 學生成績管理系統——課程設計報告