1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)的示例分析

      小編給大家分享一下C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

      成都網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、重慶網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信平臺(tái)小程序開(kāi)發(fā)、集團(tuán)成都定制網(wǎng)站等服務(wù)項(xiàng)目。核心團(tuán)隊(duì)均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗(yàn),服務(wù)眾多知名企業(yè)客戶;涵蓋的客戶類型包括:成都石涼亭等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗(yàn),同時(shí)也獲得了客戶的一致稱贊!

      具體內(nèi)容如下

      一、本設(shè)計(jì)涉及的重要C語(yǔ)言知識(shí)有:

      1.單鏈表的各種操作
      2.文件流的操作
      3.單鏈表的排序

      二、本設(shè)計(jì)主要以下幾個(gè)模塊組成

      1.學(xué)生成績(jī)添加模塊

      2.學(xué)生成績(jī)刪除模塊

      3.學(xué)生成績(jī)修改模塊

      4.學(xué)生成績(jī)檢索模塊

      5.學(xué)生成績(jī)顯示模塊(包括成績(jī)排序)

      6.學(xué)生成績(jī)保存模塊

      效果圖:

      C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)的示例分析

      C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)的示例分析

      本設(shè)計(jì)大概5、6百行代碼左右,通過(guò)這個(gè)設(shè)計(jì),本人感覺(jué)C語(yǔ)言熟練了很多,

      希望能對(duì)像我一樣的C語(yǔ)言菜鳥(niǎo)同學(xué)會(huì)有點(diǎn)幫助,廢話少說(shuō),咱們上代碼!

      三、程序代碼

      1.main.c

      這個(gè)文件內(nèi)主要完成主菜單的跳轉(zhuǎn)和接受用戶信息完成到各個(gè)模塊的跳轉(zhuǎn)。

      #include  
      #include "students.h" 
       
      int select_menu(void); 
      void hand_menu(int cmd, int *flag); 
      void quit(); 
       
       
        
      int main(int argc, char *argv[]) 
      { 
       int cmd; 
       int flag = 0; 
        
       while(1){ 
        cmd = select_menu();   
        hand_menu(cmd, &flag); 
       } 
      } 
       
      int select_menu(void) 
      { 
       int select = 0; 
       printf("**************************************************************\n\n"); 
       printf("   學(xué)生管理系統(tǒng)    \n"); 
       printf(" 1:添加學(xué)生信息   2:刪除學(xué)生信息\n"); 
       printf(" 3:修改學(xué)生信息   4:查詢學(xué)生信息\n"); 
       printf(" 5:查看學(xué)生信息   6:保存\n"); 
       printf(" 0:退出\n\n"); 
       printf("**************************************************************\n"); 
       printf("請(qǐng)選擇:"); 
        
       select=getch(); 
       while(select<'0'||select>'6'){ 
        printf("\n輸入錯(cuò)誤,請(qǐng)重新選擇:"); 
        select=getch(); 
       } 
       return select; 
      } 
       
      void hand_menu(int cmd, int *flag) 
      { 
       static STU *stu_head = NULL; 
       if(*flag == 0){ 
        stu_head = init_student(stu_head); 
        *flag = 1; 
       } 
        
       switch(cmd){ 
        case '0': 
         save_student(stu_head); 
         quit(); 
         break; 
        case '1': 
         system("cls"); 
         stu_head = add_student(stu_head); 
         system("cls"); 
         break; 
        case '2': 
         system("cls"); 
         stu_head = del_student(stu_head); 
         system("cls"); 
         break; 
        case '3': 
         system("cls"); 
         modify_student(stu_head); 
         system("cls"); 
         break; 
        case '4': 
         system("cls"); 
         search_student(stu_head); 
         system("cls"); 
         break; 
        case '5': 
         system("cls"); 
         stu_head = display_student(stu_head); 
         system("cls"); 
         break; 
        case '6': 
         system("cls"); 
         save_student(stu_head); 
         system("cls"); 
         break; 
        default: 
         break; 
       } 
      } 
       
      void quit() 
      { 
       printf("\n感謝使用學(xué)生管理系統(tǒng)!\n"); 
       exit(0); 
      }

      2.students.h

      這個(gè)文件主要包含students.c文件函數(shù)操作所需的定義。

      #ifndef _STUDENTS_H_ 
      #define _STUDENTS_H_ 
       
      typedef struct st{ 
       unsigned long ID; 
       char name[10]; 
       float chinese; 
       float math; 
       float english; 
       double all_sub; 
       float average; 
       struct st* next; 
      }STU; 
       
      #define ASK_STU(p) do{p=(STU *)malloc(sizeof(STU));\ 
          if(p==NULL){printf("malloc memory failed!\n");exit(1);}\ 
          }while(0) 
           
      STU *search_by_nb(STU *stu_head, unsigned long nb); 
      STU *search_by_name(STU *stu_head, char name[]); 
      STU *select_sort(STU *g, char flag); 
      STU *add_student(STU *stu_head); 
      STU *del_all(STU *stu_head); 
      STU *del_one(STU *stu_head, int flag); 
      STU *del_student(STU *stu_head); 
      void modify_student(STU *stu_head); 
      STU *display_student(STU *stu_head); 
      STU *search_by_name(STU *stu_head, char name[]); 
      STU *search_by_nb(STU *stu_head, unsigned long nb); 
      #endif

      3.store.h

      #ifndef _STORE_H_ 
      #define _STORE_H_ 
      void save_student(STU *stu_head); 
      STU *init_student(STU *stu_head); 
      #endif

      4.students.c

      這個(gè)文件是本設(shè)計(jì)的核心部分,包括各個(gè)模塊的實(shí)現(xiàn)函數(shù),
      包括添加,刪除,修改,查找,顯示學(xué)生信息這幾個(gè)模塊的實(shí)現(xiàn)。

      #include  
      #include "students.h" 
       
       STU *select_sort(STU *g, char flag) 
       { 
       STU *p,*q,*t,*s,*h; 
       
       h=(STU *)malloc(sizeof(STU)); 
       h->next=g; 
       p=h; 
       while(p->next->next!=NULL) 
       { 
        for(s=p,q=p->next;q->next!=NULL;q=q->next) 
        { 
         if(flag == '1') 
          if(q->next->IDnext->ID) 
           s=q; 
          
         if(flag == '2') 
          if(q->next->chinesenext->chinese) 
           s=q; 
            
         if(flag == '3') 
          if(q->next->mathnext->math) 
           s=q; 
            
         if(flag == '4') 
          if(q->next->englishnext->english) 
           s=q; 
            
         if(flag == '5') 
          if(q->next->averagenext->average) 
           s=q; 
        } 
       
        if(s!=q) 
        { 
         t=s->next; 
         s->next=t->next; 
         t->next=p->next; 
         p->next=t; 
        } 
        p=p->next; 
       } 
       g=h->next; 
       free(h); 
       return g; 
      } 
       
      STU *add_student(STU *stu_head) 
      {  
       STU *stu; 
       STU *head = stu_head; 
       STU *node = stu_head; 
       STU *node_fd; 
       int sel; 
       
       ASK_STU(stu); 
       stu->next = NULL; 
        
       printf("請(qǐng)輸入學(xué)生學(xué)號(hào):"); 
       scanf("%d", &stu->ID);  
       
       while(search_by_nb(node, stu->ID)){ 
        printf("已經(jīng)存在該學(xué)號(hào)!請(qǐng)重新輸入一個(gè)學(xué)號(hào):"); 
        scanf("%d", &stu->ID); 
       } 
        
       printf("請(qǐng)輸入學(xué)生名字:"); 
       scanf("%s", stu->name); 
       printf("請(qǐng)輸入該學(xué)生英語(yǔ)成績(jī):"); 
        
       scanf("%f", &stu->english); 
       while(stu->english < 0.0 || stu->english > 100.0){ 
        printf("輸入錯(cuò)誤,請(qǐng)重新輸入英語(yǔ)成績(jī):"); 
        scanf("%f", &stu->english); 
       } 
       printf("請(qǐng)輸入該學(xué)生數(shù)學(xué)成績(jī):"); 
       scanf("%f", &stu->math); 
       while(stu->math < 0.0 || stu->math > 100.0){ 
        printf("輸入錯(cuò)誤,請(qǐng)重新輸入數(shù)學(xué)成績(jī):"); 
        scanf("%f", &stu->math); 
       } 
       printf("請(qǐng)輸入該學(xué)生語(yǔ)文成績(jī):"); 
       scanf("%f", &stu->chinese); 
       while(stu->chinese < 0.0 || stu->chinese > 100.0){ 
        printf("輸入錯(cuò)誤,請(qǐng)重新輸入數(shù)學(xué)成績(jī):"); 
        scanf("%f", &stu->chinese); 
       } 
        
       stu->all_sub = stu->chinese+stu->math+stu->english; 
       stu->average = stu->all_sub/3; 
        
       if(!head){ 
        head = stu; 
        return head; 
       } 
       
       while(node->next) 
        node = node->next; 
         
       node->next = stu; 
       head = select_sort(head, '1'); 
       return head;  
      } 
      STU *del_all(STU *stu_head) 
      { 
       if(!stu_head) 
        return NULL; 
       del_all(stu_head->next); 
       free(stu_head); 
       stu_head = NULL; 
       return NULL; 
      } 
       
      STU *del_one(STU *stu_head, int flag) 
      { 
       STU *node = stu_head; 
       STU *head = stu_head; 
       STU *pre; 
        
       char name[10]; 
       unsigned long ID; 
        
       if(head = NULL){ 
        printf("沒(méi)有任何學(xué)生信息!\n"); 
        return head; 
       } 
        
       if(flag == '2'){ 
        printf("請(qǐng)輸入要?jiǎng)h除的學(xué)生姓名:"); 
        scanf("%s", name); 
         
        if(!strcmp(node->name, name)){ 
         free(node); 
         head = node->next; 
         printf("成功刪除!按任意鍵返回。\n"); 
         getch(); 
         return head; 
        } 
         
        while(node){ 
         if(!strcmp(node->name, name)){ 
          pre->next = node->next; 
          free(node); 
          printf("成功刪除!按任意鍵返回。\n"); 
          getch(); 
          return head; 
         } 
         pre = node; 
         node = node->next; 
        } 
         
        printf("沒(méi)有找到該學(xué)生信息!\n"); 
        return head; 
       } 
        
       if(flag == '3'){ 
        printf("請(qǐng)輸入要?jiǎng)h除的學(xué)生學(xué)號(hào):"); 
        scanf("%d", &ID); 
         
        if(node->ID == ID){ 
         free(node); 
         head = node->next; 
         printf("成功刪除!按任意鍵返回。\n"); 
         getch(); 
         return head; 
        } 
         
        while(node){ 
         if(!strcmp(node->name, name)){ 
          pre->next = node->next; 
          free(node); 
          printf("成功刪除!按任意鍵返回。\n"); 
          getch(); 
          return head; 
         } 
         pre = node; 
         node = node->next; 
        } 
         
        printf("沒(méi)有找到該學(xué)生信息!按任意鍵返回\n"); 
        getch(); 
        return head; 
       } 
        
      } 
       
      STU *del_student(STU *stu_head) 
      { 
       int sel; 
       STU *head = stu_head; 
        
       printf("1:刪除全部 2:按名字刪除 3:按學(xué)號(hào)刪除 0:返回\n"); 
       printf("請(qǐng)選擇:\n"); 
        
       sel = getch(); 
       while(sel<'0'||sel>'3'){ 
        printf("輸入錯(cuò)誤,請(qǐng)重新選擇:\n"); 
        sel = getch(); 
       } 
        
       if(sel == '0') 
        return head; 
        
       if(!head){ 
        printf("沒(méi)有任何學(xué)生信息!按任意鍵返回.\n"); 
        getch(); 
        return head; 
       } 
        
        if(sel == '1'){ 
        head = del_all(head); 
        printf("刪除成功!按任意鍵返回."); 
        getch(); 
        return head; 
       } 
        
       if(sel == '2'||sel =='3'){ 
        head = del_one(head, sel); 
        return head; 
       } 
        
      } 
       
      void modify_student(STU *stu_head) 
      { 
       STU *head = stu_head; 
       STU *node_fd; 
       int sel; 
       char name[10]; 
       unsigned long nb; 
        
      recyc3: 
       printf("1:修改指定學(xué)號(hào)的學(xué)生信息 2:修改指定姓名的學(xué)生信息 0:返回\n請(qǐng)選擇:\n"); 
        
       sel = getch(); 
       while(sel < '0'|| sel>'2'){ 
        printf("輸入錯(cuò)誤!請(qǐng)重新選擇:\n"); 
        sel = getch(); 
       } 
       if(sel == '1'||sel=='2'){ 
        if(sel == '1'){ 
         printf("請(qǐng)輸入要修改的學(xué)生學(xué)號(hào):"); 
         scanf("%d", &nb);  
         node_fd = search_by_nb(head, nb); 
        } 
        if(sel == '2'){ 
         printf("請(qǐng)輸入要修改的學(xué)生姓名:"); 
         scanf("%s", name); 
         node_fd = search_by_name(head, name); 
        } 
        
        if(node_fd){ 
          
         printf("請(qǐng)輸入該學(xué)生英語(yǔ)成績(jī):"); 
         scanf("%f", &node_fd->english); 
         while(node_fd->english < 0.0 || node_fd->english > 100.0){ 
          printf("輸入錯(cuò)誤,請(qǐng)重新輸入英語(yǔ)成績(jī):"); 
          scanf("%f", &node_fd->english); 
         } 
         printf("請(qǐng)輸入該學(xué)生數(shù)學(xué)成績(jī):"); 
         scanf("%f", &node_fd->math); 
         while(node_fd->math < 0.0 || node_fd->math > 100.0){ 
          printf("輸入錯(cuò)誤,請(qǐng)重新輸入數(shù)學(xué)成績(jī):"); 
          scanf("%f", &node_fd->math); 
         } 
         printf("請(qǐng)輸入該學(xué)生語(yǔ)文成績(jī):"); 
         scanf("%f", &node_fd->chinese); 
         while(node_fd->chinese < 0.0 || node_fd->chinese > 100.0){ 
         printf("輸入錯(cuò)誤,請(qǐng)重新輸入數(shù)學(xué)成績(jī):"); 
         scanf("%f", &node_fd->chinese); 
         } 
        
         node_fd->all_sub = node_fd->chinese+node_fd->math+node_fd->english; 
         node_fd->average = node_fd->all_sub/3; 
         printf("修改成功!\n"); 
         goto recyc3; 
        } 
        else{ 
         printf("沒(méi)有該學(xué)生信息!\n"); 
         goto recyc3; 
        } 
       } 
      } 
       
      STU *display_student(STU *stu_head) 
      { 
       int sel; 
       STU *head = stu_head; 
       STU *node = stu_head; 
       if(node == NULL){ 
        printf("沒(méi)有任何學(xué)生信息,按任意鍵返回"); 
        getch(); 
        return head; 
       } 
      recyc: 
       printf("學(xué)號(hào)  姓名  語(yǔ)文 數(shù)學(xué) 英文 平均分 總分\n"); 
       while(node){ 
        printf("%d  %s  %0.1f %0.1f %0.1f %0.1f %0.1f\n", node->ID, node->name,\ 
         node->chinese, node->math, node->english, node->average, node->all_sub); 
        node=node->next; 
       } 
       printf("排序方式: 1:按學(xué)號(hào)排序 2:按語(yǔ)文成績(jī)排序 3:按數(shù)學(xué)成績(jī)排序\n   4:按英文成績(jī)排序 5:按總分排序 0:返回\n請(qǐng)選擇:"); 
       
       sel = getch(); 
       while(sel < '0'|| sel>'5'){ 
        printf("輸入錯(cuò)誤!請(qǐng)重新選擇:"); 
        sel = getch(); 
       } 
       if(sel == '0') 
        return head; 
         
       head = node = select_sort(head, sel); 
       system("cls"); 
       goto recyc; 
       return head; 
      } 
       
      STU *search_by_name(STU *stu_head, char name[]) 
      { 
       STU *node = stu_head; 
       
       if(!node) 
        return NULL; 
       
          
       while(node){ 
        if(!strcmp(node->name, name)) 
          return node; 
         node=node->next; 
       } 
         
       return NULL; 
      } 
       
      STU *search_by_nb(STU *stu_head, unsigned long nb) 
      { 
       STU *node = stu_head; 
       
       if(!node) 
        return NULL; 
         
          
       while(node){ 
        if(node->ID == nb) 
         return node; 
          
        node=node->next; 
       } 
         
       return NULL; 
      } 
       
      void search_student(STU *stu_head) 
      { 
       STU *head = stu_head; 
       STU *node; 
       int sel = 0; 
       char name[10]; 
       unsigned long ID; 
        
      recyc2: 
       printf("1:按姓名查找 2:按學(xué)號(hào)查找 0:返回\n請(qǐng)選擇:"); 
       sel = getch(); 
       while(sel<'0' || sel>'2'){ 
        printf("\n輸入錯(cuò)誤,請(qǐng)重新選擇:"); 
        sel = getch(); 
       } 
        
       if(sel == '0') 
        return; 
       if(sel == '1'||sel=='2'){ 
        if(sel == '1'){ 
         printf("\n請(qǐng)輸入你要查找的學(xué)生姓名:"); 
         scanf("%s", name); 
         node = search_by_name(head, name); 
        } 
        else{ 
         printf("\n請(qǐng)輸入你要查找的學(xué)生學(xué)號(hào):"); 
         scanf("%d", &ID); 
         node = search_by_nb(head, ID); 
        } 
        
        if(node){ 
         printf("學(xué)號(hào)  姓名  語(yǔ)文 數(shù)學(xué) 英文 平均分 總分\n"); 
         printf("%d  %s  %0.1f %0.1f %0.1f %0.1f %0.1f\n", node->ID, node->name,\ 
           node->chinese, node->math, node->english, node->average, node->all_sub); 
          goto recyc2; 
        } 
        else{ 
         printf("沒(méi)有找到該學(xué)生信息!\n"); 
         goto recyc2; 
        } 
       } 
       
      }

      5.store.c

      這個(gè)文件包含程序啟動(dòng)時(shí)讀取文件內(nèi)的學(xué)生成績(jī)信息,
      和需要保存時(shí)或者退出時(shí)向文件保存學(xué)生成績(jī)信息的操作。

      #include  
      #include  
       
      #include "students.h" 
       
      #define FILE_NAME "students" 
       
      void save_student(STU *stu_head) 
      { 
       STU *node = stu_head; 
       FILE *fp; 
       fp = fopen(FILE_NAME, "w+"); 
       while(node){ 
        fprintf(fp, "%ld %s %0.1f %0.1f %0.1f %0.1lf %0.1f\n", node->ID, node->name,\ 
          node->chinese, node->math, node->english, node->all_sub, node->average); 
        node=node->next; 
       } 
       fclose(fp); 
       printf("保存成功!按任意鍵返回。\n"); 
       getch(); 
      } 
       
      STU *init_student(STU *stu_head) 
      { 
       STU *node = stu_head; 
       STU *head = stu_head; 
       STU *new_node; 
       int i; 
       FILE *fp; 
       char name[10]; 
       int num; 
        
       ASK_STU(new_node); 
       new_node->next=NULL; 
        
       fp = fopen(FILE_NAME, "r+"); 
       rewind(fp); 
       while((i = fscanf(fp, "%ld%s%f%f%f%lf%f\n", &new_node->ID, new_node->name,\ 
           &new_node->chinese, &new_node->math, &new_node->english, &new_node->all_sub, &new_node->average)) == 7){ 
        if(!head) 
         head = node = new_node; 
        else{ 
         while(node->next) 
          node = node->next; 
         node->next = new_node; 
        } 
        ASK_STU(new_node); 
        new_node->next = NULL; 
       } 
       fclose(fp); 
       return head; 
      }

      以上是“C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


      當(dāng)前題目:C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)的示例分析
      分享網(wǎng)址:http://ef60e0e.cn/article/gjhehe.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        丘北县| 信阳市| 洪湖市| 墨江| 双桥区| 新乡市| 靖西县| 南昌县| 义马市| 英吉沙县| 安远县| 惠州市| 三门峡市| 新蔡县| 宝清县| 乌海市| 临潭县| 宁都县| 美姑县| 湖北省| 长顺县| 山东省| 扶风县| 洞口县| 高雄市| 黄骅市| 双鸭山市| 台江县| 攀枝花市| 金秀| 宁都县| 元氏县| 丹凤县| 若尔盖县| 田阳县| 海淀区| 镇巴县| 福海县| 丰县| 枝江市| 宁化县|