刚从网上找的一个学生数据管理系统的代码。

#include<iostream.h>
#include<string.h>
#include<stdlib.h>
class List;
class Student
{
public:
 friend class List;
private:
 Student(){
  ID=NULL;
  Name=NULL;
  Phone=NULL;
  Birthday=NULL;
  DoorNum=NULL;
  HomeID=NULL;
  next=NULL;
  score1.Maths=0;
  score1.English=0;
  score1.Physical=0;
 }
 ~Student()
 {
  delete[] ID;
  delete[] Name;
  delete[] Phone;
  delete[] Birthday;
  delete[] DoorNum;
  delete[] HomeID;
 }
 Student *next;
 char *ID;//学号
 char *Name;//姓名
 char *Phone;//电话
 char *Birthday;//生日
 char *DoorNum;//宿舍号
 char *HomeID;//家庭地址
 struct score
 {
  float Maths;//数学
  float English;//英语
  float Physical;//物理
 }score1;
};
class List
{
public:
 List(){list=0;}
 void print();//输出链表
 void insert(char *id,char *name,char *phone,char *birthday,char *doornum,char *homeid,float maths,float english,float physical);//插入链表
 void append(char *id,char *name,char *phone,char *birthday,char *doornum,char *homeid,float maths,float english,float physical);//追加链表
 void cat(List& lst);//连接链表
 int reverse(List& lst);//逆向输出链表
 int length();//链表数据项数
 int find_ID(char *id);//学号查找
 int find_Name(char *name);//姓名查找
 int Delete_ID(char *id);//删除数据
 int change_ID(char *id,char *name,char *phone,char *birthday,char *doornum,char *homeid,float maths,float english,float physical);//修改数据
private:
 Student *end();
 Student *list;
};
void List::print()

 Student *pt=list;
 while(pt)
 {
  if(!(pt->ID))
   cout<<" ";
  else cout<<pt->ID;
  cout<<"   ";
  if(!(pt->Name))
   cout<<" ";
  else cout<<pt->Name;
  cout<<"   ";
  if(!(pt->Phone))
   cout<<" ";
  else cout<<pt->Phone;
  cout<<"   ";
  if(!(pt->Birthday))
   cout<<" ";
  else cout<<pt->Birthday;
  cout<<"   ";
  if(!(pt->DoorNum))
   cout<<" ";
  else cout<<pt->DoorNum;
  cout<<"   ";
  if(!(pt->HomeID))
   cout<<" ";
  else cout<<pt->HomeID;
  cout<<"   ";
  cout<<pt->score1.Maths;cout<<"   ";
     cout<<pt->score1.English;cout<<"   ";
     cout<<pt->score1.Physical;cout<<"   ";
  cout<<endl;
  pt=pt->next;
 }
 if(list==0)
  cout<<"empty/n";
}
void List::insert(char *id,char *name,char *phone,char *birthday,char *doornum,char *homeid,float maths,float english,float physical)
{
 Student *pt=new Student;
 if(id)
 {
  int len=strlen(id)+1;
  pt->ID=new char[len];
  strcpy(pt->ID,id);
 }
 else
  pt->ID=NULL;
 if(name)
 {
  int len=strlen(name)+1;
  pt->Name=new char[len];
  strcpy(pt->Name,name);
 }
 else
  pt->Name=NULL;
 if(phone)
 {
  int len=strlen(phone)+1;
  pt->Phone=new char[len];
  strcpy(pt->Phone,phone);
 }
 else
  pt->Phone=NULL;
 if(birthday)
 {
  int len=strlen(birthday)+1;
  pt->Birthday=new char[len];
  strcpy(pt->Birthday,birthday);
 }
 else
  pt->Birthday=NULL;
 if(doornum)
 {
  int len=strlen(doornum)+1;
  pt->DoorNum=new char[len];
  strcpy(pt->DoorNum,doornum);
 }
 else
  pt->DoorNum=NULL;
 if(homeid)
 {
  int len=strlen(homeid)+1;
  pt->HomeID=new char[len];
  strcpy(pt->HomeID,homeid);
 }
 else
  pt->HomeID=NULL;
 pt->score1.Maths=maths;
 pt->score1.English=english;
 pt->score1.Physical=physical;
 pt->next=list;
 list=pt;
}
void List::append(char *id,char *name,char *phone,char *birthday,char *doornum,char *homeid,float maths,float english,float physical)
{
 Student *pt=new Student;
 if(id)
 {
  int len=strlen(id)+1;
  pt->ID=new char[len];
  strcpy(pt->ID,id);
 }
 else
  pt->ID=NULL;
 if(name)
 {
  int len=strlen(name)+1;
  pt->Name=new char[len];
  strcpy(pt->Name,name);
 }
 else
  pt->Name=NULL;
 if(phone)
 {
  int len=strlen(phone)+1;
  pt->Phone=new char[len];
  strcpy(pt->Phone,phone);
 }
 else
  pt->Phone=NULL;
 if(birthday)
 {
  int len=strlen(birthday)+1;
  pt->Birthday=new char[len];
  strcpy(pt->Birthday,birthday);
 }
 else
  pt->Birthday=NULL;
 if(doornum)
 {
  int len=strlen(doornum)+1;
  pt->DoorNum=new char[len];
  strcpy(pt->DoorNum,doornum);
 }
 else
  pt->DoorNum=NULL;
 if(homeid)
 {
  int len=strlen(homeid)+1;
  pt->HomeID=new char[len];
  strcpy(pt->HomeID,homeid);
 }
 else
  pt->HomeID=NULL;
 pt->score1.Maths=maths;
 pt->score1.English=english;
 pt->score1.Physical=physical;
 if(list==0)
  list=pt;
 else
  (end())->next=pt;
}
Student *List::end()
{
 Student *prv,*pt;
 for(prv=pt=list;pt;prv=pt,pt=pt->next);
 return prv;
}
void List::cat(List& lst)
{
 Student *prv=lst.list;
 while(prv)
 {
  append(prv->ID,prv->Name,prv->Phone,prv->Birthday,prv->DoorNum,prv->HomeID,prv->score1.Maths,prv->score1.English,prv->score1.Physical);
  prv=prv->next;
 }
}
int List::reverse(List &lst)
{
 if(list==0)
 {
  cout<<"empty/n";
  return 0;
 }
 Student *pt,*prv,*tmp;
 prv=0;
 pt=list;
 list=end();
 while(pt!=list)
 {
  tmp=pt->next;
  pt->next=prv;
  prv=pt;
  pt=tmp;
 }
 list->next=prv;
    lst.print();
 return 1;
}
int List::length()
{
 int m=0;
 Student *pt=list;
 for(;pt;pt=pt->next,m++);
 return m;
}
int List::find_ID(char *id)
{
 int m=0;
 if(list==0)
 {
  cout<<"empty/n";
  return 0;
 }
 Student *pt=list;
 while(pt)
 {
  if(strcmp(pt->ID,id)==0)
  {
   if(!(pt->ID))
    cout<<" ";
   else cout<<pt->ID;
   cout<<"   ";
   if(!(pt->Name))
    cout<<" ";
   else cout<<pt->Name;
   cout<<"   ";
   if(!(pt->Phone))
    cout<<" ";
   else cout<<pt->Phone;
   cout<<"   ";
   if(!(pt->Birthday))
    cout<<" ";
   else cout<<pt->Birthday;
   cout<<"   ";
   if(!(pt->DoorNum))
    cout<<" ";
   else cout<<pt->DoorNum;
   cout<<"   ";
   if(!(pt->HomeID))
    cout<<" ";
   else cout<<pt->HomeID;
   cout<<"   ";
   cout<<pt->score1.Maths;cout<<"   ";
         cout<<pt->score1.English;cout<<"   ";
   cout<<pt->score1.Physical;cout<<"   ";
   cout<<endl;m++;
  }
  pt=pt->next;
 }
 if(pt==0&&m==0)
  cout<<"查无此人!"<<endl;
 return 1;
}
int List::find_Name(char *name)
{
 int m=0;
 if(list==0)
 {
  cout<<"empty/n";
  return 0;
 }
 Student *pt=list;
 while(pt)
 {
  if(strcmp(pt->Name,name)==0)
  {
   if(!(pt->ID))
    cout<<" ";
   else cout<<pt->ID;
   cout<<"   ";
   if(!(pt->Name))
    cout<<" ";
   else cout<<pt->Name;
   cout<<"   ";
   if(!(pt->Phone))
    cout<<" ";
   else cout<<pt->Phone;
   cout<<"   ";
   if(!(pt->Birthday))
    cout<<" ";
   else cout<<pt->Birthday;
   cout<<"   ";
   if(!(pt->DoorNum))
    cout<<" ";
   else cout<<pt->DoorNum;
   cout<<"   ";
   if(!(pt->HomeID))
    cout<<" ";
   else cout<<pt->HomeID;
   cout<<"   ";
   cout<<pt->score1.Maths;cout<<"   ";
   cout<<pt->score1.English;cout<<"   ";
   cout<<pt->score1.Physical;cout<<"   ";
   cout<<endl;m++;
  }
  pt=pt->next;
 }
 if(pt==0&&m==0)
  cout<<"查无此人!"<<endl;
 return 1;
}
int List::Delete_ID(char *id)
{
 int m=0;
 if(list==0)
 {
  cout<<"empty/n";
  return 0;
 }
 Student *pt,*prv;
 pt=list;
 while(pt)
 {
  if(strcmp(pt->ID,id)==0)
  {
   m++;
   delete[] pt->ID;pt->ID=NULL;
   delete[] pt->Name;pt->Name=NULL;
   delete[] pt->Phone;pt->Phone=NULL;
   delete[] pt->Birthday;pt->Birthday=NULL;
   delete[] pt->DoorNum;pt->DoorNum=NULL;
   delete[] pt->HomeID;pt->HomeID=NULL;
   if(pt==list)
    list=pt->next;
   else if(pt==end())
    prv->next=NULL;
   else
    prv->next=pt->next;
  }  
  prv=pt;
  pt=pt->next;
 }
 if(pt==0&&m==0)
  cout<<"查无此人!"<<endl;
 return 1;
}
int List::change_ID(char *id,char *name,char *phone,char *birthday,char *doornum,char *homeid,float maths,float english,float physical)
{
 int m=0;
 if(list==0)
 {
  cout<<"empty/n";
  return 0;
 }
 Student *pt=list;
 while(pt)
 {
  if(strcmp(pt->ID,id)==0)
  {
   m++;
   if(pt->Name)
   {
    delete[] pt->Name;
    pt->Name=NULL;
    if(name)
    {
     int len=strlen(name)+1;
     pt->Name=new char[len];
     strcpy(pt->Name,name);
    }
   }
   if(pt->Phone)
   {
    delete[] pt->Phone;
    pt->Phone=NULL;
                if(phone)
    {
     int len=strlen(phone)+1;
     pt->Phone=new char[len];
     strcpy(pt->Phone,phone);
                }
   }
   if(pt->Birthday)
   {
    delete[] pt->Birthday;
    pt->Birthday=NULL;
                if(birthday)
    {
     int len=strlen(birthday)+1;
     pt->Birthday=new char[len];
     strcpy(pt->Birthday,birthday);
    }
   }
   if(pt->DoorNum)
   {
    delete[] pt->DoorNum;
    pt->DoorNum=NULL;
    if(doornum)
    {
     int len=strlen(doornum)+1;
     pt->DoorNum=new char[len];
     strcpy(pt->DoorNum,doornum);
    }
   }
   if(pt->HomeID)
   {
    delete[] pt->HomeID;
    pt->HomeID=NULL;
    if(homeid)
    {
     int len=strlen(homeid)+1;
     pt->HomeID=new char[len];
     strcpy(pt->HomeID,homeid);
                }
   }
   pt->score1.Maths=maths;
   pt->score1.English=english;
   pt->score1.Physical=physical;   
   cout<<endl;   
  }
   pt=pt->next;
 }
 if(pt==0&&m==0)
  cout<<"查无此人!"<<endl;
 return 1;
}
void main()
{
 char name[20]={'/0'},id[20]={'/0'},birthday[20]={'/0'},doornum[20]={'/0'},homeid[20]={'/0'},phone[20]={'/0'};
    float maths=0,english=0,physical=0;
 List lst1,lst2;
 int m,t(1);
 cout<<"向表1中输入数据按0:"<<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;
 cout<<"向表2中输入数据按10:"<<endl;
 cout<<"结束按11:"<<endl;
 while(t==1)
 {
  cin>>m;
  if(m>=0&&m<=11)
  {
   switch(m)
   {
       case 0: cout<<"请依次输入学号、姓名、电话、生日、宿舍号、家庭地址、数学、英语、物理等数据:"<<endl;
            cin>>id>>name>>phone>>birthday>>doornum>>homeid>>maths>>english>>physical;
            lst1.insert(id,name,phone,birthday,doornum,homeid,maths,english,physical);
      break;
    case 1: cout<<"请依次输入学号、姓名、电话、生日、宿舍号、家庭地址、数学、英语、物理等数据:"<<endl;
      cin>>id>>name>>phone>>birthday>>doornum>>homeid>>maths>>english>>physical;
      lst1.append(id,name,phone,birthday,doornum,homeid,maths,english,physical);
      break;
    case 2: lst1.reverse(lst1);break;
    case 3: cout<<"人数:"<<lst1.length()<<endl;break;
    case 4: cout<<"请输入要查询的学号:";
      cin>>id;
      lst1.find_ID(id);break;
    case 5: cout<<"请输入要查询的姓名:";
      cin>>name;
      lst1.find_Name(name);break;
    case 6: cout<<"请输入要删除的学号:";
      cin>>id;
      lst1.Delete_ID(id);break;
    case 7: cout<<"请依次输入要修改的学生学号、姓名、电话、生日、宿舍号、家庭地址、数学、英语、物理等数据:"<<endl;
      cin>>id>>name>>phone>>birthday>>doornum>>homeid>>maths>>english>>physical;
      lst1.change_ID(id,name,phone,birthday,doornum,homeid,maths,english,physical);break;
    case 8: lst1.print();break;
    case 9: lst1.cat(lst2);break;
    case 10:cout<<"请依次输入学号、姓名、电话、生日、宿舍号、家庭地址、数学、英语、物理等数据:"<<endl;
      cin>>id>>name>>phone>>birthday>>doornum>>homeid>>maths>>english>>physical;
      lst2.insert(id,name,phone,birthday,doornum,homeid,maths,english,physical);
      break;
    case 11:t=0;break;
   }
  }
  else
   cout<<"请正确输入:";
 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值