课程设计

#include "stdafx.h"

 

#include<iostream>

#include<fstream>

#include<string>

#include<iomanip>

using namespace std; 

void infoSave();  //信息保存函数

void infoSaveAgain();  //再次保存

void display();   //显示

char press;//全局变量,用于表示键盘输入的字母

int choose;    //全局变量,用于switch语句

int n;//全局变量,用于记录学生个数

class Student

{

public:

       int num;

    string name;

       string classnum;

       float math;

       float english;

       float chinese;

       float sum;

       float average;

};

Student stud[100];// //创建stud对象数组,用于存储每一个学生对象。

void infoWrite()         //资料写入模块                  

{

       cout<<"请根据你的需要输入学生的个数:";

       cin>>n;

for(int a=0;a<n;a++)

{

       cout<<"请输入第"<<a+1<<"个学生资料:"<<endl;

       cout<<"姓名:"<<' ';

       cin>>stud[a].name;

       cout<<"学号:"<<' ';

       cin>>stud[a].num;

       cout<<"班级:"<<' ';

       cin>>stud[a].classnum;

       cout<<"数学成绩:"<<' ';

       cin>>stud[a].math;

       cout<<"英语成绩:"<<' ';

       cin>>stud[a].english;

       cout<<"语文成绩:"<<' ';

       cin>>stud[a].chinese;

       stud[a].sum=stud[a].math+stud[a].english+stud[a].chinese;

       stud[a].average=(stud[a].math+stud[a].english+stud[a].chinese)/3;

}

       cout<<"输入成功,学生资料是否保存?(y/n)"<<endl;

       cin>>press;

       switch(press)

       {

       case 'y' :

              system("cls");

              infoSave();          //调用信息保存函数

              break;

       default:

              cout<<"不保存!";

              break;

       }

}

void infoRead()                //信息读取模块

{

       char filename[20];

       cout<<"从文件中读取信息!"<<endl;

       cout<<"请输入文件名:"<<endl;

       cin>>filename;

       ifstream infile(filename); //定义输入文件流对象

       if(!infile)

       {

              cout<<"open error!"<<endl;

              exit(1);

       }//文件不存在

       do

       {      int i=0;

              infile>>stud[i].name>>stud[i].num>>stud[i].classnum;    //从磁盘读取学生的信息,放入对象数组中

              infile>>stud[i].math>>stud[i].english>>stud[i].chinese;

              cout<<"学生的学号:"<<stud[i].num<<""         //向显示器输出学生的信息

                     <<"姓名:"<<stud[i].name<<""

                     <<"班级:"<<stud[i].classnum<<""

                     <<"数学成绩:"<<stud[i].math<<""

                     <<"英语成绩:"<<stud[i].english<<""

                     <<"语文成绩:"<<stud[i].chinese<<endl;

              i++;

              n++;

       }while(!infile.eof());       //判断是否到了文件的尾部,避免读取超过范围

              infile.close();

              for(int i=;i<n;i++)

              {

              cout<<"学生的学号:"<<stud[i].num<<""          //向显示器输出学生的信息

                     <<"姓名:"<<stud[i].name<<""

                     <<"班级:"<<stud[i].classnum<<""

                     <<"数学成绩:"<<stud[i].math<<""

                     <<"英语成绩:"<<stud[i].english<<""

                     <<"语文成绩:"<<stud[i].chinese<<endl;

              }

              cout<<"读取成功!"<<endl;

              system("pause");

              system("cls");

 }

 

//信息保存模块

 void infoSaveAgain()                        

{

int i;

char filename[20];

       for(i=0;i<n;i++)

       {

              cout<<"学生的学号:"<<stud[i].num<<""

                     <<"姓名:"<<stud[i].name<<""

                     <<"班级:"<<stud[i].classnum<<""

                     <<"数学成绩:"<<stud[i].math<<""

                     <<"英语成绩:"<<stud[i].english<<""

                     <<"语文成绩:"<<stud[i].chinese<<endl;

       }

cout<<"将记录保存在文件夹!"<<endl;

cout<<endl;

cout<<"请输入原文件名:"<<endl;

cin>>filename;

ofstream outfile(filename);//打开所需文件

       if(!outfile)

       {cout<<"open error!"<<endl;}

       for(i=0;i<n;i++)

       {

              outfile<<" "<<stud[i].num<<""<<stud[i].name<<""<<stud[i].classnum<<" "; //从对象数组写入

              outfile<<stud[i].math<<""<<stud[i].english<<" "<<stud[i].chinese;

       }

       outfile.close();

    cout<<"保存成功!"<<endl;

       system("pause");

       system("cls");

 }

 void infoSave()                        

{

int i;

char filename[20];

       for(i=0;i<n;i++)

       {

              cout<<"学生的学号:"<<stud[i].num<<""

                     <<"姓名:"<<stud[i].name<<""

                     <<"班级:"<<stud[i].classnum<<""

                     <<"数学成绩:"<<stud[i].math<<""

                     <<"英语成绩:"<<stud[i].english<<""

                     <<"语文成绩:"<<stud[i].chinese<<endl;

       }

cout<<"将记录保存在文件夹!"<<endl;

cout<<endl;

cout<<"请输入文件名:"<<endl;

cin>>filename;

ofstream outfile(filename);

       if(!outfile)

       {cout<<"open error!"<<endl;}

       for(i=0;i<n;i++)

       {

              outfile<<""<<stud[i].num<<" "<<stud[i].name<<""<<stud[i].classnum<<" "; //从对象数组写入

              outfile<<stud[i].math<<""<<stud[i].english<<" "<<stud[i].chinese;

       }

       outfile.close();

    cout<<"保存成功!"<<endl;

       system("pause");

       system("cls");

 }

 

 //信息操作模块

void del()          //删除资料                     

{

       cout<<"所有学生的名字:"<<endl;

       for(int i=0;i<n;i++)

       {cout<<stud[i].name<<endl;}

              string delname;

              int i=0;

       do

       {      cout<<"请输入你要删除的学生名字:"<<endl;

              cin>>delname;

              while(stud[i].name!=delname&&i<n) //防止删除超过范围

                     i++;

              if(stud[i].name==delname) //将信息逐个对比

              {

                                   stud[i].num=stud[i+1].num;

                                   stud[i].name=stud[i+1].name;

                                   stud[i].classnum=stud[i+1].classnum;

                                   stud[i].math=stud[i+1].math;

                                   stud[i].english=stud[i+1].english;

                               stud[i].chinese=stud[i+1].chinese;

                                   cout<<"删除成功!"<<endl;n=n-1;  

              }

              else if(i==n)

              {      cout<<"该信息不存在,无法删除!"<<endl;}  

              cout<<"(是否继续删除?(y/n))"<<endl;

              cin>>press;

       }while(press=='y'||press=='Y');

       infoSaveAgain();//将信息再保存一次

}

void infoAdd()            //添加资料

{do

       {

              cout<<"请添加新的学生信息"<<endl;

              cout<<"新的学生学号:"<<endl;

              cin>>stud[n].num;

              cout<<"新学生姓名:"<<endl;

              cin>>stud[n].name;

              cout<<"新学生班级:"<<endl;

              cin>>stud[n].classnum;

              cout<<"新学生的数学成绩:"<<endl;

              cin>>stud[n].math;

              cout<<"新学生的英语成绩:"<<endl;

              cin>>stud[n].english;

              cout<<"新学生的语文成绩:"<<endl;

              cin>>stud[n].chinese;

              stud[n].sum=stud[n].math+stud[n].english+stud[n].chinese;

              stud[n].average=(stud[n].math+stud[n].english+stud[n].chinese)/3;

              n++;  

              cout<<"(是否继续操作?(y/n))"<<endl;

              cin>>press;

       }while(press=='y'||press=='Y');

       cout<<"添加成功,学生资料是否保存?(y/n)"<<endl;

       cin>>press;

       switch(press)

       {      case 'y' :

                     infoSave();

                     break;

              default:

                     cout<<"不保存!";

                     break;

       }

}

void infoRevise()          //修改资料

{      a:string find_name;

       int i;

cout<<"请输入你要修改的学生名字:"<<endl;

cin>>find_name;

       for(i=0;i<n;i++)

              if(stud[i].name==find_name)

              {

                     cout<<stud[i].name<<""<<"的信息已找到:"<<endl;

                      cout<<"学生的学号:"<<stud[i].num<<''

                            <<"姓名:"<<stud[i].name<<''

                            << "班级:"<<stud[i].classnum<<''

                            <<"数学成绩:"<<stud[i].math<<''

                            <<"英语成绩:"<<stud[i].english<<''

                            <<"语文成绩:"<<stud[i].chinese<<endl;

                     break;

              }

               if(stud[i].name!=find_name)

              {

                     cout<<"找不到该学生姓名"<<endl;

                     cout<<"请重新查找!"<<endl;

                     goto a;      //回到a,重新实现查找到要修改的学生资料

               }

       for(int j=0;j<n;j++)

       {

              cout<<"请输入新的信息:"<<endl;

              cout<<"学号:"<<' ';

              cin>>stud[j].num;

              cout<<"姓名:"<<' ';

              cin>>stud[j].name;

              cout<<"班级:"<<' ';

              cin>>stud[j].classnum;

              cout<<"数学成绩:"<<' ';

              cin>>stud[j].math;

              cout<<"英语成绩:"<<' ';

              cin>>stud[j].english;

              cout<<"语文成绩:"<<' ';

              cin>>stud[j].chinese;

        stud[i].num=stud[j].num;stud[i].name=stud[j].name;

stud[i].classnum=stud[j].classnum;stud[i].math=stud[j].math;

stud[i].english=stud[j].english;stud[i].chinese=stud[j].chinese;break;}

        cout<<"修改成功,是否保存?(y/n)"<<endl;

        cin>>press;

              switch(press)

              {case 'y' :

                     infoSave();

                     break;

              default:

                     cout<<"不保存!";

                     break;

              }

       }

 

//统计模块

void orderTotalScore()          //按总分排名

{

       int numtemp;

    string nametemp;

       string classnumtemp;

       float mathtemp;

       float engtemp;

       float chitemp;

       float sumtemp;

       float avetemp;

       int i=0;

       for(i=0;i<n-1;i++)                                       //冒泡法排序

              for(int j=0;j<n-1-i;j++)            

                     if(stud[j].sum>stud[j+1].sum)

                       {                            

              sumtemp=stud[i].sum;stud[i].sum=stud[i+1].sum;stud[i+1].sum=sumtemp;

              numtemp=stud[i].num;stud[i].num=stud[i+1].num;stud[i+1].num=numtemp;

       nametemp=stud[i].name;stud[i].name=stud[i+1].name;stud[i+1].name=nametemp;

classnumtemp=stud[i].classnum;stud[i].classnum=stud[i+1].classnum;stud[i+1].classnum=classnumtemp;

mathtemp=stud[i].math;stud[i].math=stud[i+1].math;stud[i+1].math=mathtemp;

engtemp=stud[i].english;stud[i].english=stud[i+1].english;stud[i+1].english=engtemp;

chitemp=stud[i].chinese;stud[i].chinese=stud[i+1].chinese;stud[i+1].chinese=chitemp;   

avetemp=stud[i].average;stud[i].average=stud[i+1].average;stud[i+1].average=avetemp;

       }

                     cout<<"学生按总分排名:"<<endl;

                     cout<<"学号"

                            <<"   "<<"姓名"

                            <<"   "<<"班级"

                            <<"   "<<"总分"<<endl;

       for(int i=0;i<n;i++)

       {

              cout<<setw(4)<<stud[i].num<<"    "

                     <<setw(4)<<stud[i].name<<"    "

                     <<setw(4)<<stud[i].classnum<<"    "

                     <<setw(4)<<stud[i].sum<<endl;

              cout<<endl;

       }

}

void orderAverage()                //按平均分排名

{

       int numtemp;

    string nametemp;

       string classnumtemp;

       float mathtemp;

       float engtemp;

       float ctemp;

       float sumtemp;

       float avetemp;

       for(int i=0;i<n-1;i++)                                       //选择法排序

              for(int j=0;j<n-1-i;j++) //以下的按各单科成绩和平均分也是运用选择法排序

              if(stud[j].average>stud[j+1].average)

              {

       avetemp=stud[i].average;stud[i].average=stud[i+1].average;stud[i+1].average=avetemp;

       sumtemp=stud[i].sum; stud[i].sum=stud[i+1].sum;stud[i+1].sum=sumtemp;

       numtemp=stud[i].num;stud[i].num=stud[i+1].num;stud[i+1].num=numtemp;

       nametemp=stud[i].name;stud[i].name=stud[i+1].name;stud[i+1].name=nametemp;

       classnumtemp=stud[i].classnum;stud[i].classnum=stud[i+1].classnum;

stud[i+1].classnum=classnumtemp;

       mathtemp=stud[i].math;stud[i].math=stud[i+1].math;stud[i+1].math=mathtemp;

       engtemp=stud[i].english;stud[i].english=stud[i+1].english;stud[i+1].english=engtemp;

ctemp=stud[i].chinese;stud[i].chinese=stud[i+1].chinese;stud[i+1].chinese=ctemp;   

       }

                     cout<<"学生按平均分排名:"<<endl;

                     cout<<"学号"

                            <<"   "<<"姓名"

                            <<"   "<<"班级"

                            <<"   "<<"平均分"<<endl;

       for(int i=0;i<n;i++)

       {

              cout<<setw(4)<<stud[i].num<<"    "

                     <<setw(4)<<stud[i].name<<"    "

                     <<setw(4)<<stud[i].classnum<<"    "

                     <<setw(4)<<stud[i].average<<endl;

              cout<<endl;

       }

}

void maxScore()              //计算最高总分

{

       float max;

       max=stud[0].sum;

       for(int j=0;j<n;j++)

       {

              if(stud[j].sum>max)

                     max=stud[j].sum;

       }

cout<<"最高总分为:"<<max<<endl;}

void minScore()              //计算最低总分

{

       float min;

       min=stud[0].sum;

       for(int j=0;j<n;j++)

              {

                     if(stud[j].sum<min)

                     min=stud[j].sum;

              }

       cout<<"最低总分为:"<<min<<endl;

}

 

//查找模块

void accordingNum()               //按学生学号查找资料

{      do

       {

              int findnum,i=0;

              cout<<"请输入你要查询的学号:"<<' ';

              cin>>findnum;

              for(i=0;i<n;i++)

              if(stud[i].num==findnum)                                                          

              {

                        cout<<"学号为"<<stud[i].num<<"的学生的资料已找到:"<<endl;

                        cout<<"学号:"<<stud[i].num<<''

                                   <<"姓名:"<<stud[i].name<<''

                                   <<"班级:"<<stud[i].classnum<<''

                                   <<"数学成绩:"<<stud[i].math<<''

                                   <<"英语成绩:"<<stud[i].english<<''

                                   <<"语文成绩:"<<stud[i].chinese<<endl;

                      break;

              }

              if(stud[i].num!=findnum)

              cout<<"找不到该学号"<<endl;

              cout<<"(是否继续操作?(y/n))"<<endl;

              cin>>press;

       }while(press=='y'||press=='Y') ;}

void accordingName()                //按学生姓名查找资料            

{      do

       {

              string findname;

              cout<<"请输入你要查询的姓名:"<<' ';

              cin>>findname;

              int i;

              for(i=0;i<n;i++)

                     if(stud[i].name==findname)                                                  

                     {

                            cout<<"姓名为"<<stud[i].name<<"的学生的资料已找到"<<endl;

                            cout<<"学号:"<<stud[i].num<<''

                                   <<"姓名:"<<stud[i].name<<''

                                   <<"班级:"<<stud[i].classnum<<''

                                   <<"数学成绩:"<<stud[i].math<<''

                                   <<"英语成绩:"<<stud[i].english<<''

                                   <<"语文成绩:"<<stud[i].chinese<<endl;

                            break;

                     }

              if(stud[i].name!=findname)

              cout<<"找不到该姓名"<<endl;

              cout<<"(是否继续操作?(y/n))"<<endl;

              cin>>press;

       }while(press=='y'||press=='Y');

}

void accordingClassNum()        //按学生所在班级查找资料                     

{      do

       {

              string findclassnum;

              cout<<"请输入你要查询的班级:"<<' ';

              cin>>findclassnum;

              int i,count=0;

             

               for(i=0;i<n;i++)

               {

                     if(stud[i].classnum==findclassnum)                                                               

                     {

                           

                            cout<<"所在班级为"<<stud[i].classnum<<"的学生资料已找到:"<<endl;

                            cout<<"学生的学号:"<<stud[i].num<<''

                                   <<"姓名:"<<stud[i].name<<''

                                   <<"班级:"<<stud[i].classnum<<''

                                   <<"数学成绩:"<<stud[i].math<<''

                                   <<"英语成绩:"<<stud[i].english<<''

                                   <<"语文成绩:"<<stud[i].chinese<<endl;

                            cout<<endl;

                     }

                     if(stud[i].classnum!=findclassnum)

                            count++;

               }

               if(count==n)

                      cout<<"找不到该班级"<<endl;

                     cout<<"(是否继续操作?(y/n))"<<endl;

                     cin>>press;

                     }while(press=='y'||press=='Y') ;

}

 

//用户界面

void dataManagement()              //资料管理界面

{      system("cls");

       while(choose!=0)

       {

               cout<<"\t\t\t*************************************"<<endl;

               cout<<"\t\t\t*                                  *"<<endl;

               cout<<"\t\t\t*           学生资料管理           *"<<endl;

               cout<<"\t\t\t*                                  *"<<endl;

               cout<<"\t\t\t*          1.录入学生资料          *"<<endl;

               cout<<"\t\t\t*          2.删除学生资料          *"<<endl;

               cout<<"\t\t\t*          3.添加学生资料          *"<<endl;

               cout<<"\t\t\t*          4.修改学生资料          *"<<endl;

               cout<<"\t\t\t*          5.读取学生资料          *"<<endl;

               cout<<"\t\t\t*          0.返回                   *"<<endl;

               cout<<"\t\t\t*                                  *"<<endl;

               cout<<"\t\t\t*                                  *"<<endl;

               cout<<"\t\t\t*************************************"<<endl;

               cout<<"\t\t        请输入0-5之间的任意一数字:"<<' ';

               cin>>choose;

     switch(choose)                           //运用switch多分支选择语句

              { case 1:

                     infoWrite();

                     break;

               case 2:

                      del();

                      break;

               case 3:

                      infoAdd();

                      break;

               case 4:

                      infoRevise();

                      break;

               case 5:

                      infoRead();

                      break;

               case 0:

                      system("cls");

                      break;

              default:

                     cout<<"\t\t\t 输入错误,返回"<<endl;

                     system("pause");

                     system("cls");

                     break;

        }

       }

}

void statistics()                  //统计工具界面

{      while(choose!=0)

       {

        cout<<"\t\t\t                                     "<<endl;

        cout<<"\t\t\t*************************************"<<endl;

     cout<<"\t\t\t*          学生成绩统计管理        *"<<endl;

     cout<<"\t\t\t*                                  *"<<endl;

     cout<<"\t\t\t*          1.按总分排名            *"<<endl;

     cout<<"\t\t\t*          2.最高总分              *"<<endl;

     cout<<"\t\t\t*          3.最低总分              *"<<endl;

     cout<<"\t\t\t*          4.按平均分排名          *"<<endl;

        cout<<"\t\t\t*          0.返回                   *"<<endl;

     cout<<"\t\t\t*                                  *"<<endl;

        cout<<"\t\t\t*          按Enter继续             *"<<endl;

        cout<<"\t\t\t                                     "<<endl;

        cout<<"\t\t\t*************************************"<<endl;

     cout<<"\t\t          请输入0-4之间的任意一数字:"<<' ';

        cin>>choose;

                     switch(choose)                                           

                     {case 1:

                            orderTotalScore();

                            break;

                      case 2:

                             maxScore();

                             break;

                      case 3:

                             minScore();

                             break;

                      case 4:

                             orderAverage();

                             break;

                      case 0:

                             system("cls");

                             break;

                     default:

                     cout<<"\t\t\t输入错误,返回"<<endl;

                     system("pause");

                     system("cls");

                     break;

                     }

       }

}

 

void inquiry()              //查询工具界面 

{while(choose!=0){

        cout<<"\t\t\t                                    "<<endl;

        cout<<"\t\t\t*************************************"<<endl;

     cout<<"\t\t\t*          学生查询管理            *"<<endl;

     cout<<"\t\t\t*                                   *"<<endl;

     cout<<"\t\t\t*          1.按学号查询            *"<<endl;

     cout<<"\t\t\t*          2.按姓名查询            *"<<endl;

     cout<<"\t\t\t*          3.按所在班级查询        *"<<endl;

        cout<<"\t\t\t*          0.返回                   *"<<endl;

     cout<<"\t\t\t*                                  *"<<endl;

        cout<<"\t\t\t*          按Enter继续             *"<<endl;

        cout<<"\t\t\t                                     "<<endl;

        cout<<"\t\t\t*************************************"<<endl;

     cout<<"\t\t         请输入0-3之间的任意一数字:"<<'';cin>>choose;

                      switch(choose)

                     {      case 1:

                                   accordingNum();

                                   break;

                             case 2:

                                    accordingName();

                                    break;

                            case 3:

                                    accordingClassNum();

                                    break;

                            default:

                            system("cls");

                            break;

                      }

}

}

int main()                     //系统主界面     

{while(choose!='0')

{      cout<<"\t\t***************************************************"<<endl; 

        cout<<"\t\t*                                                *"<<endl;

        cout<<"\t\t*                学生成绩管理系统                 *"<<endl; 

        cout<<"\t\t*                                                *"<<endl;

              cout<<"\t\t*                                                *"<<endl;

        cout<<"\t\t*                1.学生资料管理                   *"<<endl;

        cout<<"\t\t*                2.学生成绩统计工具               *"<<endl;  

        cout<<"\t\t*                3.学生资料查询工具               *"<<endl;

        cout<<"\t\t*                0.退出系统                       *"<<endl;

              cout<<"\t\t*                                                 *"<<endl;

              cout<<"\t\t*                                                *"<<endl;

       cout<<"\t\t***************************************************"<<endl;  

        cout<<"\t\t             请输入0-3之间的任意一数字:"<<' ';  

              cin>>choose;

              switch(choose)

              {      case 1:

                             dataManagement();

                             break;

                      case 2:

                             statistics();

                             break;

                      case 3:

                             inquiry();

                             break;

                      case 4:

                             display();

                      case 0:

                            exit(0);

                            break;

                      default:

                             cout<<"\t\t\t输入错误,返回"<<endl;

                             system("pause");

                             system("cls");

                             break;

              }

}

 return 0;

}

void display()

{      int i=0;

       for(i=0;i<n;i++)

       {      cout<<"学生学号:"<<stud[i].num<<""

                     <<"姓名:"<<stud[i].name<<""

                     <<"班级:"<<stud[i].classnum<<""

                     <<"数学成绩:"<<stud[i].math<<""

                     <<"英语成绩:"<<stud[i].english<<""

                     <<"语文成绩:"<<stud[i].chinese<<endl;

       }

       system("pause");

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值