C++实现简单的学生管理系统

C++实现简单的学生管理系统,第1张

概述C++实现简单的学生管理系统//Student.cpp#include<iostream>usingnamespacestd;structStu{

C++实现简单的学生管理系统

//Student.cpp

#include<iostream> using namespace std; struct Stu{  char no[10];  char name[16];  int math;  int chi;  double ave;}; class Student{public:  Stu st;  Student * next;public:  Student(){}  Student(Stu s)  {    st=s;    next=NulL;    st.ave=(st.math+st.chi)/2.0;  }  voID setst(Stu s)  {    st=s;    st.ave=(st.math+st.chi)/2.0;  }  Stu getst()  {    return st;  }  voID show()  {    cout<<"----------------------------"<<endl;    cout<<"学号:"<<st.no<<endl;    cout<<"姓名:"<<st.name<<endl;    cout<<"数学成绩:"<<st.math<<endl;    cout<<"语文成绩:"<<st.chi<<endl;    cout<<"平均成绩:"<<st.ave<<endl;    cout<<"----------------------------"<<endl;  }};

//main.cpp

#include<fstream>#include"Student.cpp" using namespace std; Student * create_List();voID traverse_List(Student * phead);bool is_empty(Student * phead);int length_List(Student * phead);bool insert_List(Student * phead,int position,Stu st);bool delete_List(Student * phead,Stu * st);voID sort_List(Student * phead); voID menu_select();voID handle_menu(int s);voID outfile();Student * infile();voID delfile(); Student * phead;  voID main(){  menu_select();} voID menu_select(){  int s;  cout<<"请输入您要 *** 作的选项:"<<endl;  cout<<"1.增加原始记录"<<endl;  cout<<"2.按平均分排序显示所有记录"<<endl;  cout<<"3.保存原始文件"<<endl;  cout<<"4.读取原始文件"<<endl;  cout<<"5.删除原始文件"<<endl;  cout<<"6.插入单条记录"<<endl;  cout<<"7.删除单条记录"<<endl;  cout<<"8.显示记录总条数"<<endl;  cout<<"9.结束程序运行"<<endl<<endl;  cout<<"左边数字对应功能选择,请选择1-9:";  cin>>s;  handle_menu(s);} voID handle_menu(int s){  switch (s)  {  case 1:    {      system("cls");      phead=create_List();      system("cls");      menu_select();      break;    }  case 2:    {      if(NulL==phead)      {        cout<<"记录总条数为零"<<endl;        getchar();        getchar();        system("cls");        menu_select();      }      system("cls");      sort_List(phead);      traverse_List(phead);      getchar();      getchar();      system("cls");      menu_select();      break;    }  case 3:    {      if(phead!=NulL)      {        system("cls");        outfile();        system("cls");        menu_select();      }      system("cls");      menu_select();      break;    }  case 4:    {      system("cls");      phead=infile();      system("cls");      menu_select();      break;    }  case 5:    {      system("cls");      delfile();      system("cls");      menu_select();      break;    }  case 6:    {      if(NulL==phead)      {        cout<<"记录总条数为零"<<endl;        getchar();        getchar();        system("cls");        menu_select();      }      system("cls");      int num;      Stu st;      traverse_List(phead);      cout<<"您想在哪条记录后插入,请输入序号:";      cin>>num;      cout<<"编辑要插入的记录:"<<endl;      cout<<"学号:";      cin>>st.no;      cout<<"姓名:";      cin>>st.name;      cout<<"数学成绩:";      cin>>st.math;      cout<<"语文成绩:";      cin>>st.chi;      if(insert_List(phead,num-1,st))      {        cout<<"插入成功!"<<endl;      }      else      {        cout<<"插入失败!"<<endl;      }      getchar();      getchar();      system("cls");      menu_select();      break;    }  case 7:    {      if(NulL==phead)      {        cout<<"记录总条数为零"<<endl;        getchar();        getchar();        system("cls");        menu_select();      }      int num;      Stu * st=(Stu *)malloc(sizeof(Stu));      traverse_List(phead);      cout<<endl<<"请输入您要删除的记录的序号:";      cin>>num;      if(delete_List(phead,num,st))      {        cout<<endl<<"成功删除的记录如下:"<<endl;        cout<<"学号:"<<st->no<<endl<<"姓名:"<<st->name<<endl;      }      else      {        cout<<"删除失败!"<<endl;      }      getchar();      getchar();      system("cls");      menu_select();      break;    }  case 8:    {      if(NulL!=phead)      {        system("cls");        cout<<"记录总条数:"<<length_List(phead)<<"条"<<endl;        getchar();        getchar();        system("cls");        menu_select();      }      else      {        cout<<"记录总条数为零"<<endl;        getchar();        getchar();        system("cls");        menu_select();      }      break;    }  case 9:    {      system("cls");      cout<<"成功退出!"<<endl;      exit(0);      break;    }  }}  voID delfile(){  ofstream fileout;  fileout.open("c:\kcsj.txt",ios_base::out);  fileout<<"";  fileout.close();}  Student * infile(){  Student * phead=(Student *)malloc(sizeof(Student));  if(NulL==phead)  {    cout<<"分配失败,程序终止!"<<endl;    exit(0);  }  Student * pTail=phead;  pTail->next=NulL;  ifstream in("c:\kcsj.txt");  if (!in.is_open())  {    cout << "Error opening file"<<endl;     exit(0);  }  while (!in.eof())  {    Stu st;    in.read(reinterpret_cast<char *>(&st),sizeof(st));    if (in.fail())     {      break;    }    Student * pNew=new Student();    if(NulL==pNew)    {      printf("分配失败,程序终止\n");      exit(0);    }    pNew->setst(st);    pTail->next=pNew;    pNew->next=NulL;    pTail=pNew;  }  in.close();  return phead;}  voID outfile(){  ofstream out;  out.open("c:\kcsj.txt",ios_base::out|ios_base::app|ios::binary);  if(!out)  {    cout<<"文件不存在,退出时别忘记保存文件!"<<endl;    out.close();    out.open("stu.dat",ios_base::out|ios::binary);  }  else  {     out.close();    out.open("c:\kcsj.txt",ios_base::out|ios_base::app|ios::binary);  }  Student * temp=phead->next;  while(temp!=NulL)  {    Stu st=temp->getst();    out.write(reinterpret_cast<char *>(&st),sizeof(st));    temp=temp->next;  }    out.close();} Student * create_List(){  int len;  Student * phead=(Student *)malloc(sizeof(Student));  if(NulL==phead)  {    cout<<"分配失败,程序终止!"<<endl;    exit(0);  }  Student * pTail=phead;  pTail->next=NulL;  cout<<"请输入要存储的学生人数:";  cin>>len;  for(int i=0;i<len;i++)  {    Stu st;    cout<<"请输入第"<<i+1<<"个学生的学号:";    cin>>st.no;    cout<<"请输入第"<<i+1<<"个学生的姓名:";    cin>>st.name;    cout<<"请输入第"<<i+1<<"个学生的数学成绩:";    cin>>st.math;    cout<<"请输入第"<<i+1<<"个学生的语文成绩:";    cin>>st.chi;    Student * pNew=new Student();    if(NulL==pNew)    {      printf("分配失败,程序终止\n");      exit(0);    }    pNew->setst(st);    pTail->next=pNew;    pNew->next=NulL;    pTail=pNew;  }  return phead;} voID traverse_List(Student * phead){  int i=1;  Student * temp=phead->next;  while(temp!=NulL)  {    cout<<endl<<"序号:"<<i<<endl;    temp->show();    temp=temp->next;    i++;  }}   bool is_empty(Student * phead){  if(NulL==phead->next)  {    return true;  }  else  {    return false;  }} int length_List(Student * phead){  int len=0;  Student * temp=phead->next;  while(temp)  {    len++;    temp=temp->next;  }  return len;} bool insert_List(Student * phead,Stu st){  int i=0;  Student * p=phead;   while(NulL!=p&&i<position-1)  {    p=p->next;    i++;  }  if(i>position-i||NulL==p)  {    return false;  }  Student * pNew=(Student *)malloc(sizeof(Student));  if(NulL==pNew)  {    cout<<"分配失败,程序终止"<<endl;    exit(0);  }  pNew->setst(st);  pNew->next=p->next;  p->next=pNew;  return true;} bool delete_List(Student * phead,Stu * st){  int i=0;  Student * p=phead;   while(NulL!=p->next&&i<position-1)  {    p=p->next;    i++;  }  Student * q=p->next;  *st=q->getst();  p->next=p->next->next;  free(q);  q=NulL;  return true;} voID sort_List(Student * phead){  Student * p,* q;  Stu temp;  int i,j;  int len=length_List(phead);  for(i=0,p=phead->next;i<len-1;i++,p=p->next)  {    for(j=i+1,q=p->next;j<len;j++,q=q->next)    {      if(q->st.ave>p->st.ave)      {        temp=q->st;        q->st=p->st;        p->st=temp;      }    }  }  }

以上所述就是本文的全部内容了,希望大家能够喜欢。

总结

以上是内存溢出为你收集整理的C++实现简单的学生管理系统全部内容,希望文章能够帮你解决C++实现简单的学生管理系统所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1256276.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存