>> 您现在的位置 | 胡杨林日记 [登录] [注册
 
无题

写作者:我是一片云     日记本: 再把心情读一遍

日期:2005年07月21日  星期  

天气 

心情

   被翻看:281

   #include
   #include
   #include
   #include
   #define NULL 0
   #define LEN sizeof(struct student)
   typedef struct student
   {
   long num;
   char *name;
   int age;
   char *sex;
   float totscore;
   struct student *next;
   }node,*tt;
   int n;
   node *creat(void)
   {
   node *head;
   node *p1;
   node *p2;
   float x,y;
   head=NULL;
   n=0;
   printf("输入 0 结束
  
   ");
   p1=p2=( node* ) malloc(LEN);
   printf("请输入学生的学号,姓名,年龄,性别,成绩!
   ");
   scanf("%ld,%s,%d,%s,%f",&p1->num,p1->name,&p1->age,p1->sex,&x);
   p1->totscore=x;
   while(p1->num != 0)
   {
   n=n+1;
   if(n==1)
   head=p1;
   else
   p2->next=p1;
   p2=p1;
   p1=( node* ) malloc (LEN);
   printf("请输入球员的学号,姓名,年龄,性别,成绩!
   ");
   scanf("%ld,%s,%d,%s,%f",&p1->num,p1->name,&p1->age,p1->sex,&y);
   p1->totscore=y;
   }
   p2->next=NULL;
   return head;
  
   }
   void searchnumb(node *head,long number){
   node *p1;
   if(head==NULL)printf("
   list null
   ");
   else{ p1=head;
   while(number != p1->num && p1->next != NULL)
   p1=p1->next;
  
   }
   if(number==p1->num)
   printf("学生的信息为: %ld,%s,%d,%s,%f",&p1->num,p1->name,&p1->age,p1->sex,p1->totscore);
   else printf("No record,please recheck your number!
  
   ");
   }
  
   node *insert(node *head, node *student){
   node *p0,*p1,*p2;
   p1=head;
   p0=student;
   if(head==NULL){
   head=p0;
   p0->next=NULL;
   }
   else
   {
   while((p0->num>p1->num)&&(p1->next!=NULL)){
   p2=p1;
   p1=p1->next;
   }
   if(p0->numnum){
   if(head==p1)head=p0;
   else p2->next=p0;
   p0->next=p1;
   }
   else {
   p1->next=p0;
   p0->next=NULL;
   }
   }
   n=n+1;
   return(head);
   }
  
   tt findmax(tt head)
   {
  
   tt p1,p2;
   if(head == NULL) return 0;
   p1=head;
   p2=p1->next;
   while(p2->next != NULL)
   {
   if(p1->numnum)
   p1=p2;
   p2=p2->next;
   }
   return p1;
   }
  
   tt listselection(tt head)
   {
   tt max,t,out=NULL;
   while(head->next != NULL)
   {
   max=findmax(head);
   t=max->next;
   max->next=t->next;
   t->next=out;
   out=t;
   }
   head->next=out;
   return head;
   }
  
   void print(node *head)
   { float x;
   node *p;
   printf("
   现有 %d 个学生,学生的信息为 :
   ",n);
   if(head==NULL) printf("no list
   ");
   else {p=head;
   while(p!=NULL)
   { x=p->totscore;
   printf("%ld,%s,%d,%s,%f",&p->num,p->name,&p->age,p->sex,p->totscore);
   p=p->next;
   }
   }
   }
  
   node *del(node *head,long num)
   {
   node *p1,*p2;
   if(head==NULL)
   {
   printf("
   空!
   ");
   goto end;
   }
   p1=head;
   while(num != p1->num && p1->next!=NULL)
   {
   p2=p1;
   p1=p1->next;
   }
   if(num==p1->num)
  
   {
   if(num==head->num)
   {
   head=p1->next;
  
  
   }
   else
   p2->next=p1->next;
   printf("编号%d学生退学",num);
   n=n-1;
   }
   else printf("没有%ld 号学生 !
   " ,num);
   end: return head;
   }
  
   void quit()
   {
   exit(0);
   }
  
   void menu()
   {
   printf(" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   ");
   printf(" 欢迎来到学生管理系统!
   ");
   printf(" # [1] 建立系统 #
   ");
   printf(" # [2] 查找学生 #
   ");
   printf(" # [3] 加入新学生 #
   ");
   printf(" # [4] 学生退学 #
   ");
   printf(" # [5] 现有学生 #
   ");
   printf(" # [6] 排序 #
   ");
   printf(" # [7] 退出 #
   ");
   printf(" # #
   ");
   printf(" # 如果没有学生,请建立 #
   ");
   printf(" # #
   ");
   printf(" # #
   ");
   printf(" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  
  
  
   ");
   printf("
   请选择 (1-6):");
  
   }
  
   //node *head;
  
   void main()
   {
   node *head;
   float q;
   long del_num;
   long find_num;
   node *in_sert;
   node *p1;
   int choose;
   while(1)
   {
   menu();
   scanf("%d",&choose);
   switch(choose)
   {
   case 1: head=creat();break;
   case 2:
   printf("请输入要查找的学生
   ");
   scanf("%ld",&find_num);
   searchnumb(head,find_num);
   getchar();
   break;
  
   case 3:
   in_sert=(node *)malloc(sizeof(node));
   printf("请输入新学生信息:
   ");
   scanf("%ld,%s,%d,%s,%f",&p1->num,p1->name,&p1->age,p1->sex,&q);
   in_sert->totscore=q;
   insert(head,in_sert);
   print(head);
   getchar();
   break;
   case 4:
   print(head);
   printf("请输入要退学的学生
   ");
   scanf("%ld",&del_num);
   head=del(head,del_num);
   printf("%ld 号学生已退学!
   ",del_num);
   //printf("
   ");
  
   print(head);
   //getchar();
   break;
   case 5:
   printf("
   输出现有学生:
   ");
   print(head);
   printf("
   按任意键返回!");
   getchar();
   break;
   case 6: listselection(head);break;
   case 7: quit();break;
   default: printf("非法,按任意键返回主程序
  
  
  
  
  
   r");
   //clrscr();
   menu();
   getchar();
  
   }
   }
   }
  
  
  

完成时间:2005.07.21 08:57:33

  公开状态:完 全 公 开 | 8 条留言 | 查看留言   

 

留言


留言主题: 留言在日记留言到信箱
留言内容:
      

Copyright 2002-2007 版权所有
胡杨林© All rights reserved.
服务支持拓商网