C言語実現クラス成績管理システム
C言語課程の設計――クラス成績管理システムは、皆様の参考になります。具体的な内容は以下の通りです。
タイトル:
N人の学生がいるクラスに対して、各学生はMコースがあります。このシステムはクラスの成績に対する入力、表示、修正、ソート、保存などの操作の管理を実現します。機能
要求:
(1)本システムは構造体配列を採用しており、各データの構造は学号、氏名、M科目の名称を含むべきである。
(2)本システムは、このようなメニューを表示します。
システム機能項目を選択してください。
a、成績入力
b、成績表示
c、成績保存
d、成績ランキング
e、成績修正(まずパスワードを入力してください)
f、成績統計
1)各コースの成績が一番高い学生の基本情報を表示する
2)各コースの平均成績を表示する
3)ある科目の平均成績を超える学生数を表示する
g、システムを終了する
1)具体的な機能を実行すると、プログラムはメニューを再表示します。
2)学生の成績をファイルに保存します。
コード:
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
タイトル:
N人の学生がいるクラスに対して、各学生はMコースがあります。このシステムはクラスの成績に対する入力、表示、修正、ソート、保存などの操作の管理を実現します。機能
要求:
(1)本システムは構造体配列を採用しており、各データの構造は学号、氏名、M科目の名称を含むべきである。
(2)本システムは、このようなメニューを表示します。
システム機能項目を選択してください。
a、成績入力
b、成績表示
c、成績保存
d、成績ランキング
e、成績修正(まずパスワードを入力してください)
f、成績統計
1)各コースの成績が一番高い学生の基本情報を表示する
2)各コースの平均成績を表示する
3)ある科目の平均成績を超える学生数を表示する
g、システムを終了する
1)具体的な機能を実行すると、プログラムはメニューを再表示します。
2)学生の成績をファイルに保存します。
コード:
#include<vector>
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
typedef struct Student{
int ID; /* */
char name[15]; /* */
vector<double> subject; /* , vector*/
double sum; /* */
}Student;
struct Rule{ /* */
bool operator()(const Student &stu1,const Student &stu2)const
{
if(stu1.sum!=stu2.sum) /* */
return stu1.sum>stu2.sum;
return stu1.ID>stu2.ID; /* */
}
};
int N,M,i,j; /*N ,M */
double score; /* */
Student temp; /* */
vector<Student> Stu; /* vector, */
bool condition=true; /* */
char choice; /* */
/*---------------------------------------------a. ---------------------------------------------*/
void InsertScore(){
cout<<" :";
cin>>N>>M;
cout<<endl<<" 、 "<<M<<" :"<<endl<<endl;
for(i=0;i<N;++i){
cin>>temp.ID>>temp.name;
for(j=0;j<M;++j){
cin>>score;
temp.subject.push_back(score);
}
Stu.push_back(temp);
/*------------------------------ ------------------------------*/
/*------------------------------ ------------------------------*/
vector<double>().swap(temp.subject);
/*------------------------------ ------------------------------*/
/*------------------------------ ------------------------------*/
}
cout<<endl<<" !"<<endl;
}
/*---------------------------------------------b. ---------------------------------------------*/
void ShowScore(){
cout<<" \t\t"<<" \t\t";
for(i=0;i<M;++i)
cout<<" "<<i+1<<"\t";
cout<<endl;
for(i=0;i<N;++i){
cout<<Stu[i].ID<<"\t"<<Stu[i].name<<"\t";
for(int j=0;j<M;++j)
cout<<Stu[i].subject[j]<<"\t";
cout<<endl;
}
}
/*---------------------------------------------c. ---------------------------------------------*/
void SaveScore(){
FILE *fp;
if((fp=fopen("stu.dat","wb"))==NULL){
cout<<" ";
return;
}
for(i=0;i<N;++i){
if(fwrite(&Stu[i],sizeof(Student),1,fp)!=1)
cout<<" !"<<endl;
}
fclose(fp);
cout<<" !"<<endl;
}
/*---------------------------------------------d. ---------------------------------------------*/
void SortScore(){
for(i=0;i<N;++i){ /* */
Stu[i].sum=0;
for(j=0;j<M;++j)
Stu[i].sum+=Stu[i].subject[j];
}
sort(Stu.begin(),Stu.end(),Rule()); /* */
cout<<" !"<<endl;
}
/*---------------------------------------------e. ---------------------------------------------*/
void ModifyScore(){
string password;
int id,no;
cout<<" :";
cin>>password;
/*------------------------------ ------------------------------*/
while(password!="GUXUNMEI"){
cout<<endl<<" , , Q :";
cin>>password;
if(password=="Q")
return;
}
/*------------------------------ ------------------------------*/
cout<<endl<<" , -1 !"<<endl;
while(1){
cout<<endl<<" , :";
cin>>id;
if(id==-1){
cout<<endl<<" !"<<endl;
return;
}
cin>>no>>score;
if(no>M){ /* */
cout<<endl<<" !"<<endl;
continue;
}
for(i=0;i<N;++i){
if(Stu[i].ID==id){
Stu[i].subject[no-1]=score;
break;
}
}
if(i==N){ /* */
cout<<endl<<" !"<<endl;
continue;
}
cout<<endl<<" !"<<endl;
}
}
/*---------------------------------------------f. ---------------------------------------------*/
void CountScore(){
int maxn[M],count[M];
double k,average[M];
memset(maxn,0,sizeof(maxn));
/*-------------------- --------------------*/
for(i=0;i<N;++i){
for(j=0;j<M;++j){
if(Stu[i].subject[j]>Stu[i].subject[maxn[j]])
maxn[j]=i;
}
}
for(i=0;i<M;++i){
cout<<" "<<i+1<<" :"<<Stu[i].ID<<"\t"<<Stu[i].name<<"\t";
for(j=0;j<M;++j)
cout<<Stu[i].subject[j]<<"\t";
cout<<endl;
}
cout<<endl;
/*--------------------------- ---------------------------*/
for(j=0;j<M;++j){
k=0;
for(i=0;i<N;++i)
k+=Stu[i].subject[j];
average[j]=k/N;
cout<<" "<<j+1<<" :"<<average[j]<<endl;
}
cout<<endl;
/*--------------------- ---------------------*/
for(j=0;j<M;++j){
count[j]=0;
for(i=0;i<N;++i){
if(Stu[i].subject[j]>average[j])
++count[j];
}
cout<<" "<<j+1<<" :"<<count[j]<<endl;
}
}
/*---------------------------------------------g. ---------------------------------------------*/
void ExitSystem(){
condition=false; /* condition */
cout<<" "<<endl;
}
int main()
{
while(condition){
/*----------------------------------- -----------------------------------*/
cout<<" "<<endl;
cout<<"------------------------- -------------------------"<<endl;
cout<<" "<<endl;
cout<<" : "<<endl;
cout<<" a. "<<endl;
cout<<" b. "<<endl;
cout<<" c. "<<endl;
cout<<" d. "<<endl;
cout<<" e. "<<endl;
cout<<" f. "<<endl;
cout<<" g. "<<endl;
cout<<" "<<endl;
cout<<"----------------------------------------------------------"<<endl;
cout<<" "<<endl;
/*----------------------------------- -----------------------------------*/
cout<<" :";
cin>>choice;
cout<<endl;
switch(choice){
case 'a':InsertScore(); break;
case 'b':ShowScore(); break;
case 'c':SaveScore(); break;
case 'd':SortScore(); break;
case 'e':ModifyScore(); break;
case 'f':CountScore(); break;
case 'g':ExitSystem(); break;
default:cout<<" !"<<endl;
}
}
return 0;
}
管理システムの詳細については『管理システムのテーマ』をクリックして学習してください。以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。