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ù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      go語言學(xué)生管理系統(tǒng) go語言圖書管理系統(tǒng)

      C語言設(shè)計學(xué)生成績管理系統(tǒng)

      在win-tc 下編輯的:

      創(chuàng)新互聯(lián)為客戶提供專業(yè)的網(wǎng)站設(shè)計、做網(wǎng)站、程序、域名、空間一條龍服務(wù),提供基于WEB的系統(tǒng)開發(fā). 服務(wù)項目涵蓋了網(wǎng)頁設(shè)計、網(wǎng)站程序開發(fā)、WEB系統(tǒng)開發(fā)、微信二次開發(fā)、成都手機(jī)網(wǎng)站制作等網(wǎng)站方面業(yè)務(wù)。

      程序如下:

      #include "stdlib.h"

      #include "string.h"

      #include "stdio.h"

      #define NULL 0

      #define Q 10

      #define LEN sizeof(struct student)

      struct student /*定義一個學(xué)生考試信息的結(jié)構(gòu)體*/

      {char name[Q]; /*用來存放姓名的*/

      char sex[Q]; /*用來存放性別的*/

      long id; /*用來存放準(zhǔn)考證號的*/

      int score[4]; /*用來存放分?jǐn)?shù)的*/

      int total; /*用來存放總分?jǐn)?shù)的*/

      int m_c; /*用來存放名次的*/

      struct student *next;/*定義指向下一個結(jié)構(gòu)體的指針*/

      };

      int n; /*用來統(tǒng)計考生人數(shù)的*/

      char ch[Q]; /*用來存放姓名的*/

      struct student *creat() /*定義一個指向struct student的結(jié)構(gòu)體指針函數(shù)*creat()用來修改考生信息.*/

      {int i;

      struct student *head,*p1,*p2;/*定義三個指向struct student的結(jié)構(gòu)體指針*/

      p1=p2=(struct student *)malloc(LEN);/*調(diào)用malloc()函數(shù)用來開辟一個新的存儲單元*/

      n=0;

      printf("請輸入學(xué)生考試信息!\n");

      printf("請在姓名處鍵以\"!\"結(jié)束輸入。\n");

      printf("姓名:");

      scanf("%s",ch);

      head=NULL; /*給指針head賦初值*/

      while (strcmp(ch,"!")!=0) /*調(diào)用字符比較函數(shù)strcmp()用來判斷是否繼續(xù)輸入*/

      {p1=(struct student *)malloc(LEN);/*調(diào)用malloc()函數(shù)用來開辟一個新的存儲單元*/

      strcpy(p1-name,ch); /*將循環(huán)結(jié)構(gòu)前面輸入的姓名復(fù)制到結(jié)構(gòu)體名為p1的數(shù)組name中*/

      printf("性別:");

      scanf("%s",p1-sex);

      printf("準(zhǔn)考證號(8位):");

      scanf("%ld",p1-id);/*將輸入的準(zhǔn)考證號存放到p1所指結(jié)構(gòu)體的數(shù)組id中*/

      printf("數(shù)學(xué)成績:");

      scanf("%d",p1-score[0]);/*將輸入的數(shù)學(xué)成績存放到p1所指結(jié)構(gòu)體的數(shù)組score中*/

      printf("物理成績:");

      scanf("%d",p1-score[1]);/*將輸入的物理成績存放到p1所指結(jié)構(gòu)體的數(shù)組score中*/

      printf("英語成績:");

      scanf("%d",p1-score[2]);/*將輸入的英語成績存放到p1所指結(jié)構(gòu)體的數(shù)組score中*/

      printf("C語言成績:");

      scanf("%d",p1-score[3]);/*將輸入的C語言成績存放到p1所指結(jié)構(gòu)體的數(shù)組score中*/

      p1-total=p1-score[0]+p1-score[1]+p1-score[2]+p1-score[3];/*計算總分 */

      if(n==0)head=p1;/*如果是輸入第一組學(xué)生考試信息就將指針p1賦給指針head*/

      else p2-next=p1;/*否則將p1賦給p2所指結(jié)構(gòu)體的next指針*/

      p2=p1;/*將指針p1賦給指針p2*/

      n++; /*將n的值加1*/

      printf("姓名:");

      scanf("%s",ch);/*將輸入的姓名存放到字符數(shù)組ch中*/

      }

      p2-next=NULL;/*將p2所指結(jié)構(gòu)體的next指針重新賦空值*/

      return (head);/*將輸入的第一組學(xué)生考試信息返回*/

      }

      void output(struct student *head) /*定義output()函數(shù)將考生的信息從頭指針?biāo)竷?nèi)容開始輸出*/

      {struct student *p;/*定義一個指向struct student的結(jié)構(gòu)體指針p*/

      printf("-----------------------------------------------------------------------\n");

      printf(" *學(xué)生考試成績信息表*\n");

      printf("-----------------------------------------------------------------------\n"); /*71個“-”*/

      printf("準(zhǔn)考證號 姓 名 性別 數(shù)學(xué) 物理 英語 C語言 平均分 總分\n");

      printf("-----------------------------------------------------------------------\n");

      p=head;/*將頭指針賦給p*/

      if(head!=N)

      Go語言的支持平臺

      LiteIDE是一款專門為Go語言開發(fā)的跨平臺輕量級集成開發(fā)環(huán)境(IDE),由QT編寫。

      LiteIDE主要特點: 支持主流操作系統(tǒng)

      Windows

      Linux

      MacOS X Go編譯環(huán)境管理和切換

      管理和切換多個Go編譯環(huán)境

      支持Go語言交叉編譯 與Go標(biāo)準(zhǔn)一致的項目管理方式

      基于GOPATH的包瀏覽器

      基于GOPATH的編譯系統(tǒng)

      基于GOPATH的Api文檔檢索 Go語言的編輯支持

      類瀏覽器和大綱顯示

      Gocode(代碼自動完成工具)的完美支持

      Go語言文檔查看和Api快速檢索

      代碼表達(dá)式信息顯示F1

      源代碼定義跳轉(zhuǎn)支持F2

      Gdb斷點和調(diào)試支持

      gofmt自動格式化支持 其他特征

      支持多國語言界面顯示

      完全插件體系結(jié)構(gòu)

      支持編輯器配色方案

      基于Kate的語法顯示支持

      基于全文的單詞自動完成

      支持鍵盤快捷鍵綁定方案

      Markdown文檔編輯支持

      實時預(yù)覽和同步顯示

      自定義CSS顯示

      可導(dǎo)出HTML和PDF文檔

      批量轉(zhuǎn)換/合并為HTML/PDF文檔 Sublime Text 2(以下簡稱Sublime)+ GoSublime + gocode + MarGo的組合。

      其優(yōu)點有: 自動化提示代碼。 保存的時候自動格式化代碼,讓您編寫的代碼更加美觀,符合Go的標(biāo)準(zhǔn)。 支持項目管理 支持語法高亮 熟悉Java的讀者應(yīng)該對于idea不陌生,idea是通過一個插件來支持go語言的高亮語法,代碼提示和重構(gòu)實現(xiàn)。

      尋高手幫忙做個關(guān)于學(xué)生成績管理系統(tǒng)的C語言程序!

      分是少了點,不過好心的我就幫幫你吧,呵呵!

      你以上的功能我的程序里全有,你自己看看改改吧!

      #include stdio.h

      #include malloc.h

      #include string.h

      #include stdlib.h

      #define InputRcd 1

      #define UpdateRcd 2

      #define SelectRcd 3

      #define Exit 4

      #define NAMELEN 16

      #define CLASSLEN 6

      struct record {

      char classID[CLASSLEN];

      int term;

      char name[NAMELEN];

      int chinese,math,english;

      };

      void showProgInform()

      {

      printf("-------------------------------------------------\n");

      printf("| *** STUDENTS' SCORE PLATFORM *** |\n");;

      printf("-------------------------------------------------\n\n");

      }

      void showMenu() {

      system("cls");

      showProgInform();

      printf("Please select an operation fo the following MENU: \n");

      printf(" 1. Input a record \n");

      printf(" 2. Update a record\n");

      printf(" 3. Select record(s)\n");

      printf(" 4. Exit. \n");

      }

      void inputRecord() {

      struct record inscr;

      FILE * fp;

      system("cls");

      showProgInform();

      printf("Mention: You are to add new record\n\n");

      printf("Please input by the following instructions: \n");

      printf("Class ID: ");

      scanf("%s",inscr.classID);

      printf("Term Number: ");

      scanf("%d",(inscr.term));

      printf("Student Name: ");

      scanf("%s",inscr.name);

      printf("Chinese score: ");

      scanf("%d",(inscr.chinese));

      printf("Math score: ");

      scanf("%d",(inscr.math));

      printf("English Score: ");

      scanf("%d",(inscr.english));

      getchar();

      if((fp=(fopen("stu_score.rcd","ab+")))==NULL) {

      printf("Input record failed!\n");

      return;

      }

      fwrite(inscr,sizeof(struct record),1,fp);

      fclose(fp);

      if((fp=fopen("stu_score.txt","ab+"))==NULL) {

      return;

      }

      fprintf(fp,"%s-%d %s: %d %d %d\r\n",inscr.classID,inscr.term,inscr.name,inscr.chinese,inscr.math,inscr.english);;

      fclose(fp);

      }

      void showSingleRecord(struct record rc) {

      printf("%s-%d %s: (CHI)%d (MAT)%d (ENG)%d\n",rc.classID,rc.term,rc.name,rc.chinese,rc.math,rc.english);

      }

      void updateRecord()

      {

      long fsize,arraySize,i;

      struct record *allRecords,newRcd;

      int hasFound = 0;

      FILE * fp;

      FILE * txt;

      system("cls");

      showProgInform();

      if((fp = fopen("stu_score.rcd","rb")) == NULL ) {

      printf("! No records , cannot operate\n");

      return;

      }

      printf("Mention: You are to update record\n\n");

      printf("Please the record you want to update by the follow mention: \n");

      printf("Class Id: ");

      scanf("%s",newRcd.classID);

      printf("Term number: ");

      scanf("%d",newRcd.term);

      printf("Student name: ");

      scanf("%s",newRcd.name);

      fseek(fp,0,SEEK_END);

      fsize = ftell(fp);

      arraySize = fsize/(sizeof(struct record));

      allRecords = (struct record *)calloc(arraySize,sizeof(struct record));

      rewind(fp);

      fread(allRecords,sizeof(struct record),arraySize,fp);

      for(i=0;iarraySize;i++) {

      if(strcmp(newRcd.classID,allRecords[i].classID)==0 newRcd.term==allRecords[i].term strcmp(newRcd.name,allRecords[i].name)==0) {

      printf("Find the matching record: ");

      showSingleRecord(allRecords[i]);

      printf("Input new Score: \n");

      printf("New Chinese Score: ");

      scanf("%d",(allRecords[i].chinese));

      printf("New Math Score: ");

      scanf("%d",(allRecords[i].math));

      printf("New English Score: ");

      scanf("%d",(allRecords[i].english));

      printf("After update ,the records is : \n\t");

      showSingleRecord(allRecords[i]);

      printf("\n");

      hasFound = 1;

      break;

      }

      }

      fclose(fp);

      if(!hasFound) {

      printf("No matching record has found!\n");

      free(allRecords);

      return;

      }

      if((fp = fopen("stu_score.rcd","w"))==NULL) {

      printf("Write file stu_score.rcd failed\n");

      return;

      }

      if((txt = fopen("stu_score.txt","w"))==NULL) {

      printf("Write file stu_score.txt failed\n");

      return;

      }

      fwrite(allRecords,sizeof(struct record),arraySize,fp);

      for(i=0;iarraySize;i++) {

      fprintf(txt,"%s-%d %s: %d %d %d\r\n",allRecords[i].classID,allRecords[i].term,allRecords[i].name,allRecords[i].chinese,allRecords[i].math,allRecords[i].english);

      }

      free(allRecords);

      fclose(fp);

      fclose(txt);

      }

      void showSelectMenu(char classID[],int term) {

      system("cls");

      showProgInform();

      printf("Mention: All the following opertion based on classID: %s,Term: %d\n\n",classID,term);

      printf("Mention: You are to select the records\n\n");

      printf("\t Please choose an operation: \n");

      printf("\t 1. Select all records of the classID.\n");

      printf("\t 2. Sort by the average score.\n");

      printf("\t 3. Select no passed record.\n");

      printf("\tOther. Return the high level menu.\n\n");

      }

      void showStatistic(struct record *r ,long size,char classID[],int term) {

      int total;

      float ave;

      long i;

      system("cls");

      showProgInform();

      printf("All records for class: %s,term: %d; total record nubmer: %ld\n",classID,term,size);

      printf("********************************************************\n");

      for(i=0;isize;i++) {

      total = r[i].chinese+r[i].english +r[i].math ;

      ave = (float)total/3;

      printf(" %s: (CHI)%d (MAT)%d (ENG)%d (Total)%d (Ave)%.2f\r\n",r[i].name,r[i].chinese,r[i].math,r[i].english,total,ave);

      }

      printf("********************************************************\n\n");

      printf("Press Enter to return Select submenu\n");

      getchar();

      }

      void sortSelectByAve(struct record * r,long size) {

      FILE *fp;

      struct record temp;

      float outerAve ,innerAve;

      int total;

      long i,j;

      system("cls");

      showProgInform();

      printf("\nSorted the records by average score\n");

      for(i=0;isize;i++) {

      outerAve = (float)(r[i].chinese+r[i].math+r[i].english)/3;

      for(j=i+1;jsize;j++) {

      innerAve = (float)(r[j].chinese+r[j].math+r[j].english)/3;

      if(innerAve outerAve) {

      strcpy(temp.name,r[j].name);

      temp.chinese = r[j].chinese;

      temp.math = r[j].math ;

      temp.english = r[j].english ;

      strcpy(r[j].name,r[i].name);

      r[j].chinese = r[i].chinese ;

      r[j].math = r[i].math ;

      r[j].english = r[i].english ;

      strcpy(r[i].name,temp.name);

      r[i].chinese = temp.chinese ;

      r[i].math = temp.math ;

      r[i].english = temp.english ;

      }

      }

      }

      printf("\nshow sorted records \n");

      printf("********************************************\n");

      for(i=0;isize;i++) {

      total = r[i].chinese + r[i].math + r[i].english ;

      innerAve = (float)total/3;

      printf("%s: %d %d %d %d %f\n",r[i].name,r[i].chinese,r[i].math,r[i].english,total,innerAve);

      }

      printf("********************************************\n");

      printf("write sorted records to \"sorted.txt\"\n");

      if((fp = fopen("sorted.txt","w"))== NULL) {

      printf("open sort.txt failed\n");

      return;

      }

      for(i=0;isize;i++) {

      total = r[i].chinese + r[i].math + r[i].english ;

      innerAve = (float)total/3;

      fprintf(fp,"(CLASS-TERM)%s-%d (NAME)%s: (CHI)%3d (MAT)%3d (ENG)%3d (TOTAL)%4d (AVERG)%.2f\r\n",r[i].classID,r[i].term,r[i].name,r[i].chinese,r[i].math,r[i].english,total,innerAve);

      }

      printf("write file sorted.txt finished\n");

      fclose(fp);

      printf("\nPress any key to return Select subMenu\n");

      }

      void noPass(struct record * r,int size) {

      long i=0,j=0;

      FILE * fp;

      if((fp=fopen("no-pass.txt","w"))==NULL) {

      printf("create no-pass.txt failed");

      return;

      }

      system("cls");

      showProgInform();

      printf("Mention: The following operation will be all on the classId and term you input\n\n");

      printf("\nShow student that one subject is no-pass\n");

      printf("***********************************************\n");

      for(i=0;isize;i++) {

      if(r[i].chinese 60 || r[i].math60 || r[i].english 60) {

      printf("%s-%d %s: ",r[i].classID,r[i].term,r[i].name);

      fprintf(fp,"%s-%d %s: ",r[i].classID,r[i].term,r[i].name);

      if(r[i].chinese 60 ) {

      printf("(Chinese)%d ",r[i].chinese);

      fprintf(fp,"(Chinese)%d ",r[i].chinese );

      }

      if(r[i].math 60) {

      printf("(Math)%d ",r[i].math);

      fprintf(fp,"(Math)%d ",r[i].math);

      }

      if(r[i].english 60) {

      printf("(English)%d",r[i].english);

      fprintf(fp,"(English)%d",r[i].english);

      }

      printf("\r\n");

      fprintf(fp,"\r\n");

      }

      }

      printf("***********************************************\n");

      fclose(fp);

      printf("Press Enter to return \"Select\" submenu\n");

      }

      void selectRecord() {

      char classID[CLASSLEN];

      int term;

      FILE * fp;

      long fsize=0,arraySize=0,thisSize=0,i=0,j=0;

      struct record *allRcd,*thisClass;

      system("cls");

      showProgInform();

      printf("Mention: The following operation will be all on the classId and term you input\n\n");

      printf("Mention: please operate by the following instructions\n\n");

      printf("Input ClassID: ");

      scanf("%s",classID);

      printf("Input term number: ");

      scanf("%d",term);

      if((fp=fopen("stu_score.rcd","r"))==NULL) {

      printf("\nWarining: No record exists!\n");

      return;

      }

      fseek(fp,0,SEEK_END);

      fsize = ftell(fp);

      arraySize = fsize/(sizeof(struct record));

      allRcd = (struct record *)calloc(arraySize,sizeof(struct record));

      rewind(fp);

      fread(allRcd,sizeof(struct record),arraySize,fp);

      printf("Press Enter to show the sub menu of Select menu\n");

      for(i=0;iarraySize;i++) {

      if(strcmp(classID,allRcd[i].classID)==0 term==allRcd[i].term) {

      thisSize++;

      }

      }

      if(thisSize==0) {

      printf("\nWaring: No record for Class %s Term %d\n",classID,term);

      fclose(fp);

      free(allRcd);

      return;

      }

      thisClass = (struct record *)calloc(thisSize,sizeof(struct record));

      j=0;

      for(i=0;iarraySize;i++) {

      if(strcmp(classID,allRcd[i].classID)==0 term==allRcd[i].term ) {

      strcpy(thisClass[j].classID,classID) ;

      thisClass[j].term = term ;

      strcpy(thisClass[j].name,allRcd[i].name);

      thisClass[j].chinese = allRcd[i].chinese;

      thisClass[j].math = allRcd[i].math ;

      thisClass[j].english = allRcd[i].english ;

      j++;

      }

      }

      free(allRcd);

      /////////////////////////////////////////////////////////////

      getchar();

      getchar();

      while(1) {

      system("cls");

      showProgInform();

      printf("Mention: The following operation will be all on the classId and term you input\n\n");

      showSelectMenu(classID,term);

      switch(getchar()) {

      case '1':

      getchar();

      showStatistic(thisClass,thisSize,classID,term);

      break;

      case '2':

      getchar();

      sortSelectByAve(thisClass,thisSize);

      getchar();

      break;

      case '3':

      getchar();

      noPass(thisClass,thisSize);

      printf("0: Press 0 to return \"Select\" submenu\n");

      if(getchar()=='0')

      break;

      default:

      getchar();

      return;

      }

      }

      free(thisClass);

      fclose(fp);

      }

      void go_on() {

      printf("Press Enter to continue\n");

      getchar();

      }

      void main() {

      showProgInform();

      while(1) {

      showMenu();

      switch(getchar()) {

      case '1':

      getchar();

      inputRecord();

      go_on();

      break;

      case '2':

      getchar();

      updateRecord();

      getchar();

      go_on();

      break;

      case '3':

      getchar();

      selectRecord();

      getchar();

      go_on();

      break;

      case '4':

      getchar();

      //exit(1);

      return;

      default:

      getchar();

      printf("Wrong Option! input again\n");

      go_on();

      break;

      }

      }

      }

      求救 學(xué)生成績管理C程序

      /*頭文件*/

      #include stdio.h

      #includedos.h

      #includestdlib.h /*其它說明*/

      #includestring.h /*字符串函數(shù)*/

      #includemem.h /*內(nèi)存操作函數(shù)*/

      #includectype.h /*字符操作函數(shù)*/

      #includealloc.h /*動態(tài)地址分配函數(shù)*/

      #define LEN sizeof(STUDENT)

      typedef struct stu /*定義結(jié)構(gòu)體數(shù)組用于緩存數(shù)據(jù)*/

      {char num[6];

      char name[5];

      int score[3];

      int sum;

      float average;

      int order;

      struct stu *next;

      }STUDENT;

      /*函數(shù)原型*/

      STUDENT *init(); /*初始化函數(shù)*/

      int menu_select(); /*菜單函數(shù)*/

      STUDENT *create(); /*創(chuàng)建鏈表*/

      void print(STUDENT *head); /* 顯示全部記錄*/

      void search(STUDENT *head); /*查找記錄*/

      STUDENT *delete(STUDENT *head); /*刪除記錄*/

      STUDENT *sort(STUDENT *head); /*排序*/

      STUDENT *insert(STUDENT *head,STUDENT *new); /*插入記錄*/

      void save(STUDENT *head); /*保存文件*/

      STUDENT *load(); /*讀文件*/

      /*主函數(shù)界面*/

      main()

      {STUDENT *head,new;

      head=init(); /*鏈表初始化,使head的值為NULL*/

      for(;;) /*循環(huán)無限次*/

      {switch(menu_select())

      {

      case 1:head=create();break;

      case 2:print(head);break;

      case 3:search(head);break;

      case 4:head=delete(head);break;

      case 5:head=sort(head);break;

      case 6:head=insert(head,new);break; /*new表示返回地址*/

      case 7:save(head);break;

      case 8:head=load(); break;

      case 9:exit(0); /*如菜單返回值為9則程序結(jié)束*/

      }

      }

      }

      /*初始化函數(shù)*/

      STUDENT *init()

      {

      return NULL; /*返回空指針*/

      }

      /*菜單選擇函數(shù)*/

      menu_select()

      {int n;

      struct date d; /*定義時間結(jié)構(gòu)體*/

      getdate(d); /*讀取系統(tǒng)日期并把它放到結(jié)構(gòu)體d中*/

      printf("\n按任一鍵進(jìn)入主菜單...... \npress any key to enter the menu......"); /*按任一鍵進(jìn)入主菜單*/

      getch(); /*從鍵盤讀取一個字符,但不顯示于屏幕*/

      clrscr(); /*清屏*/

      printf("********************************************************************************\n");

      printf("\t\t 歡迎 Welcome to\n");

      printf("\n\t\t\t 使用學(xué)生管理系統(tǒng)1.0\n\n\t\t\t\t\t-----------景炎中學(xué)計算機(jī)組WJQ\n");

      printf("*************************************MENU***************************************\n");

      printf("\t\t\t1. 輸入學(xué)生成績記錄 Enter the record\n"); /*輸入學(xué)生成績記錄*/

      printf("\t\t\t2. 顯示 Print the record\n"); /*顯示*/

      printf("\t\t\t3. 尋找 Search record on name\n"); /*尋找*/

      printf("\t\t\t4. 刪除 Delete a record\n"); /*刪除*/

      printf("\t\t\t5. 排序 Sort to make new a file\n"); /*排序*/

      printf("\t\t\t6. 插入 Insert record to list\n"); /*插入*/

      printf("\t\t\t7. 保存 Save the file\n"); /*保存*/

      printf("\t\t\t8. 讀取 Load the file\n"); /*讀取*/

      printf("\t\t\t9. 退出 Quit\n"); /*退出*/

      printf("\n\t\t 制作吳俊遒WJQ Made by Wu Junqiu.\n");

      printf("********************************************************************************\n");

      printf("\t\t\t\t當(dāng)前系統(tǒng)日期:%d\\%d\\%d\n",d.da_year,d.da_mon,d.da_day); /*顯示當(dāng)前系統(tǒng)日期*/

      do{

      printf("\n\t\t\t輸入你的選擇Enter your choice(1~9):");

      scanf("%d",n);

      }while(n1||n9); /*如果選擇項不在1~9之間則重輸*/

      return(n); /*返回選擇項,主函數(shù)根據(jù)該數(shù)調(diào)用相應(yīng)的函數(shù)*/

      }

      /*輸入函數(shù)*/

      STUDENT *create()

      {int i,s;

      STUDENT *head=NULL,*p; /* 定義函數(shù).此函數(shù)帶回一個指向鏈表頭的指針*/

      clrscr();

      for(;;)

      {p=(STUDENT *)malloc(LEN); /*開辟一個新的單元*/

      if(!p) /*如果指針p為空*/

      {printf("\n輸出內(nèi)存溢出. Out of memory."); /*輸出內(nèi)存溢出*/

      return (head); /*返回頭指針,下同*/

      }

      printf("輸入學(xué)號Enter the num(0:list end):");

      scanf("%s",p-num);

      if(p-num[0]=='0') break; /*如果學(xué)號首字符為0則結(jié)束輸入*/

      printf("輸入名字Enter the name:");

      scanf("%s",p-name);

      printf("請輸入3門成績Please enter the %d scores\n",3); /*提示開始輸入成績*/

      s=0; /*計算每個學(xué)生的總分,初值為0*/

      for(i=0;i3;i++) /*3門課程循環(huán)3次*/

      {

      do{

      printf("成績score%d:",i+1);

      scanf("%d",p-score[i]);

      if(p-score[i]0 || p-score[i]100) /*確保成績在0~100之間*/

      printf("數(shù)據(jù)錯誤,請重新輸入 Data error,please enter again.\n");

      }while(p-score[i]0 || p-score[i]100);

      s=s+p-score[i]; /*累加各門成績*/

      }

      p-sum=s; /*將總分保存*/

      p-average=(float)s/3; /*先用強(qiáng)制類型轉(zhuǎn)換將s轉(zhuǎn)換成float型,再求平均值*/

      p-order=0; /*未排序前此值為0*/

      p-next=head; /*將頭結(jié)點做為新輸入結(jié)點的后繼結(jié)點*/

      head=p; /*新輸入結(jié)點為新的頭結(jié)點*/

      }

      return(head);

      }

      /* 顯示全部記錄函數(shù)*/

      void print(STUDENT *head)

      {int i=0; /* 統(tǒng)計記錄條數(shù)*/

      STUDENT *p; /*移動指針*/

      clrscr();

      p=head; /*初值為頭指針*/

      printf("\n************************************STUDENT************************************\n");

      printf("-------------------------------------------------------------------------------\n");

      printf("| Rec | Num | Name | Sc1 | Sc2 | Sc3 | Sum | Ave | Order |\n");

      printf("-------------------------------------------------------------------------------\n");

      while(p!=NULL)

      {

      i++;

      printf("| %3d | %4s | %-4s | %3d | %3d | %3d | %3d | %4.2f | %-5d|\n",

      i, p-num,p-name,p-score[0],p-score[1],p-score[2],p-sum,p-average,p-order);

      p=p-next;

      }

      printf("-------------------------------------------------------------------------------\n");

      printf("**************************************END**************************************\n");

      }

      /*查找記錄函數(shù)*/

      void search(STUDENT *head)

      {STUDENT *p; /* 移動指針*/

      char s[5]; /*存放姓名用的字符數(shù)組*/

      clrscr();

      printf("請輸入個姓名來查找. Please enter name for searching.\n");

      scanf("%s",s);

      p=head; /*將頭指針賦給p*/

      while(strcmp(p-name,s) p != NULL) /*當(dāng)記錄的姓名不是要找的,或指針不為空時*/

      p=p-next; /*移動指針,指向下一結(jié)點*/

      if(p!=NULL) /*如果指針不為空*/

      {printf("\n*************************************FOUND************************************\n");

      printf("-------------------------------------------------------------------------------\n");

      printf("| Num | Name | sc1 | sc2 | sc3 | Sum | Ave | Order |\n");

      printf("-------------------------------------------------------------------------------\n");

      printf("| %4s | %4s | %3d | %3d | %3d | %3d | %4.2f | %-5d|\n",

      p-num,p-name,p-score[0],p-score[1],p-score[2],p-sum,p-average,p-order);

      printf("-------------------------------------------------------------------------------\n");

      printf("***************************************END**************************************\n");

      }

      else

      printf("\n沒有該學(xué)生 There is no num %s student on the list.\n",s); /*顯示沒有該學(xué)生*/

      }

      /*刪除記錄函數(shù)*/

      STUDENT *delete(STUDENT *head)

      {int n;

      STUDENT *p1,*p2; /*p1為查找到要刪除的結(jié)點指針,p2為其前驅(qū)指針*/

      char c,s[6]; /*s[6]用來存放學(xué)號,c用來輸入字母*/

      clrscr();

      printf("請輸入要刪除的學(xué)號 Please enter the deleted num: ");

      scanf("%s",s);

      p1=p2=head; /*給p1和p2賦初值頭指針*/

      while(strcmp(p1-num,s) p1 != NULL) /*當(dāng)記錄的學(xué)號不是要找的,或指針不為空時*/

      {p2=p1; /*將p1指針值賦給p2作為p1的前驅(qū)指針*/

      p1=p1-next; /*將p1指針指向下一條記錄*/

      }

      if(strcmp(p1-num,s)==0) /*學(xué)號找到了*/

      {printf("**************************************FOUND************************************\n");

      printf("-------------------------------------------------------------------------------\n");

      printf("| Num | Name | sc1 | sc2 | sc3 | Sum | Ave | Order |\n");

      printf("-------------------------------------------------------------------------------\n");

      printf("| %4s | %4s | %3d | %3d | %3d | %3d | %4.2f | %-5d|\n",

      p1-num,p1-name,p1-score[0],p1-score[1],p1-score[2],p1-sum,p1-average,p1-order);

      printf("-------------------------------------------------------------------------------\n");

      printf("***************************************END**************************************\n");

      printf("\n是否要刪除,輸入Y刪除,N則退出\nAre you sure to delete the student Y/N ?"); /*提示是否要刪除,輸入Y刪除,N則退出*/

      for(;;)

      {scanf("%c",c);

      if(c=='n'||c=='N') break; /*如果不刪除,則跳出本循環(huán)*/

      if(c=='y'||c=='Y')

      {

      if(p1==head) /*若p1==head,說明被刪結(jié)點是首結(jié)點*/

      head=p1-next; /*把第二個結(jié)點地址賦予head*/

      else

      p2-next=p1-next; /*否則將一下結(jié)點地址賦給前一結(jié)點地址*/

      n=n-1;

      printf("\n學(xué)號為(Num): %s 學(xué)生以被刪除(student have been deleted.)\n",s);

      printf("別忘了保存. Don't forget to save.\n");break; /*刪除后就跳出循環(huán)*/

      }

      }

      }

      else

      printf("\n沒有這個學(xué)生在表上\nThere is no num %s student on the list.\n",s); /*找不到該結(jié)點*/

      return(head);

      }

      /*排序函數(shù)*/

      STUDENT *sort(STUDENT *head)

      {int i=0; /*保存名次*/

      STUDENT *p1,*p2,*t,*temp; /*定義臨時指針*/

      temp=head-next; /*將原表的頭指針?biāo)傅南乱粋€結(jié)點作頭指針*/

      head-next=NULL; /*第一個結(jié)點為新表的頭結(jié)點*/

      while(temp!=NULL) /*當(dāng)原表不為空時,進(jìn)行排序*/

      {

      t=temp; /*取原表的頭結(jié)點*/

      temp=temp-next; /*原表頭結(jié)點指針后移*/

      p1=head; /*設(shè)定移動指針p1,從頭指針開始*/

      p2=head; /*設(shè)定移動指針p2做為p1的前驅(qū),初值為頭指針*/

      while(t-averagep1-averagep1!=NULL) /*作成績平均分比較*/

      {

      p2=p1; /*待排序點值小,則新表指針后移*/

      p1=p1-next;

      }

      if(p1==p2) /*p1==p2,說明待排序點值大,應(yīng)排在首位*/

      {

      t-next=p1; /*待排序點的后繼為p*/

      head=t; /*新頭結(jié)點為待排序點*/

      }

      else /*待排序點應(yīng)插入在中間某個位置p2和p1之間,如p為空則是尾部*/

      {

      t-next=p1; /*t的后繼是p1*/

      p2-next=t; /*p2的后繼是t*/

      }

      }

      p1=head; /*已排好序的頭指針賦給p1,準(zhǔn)備填寫名次*/

      while(p1!=NULL) /*當(dāng)p1不為空時,進(jìn)行下列操作*/

      {

      i++; /*結(jié)點序號*/

      p1-order=i; /*將結(jié)點序號賦值給名次*/

      p1=p1-next; /*指針后移*/

      }

      printf("排序成功 Sorting is sucessful.\n"); /*排序成功*/

      return (head);

      }

      /*插入記錄函數(shù)*/

      STUDENT *insert(STUDENT *head,STUDENT *new)

      {STUDENT *p0,*p1,*p2;

      int n,sum1,i;

      p1=head; /*使p1指向第一個結(jié)點*/

      p0=new; /*p0指向要插入的結(jié)點*/

      printf("\nPlease enter a new record.\n"); /*提示輸入記錄信息*/

      printf("輸入學(xué)號Enter the num:");

      scanf("%s",new-num);

      printf("輸入名字Enter the name:");

      scanf("%s",new-name);

      printf("Please enter the %d scores.\n",3);

      sum1=0; /*保存新記錄的總分,初值為0*/

      for(i=0;i3;i++)

      {

      do{

      printf("成績score%d:",i+1);

      scanf("%d",new-score[i]);

      if(new-score[i]100||new-score[i]0)

      printf("數(shù)據(jù)錯誤Data error,please enter again.\n");

      }while(new-score[i]100||new-score[i]0);

      sum1=sum1+new-score[i]; /*累加各門成績*/

      }

      new-sum=sum1; /*將總分存入新記錄中*/

      new-average=(float)sum1/3;

      new-order=0;

      if(head==NULL) /*原來的鏈表是空表*/

      {head=p0;p0-next=NULL;} /*使p0指向的結(jié)點作為頭結(jié)點*/

      else

      {while((p0-averagep1-average)(p1-next!=NULL))

      {p2=p1; /*使p2指向剛才p1指向的結(jié)點*/

      p1=p1-next; /*p1后移一個結(jié)點*/

      }

      if(p0-average=p1-average)

      {if(head==p1)head=p0; /*插到原來第一個結(jié)點之前*/

      else p2-next=p0; /*插到p2指向的結(jié)點之后*/

      p0-next=p1;}

      else

      {p1-next=p0;p0-next=NULL;} /*插到最后的結(jié)點之后*/

      }

      n=n+1; /*結(jié)點數(shù)加1*/

      head=sort(head); /*調(diào)用排序的函數(shù),將學(xué)生成績重新排序*/

      printf("\n學(xué)生Student %s 已被更新have been inserted.\n",new-name);

      printf("不要忘了保存Don't forget to save the new file.\n");

      return(head);

      }

      /*保存數(shù)據(jù)到文件函數(shù)*/

      void save(STUDENT *head)

      {FILE *fp; /*定義指向文件的指針*/

      STUDENT *p; /* 定義移動指針*/

      char outfile[10];

      printf("輸出文件例如:c:\\score Enter outfile name,for example c:\\score\n");

      scanf("%s",outfile);

      if((fp=fopen(outfile,"w"))==NULL) /*為輸出打開一個二進(jìn)制文件,為只寫方式*/

      {

      printf("打不開文件Cannot open the file\n");

      return; /*若打不開則返回菜單*/

      }

      printf("\n保存中...Saving the file......\n");

      p=head; /*移動指針從頭指針開始*/

      while(p!=NULL) /*如p不為空*/

      {

      fwrite(p,LEN,1,fp); /*寫入一條記錄*/

      p=p-next; /*指針后移*/

      }

      fclose(fp); /*關(guān)閉文件*/

      printf("保存成功....Save the file successfully!\n");

      }

      /* 從文件讀數(shù)據(jù)函數(shù)*/

      STUDENT *load()

      {STUDENT *p1,*p2,*head=NULL; /*定義記錄指針變量*/

      FILE *fp; /* 定義指向文件的指針*/

      char infile[10];

      printf("倒入文件例如:c:\\score Enter infile name,for example c:\\score\n");

      scanf("%s",infile);

      if((fp=fopen(infile,"r"))==NULL) /*打開一個二進(jìn)制文件,為只讀方式*/

      {

      printf("打不開文件Can not open the file.\n");

      return(head);

      }

      printf("\n尋找文件...Loading the file!\n");

      p1=(STUDENT *)malloc(LEN); /*開辟一個新單元*/

      if(!p1)

      {

      printf("內(nèi)存溢出!Out of memory!\n");

      return(head);

      }

      head=p1; /*申請到空間,將其作為頭指針*/

      while(!feof(fp)) /*循環(huán)讀數(shù)據(jù)直到文件尾結(jié)束*/

      {

      if(fread(p1,LEN,1,fp)!=1) break; /*如果沒讀到數(shù)據(jù),跳出循環(huán)*/

      p1-next=(STUDENT *)malloc(LEN); /*為下一個結(jié)點開辟空間*/

      if(!p1-next)

      {

      printf("Out of memory!\n");

      return (head);

      }

      p2=p1; /*使p2指向剛才p1指向的結(jié)點*/

      p1=p1-next; /*指針后移,新讀入數(shù)據(jù)鏈到當(dāng)前表尾*/

      }

      p2-next=NULL; /*最后一個結(jié)點的后繼指針為空*/

      fclose(fp);

      printf("\n你成功的從文件中讀取了數(shù)據(jù)!\nYou have success to read data from the file!\n");

      return (head);

      }

      c語言學(xué)生管理系統(tǒng)

      C 語言學(xué)生成績管理系統(tǒng)

      #includestdio.h

      #includemalloc.h

      #includeconio.h

      #includestring.h

      typedef struct STUDENT

      {

      char studentNumber[20];/*學(xué)生學(xué)號*/

      char studentName[20];/*學(xué)生姓名*/

      char className[20];/*班級名稱*/

      float mark1;/*第1門成績*/

      float mark2;/*第2門成績*/

      float mark3;/*第3門成績*/

      struct STUDENT *next;

      }STUDENT;

      STUDENT *headLink; /*鏈表表頭指針*/

      /*函數(shù)聲明*/

      void ReadInfoFormFile();

      void Menu();

      void CreateHeadLink();

      STUDENT *MallocNode();

      void GetInformation(STUDENT *t);

      void OutputInformation();

      void DesplayInfoBystudentName();

      void DesplayInfoBystudentNumber();

      void DesplayOneNode(STUDENT *t);

      void InsertOneNode(STUDENT *t);

      void DeleteNodeBystudentNumber();

      void ChangeMarkByName();

      void ChangeMarkByNumber();

      void SaveLinkToFile();

      void paixu();

      void DesplayMarkSegment();

      int choose;/*用于接受用戶的選擇*/

      /*主函數(shù)*/

      main()

      {

      system("color 2a");

      printf("\n\t\t歡迎進(jìn)入***學(xué)院***班學(xué)生成績管理系統(tǒng)\n\n\n");

      printf("\t\t\t\tO(∩_∩)O\n\n\n\n");

      printf("\t\t\t^_^\t\t\t^_^\n\n");

      printf("\n\t\t 注意:請按照要求輸入相應(yīng)信息,謝謝!\n\n\n\n\n");

      printf("\t\t\t\t\t\t\t\t制作人:***\n\n\n");

      printf("\t\t\t 按任意鍵進(jìn)入…………");

      getch();

      system("cls");

      CreateHeadLink();

      ReadInfoFormFile();

      Menu();

      }

      /*從文件中讀學(xué)生信息到鏈表中*/

      void ReadInfoFormFile(void)

      {

      FILE *fp;

      STUDENT *p;

      fp=fopen("student.txt","r");

      if(!fp)

      {

      printf("\n");

      return;

      }

      p=MallocNode();

      while(fscanf(fp,"%s%s%s%f%f%f",p-studentNumber,p-studentName,p-className,(p-mark1),(p-mark2),(p-mark3))0)

      {

      InsertOneNode(p);

      p=MallocNode();

      }

      fclose(fp);

      }

      /*顯示菜單,根據(jù)用戶的輸入完成相應(yīng)的功能*/

      void Menu(void)

      {

      STUDENT *p;

      printf("\t\t (^o^)歡迎使用學(xué)生成績管理系統(tǒng)(^o^)\n\n");

      printf("\t ※--------------------請選擇相應(yīng)功能---------------------※\n\n");

      printf("\t 1: 顯示所有學(xué)生的信息 |");

      printf(" \t 2: 按姓名查詢 |\n\n");

      printf("\t 3: 按學(xué)號查詢 |");

      printf(" \t\t 4: 增加學(xué)生 |\n\n");

      printf("\t 5: 刪除學(xué)生 |");

      printf(" \t\t 6: 按姓名修改學(xué)生成績 |\n\n");

      printf("\t 7: 按學(xué)號修改學(xué)生成績 |");

      printf(" \t 8: 保存所有學(xué)生信息 |\n\n");

      printf("\t 9: 按成績輸出學(xué)生信息 |");

      printf("\t 10: 顯示不及格及優(yōu)秀學(xué)生 |\n\n");

      printf("\t 11: 返回主菜單 |");

      printf("\t\t 12: 退出 |\n\n");

      printf("\t ※----------------------O(∩_∩)O------------------------※\n\n");

      printf("\t 請輸入對應(yīng)數(shù)字:");

      scanf("%d",choose);/*取得用戶的選擇*/

      switch(choose)

      {

      case 1:system("cls");

      OutputInformation();/*顯示所有學(xué)生的信息*/

      break;

      case 2: system("cls");

      DesplayInfoBystudentName();

      break;

      case 3: system("cls");

      DesplayInfoBystudentNumber();/*根據(jù)用戶輸入的學(xué)號顯示該學(xué)生的信息*/

      break;

      case 4: system("cls");

      p=MallocNode();/*先申請一個新結(jié)點*/

      GetInformation(p);/*要求用戶輸入信息到新結(jié)點中*/

      InsertOneNode(p);/*將新結(jié)點加到鏈表中*/

      break;

      case 5: system("cls");

      DeleteNodeBystudentNumber();/*根據(jù)用戶輸入的學(xué)號刪除該學(xué)生*/

      break;

      case 6: system("cls");

      ChangeMarkByName();/*根據(jù)用戶輸入的姓名修改學(xué)生成績*/

      break;

      case 7: system("cls");

      ChangeMarkByNumber();/*根據(jù)用戶輸入的學(xué)號修改學(xué)生成績*/

      break;

      case 8: system("cls");

      SaveLinkToFile();/*保存數(shù)據(jù)*/

      break;

      case 9: system("cls");

      paixu();break;

      case 10: system("cls");

      DesplayMarkSegment();break;

      case 11: system("cls");

      break;

      case 12: system("cls");

      SaveLinkToFile();/*保存數(shù)據(jù)后再退出*/

      free(headLink);

      exit(1);

      break;

      default: system("cls"); break;

      }

      Menu();/*遞歸調(diào)用*/

      }

      /*建立鏈表表頭*/

      void CreateHeadLink(void)

      {

      STUDENT *p;

      p=(STUDENT*)malloc(sizeof(STUDENT));

      headLink=p;

      p-next=NULL;

      }

      /*申請一個新結(jié)點,并將其初始化*/

      STUDENT *MallocNode(void)

      {

      STUDENT *p;

      int i;

      p=(STUDENT*)malloc(sizeof(STUDENT));

      if(p==NULL)

      return NULL;

      for(i=0;i10;i++)

      p-studentNumber='\0';

      for(i=0;i20;i++)

      p-studentName='\0';

      for(i=0;i20;i++)

      p-className='\0';

      p-mark1=0.0;

      p-mark2=0.0;

      p-mark3=0.0;

      p-next=NULL;

      return p;

      }

      /*取得用戶輸入的學(xué)生信息*/

      void GetInformation(STUDENT *t)

      {

      printf("請輸入學(xué)生學(xué)號:");

      scanf("%s",t-studentNumber);

      printf("請輸入學(xué)生姓名:");

      scanf("%s",t-studentName);

      printf("請輸入該生所在班級:");

      scanf("%s",t-className);

      printf("請輸入第1門成績:");

      scanf("%f",(t-mark1));

      printf("請輸入第2門成績:");

      scanf("%f",(t-mark2));

      printf("請輸入第3門成績:");

      scanf("%f",(t-mark3));

      }

      /*在鏈表的結(jié)尾處增加一個結(jié)點*/

      void InsertOneNode(STUDENT *t)

      {

      STUDENT *p;

      p=headLink;

      while(p-next)

      {

      p=p-next;

      }

      p-next=t;

      }

      /*根據(jù)用戶輸入的學(xué)生姓名顯示該學(xué)生的信息*/

      void DesplayInfoBystudentName(void)

      {

      STUDENT *p;

      char studentName[20];

      char flag=0;

      p=headLink-next;

      printf("請輸入學(xué)生姓名:");

      scanf("%s",studentName);

      while(p)

      {

      if(strcmp(p-studentName,studentName)==0)

      {system("cls");

      printf("\t學(xué)號\t姓名\t班級\t成績1\t成績2\t成績3\t總成績\t平均成績\n");

      DesplayOneNode(p);

      flag=1;

      break;

      }

      p=p-next;

      }

      if(!flag) {system("cls");

      printf("\t 對不起,不存在姓名為 %s 的學(xué)生\n",studentName);}

      }

      /*根據(jù)用戶輸入的學(xué)號顯示該學(xué)生的信息*/

      void DesplayInfoBystudentNumber(void)

      {

      STUDENT *p;

      char studentNumber[20];

      char flag=0;

      p=headLink-next;

      printf("請輸入學(xué)生學(xué)號:");

      scanf("%s",studentNumber);

      while(p)

      {

      if(strcmp(p-studentNumber,studentNumber)==0)

      { system("cls");

      printf("\t學(xué)號\t姓名\t班級\t成績1\t成績2\t成績3\t總成績\t平均成績\n");

      DesplayOneNode(p);

      flag=1;

      break;

      }

      p=p-next;

      }

      if(!flag) {system("cls");

      printf("\t 對不起,不存在學(xué)號為 %s 的學(xué)生\n",studentNumber);

      }}

      /*輸出一個結(jié)點的信息*/

      void DesplayOneNode(STUDENT *t)

      {

      printf("\t%s\t",t-studentNumber);

      printf("%s\t",t-studentName);

      printf("%s\t",t-className);

      printf("%.2f\t",t-mark1);

      printf("%.2f\t",t-mark2);

      printf("%.2f\t",t-mark3);

      printf("%.2f\t",t-mark1+t-mark2+t-mark3);

      printf("%.2f\t\n",(t-mark1+t-mark2+t-mark3)/3);

      }

      /*根據(jù)用戶輸入的學(xué)號刪除該學(xué)生*/

      void DeleteNodeBystudentNumber(void)

      {

      char studentNumber[10];

      STUDENT *p,*q;

      char flag=0;

      printf("請輸入要刪除的學(xué)生學(xué)號:");

      scanf("%s",studentNumber);

      p=headLink;

      q=headLink-next;

      while(q)

      {

      if(strcmp(q-studentNumber,studentNumber)==0)

      {

      p-next=q-next;

      free(q);

      flag=1;

      break;

      }

      p=p-next;

      q=q-next;

      }

      if(!flag)

      { system("cls");

      printf("\t 不存在該學(xué)號的學(xué)生\n");

      return;

      }

      system("cls");

      printf("\t 成功刪除\n");

      }

      /*顯示所有學(xué)生的信息*/

      void OutputInformation(void)

      {

      STUDENT *p;

      p=headLink-next;

      if(p==NULL)

      {

      printf("\t 現(xiàn)在沒有學(xué)生信息,請先輸入學(xué)生信息\n\n");

      return;

      }

      printf("\t學(xué)號\t姓名\t班級\t成績1\t成績2\t成績3\t總成績\t平均成績\n");

      while(p)

      {

      DesplayOneNode(p);

      p=p-next;

      }

      }

      /*根據(jù)輸入的姓名修改成績*/

      void ChangeMarkByName(void)

      {

      STUDENT *p;

      char studentName[20];

      char flag=0;

      float mark1,mark2,mark3;

      p=headLink-next;

      printf("請輸入學(xué)生姓名:");

      scanf("%s",studentName);

      while(p)

      {

      if(strcmp(p-studentName,studentName)==0)

      {

      printf("請輸入新的第1門成績:\n");

      scanf("%f",mark1);

      printf("請輸入新的第2門成績:\n");

      scanf("%f",mark2);

      printf("請輸入新的第3門成績:\n");

      scanf("%f",mark3);

      p-mark1=mark1;

      p-mark2=mark2;

      p-mark3=mark3;

      flag=1;

      printf("修改成功\n");

      break;

      }

      p=p-next;

      }

      if(!flag) {system("cls");

      printf("\t 對不起,不存在姓名為 %s 的學(xué)生\n",studentName);

      } }

      /*根據(jù)輸入的姓名修改成績*/

      void ChangeMarkByNumber(void)

      {

      STUDENT *p;

      char studentNumber[20];

      char flag=0;

      float mark1,mark2,mark3;

      p=headLink-next;

      printf("請輸入學(xué)生學(xué)號:");

      scanf("%s",studentNumber);

      while(p)

      {

      if(strcmp(p-studentNumber,studentNumber)==0)

      {

      printf("請輸入新的第1門成績:\n");

      scanf("%f",mark1);

      printf("請輸入新的第2門成績:\n");

      scanf("%f",mark2);

      printf("請輸入新的第3門成績:\n");

      scanf("%f",mark3);

      p-mark1=mark1;

      p-mark2=mark2;

      p-mark3=mark3;

      flag=1;

      printf("修改成功\n");

      break;

      }

      p=p-next;

      }

      if(!flag){system("cls");

      printf("\t 對不起,不存在學(xué)號為 %s 的學(xué)生\n",studentNumber);

      }}

      /*保存鏈表數(shù)據(jù)到文件中*/

      void SaveLinkToFile(void)

      {

      STUDENT *p;

      FILE *fp;

      p=headLink-next;

      if(p==NULL)

      {

      printf("\t 現(xiàn)在沒有學(xué)生信息,請先輸入學(xué)生信息\n\n");

      return;

      }

      fp=fopen("student.txt","w+");

      if(!fp)

      {

      printf("文件不存在\n");

      return;

      }

      while(p)

      {

      fprintf(fp,"%s %s %s %f %f %f\n",p-studentNumber,p-studentName,p-className,p-mark1,p-mark2,p-mark3);

      p=p-next;

      }

      fclose(fp);

      }

      /*顯示優(yōu)秀和不及格學(xué)生成績*/

      void DesplayMarkSegment(void)

      {

      STUDENT *p;

      int count=0;

      p=headLink-next;

      printf("\t60分以下(不及格)的學(xué)生成績?nèi)缦拢篭n");

      printf("\t學(xué)號\t姓名\t班級\t成績1\t成績2\t成績3\t總成績\t平均成績\n\n");

      while(p)

      {

      if((6((int)(p-mark1/10)))||(6((int)(p-mark2/10)))||(6((int)(p-mark3/10))))/*只要有一科不及格就認(rèn)為該生不及格*/

      {

      count++;

      DesplayOneNode(p);

      }

      p=p-next;

      }

      printf("\t不及格的學(xué)生一共有%d人\n",count);

      p=headLink-next;

      printf("\t成績優(yōu)秀的學(xué)生成績?nèi)缦拢篭n");

      printf("\t學(xué)號\t姓名\t班級\t成績1\t成績2\t成績3\t總成績\t平均成績\n\n");

      count=0;

      while(p)

      {

      if((8=((int)(p-mark1/10)))(8=((int)(p-mark2/10)))(8=((int)(p-mark3/10))))

      {

      count++;

      DesplayOneNode(p);

      }

      p=p-next;

      }

      printf("\t成績優(yōu)秀的學(xué)生一共有%d人\n",count);

      }

      /*按總成績排序*/

      void paixu(void)

      {

      STUDENT exchange,*r,*p,*q;

      r=headLink-next;

      if(r==NULL)

      {

      printf("\t 現(xiàn)在還沒學(xué)生信息,請先輸入學(xué)生信息\n");

      return;

      }

      while(r)/*兩層while循環(huán)實現(xiàn)排序*/

      {

      p=r;

      q=r-next;

      while(q)

      {

      if((q-mark1+q-mark2+q-mark3)(p-mark1+p-mark2+p-mark3))

      {

      strcpy(exchange.studentNumber,q-studentNumber);/*先復(fù)制q結(jié)點信息到exchange*/

      strcpy(exchange.studentName,q-studentName);

      strcpy(exchange.className,q-className);

      exchange.mark1=q-mark1;

      exchange.mark2=q-mark2;

      exchange.mark3=q-mark3;

      strcpy(q-studentNumber,p-studentNumber);/*再復(fù)制p結(jié)點信息到q*/

      strcpy(q-studentName,p-studentName);

      strcpy(q-className,p-className);

      q-mark1=p-mark1;

      q-mark2=p-mark3;

      q-mark3=p-mark3;

      strcpy(p-studentNumber,exchange.studentNumber);/*最后復(fù)制exchange結(jié)點信息到p*/

      strcpy(p-studentName,exchange.studentName);

      strcpy(p-className,exchange.className);

      p-mark1=exchange.mark1;

      p-mark2=exchange.mark2;

      p-mark3=exchange.mark3;

      }

      q=q-next;

      }

      r=r-next;

      }

      OutputInformation();

      }

      如何建立“學(xué)生管理”數(shù)據(jù)庫,并在“學(xué)生管理”數(shù)據(jù)庫中分別建立“學(xué)生基本情況表”求高手教一下

      USE [master]

      GO

      CREATE DATABASE StudentManage ON PRIMARY

      ( NAME = N'StudentManage', FILENAME = N'D:\StudentManage.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )

      LOG ON

      ( NAME = N'StudentManage_log', FILENAME = N'D:\StudentManage_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)

      GO

      /*學(xué)生管理數(shù)據(jù)庫(StudentManage)創(chuàng)建完成,下面創(chuàng)建學(xué)生表(Student):*/

      USE [Jinlong]

      GO

      SET ANSI_NULLS ON

      GO

      SET QUOTED_IDENTIFIER ON

      GO

      SET ANSI_PADDING ON

      GO

      CREATE TABLE [dbo].[Student](

      [學(xué)號C9] [char](7) NOT NULL,

      [姓名C10] [char](6) NULL,

      [性別C2] [char](2) NULL,

      CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED

      (

      [SID] ASC

      )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

      ) ON [PRIMARY]

      GO

      SET ANSI_PADDING OFF

      GO


      網(wǎng)站名稱:go語言學(xué)生管理系統(tǒng) go語言圖書管理系統(tǒng)
      URL地址:http://www.ef60e0e.cn/article/dosdhgj.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>

        梅河口市| 三都| 铜川市| 嘉兴市| 九江县| 融水| 基隆市| 东阳市| 涞水县| 全南县| 平利县| 浦东新区| 龙陵县| 雷波县| 冀州市| 安泽县| 朝阳区| 大名县| 富源县| 吉林市| 吉隆县| 银川市| 那曲县| 霍城县| 揭阳市| 丰都县| 清徐县| 山西省| 肇庆市| 高州市| 北川| 锡林浩特市| 牟定县| 元氏县| 巩义市| 惠州市| 安西县| 新宾| 东平县| 浑源县| 肥东县|