学生信息管理系统

#include<iostream> #include<iomanip> #include<string.h> #include<fstream> using namespace std; struct node {    int num;       char name[20];       char sex;       int age;    char addr[50];       char course[20];       int score;    node *next; };

struct student {                                  private:       node *head; public:    student();    void In_student();            //录入信息    void Modify_student();        //修改信息    void Del_student();           //删除信息    void Prt_student();           //查询信息    void Paixu_student();         //排序信息       void Ins_student();           //插入信息     };

 

student::student()                //作用是定义一个头结点!! {  node *p;  p=new node;  p->num=-1;    p->age=0;  p->score=-1;  p->next=p;  head=p;  return; }                                  

void student::In_student()       //这里的录入信息实际上是在链表中插入元素 {          cout<<"              ---------欢迎使用录入套餐------------- "<<endl;       node *p,*k;       int nu;                        //学号       char nam[20];                  //姓名       char se;                       //性别       int ag;                        //年龄    char add[50];                  //地址       char cou[20];                  //课程       int s;                         //成绩    ofstream outfile("f1.dat",ios::out);     if(!outfile)     {      cerr<<"打开失败!!"<<endl;      exit(1);     }    k=head;    cout<<"  请输入--(以学号为'-1'结束录入,但还需输完整个信息段!!)"<<endl;    cout<<"学号 姓名 性别 年龄 地址 课程 成绩 "<<endl;          cin>>nu         >>nam       >>se          >>ag       >>add       >>cou       >>s;    while(nu!=-1)    {             outfile<<nu<<nam<<se<<ag<<add<<cou<<s;             p=new node;    p->num=nu;    strcpy(p->name,nam);    p->sex=se;    p->age=ag;    strcpy(p->addr,add);    strcpy(p->course,cou);    p->score=s;    p->next=head;    k->next=p;    k=p;    cout<<"  继续录入下一位学生信息"<<endl;             cin>>nu               >>nam             >>se                >>ag             >>add             >>cou             >>s;               }    outfile.close();       cout<<"              ----------谢谢使用录入套餐----------"<<endl;    return; }

void student::Modify_student() {            cout<<"               ----------欢迎使用修改套餐-----------  "<<endl;    cout<<"                                          说明:按学号进行修改"<<endl;             if(head->next==head)    {            cout<<"Sorry!!  学生系统中没有信息!!"<<endl;      cout<<"              -----------谢谢使用修改套餐------------ "<<endl;            return;    }             int n; //学号    int m;    node *p;             cout<<"  请输入要修改信息的同学的学号:"<<endl;    cin>>n;    p=head->next;    while((p->num)!=n)        p=p->next;             if(p==head)    {     cout<<"Sorry!!  学生系统中没这位同学!!"<<endl;                 cout<<"             -----------谢谢使用修改套餐------------ "<<endl;     return;    }

            cout<<"                           请修改"<<n<<"号的基本信息"<<endl;             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;

   do    {                 cout<<"请选择修改键:"<<endl;                 cin>>m;        switch(m)     {                            case 1:  int nu;                cout<<"  请输入新的学号:"<<endl;                cin>>nu;          p->num=nu;          cout<<"  您已成功修改!!"<<endl;                                     break;          case 2:  char nam[20];                cout<<"  请输入新的姓名:"<<endl;          cin>>nam;          strcpy(p->name,nam);          cout<<"  您已成功修改!!"<<endl;          break;          case 3:  char se;                cout<<"  请输入新的性别:"<<endl;          cin>>se;          p->sex=se;                                     cout<<"  您已成功修改!!"<<endl;          break;          case 4:  int ag;                cout<<"  请输入新的年龄:"<<endl;          cin>>ag;          p->age=ag;                                     cout<<"  您已成功修改!!"<<endl;                                     break;          case 5:  char add[50] ;                cout<<"  请输入新的地址:"<<endl;                cin>>add;          strcpy(p->addr,add);                                     cout<<"  您已成功修改!!"<<endl;                                     break;          case 6:  char cou[20];                cout<<"  请输入新的课程:"<<endl;          cin>>cou;          strcpy(p->course,cou);                                     cout<<"  您已成功修改!!"<<endl;          break;          case 7:  int s;                cout<<"  请输入新的成绩:"<<endl;          cin>>s;          p->score=s;                                     cout<<"  您已成功修改!!"<<endl;          break;          case 8:  break;     }    }while(m!=8);             cout<<"              -----------谢谢使用修改套餐------------ "<<endl;             return; }

void student::Del_student() {               cout<<"             ----------欢迎使用删除套餐---------- "<<endl;               if(head->next==head)      {               cout<<"Sorry!!  学生系统中没有信息!!"<<endl;                     cout<<"                ----------谢谢使用删除套餐----------- "<<endl;               return;      }               int n; //学号      node *p,*q;               cout<<"   请输入要删除信息的同学的学号:"<<endl;      cin>>n;      q=head;      while(((q->next)->num)!=n)        q=q->next;               if(q->next==head)      {         cout<<"Sorry!!  学生系统这位同学!!"<<endl;         return;      }      p=q->next;      q->next=p->next;      delete p;      cout<<"         您已成功删除!!"<<endl;               cout<<"              ----------谢谢使用删除套餐----------- "<<endl;      return;               }

void student::Prt_student() {               cout<<"              ----------欢迎使用查询套餐------------ "<<endl;

              if(head->next==head)      {               cout<<"Sorry!!  学生系统中没有信息!!"<<endl;                     cout<<"          ----------谢谢使用查询套餐----------"<<endl;               return;      }           int n;      int count0=0;                                cout<<"  您好,您想输出所有学生的信息还是个别人或部分信息?"<<endl;      cout<<"  这里是提示!!"<<endl;               cout<<"               按键1-----输出所有信息"<<endl;          //查询所有信息      cout<<"               按键2-----按学号查询信息"<<endl;        //按学号查询信息               cout<<"               按键3-----按姓名查询信息"<<endl;        //按姓名查询信息               cout<<"               按键4-----按年龄查询信息"<<endl;        //按年龄查询信息               cout<<"               按键5-----按成绩查询信息"<<endl;        //按成绩查询信息                                                      //按分数查询信息               cout<<"               按键6-----退出查询程序  "<<endl;               do      {           cout<<"请选择查询键:"<<endl;           cin>>n;           switch(n)        {                             case 1:                                         node *p;                            p=head->next;                                     cout<<"学号     姓名   性别   年龄     地址     课程  成绩:"<<endl;                                     while(p!=head)          {                                         cout<<"   "<<p->num<<"  "             <<p->name<<"   "             <<p->sex<< "    "             <<p->age<< "     "             <<p->addr<< "      "             <<p->course<< "   "             <<p->score<< "   "             <<endl;                                           p=p->next;             count0++;          }          cout<<" 学生成绩信息管理系统中共有"<<count0<<"个学生信息"<<endl;          break;        case 2:                         int m;                    node *q;                                     q=head->next;             cout<<"   请输入要查找的同学的学号:"<<endl;                                     cin>>m;                       while(q!=head&&(q->num)!=m)                   q=q->next;                          if((q->num)==m)            {            cout<<"学号:"<<q->num<<"--"                   <<"姓名:"<<q->name<<"--"                   <<"性别:"<<q->sex<<"--"                   <<"年龄:"<<q->age<<"--"                   <<"地址:"<<q->addr<<"--"                   <<"课程:"<<q->course<<"--"                   <<"成绩:"<<q->score<<"--"                      <<endl;                                            }                else                           {                     cout<<" 系统中没有学号是"<<m<<"的同学!!"<<endl;            }                                               break;        case 3:                      char na[20];                  node *w;                                             w=head->next;                              cout<<"   请输入要查找的同学的姓名:"<<endl;                                             cin>>na;                                             while(w!=head&&strcmp(w->name,na)!=0)             w=w->next;                                                                                 if(strcmp(w->name,na)==0)               {                             cout<<"学号:"<<w->num<<"--"                                 <<"姓名:"<<w->name<<"--"                                 <<"性别:"<<w->sex<<"--"                                 <<"年龄:"<<w->age<<"--"                                 <<"地址:"<<w->addr<<"--"                                 <<"课程:"<<w->course<<"--"                                 <<"成绩:"<<w->score<<"--"                                 <<endl;                                                                                }                                             else            {                        cout<<" 系统中没有姓名是"<<na<<"的同学!!"<<endl;            }                    break;        case 4:             node *z;          int a;            //年龄                    z=head->next;          cout<<"    请输入要查找的同学的年龄:"<<endl;          cout<<"说明:如果没有任何查询结果,表明没有符合条件的结果!!!"<<endl;          cin>>a;                                      while(z!=head)           {            if(z->age==a)            {              cout<<"学号:"<<z->num<<"--"                  <<"姓名:"<<z->name<<"--"                  <<"性别:"<<z->sex<<"--"                  <<"年龄:"<<z->age<<"--"                  <<"地址:"<<z->addr<<"--"                  <<"课程:"<<z->course<<"--"                  <<"成绩:"<<z->score<<"--"<<endl;                                                          }                                                    z=z->next;           }                                                                                              

          break;        case 5:               cout<<"  您好,您按成绩查询是以一个分数还是以一个分数段?"<<endl;                              cout<<"               这里是提示!!"<<endl;                                       cout<<"               键1-----按一个分数查询信息"<<endl;                                        cout<<"               键2-----按一个分数段查询信息"<<endl;                                               cout<<"               键3-----退出成绩查询程序"<<endl;                                       int o;              do           {                                             cout<<"         请输入键:"<<endl;                                   cin>>o;            switch(o)            {                case 1:                                     node *x;                                  int s; //成绩                                                                 x=head->next;                                  cout<<"   请输入要查找的同学的成绩:"<<endl;                                                             cout<<"说明:如果没有任何查询结果,表明没有符合条件的结果!!!"<<endl;                                  cin>>s;                                  while(x!=head)                {                                                                        if(x->score==s)                     {                                                  cout<<"学号:"<<x->num<<"--"                                                      <<"姓名:"<<x->name<<"--"                                                      <<"性别:"<<x->sex<<"--"                                                      <<"年龄:"<<x->age<<"--"                                                      <<"地址:"<<x->addr<<"--"                                                      <<"课程:"<<x->course<<"--"                                                      <<"成绩:"<<x->score<<"--"<<endl;                                                                                                    }                                             x=x->next;                }                                                                                               break;             case 2:                    node *y;                y=head->next;                                                                         int h;   //分数段的最高值                int l;    //分数段的最低值                                                          cout<<"   请分别输入分数段的最高值,最低值--"<<endl;                                                          cout<<"说明:如果没有任何查询结果,表明没有符合条件的结果!!!"<<endl;                cin>>h>>l;                                                                                                                   while(y!=head)                {                                                                        if((y->score>=l)&&(y->score<=h))                     {                                                  cout<<"学号:"<<y->num<<"--"                                                      <<"姓名:"<<y->name<<"--"                                                      <<"性别:"<<y->sex<<"--"                                                      <<"年龄:"<<y->age<<"--"                                                      <<"地址:"<<y->addr<<"--"                                                      <<"课程:"<<y->course<<"--"                                                      <<"成绩:"<<y->score<<"--"<<endl;                                                                                                      }                                             y=y->next;                }                                                                                               break;                                                  case 3:                     cout<<"   您已退出成绩程序!!"<<endl;                     break;            }           }while(o!=3);              break;                   case 6:              break;        }      }while(n!=6);               cout<<"          ----------谢谢使用查询套餐----------"<<endl;      return; }

void student::Paixu_student() {

     cout<<"          ----------欢迎使用排序套餐----------"<<endl;      if(head->next==head)   {         cout<<"   Sorry!!  学生系统中没有信息!!"<<endl;      cout<<"          ----------谢谢使用排序套餐----------"<<endl;         return;   }   ifstream infile("f1.dat",ios::in);      if(!infile)      {        cerr<<"打开失败 !!"<<endl;        exit(1);      }      cout<<"系统自动输出所有学生基本信息:"<<endl;      cout<<"学号     姓名   性别   年龄     地址     课程  成绩:"<<endl;                node *pm;       node *pn;       pm=head->next;       pn=head->next;                while(pm!=head)       {         infile;                         cout<<"   "<<pm->num<<"  "       <<pm->name<<"   "       <<pm->sex<< "    "       <<pm->age<< "     "       <<pm->addr<< "     "       <<pm->course<< "   "       <<pm->score<< "   "       <<endl;        pn=pn->next;                       pm=pm->next;                  }               int n;               cout<<"   您好,下面提供几种排序方案"<<endl;      cout<<"   这里是提示!!"<<endl;               cout<<"               键1-----按成绩排序"<<endl;                cout<<"               键2-----按年龄排序"<<endl;                       cout<<"               键3-----按学号排序"<<endl;                       cout<<"               键4-----按姓名排序"<<endl;                      cout<<"               键5-----退出排序套餐"<<endl;

        do      {                       cout<<"请选择排序键:"<<endl;              cin>>n;              switch(n)     {                                    case 1:                                     node *p2;              node *p1;                                               p2=head->next;                                                p1=p2->next;

                                              while(p2->next!=head)  //冒泡法              {                                                         if(p2->score > p1->score)              {  // 把头指针指向当前比较小的节点                                                           p2->next=p1->next;                                                               p1->next=head->next;                                                                  head->next=p1;                                                           // 把用于比较的两个指针复位                                                                       p2=head->next;                                                                p1=p2->next ;              }                                                     else              {           // 指向下一个节点                                                            p2=p2->next ;                                                            p1=p2->next ;              }  

             }                                               cout<<"     当前表以按学生成绩排序成功"<<endl;                                             

             node *q;                                               q=head->next;                       while(q!=head)              {                                                                       cout<<"学号:"<<q->num<<"--"                                     <<"姓名:"<<q->name<<"--"                                     <<"性别:"<<q->sex<<"--"                                     <<"年龄:"<<q->age<<"--"                                     <<"地址:"<<q->addr<<"--"                                     <<"课程:"<<q->course<<"--"                                     <<"成绩:"<<q->score<<"--"                                        <<endl;                                                                              q=q->next;              }                                                           break;         case 2:                                                   node *h2;              node *h1;                                               h2=head->next;                                                h1=h2->next;

                                              while(h2->next!=head)  //冒泡法              {                                                         if(h2->age > h1->age)              {  // 把头指针指向当前比较小的节点                                                           h2->next=h1->next;                                                               h1->next=head->next;                                                                  head->next=h1;

                                                                  // 把用于比较的两个指针复位                                                                       h2=head->next;                                                                h1=h2->next ;              }                                                     else              {           // 指向下一个节点                                                            h2=h2->next ;                                                            h1=h2->next ;              }  

             }                                               cout<<"     当前表以按学生年龄排序成功"<<endl;                                              // return head->next;

              node *pt;                                                pt=head->next;                         while(pt!=head)             {                          cout<<"学号:"<<pt->num<<"--"                                                         <<"姓名:"<<pt->name<<"--"                           <<"性别:"<<pt->sex<<"--"                           <<"年龄:"<<pt->age<<"--"                           <<"地址:"<<pt->addr<<"--"                           <<"课程:"<<pt->course<<"--"                           <<"成绩:"<<pt->score<<"--"                              <<endl;               pt=pt->next;             }

                           break;              case 3:                                                node *a2;              node *a1;                                               a2=head->next;                                                a1=a2->next;

                                              while(a2->next!=head)  //冒泡法              {                                                         if(a2->num > a1->num)              {  // 把头指针指向当前比较小的节点                                                           a2->next=a1->next;                                                               a1->next=head->next;                                                                  head->next=a1;

                                                                  // 把用于比较的两个指针复位                                                                       a2=head->next;                                                                a1=a2->next ;              }                                                     else              {           // 指向下一个节点                                                            a2=a2->next ;                                                            a1=a2->next ;              }  

             }                                               cout<<"     当前表以按学生学号排序成功"<<endl;                                            

              node *ptt;                                                ptt=head->next;                         while(ptt!=head)             {                          cout<<"学号:"<<ptt->num<<"--"                                                         <<"姓名:"<<ptt->name<<"--"                           <<"性别:"<<ptt->sex<<"--"                           <<"年龄:"<<ptt->age<<"--"                           <<"地址:"<<ptt->addr<<"--"                           <<"课程:"<<ptt->course<<"--"                           <<"成绩:"<<ptt->score<<"--"                              <<endl;               ptt=ptt->next;             }

                           break;

             case 4:                                                node *z2;              node *z1;                                               z2=head->next;                                                z1=z2->next;

                                              while(z2->next!=head)  //冒泡法              {                                                         if(strcmp(z2->name,z1->name)>0)              {  // 把头指针指向当前比较小的节点                                                           z2->next=z1->next;                                                               z1->next=head->next;                                                                  head->next=z1;

                                                                  // 把用于比较的两个指针复位                                                                       z2=head->next;                                                                z1=z2->next ;              }                                                     else              {           // 指向下一个节点                                                            z2=z2->next ;                                                            z1=z2->next ;              }  

             }                                               cout<<"    当前表以按学生姓名排序成功"<<endl;                                            

              node *pti;                                                pti=head->next;                         while(pti!=head)             {                          cout<<"学号:"<<pti->num<<"--"                                                         <<"姓名:"<<pti->name<<"--"                           <<"性别:"<<pti->sex<<"--"                           <<"年龄:"<<pti->age<<"--"                           <<"地址:"<<pti->addr<<"--"                           <<"课程:"<<pti->course<<"--"                           <<"成绩:"<<pti->score<<"--"                              <<endl;               pti=pti->next;             }

                           break;

                                case 5:                         break;

                   }      }while(n!=5);

         cout<<"          ----------谢谢使用排序套餐----------"<<endl;          return; }

void student::Ins_student() {     int nn;      //学号  int n;  char na[20];     char s;  int a;  char ad[50];  char co[20];  int sc;     cout<<"          ----------欢迎使用插入套餐----------"<<endl;   cout<<"    您想在哪个学号前插入?请输入该学号:"<<endl;   cin>>nn;   cout<<"    请输入该同学的学生信息(包括:学号,姓名,性别,年龄,地址,课程,成绩!)"<<endl;   cin>>n>>na>>s>>a>>ad>>co>>sc;      node *pp,*qq;   pp=new node;   pp->num=n;   strcpy(pp->name,na);   pp->sex=s;   pp->age=a;   strcpy(pp->addr,ad);   strcpy(pp->course,co);   pp->score=sc;             qq=head;   while((qq->next!=head)&&(((qq->next)->num)!=nn))         qq=qq->next;            pp->next=qq->next;      qq->next=pp;   cout<<"   您好,您已成功插入!!"<<endl;   cout<<"          ----------谢谢使用插入套餐----------"<<endl;   return; }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#include<iostream> #include"score.h" #include<fstream> using namespace std; int main() {     student stu;     int n;  int count=0;  char password[4];       //密码  char name[11];          //用户名  cout<<" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ "<<endl;     cout<<"┃                   ★ ★ ★ 学生成绩信息管理系统 ★ ★ ★                 ┃"<<endl;  cout<<"┃                                                 ☆程序员之家☆           ┃"<<endl;     cout<<"┃                                                 ----- 产权所有 违者必究  ┃"<<endl;   cout<<" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ "<<endl;     cout<<" ****************************欢迎进入学生成绩信息管理系统*********************"<<endl;  cout<<endl;  cout<<"请输入用户名:"<<endl;  cin>>name;     cout<<"请输入密码:"<<endl;      while(1)   {               cin>>password;               if(strcmp(password,"7954")==0 )      {                  cout<<" *您的密码正确!!-------------*"<<endl;               cout<<endl;                    cout<<" **************************************************************************"<<endl;                  cout<<" **************** ┃*   顾客您好-这里是套餐提示!!   *┃ *******************"<<endl;                  cout<<" **************** ┃*   按键1 -----------录入信息   *┃ *******************"<<endl;                  cout<<" ******厚德****** ┃*   按键2 -----------修改信息   *┃ *******规范********"<<endl;                  cout<<" **************** ┃*   按键3 -----------删除信息   *┃ *******************"<<endl;                  cout<<" **************** ┃*   按键4 -----------插入信息   *┃ *******************"<<endl;                  cout<<" ******重能****** ┃*   按键5 -----------查询信息   *┃ *******创新********"<<endl;                  cout<<" **************** ┃*   按键6 -----------排序信息   *┃ *******************"<<endl;                  cout<<" **************** ┃*   按键7 -----------退出系统   *┃ *******************"<<endl;                                                                   cout<<" ****************************************************南京信息职业技术学院**"<<endl;                do       {                     cout<<"请您选择套餐按键"<<endl;                   cin>>n;                      switch (n)       {                               case 1:  {               stu.In_student();                           break;          }        case 2: {               stu.Modify_student();                                    break;          }                       case 3: {               stu.Del_student();                           break;          }        case 4: {                                     stu.Ins_student();          break;          }        case 5: {                                    stu.Prt_student();            break;          }        case 6:{                stu.Paixu_student();                                     break;         }        case 7: {               break;          }                             }       }while(n!=7);     }             else     {                    count=count+1;                           if(count==3)        {                cout<<"实在对不起,您已经输入错误3次了!!!"<<endl;        cout<<"系统自动退出!!!"<<endl;                break;        }                            cout<<"对不起!   您的密码有误!!"<<endl;                     cout<<"请重新输入密码"<<endl;                     continue;     }   break;   }   cout<<"                       谢谢使用-----学生成绩信息管理系统!!!                   "<<endl;   cout<<"                                      再见!!                                  "<<endl;      cout<<"*******************************************************************************"<<endl;   return 0; }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值