カリキュラム設計-学生成績管理

3271 ワード

#include 
#include 
# include 
# include 
#include // getch();
using namespace std;

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Student ﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class Student
{
public:
 char name[20];
 char Id[20];
 int Cnum;       //C++    
 int Mnum;       //      
 int Enum;       //           
 int sum;        //  
 Student * Next;
 void Input()
 {
  cout<>name;
  cout<>Id;
  cout<>Cnum;
  cout<>Mnum;
  cout<>Enum;
  sum=Cnum+Mnum+Enum;
 }
 void ReadFile(istream & in)
 {
  in>>name>>Id>>Cnum>>Mnum>>Enum>>sum;
 }
 void Show()
 {
  cout<Next;p!=End;p=p->Next)
   p->Show();
  cout<Input();
  End->Next=new Student;
  End=End->Next;
  cout<Next!=End;p=p->Next)//            ,       
   if(!strcmp(p->Next->name,name))return p;
   return NULL;
 }
 Student *FindID(char * Id)
 {
  for(Student * p=Head;p->Next!=End;p=p->Next)//            ,       
   if(!strcmp(p->Next->Id,Id))return p;
   return NULL;
 }
};

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌    ﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Studentmassage::Studentmassage()
{
 Head=new Student;
 Head->Next=new Student;
 End=Head->Next;
 in.open("sort.txt");
 if(!in)
  cout<ReadFile(in);
   if(End->name[0]=='\0')break;
   End->Next=new Student;
   End=End->Next;
  }
  in.close();
  cout<Next!=End;)
 {
  temp=Head->Next;
  Head->Next=Head->Next->Next;
  delete temp;
 }
 delete Head,End;
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌  ﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::ShowMenu()
{
  cout<>x;
 switch(x)
 {
 case 1:{cout<>name;
  if(p=FindItem(name))
  {
   p->Next->Show();
   cout<>Id;
   if(p=FindID(Id))
   {
    p->Next->Show();
    cout<>name;
 if(p=FindItem(name))
 {
  cout<Next->Input();
  cout<>name;
 if(p=FindItem(name))
 {
  temp=p->Next;
  p->Next=p->Next->Next;
  delete temp;
  cout<name,p1->name);
 strcpy(temp->Id,p1->Id);
 temp->Cnum=p1->Cnum;
 temp->Mnum=p1->Mnum;
 temp->Enum=p1->Enum;
 temp->sum=p1->sum;

 strcpy(p1->name,p2->name);
 strcpy(p1->Id,p2->Id);
 p1->Cnum=p2->Cnum;
 p1->Mnum=p2->Mnum;
 p1->Enum=p2->Enum;
 p1->sum=p2->sum;

 strcpy(p2->name,temp->name);
 strcpy(p2->Id,temp->Id);
 p2->Cnum=temp->Cnum;
 p2->Mnum=temp->Mnum;
 p2->Enum=temp->Enum;
 p2->sum=temp->sum;
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
int Studentmassage::ListCount()//           ,      
{
 if(! Head)
  return 0;
 int n=0;
 for(Student * p=Head->Next;p!=End;p=p->Next)
 {
  n++;
 }
 return n;
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Sort()//         
{
 cout <Next;p!=End;p=p->Next)
  for(k=p->Next;k!=End;k=k->Next)
  {
   if(p->sum>k->sum)
   {
    Studentmassage::Swap(p,k);
   }
  }
 cout <Next;p!=End;p=p->Next)
  out<name<Id<Cnum<Mnum<Enum<sum<>x;
  switch(x)
  {
  case 0:quit=true;break;
  case 1:Grade.AddItem();break;
  case 2:Grade.Display();break;
  case 3:Grade.Sort();break;
  case 4:Grade.Find();break;
  case 5:Grade.RemoveItem();break;
  case 6:Grade.ModifyItem();break;
  }
 }
 return 0;
}