首页 > 编程 > C++ > 正文

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

2020-01-26 15:03:07
字体:
来源:转载
供稿:网友

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,int position,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,int position,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,int position,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;      }    }  }  }

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表