首页 > 代码库 > 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++实现成绩管理模拟系统
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。