c++學生成績管理系統

#include
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include <fstream>
using namespace std;
typedef struct student{
    string name;
    int Chinese,English,Math,Physical,Society,Number,people=20,save;
    double average=0; 
 }STUDENT;
    int id,now=0,i,ch,n;
    STUDENT s[20];
    double fi=s[20].average;
    double se=s[20].average;
    double th=s[20].average;
    string l,lk,lkk; 
    int sx,ssx,sssx;
 void menu(){                                                
cout<<"\t\t學生成績管理系統\t\t"<<endl;
cout<<"==========★ ☆ 1.增加學生成績 ☆ ★=========="<<endl;
cout<<"==========★ ☆ 2.查詢學生成績 ☆ ★=========="<<endl;
cout<<"==========★ ☆ 3.修改統計成績 ☆ ★=========="<<endl;
cout<<"==========★ ☆ 4.排序學生成績 ☆ ★=========="<<endl;    
cout<<"==========★ ☆ 5.儲存學生成績 ☆ ★=========="<<endl;    
cout<<"==========★ ☆ 0.安全退出系統 ☆ ★=========="<<endl;
cout<<"                請輸入您的選擇 :";
 }
void modify(){
      if(now!=0)
     {         
         cout<<"幾號(1~20):";
        cin>>id;
         cout<<"1(全科更改\t2(姓名更改\t";
        cout<<"3(國文更改\t4(英文更改"<<endl<<endl;
        cout<<"5(數學更改\t6(理化更改\t";
        cout<<"7(社會更改\t8(退出"<<endl<<endl;
        cout<<"請輸入您的選擇:";
        cin>>ch;
        switch (ch){
         case 1:
        for(i=0;i<now;i++)
        if(id==s[i].Number){
        cout<<"請輸入國文:";
            cin>>s[i].Chinese;
        cout<<"請輸入英文:";
            cin>>s[i].English;
        cout<<"請輸入數學:";
            cin>>s[i].Math;
        cout<<"請輸入理化:";
            cin>>s[i].Physical;
        cout<<"請輸入社會:";
            cin>>s[i].Society;
        s[i].average=(s[i].Chinese+s[i].English+s[i].Math+s[i].Physical+s[i].Society)/5;
        cout<<"=======================";
        cout<<"======================="<<endl;
        }break;
        case 2:        
        for(i=0;i<now;i++)
        if(id==s[i].Number){
        cout<<"請輸入姓名:";
        cin>>s[i].name;
        }break;    
        case 3:
        for(i=0;i<now;i++)
        if(id==s[i].Number){
        cout<<"請輸入國文:";
        cin>>s[i].Chinese;
        }break;
        case 4:
        for(i=0;i<now;i++)
        if(id==s[i].Number){
        cout<<"請輸入英文:";
            cin>>s[i].English;
        }break;
        case 5:
        for(i=0;i<now;i++)
        if(id==s[i].Number){
        cout<<"請輸入數學:";
            cin>>s[i].Math;
        }break;
        case 6:
        for(i=0;i<now;i++)
        if(id==s[i].Number){
        cout<<"請輸入理化:";
            cin>>s[i].Physical;
        }break;
        case 7:
        for(i=0;i<now;i++)
        if(id==s[i].Number){
        cout<<"請輸入社會:";
            cin>>s[i].Society;
        }break;
        case 8:
        break;}
        if(i>=now)cout<<"尚未新增學生成績\n"; 
        }
    if(now==0)cout<<"\n無資料可修改\n\n";
    for(i=0;i<now;i++)
    if(id==s[i].Number){
    s[i].average=(s[i].Chinese+s[i].English+s[i].Math+s[i].Physical+s[i].Society)/5;
 }
}
void cover(){
    if(now!=0){
        cout<<"已有資料是否重疊 1(是 2(否"<<endl;
        cin>>n;
        switch (n){
         case 1:
        cout<<"請輸入國文:";
            cin>>s[i].Chinese;
        cout<<"請輸入英文:";
            cin>>s[i].English;
        cout<<"請輸入數學:";
            cin>>s[i].Math;
        cout<<"請輸入理化:";
            cin>>s[i].Physical;
        cout<<"請輸入社會:";
            cin>>s[i].Society;
        s[i].average=(s[i].Chinese+s[i].English+s[i].Math+s[i].Physical+s[i].Society)/5;
        cout<<"=======================";
        cout<<"======================="<<endl;
        break;
        case 2:
            break;
}
}
}
 void add(){                                                
         cout<<"=============================================="<<endl;
         cout<<"班級人數:20人\n";
         cout<<"請輸入學生座號:";
            cin>>s[now].Number;
        if(s[now].Number>=21||s[now].Number<=0){
        cout<<"輸入錯誤請重新輸入\n"; 
        return add();
        }
        for(i=0;i<now;i++)
        if(s[i].save==s[now].Number){
        return cover();
        }
        cout<<"\n請輸入學生姓名:";
            cin>>s[now].name;
        cout<<"請輸入國文成績:";
            cin>>s[now].Chinese;
        if(s[now].Chinese>=101||s[now].Chinese<=-1){
         cout<<"輸入錯誤\n請重新輸入\n請輸入國文成績:";
             cin>>s[now].Chinese;
         if(s[now].Chinese>=101||s[now].Chinese<=-1){
         cout<<"第二次輸入錯誤\n請重新填寫座號\n";
         return add();
         }
         }
        cout<<"請輸入英文成績:";
            cin>>s[now].English;
        if(s[now].English>=101||s[now].English<=-1){
         cout<<"輸入錯誤\n請重新輸入\n請輸入英文成績:";
             cin>>s[now].English;
         if(s[now].English>=101||s[now].English<=-1){
         cout<<"第二次輸入錯誤\n請重新填寫座號\n";
         return add();
         }
         }
        cout<<"請輸入數學成績:";
            cin>>s[now].Math;
        if(s[now].Math>=101||s[now].Math<=-1){
         cout<<"輸入錯誤\n請重新輸入\n請輸入數學成績:";
             cin>>s[now].Math;
         if(s[now].Math>=101||s[now].Math<=-1){
         cout<<"第二次輸入錯誤\n請重新填寫座號\n";
         return add();
         }
         }
        cout<<"請輸入物理成績:";
             cin>>s[now].Physical;
        if(s[now].Physical>=101||s[now].Physical<=-1){
         cout<<"輸入錯誤\n請重新輸入\n請輸入理化成績:";
             cin>>s[now].Physical;
         if(s[now].Physical>=101||s[now].Physical<=-1){
         cout<<"第二次輸入錯誤\n請重新填寫座號\n";
         return add();
         }
         }
        cout<<"請輸入社會成績:";
            cin>>s[now].Society;
        if(s[now].Society>=101||s[now].Society<=-1){
         cout<<"輸入錯誤請\n重新輸入\n請輸入社會成績:";
             cin>>s[now].Society;
         if(s[now].Society>=101||s[now].Society<=-1){
         cout<<"第二次輸入錯誤\n請重新填寫座號\n";
         return add();
         }
         }
        cout<<"==============================================\n";
          s[now].average=(s[now].Chinese+s[now].English+s[now].Math+s[now].Physical+s[now].Society)/5;
          s[now].save=s[now].Number;
          now++;
 }                        
 void find() {
     if(now!=0)
     {
         cout<<"幾號(1~20):";
             cin>>id;
         for(i=0;i<now;i++) 
         if(id==s[i].Number){
        cout<<"姓名:"<<s[i].name<<"\t";
        cout<<"國文:"<<s[i].Chinese<<"分\t";
        cout<<"英文:"<<s[i].English<<"分\t";
        cout<<"數學:"<<s[i].Math<<"分\t";
        cout<<"理化:"<<s[i].Physical<<"分\t";
        cout<<"社會:"<<s[i].Society<<"分\t";
        cout<<"平均:"<<s[i].average<<"分\t";
        cout<<endl<<"=============================================="<<endl;
        break;
            }
         if(i>=now) 
         cout<<"尚未新增學生成績"<<endl; 
    }
    if(now==0)cout<<"\n查無資料\n\n";
 }         
 void save() {
     char data[20];
     fstream file;
     file.open("成績.txt",ios::out);
    if(file.fail())
     cout<<"檔案無法開啟\n";
     else
    {
    file<<"姓名\t座號\t國文\t英文\t數學\t理化\t社會\t平均\n";
    for(i=0;i<now;i++){
    file<<s[i].name<<"\t";
    file<<s[i].Number<<"\t";
    file<<s[i].Chinese<<"\t";
    file<<s[i].English<<"\t";
    file<<s[i].Math<<"\t";
    file<<s[i].Physical<<"\t";
    file<<s[i].Society<<"\t";
    file<<s[i].average<<"\t"<<endl;
    }
    file<<endl<<endl<<"第一名是:"<<l<<endl<<"座號:"<<sx<<endl<<"平均:"<<fi<<"分"<<endl;
    file<<"第二名是:"<<lk<<endl<<"座號:"<<ssx<<endl<<"平均:"<<se<<"分"<<endl;
    file<<"第三名是:"<<lkk<<endl<<"座號:"<<sssx<<endl<<"平均:"<<th<<"分"<<endl;
    cout<<"建立檔案,file寫入完成\t";
     }
     system("pause");
 }
 void sort(){
    for(i=0;i<20;i++){
        if(s[i].average>fi){
        fi=s[i].average;
        l=s[i].name;
        sx=s[i].Number;
        }
        }
        for(i=0;i<20;i++){
        if(s[i].average<fi&&s[i].average>se){
        se=s[i].average;
        lk=s[i].name;
        ssx=s[i].Number;
        }
        }
        for(i=0;i<20;i++){
        if(s[i].average<se&&s[i].average>th){
        th=s[i].average;
        lkk=s[i].name;
        sssx=s[i].Number;
        }
        }
    cout<<"第一名是:"<<l<<endl<<"座號:"<<sx<<endl<<"平均:"<<fi<<endl;
    cout<<"第二名是:"<<lk<<endl<<"座號:"<<ssx<<endl<<"平均:"<<se<<endl;
    cout<<"第三名是:"<<lkk<<endl<<"座號:"<<sssx<<endl<<"平均:"<<th<<endl;
    }
 int main(void){
 while(1){
     menu();    
          cin>>ch;
     switch(ch){
     case 1:
         add();
         break;
     case 2:
         find();
        break;
     case 3:
        modify();
        break;
     case 4:
         sort();
         break;
     case 5:
         save();
         break;
      case 0:     
      return -1; 
          }
         }return 0;
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章