您的位置:首页 > 编程语言 > C语言/C++

C++ 课程设计学生成绩管理系统源代码

2016-08-12 22:33 706 查看
用c++实现学生成绩管理系统,要求用类实现并且可实现增删改查及成绩排名。

#include<afxstd.h>

typedef class

{  

public:

int cls; char nam[10];  char num[10];  int c;  int english;  int computer;  int math; int s;

}Student;  

Student stud1[100],stud2[100];

int menu()

{

char a;

  while(a>'7'||a<'0')

 {   

  system("cls");  

  cout<<"                   欢迎使用学生成绩管理系统 ";   

  cout<<endl;   

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

  cout<<setw(30)<<" "<<"1.输入学生成绩"<< endl;  

  cout<<setw(30)<<" "<<"2.输出学生成绩"<<endl;  

  cout<<setw(30)<<" "<<"3.查找并显示学生成绩"<<endl;  

  cout<<setw(30)<<" "<<"4.按姓名查找,修改学生资料"<<endl;

  cout<<setw(30)<<" "<<"5.显示班级成绩单"<<endl;

  cout<<setw(30)<<" "<<"6.查找并删除学生信息"<<endl;  

  cout<<setw(30)<<" "<<"7.从文件读取数据"<<endl;

  cout<<setw(30)<<" "<<"0.储存学生资料并退出系统"<<endl;  

  cout<<setfill('=')<<setw(80)<<"="<<endl;  

  cout<<"请选择(0-7)"<<endl;  

 cout<<setw(35)<<" ";  

  a=getchar();

 }

  return(a-'0');

}

/***************************************************************************************/

 int Input(Student stud[],int n)      //输入数据(第一学期)。

{  

 int i=0;

 char sign,x[10];

  for(;sign !='n'&&sign !='N';)

 {    

   cout<<setw(15)<<" "<<"姓名:";  

   cin>>stud[n+i].nam;   

   cout<<setw(15)<<" "<<"班级(如:1401):";

   cin>>stud[n+i].cls;  

   cout<<setw(15)<<" "<<"学号:";  

   cin>>stud[n+i].num;  

   cout<<setw(15)<<" "<<"C语言:";

   cin>>stud[n+i].c;   

   cout<<setw(15)<<" "<<"数学:";

   cin>>stud[n+i].math;  

   cout<<setw(15)<<" "<<"英语:";

   cin>>stud[n+i].english;  

   cout<<setw(15)<<" "<<"计算机:";  

   cin>>stud[n+i].computer;  

   gets(x);   

   cout<<setw(10)<<" ";

   cout<<"还有要输入的信息吗?(y/n)";  

   cin>>&sign;

   i++;  

}  

 return(n+i);

}

 /*************************************输出数据***********************************************/

void Display(Student stud[], int n)

{   

int i;

cout<<setw(15)<<" "<<setfill('-')<<setw(65)<<"-"<<endl;

    cout<<setw(15)<<" "<<"班级"<<"\t"<<"学号"<<"\t"<<"姓名"<<"\t"<<"C语言"<<"\t"<<"
数学"<<"\t"<<"
英语"<<"\t"<<"
计算机"<<"\t"<<"总分"<<"\t"<<"平均分"<<endl;

    cout<<setw(15)<<" ";  

    cout<<setfill('-')<<setw(65)<<"-"<<endl;

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

 {    

cout<<setw(15)<<" ";

     stud[i-1].s=stud[i-1].c+stud[i-1].math+stud[i-1].english+stud[i-1].computer;  

    cout<<"  "<<stud[i-1].cls<<"\t"<<stud[i-1].num<<"\t"<<stud[i-1].nam<<"\t"<<stud[i-1].c<<"\t"<<stud[i-1].math<<"\t "<<stud[i-1].english<<"\t"<<stud[i-1].computer<<"\t"<<stud[i-1].s<<"\t"<<stud[i-1].s/4<<endl;

  if(i>1 && i%10==0)  

 {   

  cout<<setw(15)<<" "<<setfill('-')<<setw(35)<<"-"<<endl;  

  cout<<setw(15)<<" ";   

  system("pause");   

  cout<<setw(15)<<" "<<setfill('-')<<setw(35)<<"-"<<endl;

  }  

}  

 cout<<setw(15)<<" ";

 system("pause");

 }  

/************************************查找学生显示其信息***************************************************/

void Query(Student stud[],int n)

 {  

char nam[20];

    cout<<setw(15)<<" "<<"输入其姓名:"<<endl;

    cin>>nam;

    int i=0;  

 while(strcmp(stud[i].nam,nam)!=0&&i<n)   i++;

 if(i==n)  

{   

 cout<<"\t\t\t"<<"没有发现该学生的资料!"<<endl;

 return;

 }  

  cout<<setw(15)<<" "<<"学号:"<<stud[i].num<<endl;  

  cout<<setw(15)<<" "<<"班级:"<<stud[i].cls<<endl;

  cout<<setw(15)<<" "<<"C语言:"<<stud[i].c<<endl;

  cout<<setw(15)<<" "<<"英语:"<<stud[i].english<<endl;  

  cout<<setw(15)<<" "<<"数学:"<<stud[i].math<<endl;   

  cout<<setw(15)<<" "<<"计算机:"<<stud[i].computer<<endl;

 }

 /*********************************删除学生信息************************************/

int Delete(Student stud[],int n)

{  

char s[20];    int i=0,j;  

 cout<<setw(15)<<"请输入要删除的学生的姓名:"<<endl;

 cin>>s;  

 while(strcmp(stud[i].nam,s)!=0&&i<n)  i++;  

 if(i==n)  

 {  

 printf("\t\t\t没有发现该学生资料!\n");

 return(n);  

 }   

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

  {    

  strcpy(stud[j].num,stud[j+1].num);

      strcpy(stud[j].nam,stud[j+1].nam);

      stud[j].cls=stud[j+1].cls;

      stud[j].c=stud[j+1].c;

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

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

      stud[j].computer=stud[j+1].computer;

 }   

 cout<<setw(15)<<" "<<"当前信息已删除成功!"<<endl;   return(n-1);

 }  

 /*******************************修改信息 ******************************************/

 int Revise(Student stud[],int n)

 {   

int i=0; char na[10];

cin>>na;

  while(strcmp(stud[i].nam,na)!=0&&i<n)   i++;  

if(i==n)

  {   

 cout<<"\t\t\t"<<"没有发现该学生的资料!"<<endl;

}

   cout<<"修改班级:"<<endl;   

   cin>>stud[i].cls;

   cout<<"修改学号:"<<endl;  

   cin>>stud[i].num;  

   cout<<"修改C语言成绩:"<<endl;

   cin>>stud[i].c;

   cout<<"修改英语成绩:"<<endl;  

   cin>>stud[i].english;

   cout<<"修改数学成绩:"<<endl;  

   cin>>stud[i].math;

   cout<<"修改计算机成绩:"<<endl;

   cin>>stud[i].computer;    

   cout<<"修改成功"<<endl;

   return(n);

 }  

 /***************************************显示班级成绩单**************************************/

 void cjd(Student stud[], int n)

{   

int i,m,j;

cout<<"请输入班级(如:1401):";

cin>>m;

    cout<<setw(15)<<" "<<setfill('-')<<setw(65)<<"-"<<endl;

    cout<<setw(15)<<" "<<"班级"<<"\t"<<"学号"<<"\t"<<"姓名"<<"\t"<<"C语言"<<"\t"<<"
数学"<<"\t"<<"
英语"<<"\t"<<"
计算机"<<"\t"<<"总分"<<"\t"<<"平均分"<<endl;

    cout<<setw(15)<<" ";  

    cout<<setfill('-')<<setw(65)<<"-"<<endl;

for(i=1;i<n+1;i++) {

stud[i-1].s=stud[i-1].c+stud[i-1].math+stud[i-1].english+stud[i-1].computer;}

for(i=1;i<n+1;i++) {

for(j=i+1;j<n+1;j++) {

if(stud[i-1].s<stud[j-1].s){

Student  temp;

temp=stud[i-1];

stud[i-1]=stud[j-1];

stud[j-1]=temp;

}

}

}

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

 {    

cout<<setw(15)<<" ";

     stud[i-1].s=stud[i-1].c+stud[i-1].math+stud[i-1].english+stud[i-1].computer;  

    cout<<"  "<<stud[i-1].cls<<"\t"<<stud[i-1].num<<"\t"<<stud[i-1].nam<<"\t"<<stud[i-1].c<<"\t"<<stud[i-1].math<<"\t "<<stud[i-1].english<<"\t"<<stud[i-1].computer<<"\t"<<stud[i-1].s<<"\t"<<stud[i-1].s/4<<endl;

  if(i>1 && i%10==0)  

 {   

  cout<<setw(15)<<" "<<setfill('-')<<setw(35)<<"-"<<endl;  

  cout<<setw(15)<<" ";   

  system("pause");   

  cout<<setw(15)<<" "<<setfill('-')<<setw(35)<<"-"<<endl;

  }  

}  

 cout<<setw(15)<<" ";

 system("pause");

 

 }

 /**************************************从文件读取数据*************************************************/

 int AddfromText(Student stud[], int n)  

{  

int i=0,number,x=0,y=0;

FILE *fp;  

char filename[20];  

cout<<setw(15)<<" "<<"输入文件名:";

cin>>filename;

  if((fp=fopen(filename,"rb"))==NULL)

 {   

 cout<<setw(15)<<" "<<"无法打开文件"<<endl;  

    cout<<setw(15)<<" ";  

 system("pause");  

 return(n);

 }   

fscanf(fp,"%d",&number);

  for(;i<number;)

{  

fscanf(fp,"%d%s%s%d%d%d%d%d%d\n",

&stud[n+i].cls, &stud[n+i].num,

&stud[n+i].nam, &stud[n+i].c,

&stud[n+i].math, &stud[n+i].english,

&stud[n+i].computer,&x,&y);

  i++;

  }

   n+=number;

 fclose(fp);  

  cout<<setw(15)<<" "<<"读入成功!"<<endl;  

  cout<<setw(15)<<" ";

  system("pause");

  return(n);

   }   

/**************************************将所有记录写进文件*************************************/  

void WritetoText(Student stud[],int n)     

{  

 int i=0;  

 FILE *fp;  

 char filename[20];  

cout<<setw(15)<<" "<<"将资料输入文件"<<endl;

cout<<setw(15)<<" "<<"输入文件名:";  

cin>>filename;  

 if((fp=fopen(filename,"w+"))==NULL)  

{   

 cout<<setw(15)<<" "<<"无法打开文件"<<endl;

 system("pause");  

 return;

 }

  fprintf(fp,"%d\n",n);

    for(;i<n;)   

{   

fprintf(fp,"%-8d%-8s%-8s%-5d%-5d%-5d%-5d%-5d%-5d\n",

stud[i].cls, stud[i].num, stud[i].nam,   

stud[i].c, stud[i].math,

stud[i].english, stud[i].computer,  

stud[i].c+stud[i].math+stud[i].english+stud[i].computer,    

(stud[i].c+stud[i].math+stud[i].english+stud[i].computer)/4);

   i++;

}  

fclose(fp);

}

 /**************************************主函数调用*********************************************/

void main()

 {

int n1=0,n2=0;

 for(;;)

 {   

switch(menu())  

 {   

case 1:  

    int t;   

   cout<<setw(15)<<" "<<"输入学生资料"<<endl;  

   cout<<setw(15)<<" "<<"输入学期(1 or 2)"<<endl;   

   cout<<setw(15)<<" ";   

   cin>>t;  

  if(t==1)   

  {                 n1=Input(stud1,n1);    }  

  else if(t==2)    {      n2=Input(stud2,n2);    }     break;  

 case 2:  

   cout<<setw(15)<<" "<<"输出所有学生资料"<<endl;   

 if(n1!=0)   

 {    

 cout<<setw(15)<<" "<<"第一学期:"<<endl;    

     cout<<setw(15)<<" ";  

     Display(stud1,n1);  

 }   

  if(n2!=0)   

 {    

  cout<<setw(15)<<" "<<"第二学期:"<<endl;     

    cout<<setw(15)<<" ";   

      Display(stud2,n2);

  }   break;

 case 3:  

  int r;    

  cout<<setw(15)<<" "<<"查找学生"<<endl;  

  cout<<setw(15)<<" "<<"请输入学期:"<<endl;   

  cin>>r;  

  if(r==1)    

{      Query(stud1,n1);    }

  else if(r==2)    {      Query(stud2,n2);    }   

  cout<<setw(15)<<" ";   

  system("pause");    break;  

 case 4:   

int p;    

    cout<<setw(15)<<" "<<"修改学生资料"<<endl;

    cout<<setw(15)<<" "<<"请输入学期:"<<endl;

    cin>>p;

   if(p==1)   

 {    

   cout<<setw(15)<<" "<<"输入你要修改的学生的姓名:";     

       n1=Revise(stud1,n1);  

   }   

  else if(p==2)  

  {    

  cout<<setw(15)<<" "<<"输入你要修改的学生的姓名:";  

      n2=Revise(stud2,n2);  

  }

 system("pause");    break;  

case 5:

 cout<<setw(15)<<" "<<"显示班级成绩单"<<endl;

 if(n1!=0)   

 {    

 cout<<setw(15)<<" "<<"第一学期:"<<endl;    

     cout<<setw(15)<<" ";  

     cjd(stud1,n1);  

 }   

  if(n2!=0)   

 {    

  cout<<setw(15)<<" "<<"第二学期:"<<endl;     

    cout<<setw(15)<<" ";   

      cjd(stud2,n2);

  }   break;  

 case 6:     

 cout<<setw(15)<<"查找并删除学生信息"<<endl;

     int o;   

     cout<<"请输入学期:"<<endl;

     cout<<setw(15)<<" ";

     cin>>o;  

  if(o==1)   

 {     

 cout<<setw(15)<<"第一学期"<<endl;  

   n1=Delete(stud1,n1);  

  }

    if(o==2)  

  {     

 cout<<setw(15)<<" "<<"第二学期"<<endl;  

   n2=Delete(stud2,n2);  

  }    

 system("pause");    break;

case 7:    

       cout<<setw(15)<<" "<<"从文件中读入数据"<<endl;    

       cout<<setw(15)<<"读取第一学期的文件"<<endl;    

   n1=AddfromText(stud1,n1);      

       cout<<setw(15)<<"读取第二学期的文件"<<endl;    

   n2=AddfromText(stud2,n2);          break;    

 case 0:  

   cout<<setw(15)<<" "<<"将所有资料写入文件"<<endl;  

  if(n1!=0)  

  {    

cout<<setw(15)<<" "<<"存储第一学期学生资料:"<<endl;      WritetoText(stud1,n1);    }     

  if(n2!=0)  

  {     

 cout<<setw(15)<<" "<<"存储第二学期学生资料:"<<endl;     WritetoText(stud2,n2);   }  

   cout<<setw(15)<<" "<<"输入成功"<<endl;

   int b;    

   cout<<setw(15)<<" "<<"请确定是否退出系统:"<<endl;  

   cout<<setw(15)<<" "<<"0.退出系统"<<endl;  

   cout<<setw(15)<<" "<<"1.返回"<<endl;     

   cout<<setw(15)<<" ";    

  cin>>b;  

  if(b==0)  

  {     

 cout<<setw(15)<<" "<<"谢谢使用"<<endl;  

     cout<<setw(15)<<" ";

     system("pause");  

     exit(0);  

  }   

  cout<<setw(15)<<" ";  

  system("pause");   

 break;   

 }  

 }

 }   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: