21xrx.com
2024-12-22 23:23:52 Sunday
登录
文章检索 我的文章 写文章
大一C++学生成绩管理系统代码
2023-07-02 18:05:16 深夜i     --     --
大一 C++ 学生成绩管理系统 代码

作为一名大一计算机专业的学生,学习C++语言是必不可少的。在学习过程中,我们还需要通过实践来巩固自己所学的知识。因此,为了锻炼我们的编程能力,我们在课程中完成了一个简单的学生成绩管理系统。

这个学生成绩管理系统主要包括学生信息的录入和成绩的录入、查询和修改等功能。在实现过程中,我们需要运用到C++的基本语法、文件操作、指针和结构体等知识。

下面是整个程序的代码,我们对其进行简单的分析。


#include<iostream>

#include<fstream>

#include<stdlib.h>

#include<string.h>

#include<time.h>

#include<iomanip>

using namespace std;

#define FILENAME "Student.dat"//定义文件名

//学生信息结构体

typedef struct student

{

  char num[10];//学号

  char name[20];//姓名

  char sex[10];//性别

  char major[20];//专业

  int age;//年龄

}STUDENT;

//学生成绩结构体

typedef struct score

{

  char num[10];//学号

  double chinese;//语文成绩

  double math;//数学成绩

  double english;//英语成绩

  double total;//总分

}SCORE;

//文件操作类

class FileManagement

{

public:

  void writeScore(&STUDENT student,SCORE &score);//文件写入

  int readScore(STUDENT &student,SCORE &score,char num[]);//文件读出

  void modifyScore(STUDENT &student,SCORE &score);//成绩修改

};

//文件写入函数

void FileManagement::writeScore(STUDENT &student,SCORE &score)

{

  fstream outFile;

  outFile.open(FILENAME,ios::out|ios::app|ios::binary);

  outFile.write((char*)&student,sizeof(student));

  outFile.write((char*)&score,sizeof(score));

  outFile.close();

}

//文件读出函数

int FileManagement::readScore(STUDENT &student,SCORE &score,char num[])

{

  fstream inFile;

  inFile.open(FILENAME,ios::in|ios::binary);

  if(!inFile)

  {

    return -1;

  }

  while(inFile.read((char*)&student,sizeof(student)))

  {

    if(strcmp(num,student.num)==0)

    {

      inFile.read((char*)&score,sizeof(score));

      inFile.close();

      return 0;

    }

  }

  inFile.close();

  return -1;

}

//成绩修改函数

void FileManagement::modifyScore(STUDENT &student,SCORE &score)

{

  char num[10];

  int flag=0;

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

  cin>>num;

  fstream outFile;

  outFile.open(FILENAME,ios::out|ios::in|ios::binary);

  if(!outFile)

  {

    cout<<"文件打开失败!"<<endl;

    return ;

  }

  while(outFile.read((char*)&student,sizeof(student)))

  {

    if(strcmp(num,student.num)==0)

    {

      cout<<"请输入修改后的语文成绩:";

      cin>>score.chinese;

      cout<<"请输入修改后的数学成绩:";

      cin>>score.math;

      cout<<"请输入修改后的英语成绩:";

      cin>>score.english;

      score.total=score.chinese+score.math+score.english;

      outFile.write((char*)&student,sizeof(student));

      outFile.write((char*)&score,sizeof(score));

      flag=1;

      break;

    }

  }

  if(flag==0)

  {

    cout<<"没有找到该学生!"<<endl;

    return ;

  }

  outFile.close();

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

}

//主函数

int main()

{

  SYSTEMTIME sys;//系统时间结构体

  GetLocalTime(&sys);//获得系统时间

  int choice;//选择功能序号

  char num[10];//学号

  STUDENT student;//学生信息

  SCORE score;//学生成绩

  FileManagement fm;//文件操作对象

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

  cout<<"请选择功能:"<<endl;

  cout<<"1. 录入学生信息及成绩"<<endl;

  cout<<"2. 查询学生成绩"<<endl;

  cout<<"3. 修改学生成绩"<<endl;

  cout<<"4. 退出程序"<<endl;

  while(true)

  {

    cout<<"请输入功能序号:";

    cin>>choice;

    switch(choice)

    {

      case 1:

        {

          cout<<"请依次输入以下信息:"<<endl;

          cout<<"学生学号:";

          cin>>student.num;

          cout<<"学生姓名:";

          cin>>student.name;

          cout<<"学生性别:";

          cin>>student.sex;

          cout<<"学生专业:";

          cin>>student.major;

          cout<<"学生年龄:";

          cin>>student.age;

          cout<<"语文成绩:";

          cin>>score.chinese;

          cout<<"数学成绩:";

          cin>>score.math;

          cout<<"英语成绩:";

          cin>>score.english;

          score.total=score.chinese+score.math+score.english;

          fm.writeScore(student,score);

          cout<<"录入成功!"<<endl;

          cout<<endl;

          break;

        }

      case 2:

        {

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

          cin>>num;

          int flag=fm.readScore(student,score,num);

          if(flag==-1)

          {

            cout<<"没有找到该学生!"<<endl;

          }

          else

          {

            cout<<"学号\t\t姓名\t\t性别\t\t专业\t\t年龄\t\t语文\t\t数学\t\t英语\t\t总分"<<endl;

            cout<<student.num<<"\t\t"<<student.name<<"\t\t"<<student.sex<<"\t\t"<<student.major<<"\t\t"<<student.age<<"\t\t";

            cout<<score.chinese<<"\t\t"<<score.math<<"\t\t"<<score.english<<"\t\t"<<score.total<<endl;

          }

          cout<<endl;

          break;

        }

      case 3:

        {

          fm.modifyScore(student,score);

          cout<<endl;

          break;

        }

      case 4:

        {

          cout<<"感谢使用,程序已退出!"<<endl;

          return 0;

        }

      default:

        {

          cout<<"输入的序号有误,请重新输入!"<<endl;

          cout<<endl;

          break;

        }

    }

  }

  return 0;

}

首先,在程序开头定义了两个结构体:学生信息结构体和学生成绩结构体。这两个结构体分别用来存储学生基本信息和考试成绩。

接着,定义了一个FileManagement类,用来进行文件的读写和成绩的修改。这个类中包含了三个函数:writeScore、readScore和modifyScore。其中writeScore函数用来将学生信息和成绩写入到文件中;readScore函数用来从文件中读取指定学生的信息和成绩;modifyScore函数用来修改指定学生的成绩。

在主函数中,我们首先输出了欢迎信息和菜单选项。通过选择菜单选项,可以调用不同的函数实现相应的功能。这些功能包括录入学生信息及成绩、查询学生成绩、修改学生成绩和退出程序。

通过这个学生成绩管理系统的编写,我们能够更好地了解C++的基本语法,同时也锻炼了我们的编程能力,为以后更好地学习和应用计算机科学知识奠定了坚实基础。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复