21xrx.com
2025-03-30 01:24:53 Sunday
文章检索 我的文章 写文章
大一C++学生成绩管理系统代码
2023-07-02 18:05:16 深夜i     16     0
大一 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++的基本语法,同时也锻炼了我们的编程能力,为以后更好地学习和应用计算机科学知识奠定了坚实基础。

  
  

评论区

请求出错了