难得住寂寞的人才能笑到最后。。。

只要敲门才会有回音,才有可能走进去!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

课程设计

Posted on 2008-11-28 21:30  xum  阅读(136)  评论(0)    收藏  举报

#include"xumin.h"

struct student *build(struct student *head,int n)
{
 int i;
 struct student *p1; 
 p1 = (struct student*)malloc(sizeof(struct student));
 printf("输入name : ");
 scanf("%s",p1->name);
 printf("输入ID : ");
 scanf("%d",&p1->ID); 
 printf("输入age : ");
 scanf("%d",&p1->age);
 printf("输入tel : ");
 scanf("%d",&p1->tel);
 
 head = p1;
 head->next = NULL; 
 
 for(i=0; i<n-1; i++)
 {
  p1 = (struct student*)malloc(sizeof(struct student));
  printf("输入name : ");
  scanf("%s",p1->name);
  printf("输入ID : ");
  scanf("%d",&p1->ID);  
  printf("输入age : ");
  scanf("%d",&p1->age);
  printf("输入tel : ");
  scanf("%d",&p1->tel);
     
  p1->next = head;
  head = p1;
 } 
 jiemian(head,n);
 return (head);
}


struct student *show(struct student *head,int n)
{
 //int a;
 struct student *p1; 
 p1 = head; 
 
 if(p1 != NULL)
 {
  printf("name: %s\n", p1->name);
  printf("ID: %d\n", p1->ID);  
  printf("age: %d\n", p1->age);
  printf("tel: %d\n", p1->tel);
  
  p1 = p1->next;  
 }
 else
 {
  printf("dataerror!");
 }
 jiemian(head, n); 
    return(head); 
}


struct student *search(struct student *head,int n)
{
 int a;
 struct student *p1;
 p1 = head;
    printf("请输入要查找学生的ID\n");
 scanf("%d",&a);
 
 while( p1->ID != a && p1->next != NULL )
 {
  p1 = p1->next;      
 }
 if( p1->ID == a )
 {
  printf("name = %s\n",p1->name);
  printf("ID = %d\n",p1->ID);  
  printf("age = %d\n",p1->age);
  printf("tel = %d\n",p1->tel);
  
  p1 = p1->next;  
 }
 else
 {
  printf("无此信息!");
 }
 jiemian(head,n);
 return(head); 
}

struct student *del(struct student *head, int n)
{
 int a;
 struct student *p1;
 struct student *p2;
 p1 = head;
 p2 = head;
 printf("请输入要删除的ID\n");
 scanf("%d",&a);
 while(p1 != NULL && p1->ID != a && p1->next != NULL)
 {
  p2 = p1;
  p1 = p1->next;  
 }
 if(p1 != NULL && p1->ID == a)
 {
  if(p1 == head)
   head = p1->next;
  else
   p2->next = p1->next;
  n = n-1;
  p2->next = NULL;
  
  free(p1);  
 }
    else  
  printf("无此信息!"); 
 jiemian(head,n);
 return(head);
}


struct student *save(struct student *head,int n)
{
 int a;
 FILE * fp;
 fp = fopen("xumin.txt","w+");
 struct student *p1;
 p1 = head;
 for(a = 0;a < n;a++)
 {
  fprintf(fp,"name = %s,ID = %d,age = %d,tel = %d",p1->name,p1->ID,p1->age,p1->tel);
  p1 = p1->next;
  printf("\n");
 }
 fclose(fp);
 jiemian(head,n);
 return(head); 
}


struct student *add(struct student *head,int n)
{
 struct student *p1;
 p1 = (struct student*)malloc(sizeof(struct student)); 
 printf("输入name\n");
 scanf("%s",&p1->name);
 printf("输入ID\n");
 scanf("%d",&p1->ID); 
 printf("输入age\n");
 scanf("%d",&p1->age);
 printf("输入tel");
 scanf("%d",&p1->tel);
 
 p1->next = head;
 head = p1; 
 n = n+1;
 jiemian(head,n);
 return(head); 
}


struct student *jiemian(struct student *head,int n)
{
 printf("请选择");
 printf("\n");
 printf("1添加");
 printf("\n");
 printf("2删除");
 printf("\n");
 printf("3显示");
 printf("\n");
 printf("4保存");
 printf("\n");
 printf("5查找");
 printf("\n");
 printf("6遍历");
 printf("\n");
 printf("0退出");
 printf("\n");
 int a;
 scanf("%d",&a);
 switch(a)
 {
 case 1:
  {
   add(head,n);
   break;
  }
 case 2:
  {
   del(head,n);
   break;
  }
 case 3:
  {
   show(head,n);
   break;
  }
 case 4:
  {
   save(head,n);
   break;
  }
 case 5:
  {
   search(head,n);
   break;
  }
 case 6:
  {
   see(head,n);
   break;
  }
 case 0:
  {
   exit(0);
   break;
  }
 default:
  {
   printf("dataerror!");
   break;
  }
  
 }
 return(0); 
}


struct student *see(struct student *head,int n)
{
 struct student *p1;
 p1 = head;
 
 do
 {
  printf("\n");
  printf("name =%s\n",p1->name);
  printf("ID =%d\n",p1->ID);     
  printf("age =%d\n",p1->age);   
  printf("tel =%d\n",p1->tel);
  
  p1 = p1->next;
  // p1 = NULL;
 }while(p1 != NULL && p1->ID != NULL);
 
 jiemian(head,n);
 return(head);
}

/*struct student *Exit(struct student *head)
{
exit(0);
}*/
void Exit()
{
 exit(0);
}

/*struct student *paixu(struct student *head,int n)
{
 int i,j,k;
 int t;
 struct student *p1;
 p1 = head;
 while(p1 != NULL && p1->next != NULL)
 {
 scanf("%d%s%d%d",&p1->ID,p1->name,&p1->age,&p1->tel);
 p1 = p1->next;
 }
 if(head == NULL)
 {
  printf("list is null!");
  return(0);
 }
 else
 {
  for(i = 0; i<n-1 ; i++)
  {
   k = i;sd
   for(j = i+1; j<n;j++)
   {
    if(*(p1+k)>*(p1+j))
     k = j;
    if(k != i)
    {
     t = *(p1+k);
     *(p1+k) = *(p1+i);
     *(p1+i) = t;
    }
   }
  }
  printf("%d%s%d%d\n",p1->ID,p1->name,p1->age,p1->tel);
  p1 = p1->next;
 }
 jiemian(head,n);
 return(head);
}*/