21xrx.com
2024-12-27 16:03:29 Friday
登录
文章检索 我的文章 写文章
C++学生管理系统源代码
2023-07-05 12:31:49 深夜i     --     --
C++ 学生管理系统 源代码 数据结构 界面设计

学生管理系统是一款简单、方便、实用的软件,可帮助计算机专业的学生或教师更好地进行学生信息管理,包括学生的基本信息、成绩等内容。而本文将介绍一份使用C++编写的学生管理系统的源代码。

以下为学生管理系统的程序源代码:

#include

#include

#include

#include

using namespace std;

#define max_num 100 // 定义最大的学生人数

class student // 定义学生类及其属性及成员函数

{

  public:

    char name[20],sex[10],telnum[20];

    int age,s_id,score[5];

    float average;

    void input();

    void modify();

    void display();

    void display_all(char *filename);

    void search(char *filename, int id);

    void delete_stu(char *filename, int id);

};

void student::input() // 输入学生信息函数

{

    cout<<"\n Please input No.:"<

    cin>>s_id;

    cout<<"\n Please input name:"<

    cin>>name;

    cout<<"\n Please input age:"<

    cin>>age;

    cout<<"\n Please input sex:"<

    cin>>sex;

    cout<<"\n Please input Telephone number:"<

    cin>>telnum;

    for(int i=0;i<5;i++)

    {

      cout<<"\n Please input the score of Subject"< <<":"<

      cin>>score[i];

    }

}

void student::modify() // 修改信息函数

{

  cout<<"\n修改"< <<"的信息:"<

  cout<<"\n Please re-input No.:"<

  cin>>s_id;

  cout<<"\n Please re-input name:"<

  cin>>name;

  cout<<"\n Please re-input age:"<

  cin>>age;

  cout<<"\n Please re-input sex:"<

  cin>>sex;

  cout<<"\n Please re-input Telephone number:"<

  cin>>telnum;

  for(int i=0;i<5;i++)

  {

    cout<<"\n Please re-input the score of Subject"< <<":"<

    cin>>score[i];

  }

}

void student::display() // 显示学生信息函数

{

  cout< < < << name< << age< < < <

  for(int i=0;i<5;i++)

  {

    cout< <

  }

  cout<<"\n The average score is "< <

}

void student::display_all(char *filename) // 显示所有学生信息函数

{

  student st[max_num];

  fstream fp;

  fp.open(filename,ios::binary|ios::in);

  int i=0;

  while(fp.read((char*)&st[i],sizeof(student)))

  {

    st[i].average=0;

    for(int j=0;j<5;j++)

    {

      st[i].average+=st[i].score[j];

    }

    st[i].average=st[i].average/5.0;

    i++;

  }

  fp.close();

  for(int j=0;j

  {

    st[j].display();

  }

}

void student::search(char *filename, int id) // 查找学生信息函数

{

  student st;

  fstream fp;

  fp.open(filename,ios::binary|ios::in);

  while(fp.read((char*)&st,sizeof(student)))

    if(st.s_id==id)

    {

      st.average=0;

      for(int j=0;j<5;j++)

      {

        st.average+=st.score[j];

      }

      st.average=st.average/5.0;

      st.display();

    }

  fp.close();

}

void student::delete_stu(char *filename, int id) // 删除学生信息函数

{

  ifstream fin;

  fin.open(filename,ios::in|ios::binary);

  ofstream fout;

  fout.open("temp.dat",ios::out|ios::binary);

  student st;

  while(fin.read((char*)&st,sizeof(student)))

  {

    if(st.s_id!=id)

      fout.write((char*)&st,sizeof(student));

  }

  fin.close();

  fout.close();

  remove(filename);

  rename("temp.dat",filename);

}

int main()

{

  student st;

  int choice,id;

  char filename[20];

  cout<<"\n Please input the filename:"<

  cin>>filename;

  while(true) // 循环菜单

  {

    cout<<"\n **************************************************************************************************** \n"<

    cout<<"           1 输入学生信息         "<

    cout<<"           2 修改学生信息         "<

    cout<<"           3 显示一个学生的信息       "<

    cout<<"           4 显示全部学生的信息       "<

    cout<<"           5 删除一个学生的信息       "<

    cout<<"           6 退出              "<

    cout<<"\n **************************************************************************************************** \n"<

    cin>>choice; // 读取选项

    switch (choice) // 选项流程处理

    {

      case 1: // 输入学生信息

        st.input();

        st.average=0;

        for(int i=0;i<5;i++)

        {

          st.average+=st.score[i];

        }

        st.average=st.average/5.0;

        ofstream fp;

        fp.open(filename,ios::binary|ios::app);

        fp.write((char*)&st,sizeof(student));

        fp.close();

        break;

      case 2: // 修改学生信息

        cout<<"\n Please input the id:"<

        cin>>id;

        st.delete_stu(filename,id);

        cin.ignore();

        st.input();

        st.average=0;

        for(int i=0;i<5;i++)

        {

          st.average+=st.score[i];

        }

        st.average=st.average/5.0;

        fp.open(filename,ios::binary|ios::app);

        fp.write((char*)&st,sizeof(student));

        fp.close();

        break;

      case 3: // 显示一个学生信息

        cout<<"\n Please input the id:"<

        cin>>id;

        st.search(filename,id);

        break;

      case 4: // 显示所有学生信息

        st.display_all(filename);

        break;

      case 5: // 删除一个学生信息

        cout<<"\n Please input the id:"<

        cin>>id;

        st.delete_stu(filename,id);

        break;

      case 6: // 退出

        return 0;

      default:

        cout<<"\n The option is wrong, please input again:"<

        continue;

    }

  }

  return 0;

}

以上就是一份使用C++编写的学生管理系统的源代码,可以作为初学者了解C++面向对象编程的案例程序。

  
  

评论区

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