1.设计目的 ⚫ 掌握线性链表的建立。 ⚫ 掌握线性链表的基本操作。 ⚫ 掌握查找的基本算法。 


#include<iostream.h>

#include<string.h>

#include <fstream.h>

const int Maxsize=100;

struct StuNode{

   char name;

   int num;

   int sum;

   StuNode *nextstu;

};

class student

{

   public:

   student();

         ~student();

         charname[8]; //姓名

         intscore;    //总分

         intnumber;   //学号

void Insert(char iname,int inum,intisum);    //插入

StuNode *Search(int inum);    //查找

void Update(int inum,int isum);    //修改 

void Delete(int inum);    //删除

void Copy(StuNode *ptemp, StuNode *p);    //拷贝

void Show();      //显示

void Sort(char ch);      //排序

private:

StuNode *StuListHead;

};

 

student::student()       //构造函数

{

   StuListHead=new StuNode;

   StuListHead->nextstu=NULL;

}

 

student::~student()       //析构函数

{

   StuNode *p;

   while (StuListHead)

    {

       p = StuListHead;

       StuListHead = StuListHead->nextstu;

       delete p;

    }

    StuListHead= NULL;

}

 

 

void student::Insert(char iname,intinum,int isum )     //插入

{

   StuNode *s,*p;

   s=new StuNode;

   s->num=inum;

   s->sum=isum;

   s->name=iname;

   p=StuListHead;

   s->nextstu = p->nextstu;

   p->nextstu = s;

}

 

StuNode *student::Search(int inum)

{

         StuNode*p;

   p=StuListHead->nextstu;

   while(p->nextstu&&p->num!=inum)   

    {

       p=p->nextstu;

    }

   if(p->num==inum)

    {

       return p;

    }

   else

    {

       cout <<"未找到该学生信息!"<<endl;

       return NULL;}

}

 

void student::Update(int inum,int isum)

{

    StuNode *Item=Search(inum);   

   if (Item!=NULL)

    {

       Item->num=inum;

       Item->sum=isum;

    }

}

 

void student::Show()

{

   StuNode *p;

   cout <<"姓名"<<"  "<<"学号"<<" "<<"总分"<<endl;

   for(p=StuListHead->nextstu; p != NULL; p=p->nextstu)

    {

       cout<<" "<<p->name<<"     "<<p->num<<"    "<<p->sum<<endl;

    }

}

 

 

void student::Delete(int inum)

{  StuNode *p, *ptemp;

   p=StuListHead;

   ptemp=p;

   while(p->nextstu&&p->num!=inum)   

    {

       ptemp=p;

       p=p->nextstu;

    }

   if(p->num==inum)

    {

       ptemp->nextstu=p->nextstu;

       delete p;

    }

   else

    {

       cout <<"未找到该学生信息!"<< endl;

    }

}

 

void student::Sort(char ch)   //根据总分排序

{

   if (ch == '>')

    {

       for (StuNode *p = StuListHead->nextstu; p != NULL; p = p->nextstu)

       {

           for (StuNode *q = StuListHead->nextstu; q != NULL; q = q->nextstu)

           {

                if (p->sum > q->sum)

                {

                    StuNode *ptemp = newStuNode;

                    Copy(ptemp, p);

                    Copy(p, q);

                    Copy(q, ptemp);

                }

            }

       }

    }

   else if (ch == '<')

    {

       for (StuNode *p = StuListHead->nextstu; p != NULL; p = p->nextstu)

       {

           for (StuNode *q = StuListHead->nextstu; q != NULL; q = q->nextstu)

           {

                if (p->sum < q->sum)

                {

                    StuNode *ptemp = newStuNode;

                    Copy(ptemp, p);

                    Copy(p, q);

                    Copy(q, ptemp);

                }

           }

       }

    }

   else if (ch == 'o')

    {

       for (StuNode *p = StuListHead->nextstu; p != NULL; p = p->nextstu)

       {

           for (StuNode *q = StuListHead->nextstu; q != NULL; q = q->nextstu)

           {

                if (p->num < q->num)

                {

                    StuNode *ptemp = new StuNode;

                    Copy(ptemp, p);

                    Copy(p, q);

                    Copy(q, ptemp);

                }

           }

       }

    }

   else

    {

       cout << "排序条件出错!"<< endl;

    }

}

 

 

void student::Copy(StuNode *ptemp, StuNode*p)  //拷贝学生信息(将p的信息拷贝到ptemp中)

{

   if (p==NULL)

    {

       cout<<"拷贝目标为空!"<<endl;

    }

   else

    {

       ptemp->num= p->num;

       ptemp->sum= p->sum;

       //ptemp->nextstu = p->nextstu;  

    }

}

int main()

{

   int x = 100, pnum,psum;

   char pname;

   StuNode *pfind;

   student stu;

   do

    {

   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 << "请选择:";

       cin >> x;

       switch (x)

       {

       case 1:

           cout << "分别输入学生的姓名,学号,成绩"<<endl;

           cin>> pname >> pnum >> psum;

           stu.Insert(pname,pnum,psum);

           cout<< "更新信息"<< endl;

           stu.Show();

           break;

       case 2:

           cout << "请输入要删除学生学号:";

           cin >> pnum;

           stu.Delete(pnum);

            cout << "更新学生信息表..." <<endl;

           stu.Show();

           break;

       case 3:

           cout << "请输入要查找学生学号:";

           cin >> pnum;

           pfind = stu.Search(pnum);

           cout << "查找学生学号:"<<pfind->num<<"  姓名"<<pfind->name<<"  总分"<<pfind->sum << endl;

           break;

       case 4:

           cout<<"请输入要修改学生学号:";

           cin>> pnum;

           cout<< "请重新输入学生分数:";

           cin>>psum;

           stu.Update(pnum,psum);

           cout<<"修改成功!"<<endl;

           cout<<"更新学生信息表..."<<endl;

           stu.Show();

           break;

       case 5:

           cout << "升序排序(1)降序排序(0)学号排序(2):";

           cin >> pnum;

           if (pnum == 1)

           {

                stu.Sort('<');

       

           }

           else if (pnum == 0)

           {

                stu.Sort('>');

           }

           else if (pnum == 2)

           {

                stu.Sort('o');

           }

           else

           {

                cout << "请输入正确选择!" << endl;

           }

       case 6:

           stu.Show();

           break;

       case 7:break;

    }

    }

   while(x!=7);

   return 0;

}


课程设计:学生档案管理系统

课程设计:学生档案管理系统

课程设计:学生档案管理系统

课程设计:学生档案管理系统

课程设计:学生档案管理系统

课程设计:学生档案管理系统

相关文章: