学生成绩单管理系统源代码.docx

上传人:b****8 文档编号:9902100 上传时间:2023-02-07 格式:DOCX 页数:16 大小:18.45KB
下载 相关 举报
学生成绩单管理系统源代码.docx_第1页
第1页 / 共16页
学生成绩单管理系统源代码.docx_第2页
第2页 / 共16页
学生成绩单管理系统源代码.docx_第3页
第3页 / 共16页
学生成绩单管理系统源代码.docx_第4页
第4页 / 共16页
学生成绩单管理系统源代码.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

学生成绩单管理系统源代码.docx

《学生成绩单管理系统源代码.docx》由会员分享,可在线阅读,更多相关《学生成绩单管理系统源代码.docx(16页珍藏版)》请在冰豆网上搜索。

学生成绩单管理系统源代码.docx

学生成绩单管理系统源代码

学生成绩单管理系统

利用面向对象编程方法设计一个学生成绩单管理系统,要求实现以下功能:

●录入(添加)学生信息:

学号、姓名、平时成绩和考试成绩,系统自动计算总评成绩(平时成绩占20%,考试成绩占80%)。

可以一次录入多名学生的信息。

●查询学生成绩:

输入要查询的学生的学号,查询该学生的信息并显示。

●显示学生成绩单:

按学号顺序显示学生成绩单。

●删除学生信息:

输入要删除的学生的学号,得到用户确认后,删除该学生的信息。

●修改学生信息:

输入要修改的学生的学号,显示该学生的原有信息,用户输入修改后的信息。

●对成绩进行统计分析:

可以对总成绩进行统计分析,分别统计出各个成绩段的人数和比例,本课程班级平均成绩等。

实验步骤如下:

1.创建项目

创建一个Win32ConsoleApplication,项目名为“StudentScore”。

2.定义学生类CStudent

(1)新建一个“C/C++HeaderFile”,文件名为“student.h”,代码如下:

//student.h 学生类的定义

classCStudent{ 

public:

    CStudent(char*id="",char*na="",intus=0,intts=0);//构造函数

  CStudent(constCStudent&s); //拷贝构造函数

  ~CStudent(); 

  char*GetID();    //获取学生的学号

  doubleGetTotalScore();  //获取总评成绩

  staticvoidTableHead();  //输出表头  

voidDisplay(); //显示学生信息

private:

  charID[5];    //学号

  charname[10];   //姓名

  intUsualScore;  //平时成绩

  intTestScore;  //考试成绩

  doubleTotalScore; //总评成绩  

  voidCalcTotalScore(); //计算总评成绩

};

(2)新建一个“C++SourceFile”,文件名为“student.cpp”,代码如下:

//student.cpp 学生类的成员函数实现

#include

#include

#include"student.h"

CStudent:

:

CStudent(char*id,char*na,intus,intts) //构造函数

{

  strcpy(ID,id);

  strcpy(name,na);

  UsualScore=us;

  TestScore=ts;

  CalcTotalScore();

}

CStudent:

:

CStudent(constCStudent&s) //拷贝构造函数

{  

  strcpy(ID,s.ID);

  strcpy(name,s.name);

  UsualScore=s.UsualScore;

  TestScore=s.TestScore;

  TotalScore=s.TotalScore;

}

CStudent:

:

~CStudent()

{ }

char*CStudent:

:

GetID() //取得学生的学号

{  returnID;}   

doubleCStudent:

:

GetTotalScore()  //获取总成绩

{  returnTotalScore;}

voidCStudent:

:

TableHead() //输出学生信息表头

{

    cout<

<<"平时成绩"<

voidCStudent:

:

Display()//显示学生信息

{  cout<

      <

}

voidCStudent:

:

CalcTotalScore() //计算总成绩

{  TotalScore=UsualScore*0.2+TestScore*0.8; }

3.定义成绩单类CStuDataBase

(1)新建一个“C/C++HeaderFile”,文件名为“StuDataBase.h”,代码如下:

//StuDataBase.h 定义成绩单类,用来管理所有学生的成绩信息

#include"student.h"

constintMaxStuNum=51; //班级学生人数最多50人 

classCStuDatabase{

public:

  CStuDatabase();  //构造函数,从文件中读入学生成绩信息

  ~CStuDatabase();  //析构函数,将学生成绩信息写入到文件中

  voidListScore(); //显示成绩单,输出所有学生信息  

  voidSelectStuInfo(); //查询学生信息  

  voidAddStuInfo();  //添加学生成绩  

  voidDelStuInfo();  //删除学生信息  

  voidEditStuInfo(); //修改学生信息  

  voidAnalyScore();  //对成绩进行统计分析

  voidStuDBM(int);     //成绩库维护

  intFunctionMenu();  //功能菜单  

private:

    intnum;          //学生人数

    CStudentstu[MaxStuNum];  //学生数组,stu[0]不用

  intSearchStu(constchar*id);  //查找指定学号的学生

  voidSortStu(); //按学号从小到大对成绩单排序 

};

(2)新建一个“C++SourceFile”,文件名为“StuDataBase.cpp”,代码如下:

//StuDataBase.cpp成绩单类的实现

#include

#include

#include

#include

#include

#include"StuDataBase.h"

intInputScore() //输入百分制成绩

{  intscore;

cin>>score;

while(score<0||score>100)

{   cout<<"成绩超出范围,请重新输入百分制成绩(0---100分):

";

    cin>>score;

}

returnscore;

}

CStuDatabase:

:

CStuDatabase() //从文件中读入学生信息

{  CStudents; //学生对象

num=0;

fstreamStuFile; //该文件用来保存学生信息  

StuFile.open("StuInfo.dat",ios:

:

in);

if(!

StuFile)

{  cout<<"文件StuInfo.dat不能打开!

\n";

   return;

  }

  StuFile.read((char*)&s,sizeof(s));

  while(!

StuFile.eof())

  { num++;

    stu[num]=s;

      StuFile.read((char*)&s,sizeof(s));

    }

  StuFile.close();

}  

CStuDatabase:

:

~CStuDatabase() //将学生信息写入到文件中

{

  fstreamStuFile;  //该文件用来保存学生信息

  StuFile.open("StuInfo.dat",ios:

:

out);

  if(!

StuFile)

  {  cout<<"文件StuInfo.dat不能创建!

\n";

    return;

  }

  for(inti=1;i<=num;i++)

  {  StuFile.write((char*)&stu[i],sizeof(stu[i]));  }

  StuFile.close();

}  

intCStuDatabase:

:

SearchStu(constchar*id) //查找指定学号的学生

{

  for(inti=1;i<=num;i++)

    if(strcmp(stu[i].GetID(),id)==0)

      returni;

  return-1;

}  

intCStuDatabase:

:

FunctionMenu() //功能菜单

{  intFuncNum;  //保存操作编号

  system("cls"); //清屏

  cout<<"\n\n\n";

  cout<

  cout<

\n\n";

  cout<

    <

    <

    <

    <

    <

    <

  cout<

  cin>>FuncNum;

  while(FuncNum<0||FuncNum>6)

  {

    cout<<"请重新选择要进行的操作:

"<

    cin>>FuncNum;

  }

  returnFuncNum;

}

voidCStuDatabase:

:

StuDBM(intFuncNum)//成绩维护

{

  switch(FuncNum)  {

  case1:

SelectStuInfo(); break;  //查询学生成绩

  case2:

ListScore();break;    //显示成绩单

  case3:

AddStuInfo(); break;   //添加学生信息      

  case4:

DelStuInfo();break;   //删除学生信息

  case5:

EditStuInfo(); break;  //修改学生信息

  case6:

AnalyScore(); break;   //对成绩进行统计分析

  }

}

voidCStuDatabase:

:

SelectStuInfo() //查询学生信息

{

  system("cls"); //清屏

  charno[5]; //临时保存学号

  cout<<"\n请输入要查询的学生学号:

"<

cin>>no;

  inti=SearchStu(no);

  if(i==-1)

  {  cout<<"\n你查找的学生不存在!

\n";  }

  else

  {  cout<<"\n你所查找的学生成绩如下:

\n\n";

    CStudent:

:

TableHead();  //输出表头

    stu[i].Display();

  } 

  cout<<"\n按任意键返回...."<

  getch();

}

voidCStuDatabase:

:

ListScore()//显示成绩单

{

  system("cls"); //清屏

if(num==0)

  {  cout<<"当前还没有学生成绩!

\n";  }

  else

  {

    SortStu();//按学号对成绩单排序 

    CStudent:

:

TableHead();  //输出表头

    for(inti=1;i<=num;i++)

      stu[i].Display();

    cout<<"\n共有"<

  }

  cout<<"\n显示成绩完毕!

\n\n按任意键返回...."<

  getch();

}

voidCStuDatabase:

:

AddStuInfo()//添加学生成绩

{  system("cls"); //清屏

   charno[5]; //临时保存学号

  cout<<"请输入要添加的学生的学号(输入-1结束):

";

  cin>>no;

  while(strcmp(no,"-1")!

=0)

  {

    inti=SearchStu(no);

    while(i!

=-1)

    {  cout<<"\n你添加的学生已存在!

\n请重新输入学号(-1结束):

";        cin>>no;

      if(strcmp(no,"-1")==0)

      {

        cout<<"\n本次操作完成!

\n\n按任意键返回...."<

        getch();

        return;

      }

      i=SearchStu(no);

    }

    num++;

    charna[10];

    cout<<"\n请输入要添加的学生的姓名:

";

    cin>>na;

    cout<<"\n请输入要添加的学生的平时成绩:

\n";

    intus=InputScore();    

    cout<<"\n请输入要添加的学生的考试成绩:

\n";

    intts=InputScore();

    CStudents(no,na,us,ts);

    stu[num]=s;      

    cout<<"\n\n请输入要添加的学生的学号(输入-1结束):

";

    cin>>no;

    }

    cout<<"\n本次操作完成!

\n\n按任意键返回...."<

  getch();

}  

voidCStuDatabase:

:

DelStuInfo()//删除学生信息模块

{  system("cls"); //清屏

  charno[5]; //临时保存学号

  cout<<"\n请输入要删除的学生学号:

"<

  cin>>no;

  inti=SearchStu(no);

  if(i==-1)

{  cout<<"\n你要删除的学生不存在!

\n";  }

  else

 { cout<<"\n您所删除的学生信息如下:

\n\n";

CStudent:

:

TableHead();  //输出表头

stu[i].Display();

charanser;

cout<<"\n是否真的要删除该学生?

(Y/N):

";

cin>>anser;

if(anser=='y'||anser=='Y')

{

for(intj=i+1;j<=num;j++)

stu[j-1]=stu[j];

num--;

cout<<"\n删除信息成功!

"<

}    

    }  

    cout<<"\n\n按任意键返回...."<

    getch();

voidCStuDatabase:

:

EditStuInfo()//修改学生信息模块

{  system("cls"); //清屏

  charno[5]; //临时保存学号

    cout<<"\n请输入要修改的学生学号:

"<

  cin>>no;

  inti=SearchStu(no);

  if(i==-1)

  {  cout<<"\n你要修改的学生不存在!

\n";   }

  else

  {  cout<<"\n您所修改的学生成绩如下:

\n\n";

    CStudent:

:

TableHead();  //输出表头

    stu[i].Display();

     cout<<"\n请输入学生的新信息:

";

    cout<<"\n请输入学生的姓名:

";

    charna[10];

    cin>>na;

    cout<<"\n请输入学生的平时成绩:

\n";

    intus=InputScore();

    cout<<"\n请输入学生的考试成绩:

\n";

    intts=InputScore();

    CStudents(no,na,us,ts);

    stu[i]=s;  

  cout<<"\n修改信息成功!

"<

}

cout<<"\n\n按任意键返回...."<

getch();    

}

voidCStuDatabase:

:

AnalyScore()//对成绩进行统计分析

{  system("cls"); //清屏

  intc[5]={0};  //用来保存各个分数段的人数

  doubleAveScore=0; //用来保存所有学生的平均成绩

  doublets; //临时保存总评成绩

  for(inti=1;i<=num;i++)

  {

    ts=stu[i].GetTotalScore();

    AveScore+=ts;

    switch(int(ts/10)){

    case10:

    case9:

 c[0]++; break; //90(含90)分以上人数

    case8:

   c[1]++; break; //80(含80)---90(不含90)分人数

    case7:

   c[2]++; break; //70(含70)---80(不含80)分人数

    case6:

   c[3]++; break; //60(含60)---70(不含70)分人数

      default:

 c[4]++; break; //不及格人数

      }

    }

    AveScore/=num;

cout<<"\n学生成绩分布情况如下:

\n\n";

  cout<<"优秀(90分---100分)人数:

"<

<

cout<<"良好(80分---89分)人数:

"<

<

    cout<<"中等(70分---79分)人数:

"<

<

  cout<<"及格(60分---69分)人数:

"<

<

cout<<"不及格(60分以下)人数:

"

<

  cout<<"学生总人数为:

"<

  cout<<"\n班级平均成绩为:

"<

  cout<<"\n按任意键返回...."<

  getch();

voidCStuDatabase:

:

SortStu() //按学号从小到大对成绩单排序

{  inti,j,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 广告传媒

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1