1. gzyueqian
      13352868059
      首頁 > 新聞中心 > > 正文

      學生管理系統(C原代碼)

      更新時間: 2008-05-26 12:52:12來源: 粵嵌教育瀏覽量:1458

      #include <stdio.h>
      #include <string.h>
      #include <malloc.h>
      #define STUDENT struct student
      #define LEN sizeof(STUDENT)
      #include<stdarg.h>
      #include <stdlib.h>
      #include <conio.h>     
      STUDENT
      {      
       long num;
       char name[5];
       int math;
       int english;
       int chengxu;
       int average;
       STUDENT *next;
      };
      int n=0;     
      void menu() 
      {
       printf("**************成績管理系統**************\n");
          printf("\t1--成績輸入;\t2--顯示成績\n");
       printf("\t3--成績查詢;\t4--刪除成績\n");
       printf("\t5--排列成績;\t6--插入成績\n");
          printf("\t7--在文件中保存成績;\t0--退出\n");
       printf("************************************************\n");
          printf("請選擇(0--7):");
      }
      char choice()
      {
       char select;
      // while( !_kbhit());  
          select=getche();       
       return (select);
      }

      STUDENT *create()

       STUDENT *head,*p1,*p2;   
       p1=p2=(STUDENT *)malloc(LEN);
       scanf("%ld %s %d %d %d",&p1->num,p1->name,&p1->math,&p1->english,&p1->chengxu);
       p1->average=(p1->math+p1->english+p1->chengxu)/3;
       head=NULL;
       while (p1->num!=0)
       {
        n++;
        if(n==1)
         head=p1;  
        else
         p2->next=p1;  
        p2=p1;
        p1=(STUDENT *) malloc(LEN);
        scanf("%ld %s %d %d %d",&p1->num,p1->name,&p1->math,&p1->english,&p1->chengxu);
           p1->average=(p1->math+p1->english+p1->chengxu)/3;
       }
       p2->next=NULL;  
       free(p1);
       return(head);
      }

      void print(STUDENT *head)
      {       
       STUDENT *p;
       p=head;
       if(head!=NULL)
        do
        {
         printf("%ld\t%s\t%d\t%d\t%d\t%d\n", p->num, p->name,p->math,p->english,p->chengxu,p->average);
         p=p->next;
        }while(p!=NULL);
      }
      void search(STUDENT *head,char nam[])
      {
       STUDENT *p5;
       if(head==NULL)
       {
        printf("\nlist null!\n");
       }
       p5=head;
       while(strcmp(p5->name,nam)&&p5->next!=NULL)
        p5=p5->next;
       if(strcmp(p5->name,nam)==0)
       {
        printf("\n該同學成績為:\n");
        printf("學號\t姓名\t數學\t英語\t程序\t平均分\n");
        printf("%ld\t%s\t%d\t%d\t%d\t%d\n",p5->num, p5->name,p5->math,p5->english,p5->chengxu,p5->average);
       }
      }
      STUDENT *del(STUDENT *head,long num)
      {
       STUDENT *p6,*p7;
       if(head==NULL)     
       {
        printf("\n list null!=\n");
        return (head);
       }
       p6=head;
       while(num!=p6->num &&p6->next!=NULL) 
       {
        p7=p6;
        p6=p6->next;
       }
       if(num==p6->num)
       {
        if(p6==head)
         head=p6->next;  
        else
         p7->next=p6->next;  
        printf ("delete: %ld \n", num);
        n--;
        
       }
       else
        printf ("%ld not been found!\n", num);
        return(head);
      }
      STUDENT *sort(STUDENT *head)
      {
       STUDENT *temp,*t,*p3,*p4;
          temp=head;
       head=NULL;
       while(temp!=NULL)
       {
        t=temp;
        temp=temp->next;
        if(head!=NULL&&head->average<t->average)
        {
         p3=head;
         while(p3!=NULL&&p3->average<t->average)
         {
          p4=p3;
          p3=p3->next;
         }
         t->next=p3;
         p4->next=t;
        } 
        else
        {
         t->next=head;
         head=t;
        }

       }
       return(head);
      }
      STUDENT *insert( STUDENT *head, STUDENT *stud)
      {
          STUDENT *p3,*p4;
       if(head!=NULL&&head->average<stud->average)
       {
        p3=head;
        while(p3!=NULL&&p3->average<stud->average)
        {
         p4=p3;
         p3=p3->next;
        }
        stud->next=p3;
        p4->next=stud;
       } 
       else
       {
        stud->next=head;
        head=stud;
       }
       n++;
       return (head);
      }
      void save(STUDENT *head)
      {
          FILE *fp;
          STUDENT *p;
          fp=fopen("d:\\student.txt","wb");
          if(fp==NULL)
          {
              printf("無法打開!");
              exit(0);
          }
          p=head;
       while(p!=NULL)
       {
        fwrite(p,LEN,1,fp);
        p=p->next;
       }
       fclose(fp);
      }
      STUDENT *load()
      {
       FILE *fp;
          STUDENT *q,*head=NULL;
       fp=fopen("d:\\student.txt","rb");
          if(fp==NULL)
          {
              return head;
          }
          while(!feof(fp))
          {
        q=(STUDENT *)malloc(LEN);
              if(fread(q,LEN,1,fp)==1)
        {
         q->next=head;
         head=q;
         n++;
        }
       }
        fclose(fp);
        return head;
      }


      int main(int argc, char *argv[])
      {
       STUDENT *head,*stu;
       long del_num;
       char select,nam[5];
       select=0;
       head=load();
       while(select!='0')
          {
                  system("cls");    
                  menu();
                  select=choice();
               switch(select)
         {
                       case '0':
                            printf("\n您選擇的是退出!\n");
                            _beep(300,400);
                            continue;
                       case '1':
             printf("\n您選擇的是成績輸入!\n");
             printf("\n請輸入成績!\n");
             printf("學號\t姓名\t數學\t英語\t程序\n");
             head=create();
                            break;
                       case '2':
                            printf("\n您選擇的是顯示成績!\n");
             printf("\n全部成績為:\n");
             printf("學號\t姓名\t數學\t英語\t程序\t平均分\n");
                print(head);
                            break;
                       case '3':
             printf("\n您選擇的是成績查詢!\n");
             printf("\n請輸入要查尋的姓名:");
             scanf("%s",nam);
                            search(head,nam);
                            break;
                       case '4':
                            printf("\n您選擇的是刪除成績!\n");
             printf("\n請輸入要刪除同學的學號:");
             scanf("%ld",&del_num);
             head=del(head,del_num);
             printf("\n刪除后所有成績為:\n");
             printf("學號\t姓名\t數學\t英語\t程序\t平均分\n");
                            print(head);
                            break;
                       case '5':
             printf("\n您選擇的是排列成績!\n");
                            head=sort(head);
             printf("\n排列后的所有成績為:\n");
             printf("學號\t姓名\t數學\t英語\t程序\t平均分\n");
                            print(head);
             break;
                       case '6':
                            printf("\n您選擇的是插入成績!\n");
             printf("\n請輸入插入成績的信息!\n");
             printf("學號\t姓名\t數學\t英語\t程序\t平均分\n");
             stu=(STUDENT *)malloc(LEN);
             scanf("%ld %s %d %d %d",&stu->num,stu->name,&stu->math,&stu->english,&stu->chengxu);
                            stu->average=(stu->math+stu->english+stu->chengxu)/3;
                            head=insert(head,stu);
             printf("\n插入后所有成績為:\n");
             printf("學號\t姓名\t數學\t英語\t程序\t平均分\n");
                            print(head);
             break;
                       case '7':
                            printf("\n您選擇的是在文件中保存成績!\n");
                            save(head);
             printf("\n保存成功!\n");
             break;
           default:
             printf("\n您的選擇是錯誤的!\n");
                  }
         system("PAUSE");
          }
          return (0);

       

       

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 五月婷婷激情六月 | 日本国产性爱观看视频 | 久久99久久99精品免视看动漫 | 又黄又爽免费国产视频 | 午夜亚洲国产理论片一二三四 | 在线视频亚洲精品 |