C++课程设计之学生成绩管理系统

 更新时间:2020年12月29日 11:34:27   作者:chaoyue66  
这篇文章主要为大家详细介绍了C++课程设计之学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C++学生成绩管理系统的具体代码,供大家参考,具体内容如下

/*要求:设立程序管理学生如下信息:学生学号、姓名、班级,语文、数学、英语成绩。
 至少要有10名以上学生。
能够实现根据以下关键字查询:学生姓名 、学号、班级、课程名称。
  能够实现按照单科成绩、总成绩、平均成绩、学号排序。
  能够实现学生信息的插入、删除和修改。
能够查询每个课程的最高分、最低分及相应学生姓名、班级和学号。
能够查询每个班级某门课程的优秀率(90分及以上)、不及格率,并进行排序。*/
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
class student
{
 int num;
 char name[20];
 char class1[20];
 double chinese;
 double math;
 double english;
 double youxiu;//优秀率
 double bujige;//不及格率
 double sum;//总成绩
 double aver1;//平均成绩
 
public:
 void set()
 {
 
 cout<<"\t学生学号:";
 cin>>num;
 cout<<"\t学生姓名:";
 cin>>name;
  cout<<"\t学生班级:";
 cin>>class1;
 cout<<"\t语文成绩:";
 cin>>chinese;
 cout<<"\t英语成绩:";
 cin>>english;
 cout<<"\t数学成绩:";
 cin>>math;
 }
 void show()
 {
 cout<<"该学生的学号:"<<num<<endl;
 cout<<"该学生的姓名:"<<name<<endl;
 cout<<"该学生的班级:"<<class1<<endl;
 cout<<"该学生的语文成绩:"<<chinese<<endl;
 cout<<"该学生的数学成绩:"<<math<<endl;
 cout<<"该学生的英语成绩:"<<english<<endl;
 }
 double ad(){return sum=chinese+english+math;}
 double aver()
 {
 aver1=(chinese+english+math)/3;
 return aver1;
 }
 friend void show();
 friend void search(); 
 friend void change(); 
 friend void add(); 
 friend void paixu();
 friend void del(); 
 
};
 void input();
 void show();
 void search(); 
 void change(); 
 void add(); 
 void paixu();
 void del(); 
 student s[100];
 int n=0;
 
int main()
{
 
 int select; 
 while(1)
 {
 system("cls");
 cout<<"\t ******************欢迎使用******************\n";
 cout<<"\t **************学生成绩管理系统**************\n";
 cout<<"\t *------------------------------------------*\n";
 cout<<"\t *   1——录入学生信息    *\n";
 cout<<"\t *   2——显示学生信息    *\n";
 cout<<"\t *   3——查询学生信息    *\n";
 cout<<"\t *   4——修改学生信息    *\n";
 cout<<"\t *   5——添加学生信息    *\n";
 cout<<"\t *   6——排序学生信息    *\n";
 cout<<"\t *   7——删除学生信息    *\n";
 cout<<"\t *   0——退出      *\n";
 cout<<"\t *------------------------------------------*\n";
 cout<<"\t 你要输入的编号是(0--7):";
 cin>>select;
 if(select==0) break;
 switch(select){
 case 1:
 input(); //调用input函数录入数据
 system("pause");
 break;
 case 2:
 show(); //调用show函数显示学生信息 
 system("pause");
 break;
 case 3:
  search(); //调用search函数查询学生信息
 system("pause");
 break;
 case 4:
 change(); //调用change函数修改学生信息
 system("pause");
 break;
 case 5:
  add();  //调用add函数添加学生信息
 system("pause");
 break;
 case 6:
  paixu();  //调用add函数添加学生信息
 system("pause");
 break;
 case 7:
 del(); // 调用del函数删除学生信息
 system("pause");
 break;
 
 
 
 system("pause");
 default:
 cout<<"没有此选项,请重新选择!"<<endl;
 }
 }
 return 0;
}
 void input() //录入学生信息的函数
{
 char sel;
 do
 {
 n++;
 cout<<"\t请输入第"<<n<<"个学生信息:\t"<<endl;
  s[n].set();
 cout<<"是否要继续录入学生信息(Y/N):";
 cin>>sel;
 }while(sel=='Y' || sel=='y' ); 
}
void show()
{
 cout<<left; //设置输出左对齐
 cout<<setw(10)<<"学生学号"
 <<setw(10)<<"学生姓名"
 <<setw(13)<<"学生班级"
 <<setw(12)<<"语文成绩"
 <<setw(12)<<"数学成绩"
 <<setw(12)<<"英语成绩"
 <<endl;
 for(int i=1;i<=n;i++)
 {
 cout<<setw(10)<<s[i].num
 <<setw(10)<<s[i].name
 <<setw(13)<<s[i].class1
 <<setw(12)<<s[i].chinese
 <<setw(12)<<s[i].math
 <<setw(12)<<s[i].english<<endl;
 }
 cout<<endl;
 
}
 
void search()//查询
{ 
 
 int a,b,i;char c[20];
 cout<<"请选择查询方式:"<<endl;
 cout<<"按学生姓名查询请按1"<<endl;
 cout<<"按学生学号查询请按2"<<endl;
 cin>>a;
 switch(a)
 {
 case 1: 
{char sel;
 do{
 cout<<"请输入你要查的学生的姓名:"<<endl;
 cin>>c;
 for(i=1;i<=n;i++)
 if(strcmp(s[i].name,c)==0)
 {cout<<"你要查的学生信息为:"<<endl;
 cout<<"学生学号:"<<s[i].num<<endl<<"学生姓名:"
 <<s[i].name<<endl<<"学生班级:"
 <<s[i].class1<<endl<<"语文成绩:"
 <<s[i].chinese<<endl<<"数学成绩:"
 <<s[i].math<<endl<<"英语成绩:"
 <<s[i].english<<endl;
 break;
 }
 else if(strcmp(s[i].name,c)!=0&&i==n)
 {cout<<"没有这个学生!"<<endl;break;}
 cout<<"是否要继续查询学生信息(Y/N):";
 cin>>sel;
 }while(sel=='Y' || sel=='y' ); 
 break;
}
 case 2:
{ char sel;
 do{
 cout<<"请输入你要查的学生的学号:"<<endl;
 cin>>b;
 for(i=1;i<=n;i++)
 if(s[i].num==b)
 {
 cout<<"你要查的学生信息为:"<<endl;
 cout<<"学生学号:"<<s[i].num<<endl<<"学生姓名:"
 <<s[i].name<<endl<<"学生班级:"
 <<s[i].class1<<endl<<"语文成绩:"
 <<s[i].chinese<<endl<<"数学成绩:"
 <<s[i].math<<endl<<"英语成绩:"
 <<s[i].english<<endl;
 break;
 }
 else if(s[i].num!=b&&i==n)
 {cout<<"没有这个学生!请核对后再输入!"<<endl;break;}
 cout<<"是否要继续查询学生信息(Y/N):";
 cin>>sel;
 }while(sel=='Y' || sel=='y' ); 
 break;}
 
 default:
 cout<<"您的输入有误!"<<endl;
 }
 
}
 
void change()
{
 { char sel;
 int d,i,e,f,g=0;
 do{
 cout<<"请输入你要修改的学生的学号:"<<endl;
 cin>>d;
 for(i=1;i<=n;i++)
  if(s[i].num==d)
 {
 cout<<"你要修改的学生信息为:"<<endl;
 cout<<"学生学号:"<<s[i].num<<endl<<"学生姓名:"
 <<s[i].name<<endl<<"学生班级:"
 <<s[i].class1<<endl<<"语文成绩:"
 <<s[i].chinese<<endl<<"数学成绩:"
 <<s[i].math<<endl<<"英语成绩:"
 <<s[i].english<<endl;
    e=1;
 break;
 }
 else if(s[i].num!=d&&i==n)
 {cout<<"没有这个学生!请核对后再输入!"<<endl;
 e=0;break;}
 while(e==1)
 { {cout<<"请输入该学生要修改的信息对应的数字:"<<endl;
 cout<<"学生学号:1"
 <<'\t'<<"学生姓名:2"
 <<'\t'<<"学生班级:3"
 <<'\t'<<"语文成绩:4"
 <<'\t'<<"数学成绩:5"
 <<'\t'<<"英语成绩:6"<<endl;
 }
 cin>>f;
 switch(f)
 {case 1:cout<<"\t新的学生学号为:";
   cin>>s[i].num;break;
   case 2:cout<<"\t新的学生姓名为:";
   cin>>s[i].name;break;
   case 3:cout<<"\t新的学生班级为:";
   cin>>s[i].class1;break;
   case 4:cout<<"\t新的语文成绩为:";
   cin>>s[i].chinese;break;
   case 5:cout<<"\t新的数学成绩为:";
 cin>>s[i].math;break;
  case 6:cout<<"\t新的英语成绩为:";
 cin>>s[i].english;break;
 default:cout<<"您的输入有误,请重新输入!";
 cin>>f;}
  e=0;
 g=1;
 }
 if(g==1)
 { cout<<"修改成功!";}
 cout<<"是否要继续修改学生信息(Y/N):";
 cin>>sel;
 }while(sel=='Y' || sel=='y' ); 
 }
 
}
 
void add()
{
char sel;
 do
 {
 n++;
 cout<<"\n请输入第"<< n <<"个学生信息:\n";
 cout<<"\t学生学号:";
 cin>>s[n].num;
 cout<<"\t学生姓名:";
 cin>>s[n].name;
  cout<<"\t学生班级:";
 cin>>s[n].class1;
 cout<<"\t语文成绩:";
 cin>>s[n].chinese;
 cout<<"\t数学成绩:";
 cin>>s[n].math;
 cout<<"\t英语成绩:";
 cin>>s[n].english;
 cout<<"是否要继续添加学生信息(Y/N):";
 cin>>sel;
 }while(sel=='Y' || sel=='y' ); 
 
}
 
 
void paixu()
{
 int a;
 cout<<"请选择排序方式:"<<endl;
 cout<<"1.按学号排序;"<<endl
 <<"2.按总成绩排序;"<<endl
 <<"3.按平均成绩排序;"<<endl;
 cin>>a;
 switch(a)
 {
 case 1:
 {int t=0;
 for(int i=0;i<n-1;i++)
 for(int j=0;j<n-i;j++)
 if(s[j].num>s[j+1].num)
 { t=s[j].num;
  s[j].num=s[j+1].num;
 s[j+1].num=t;}
 
  cout<<"按学号排序结果:"<<endl;
 cout<<left; //设置输出左对齐
 cout<<setw(10)<<"学生学号"
 <<setw(10)<<"学生姓名"
 <<setw(13)<<"学生班级"
 <<setw(12)<<"语文成绩"
 <<setw(12)<<"数学成绩"
 <<setw(12)<<"英语成绩"
 <<endl;
 for(i=1;i<=n;i++)
 { cout<<setw(10)<<s[i].num
 <<setw(10)<<s[i].name
 <<setw(13)<<s[i].class1
 <<setw(12)<<s[i].chinese
 <<setw(12)<<s[i].math
 <<setw(12)<<s[i].english<<endl;}
 }
 break;
 
/* case 2:
 {double t;
 for(int i=0;i<n-1;i++)
 { for(int j=0;j>n-i-1;j++)
 {
 if(s[j].sum>s[j+1].sum)
 t=s[j].sum; s[j].sum=s[j+1].sum; s[j+1].sum=t;
 } 
 }
  cout<<"按总成绩排序结果:"<<endl;
 for(i=1;i<=n;i++)
  cout<<"学号:"<<s[i].num<<"\t"<<"姓名:"<<s[i].name<<"\t"<<"班级:"<<s[i].class1<<"\t"
  <<"语文成绩:"<<s[i].chinese<<"\t"<<"数学成绩:"<<s[i].math<<"\t"<<"英语成绩"<<s[i].english<<"\t总成绩"<<s[i]sum<<endl;
  cout<<endl;
 }
 break;*/
 
/* case 3:
 int t;
 for(int i=0;i<n-1;i++)
 { for(int j=0;j>n-1-i;j++)
 {
 if(s[j].aver()>s[j+1].aver())
 t=s[j].aver(); s[j].aver()=s[j+1].aver(); s[j+1].aver()=t;
 } 
 }
  cout<<"按平均成绩排序结果:"<<endl;
 for(i=0;i<n;i++)
  cout<<"学号:"<<s[i].num<<"\t"<<"姓名:"<<s[i].name<<"\t"<<"班级:"<<s[i].class1<<"\t"
  <<"语文成绩:"<<s[i].chinese<<"\t"<<"数学成绩:"<<s[i].math<<"英语成绩"<<s[i].english<<endl;
  cout<<endl;
 }
 break ;
*/
 
 default:
 {cout<<"您的输入有误!请重新输入!"<<endl;
 cin>>a;}
 }
 
}
 void del()
{
 
 int j,i,k;char c[10],sel,y;
 do{
 cout<<"请输入你要删除的学生的姓名:"<<endl;
 cin>>c;
 for(i=1;i<=n;i++)
 if(strcmp(s[i].name,c)==0)
 {cout<<"你要删除的学生信息为:"<<endl;
 cout<<"学生学号:"<<s[i].num<<endl
 <<"学生姓名:"<<s[i].name<<endl
 <<"学生班级:"<<s[i].class1<<endl
 <<"语文成绩:"<<s[i].chinese<<endl
 <<"数学成绩:"<<s[i].math<<endl
 <<"英语成绩:"<<s[i].english<<endl;
 cout<<"确认删除?(y/n):";
 cin>>y;
 if(y=='Y'||y=='y')
 {
 for(j=i;j<=n+1;j++)
 {
  s[j]=s[j+1];
 } k=1;
 }
 else 
 cout<<"删除失败!"<<endl;
 
 
 break;
 }
 else if(strcmp(s[i].name,c)!=0&&i==n)
 {cout<<"没有这个学生!请核对后再输入!"<<endl;
 k=0;break;}
 while(k==1)
 {
 if(y=='Y'||y=='y')
 cout<<"删除成功!";
 n--;
 k=0;
 }
 cout<<"是否要继续删除学生信息(Y/N):";
 cin>>sel;
 
 }while(sel=='Y' || sel=='y' ); 
 
}

效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C语言示例讲解while循环语句的用法

    C语言示例讲解while循环语句的用法

    在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。一组被重复执行的语句称之为循环体,C语言while语句可以是单个语句,也可以是一个语句块,其条件可以是任意表达式,true是任意非零值,当条件为真时,循环进行迭代
    2022-06-06
  • C++线程中几类锁的详解

    C++线程中几类锁的详解

    这篇文章主要为大家介绍了C++线程中几类锁,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • C语言实现发送邮件功能

    C语言实现发送邮件功能

    这篇文章主要为大家详细介绍了C语言实现发送邮件功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • C语言中getch()函数详解及简单实例

    C语言中getch()函数详解及简单实例

    这篇文章主要介绍了C语言中getch()函数详解及简单实例的相关资料,需要的朋友可以参考下
    2017-03-03
  • C++中引用的相关知识点小结

    C++中引用的相关知识点小结

    引用是C++一个很重要的特性,顾名思义是某一个变量或对象的别名,对引用的操作与对其所绑定的变量或对象的操作完全等价,这篇文章主要给大家总结介绍了C++中引用的相关知识点,需要的朋友可以参考下
    2022-03-03
  • VS2019实现C++的第一个MFC程序

    VS2019实现C++的第一个MFC程序

    本文主要介绍了VS2019实现C++的第一个MFC程序,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-06-06
  • C++ OpenCV实战之图像全景拼接

    C++ OpenCV实战之图像全景拼接

    本文主要介绍了如何使用OpenCV C++ 进行图像全景拼接,文中的示例代码讲解详细,对我们学习OpenCV有一定的帮助,感兴趣的可以了解一下
    2022-01-01
  • 解析Linux下的时间函数:设置以及获取时间的方法

    解析Linux下的时间函数:设置以及获取时间的方法

    本篇文章是对Linux下的时间函数:设置以及获取时间的方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++设计模式之享元模式

    C++设计模式之享元模式

    这篇文章主要介绍了C++设计模式之享元模式,本文讲解了什么是享元模式、享元模式代码实例、享元模式的优点等内容,需要的朋友可以参考下
    2014-10-10
  • 关于C语言函数strstr()的分析以及实现

    关于C语言函数strstr()的分析以及实现

    以下是对C语言中strstr()函数的使用进行了详细的分析介绍,需要的朋友可以参考下
    2013-07-07

最新评论