首页 > 代码库 > C++实现成绩管理模拟系统

C++实现成绩管理模拟系统

C++实现基本的成绩管理系统

需求:

1-学生姓名等基本字段

2-学生成绩字段

3-实现成绩修改和基本统计输出

  1 #include<iostream>  2 #include<windows.h>  3 #include<fstream>   4 #include<cstring>   5 using namespace std;  6 const int MAX=100;  7 const char* savefile="info.dat"; //文件保存地址   8 class student//先定义一个学生信息类,内部的成员变量是公有的。  9 {public: 10     char name[30];//学生姓名  11     int stu_no;//学号,只能输入数字  12     double c_score;//分数,双浮点类型  13 }; 14 class ManageStu 15 {public: 16     ManageStu();//初始化  17     ~ManageStu(); 18     void controlsystem(); 19 private: 20         void menu();//菜单  21         void input();//输入学生成绩  22         void displayone(int i,int style=0); 23         void search();//按照学号和姓名查询成绩  24         void ModifyScore() ;//修改学生成绩  25         void waitkey();//等待输入按键函数  26         void statistics();//统计,最低成绩,最高成绩,总成绩和平均成绩  27         void Initial();//从数据记录中下载数据  28         void Save();//将数据上传到数据库中  29         void displayarea(int low,int high); 30         void print();//显示输出 31         student stu[MAX];//最多放MAX的个学生 32         int N;//目前学生人数  33 }; 34 //主菜单  35 void ManageStu::menu() 36 { 37     system("cls");    38    cout<<endl; 39     cout<<"\t\t ********************主菜单********************"<<endl; 40     cout<<"\t\t||              1-输入学生成绩                ||"<<endl; 41     cout<<endl; 42     cout<<"\t\t||              2-查询学生成绩                ||"<<endl; 43     cout<<endl; 44     cout<<"\t\t||              3-修改学生成绩                ||"<<endl; 45     cout<<endl; 46     cout<<"\t\t||              4-学生成绩分段显示            ||" <<endl; 47     cout<<endl; 48     cout<<"\t\t||              5-成绩统计信息                ||" <<endl; 49     cout<<endl; 50     cout<<"\t\t||               0-退出                       ||"<<endl; 51     cout<<"\t\t **********************************************" <<endl; 52     cout<<"选择操作(0-5):";  53 } 54 //总控制函数,在里面将所有的功能选择使用  55 void ManageStu::controlsystem() 56 { 57     cout<<endl; 58     cout<<"===============================================================================\n"<<endl;  59     cout<<"\n\n            欢迎进入2013级计算机系C++学生成绩管理系统         "; 60     cout<<endl; 61     cout<<"\n\n                                                              作者:陈龙\n"; 62     cout<<"===============================================================================\n"<<endl;  63     Sleep(3000) ; 64     OPEN://本段程序的标签,可以方便循环操作  65     menu();//调用菜单  66     int cho;//输入调用菜单中的选项  67     cin>>cho; 68     system("cls");//选择相应的操作后,清除屏幕上的其他信息,只显示要操作的信息  69     switch(cho)//选择结构,灵活进入各个功能  70     { 71         case 1:input();break; 72         case 2:search();break; 73         case 3:ModifyScore();break; 74         case 4:print();break; 75         case 5:statistics();break; 76         case 0:return;//程序结束的地方  77         default: goto  OPEN; //输入错误,默认重新开始  78     } 79     goto OPEN; 80 } 81 void ManageStu::input()//输入函数实现代码  82 {//输入相应的信息  83     char conti=Y;  84      do{ 85     cout<<"根据提示输入信息"<<endl;//提示信息  86     cout<<"学号:";cin>>stu[N].stu_no; 87     cout<<"姓名:";cin>>stu[N].name; 88     cout<<"C++成绩: ";cin>>stu[N].c_score; 89     cout<<"是否继续输出(y/n): ";cin>>conti;  90     N++; 91     }while(conti==Y||conti==y);//判断是否继续输入      92 } 93 void ManageStu::displayone(int i,int style)  94 {  95     if(style==0) 96     { 97         cout<<"学号:"<<stu[i].stu_no<<endl; 98         cout<<"姓名:"<<stu[i].name<<endl; 99         cout<<"C++成绩:" <<stu[i].c_score<<endl;100     }101     else102     {103         cout<<"学号:"<<stu[i].stu_no<<"  ";104         cout<<"姓名:"<<stu[i].name<<"  ";105     cout<<"C++成绩:" <<stu[i].c_score<<endl;106     }107 }108 void ManageStu::search() 109 {//查询代码实现 110     int choice;111     SEAR:{112     system("cls");113     cout<<"\t *************查询方式***************"<<endl; 114     cout<<"\t||           1-学号查询             ||"<<endl;115     cout<<endl;116     cout<<"\t||           2-姓名查询             ||"<<endl;117     cout<<endl;118     cout<<"\t||          0-返回上一级菜单        ||"<<endl; 119     cout<<"\t ***********************************" <<endl;}120     cout<<"选择查询方式(1,2):";cin>>choice;121     int result=-1;//保存查找到的信息 122     switch(choice)123     {124         case 1:{125             int stuno;126             cout<<"输入学号:";cin>>stuno;127             for(int i=0;i<N;i++)//遍历查询相符合的信息 128             {129                 if(stu[i].stu_no==stuno)    130                 {131                     result=i;//保存到result 132                     break;//退出查询 133                 }134             }135             break;}136         case 2:{137             char name[30];138             cout<<"输入姓名:";cin>>name;139             for(int i=0;i<N;i++) //遍历查询 140             {141                 if(!strcmp(stu[i].name,name))142                 {143                     result=i;144                     break;145                 }146             }147             break;148         }149         case 0: return;150         default: goto  SEAR;//选择错误默认返回初始菜单状态 151     }152     if(result==-1)//如果result的值没有改变说明没有找到 153     { 154     cout<<"没有符合条件的学生!";155     }156     else{157     cout<<"查询结果:"<<endl;158     displayone(result);159     }160     char ch;161     cout<<"是否继续查询(y/n):";cin>> ch;162     if(ch==y||ch==Y)goto SEAR;//如果继续查询则返回初始菜单状态 163     //否则默认退出本函数 164 }165 void ManageStu::ModifyScore()166 {//修改分数代码实现 167     MODI:168     int result=-1;//保存查找的结果 169     char name[30];170     cout<<"输入学生姓名:";cin>>name;171     for(int i=0;i<N;i++) 172     {173         if(!strcmp(stu[i].name,name))174         {175             result=i;176             break;177         }178     }179     if(result==-1)180     {181         cout<<"没有符合条件的学生"<<endl;182     }183     else184     {185         cout<<"查询结果:"<<endl;186         displayone(result);187         cout<<endl;188         cout<<"输入"<<stu[result].name<<"的新成绩";cin>>stu[result].c_score;189         cout<<"修改后的信息如下"<<endl; 190         displayone(result);191         cout<<endl;192     }193     char ch;194     cout<<"是否继续查询修改(y/n):";cin>> ch;195     if(ch==y||ch==Y)goto MODI;196 }197 void ManageStu::waitkey()//等待按键的函数实现代码 198 {199     cout<<endl<<"按ENTER键退出"<<endl;200     getchar();//等待按键,以留在所操作的节面上, 201     getchar();//按键后就可以返回主界面 202 }203 void ManageStu::statistics()//统计学生信息实现代码204 { 205     if(N==0)206     {207         cout<<"没有学生信息"<<endl;208         waitkey();return;209     }210     double sum=stu[0].c_score;//保存总分 211     int result=0;//保存分数最高者的编号 212     int lows=0;//保存分数最低者的编号 213     214     for(int i=1;i<N;i++)215     {216         if(stu[i].c_score>stu[result].c_score)217         result=i;218         else if(stu[i].c_score<stu[result].c_score)219         lows=i;220         sum+=stu[i].c_score;221     }222     cout<<"\t\t总成绩是:\t\t"<<sum<<endl;223     cout<<"\t\t平均成绩是:\t\t"<<sum/N<<endl;224     cout<<endl;225     cout<<"=============================================="<<endl;226     cout<<"\t\t最高成绩:\t\t"<<endl;227     displayone(result) ;228     cout<<endl;229     cout<<"=============================================="<<endl;230     cout<<"\t\t最低成绩:\t\t"<<endl;231     displayone(lows);232     cout<<endl;233     waitkey();//代码作用同上 234 }235 ManageStu::ManageStu()236 {237     N=0;//初始化0个学生 238     Initial();//调用初始化代码,从文件中下载学生信息 239 } 240 ManageStu::~ManageStu()241 {242     Save();//当退出时自动保存到 文件中 243 }244 void ManageStu::Initial()245 {246     ifstream in(savefile,ios::in);//打开文件,输入模式 247     while(in>>stu[N].stu_no)//直到将文件中的信息全部加载完为止 248     {249         in>>stu[N].name>>stu[N].c_score;250         N++;//自动使记录加一 251     }252     in.close();//关闭文件句柄 253 }254 void ManageStu::Save()//保存文件 255 {256     ofstream out(savefile,ios::out);//打开文件,输出模式 257     for(int i=0;i<N;i++)//将所有的信息保存到文件中 258     {259         out<<stu[i].stu_no<<" "<<stu[i].name<<" "<<stu[i].c_score<<endl;260     }261     out.close();//关闭文件句柄 262 }263 //按照最低分最高分查询相应分数段信息 264 void ManageStu::displayarea(int low,int high)265 {266     cout<<low<<"<=成绩 <"<<high<<" :"<<endl;267     for(int i=0;i<N;i++)268     {269         if(stu[i].c_score>=low&&stu[i].c_score<high)270         {271          displayone(i,1);//调用输出单个信息的函数,指定style参数为1272          //即按照第二种格式输出 273     }274         275     }276 }277 void ManageStu::print()278 {//调用按照最低分和最高分查询信息的函数输出相应分数段的信息 279     if(N==0){280     cout<<"没有学生成绩" <<endl;281     waitkey();return;282     }283     //>=90284     displayarea(90,101);285     //80-89286     displayarea(80,90);287     //70-79288     displayarea(70,80);289     //60-70290     displayarea(60,70);291     //0-60292     displayarea(0,60);293     waitkey();//在此等待按键,若不按键就会留在这个输出界面上294     //否则无法留在输出界面,直接返回菜单,导致无法看到输出结果 295 }296 int main()297 {298     ManageStu command;299     command.controlsystem();//调用控制函数实现代码 300     return 0;301 }

 

C++实现成绩管理模拟系统