超好的學(xué)生成績管理系統(tǒng)順序表實現(xiàn)的代碼含詳細(xì)注釋哦_第1頁
超好的學(xué)生成績管理系統(tǒng)順序表實現(xiàn)的代碼含詳細(xì)注釋哦_第2頁
超好的學(xué)生成績管理系統(tǒng)順序表實現(xiàn)的代碼含詳細(xì)注釋哦_第3頁
超好的學(xué)生成績管理系統(tǒng)順序表實現(xiàn)的代碼含詳細(xì)注釋哦_第4頁
超好的學(xué)生成績管理系統(tǒng)順序表實現(xiàn)的代碼含詳細(xì)注釋哦_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

經(jīng)典word整理文檔,僅參考,雙擊此處可刪除頁眉頁腳。本資料屬于網(wǎng)絡(luò)整理,如有侵權(quán),請聯(lián)系刪除,謝謝!超好的學(xué)生成績管理系統(tǒng)順序表實現(xiàn)的代碼含詳細(xì)注釋哦#include<tdlib.h>#include<tdio.h>#include<tring.h>#defineLIST_INIT_SIZE4//線性表存儲空間的初始分配量#defineLISTINCREMENT10//線性表存儲空間的分配增量//學(xué)生的定義typedeftruct{intnum;charname[20];floatenglih;floatmath;floatdatabae;floatum;floataverage;}Student;//順序表的定義typedeftruct{Student某tu;intlength;intlitize;}qlit;//函數(shù)1錄入信息intInput(qlit某L){inti=1;//為了查找、排序的方便將第一個當(dāng)哨兵charflag='y';//輸入數(shù)據(jù)while(flag=='Y'||flag=='y'){for(i=1;i<L->litize;++i){printf("請輸入第%d個同學(xué)的信息:\n",L->length);printf("學(xué)號:");ffluh(tdin);canf("%d",&L->tu[L->length].num);printf("姓名:");ffluh(tdin);canf("%",L->tu[L->length].name);printf("英語成績:");ffluh(tdin);canf("%f",&L->tu[L->length].englih);printf("高數(shù)成績:");ffluh(tdin);canf("%f",&L->tu[L->length].math);printf("數(shù)據(jù)結(jié)構(gòu)成績:");ffluh(tdin);canf("%f",&L->tu[L->length].databae);L->tu[L->length].um=L->tu[L->length].englih+L->tu[L->length].math+L->tu[L->length].databae;L->tu[L->length].average=L->tu[L->length].um/3;L->length++;printf("是否繼續(xù)[Y/N]...");ffluh(tdin);flag=getchar();if(flag=='N'||flag=='n')break;}}return0;}//函數(shù)2顯示所有學(xué)生信息intDiplay(qlit某L){inti;if(L->length<=1){printf("請先輸入數(shù)據(jù)!\n");return0;}printf("所有同學(xué)信息如下:\n");printf("學(xué)號\t姓名\t總分\t平均分\t英語成績\t高數(shù)成績\t數(shù)據(jù)結(jié)構(gòu)成績\n");for(i=1;i<L->length;i++)printf("%d\t%\t%.2f\t%.2f\t%.2f\t\t%.2f\t\t%.2f\n",L->tu[i].num,L->tu[i].name,L->tu[i].um,L->tu[i].average,L->tu[i].englih,L->tu[i].math,L->tu[i].databae);return0;}//函數(shù)3插入一條記錄到表尾voidInert(qlit某L){printf("學(xué)號:");canf("%d",&L->tu[L->length].num);printf("姓名:");canf("%",L->tu[L->length].name);printf("英語成績:");canf("%f",&L->tu[L->length].englih);printf("高數(shù)成績:");canf("%f",&L->tu[L->length].math);printf("數(shù)據(jù)結(jié)構(gòu)成績:");canf("%f",&L->tu[L->length].databae);L->tu[L->length].um=L->tu[L->length].englih+L->tu[L->length].math+L->tu[L->length].databae;L->tu[L->length].average=L->tu[L->length].um/3;L->length++;}//函數(shù)4刪除一條記錄intDelete(qlit某L){char[20];inti=1,j,ch,n;//第一個是哨兵if(L->length<=1){printf("請先輸入數(shù)據(jù)!\n");return0;}printf("1.按姓名刪除\n2.按學(xué)號刪除\n請選擇:");canf("%d",&ch);if(ch==1){printf("請輸入姓名:");canf("%",);while(trcmp(L->tu[i].name,)!=0&&i<L->length)i++;}ele{printf("請輸入學(xué)號:");canf("%d",&n);while(L->tu[i].num!=n&&i<L->length)i++;}if(i>=L->length){printf("要刪除記錄不存在!");return0;}for(j=i;j<L->length;j++)L->tu[j]=L->tu[j+1];printf("刪除成功!\n");L->length--;return0;}//函數(shù)5統(tǒng)計成績intStatitic(qlit某L){inti,j=1,j1=1,j2=1,j3=1,k=1,k1=1,k2=1,k3=1;//要算及格率兩個整數(shù)相除可能會是0所以float型floataver,tuum=0,tuum1=0,tuum2=0,tuum3=0,count1=0,count2=0,count3=0;if(L->length<=1){printf("請先輸入數(shù)據(jù)!\n");return0;}for(i=1;i<L->length;i++){//用于計算全班平均成績tuum+=L->tu[i].um;//用于計算各科平均成績tuum1+=L->tu[i].englih;tuum2+=L->tu[i].math;tuum3+=L->tu[i].databae;//查找總分最高分if(L->tu[j].um<L->tu[i].um)j=i;//查找總分最低分if(L->tu[k].um>L->tu[i].um)k=i;//查找英語最高分if(L->tu[j1].englih<L->tu[i].englih)j1=i;//查找高數(shù)最高分if(L->tu[j2].math<L->tu[i].math)j2=i;//查找數(shù)據(jù)結(jié)構(gòu)最高分if(L->tu[j3].databae<L->tu[i].databae)j3=i;//查找英語最低分if(L->tu[k1].englih>L->tu[i].englih)k1=i;//查找高數(shù)最低分if(L->tu[k2].math>L->tu[i].math)k2=i;//查找數(shù)據(jù)結(jié)構(gòu)最低分if(L->tu[k3].databae>L->tu[i].databae)k3=i;//用于計算及格率if(L->tu[i].englih>=60)count1++;if(L->tu[i].math>=60)count2++;if(L->tu[i].databae>=60)count3++;}aver=tuum/L->length;printf("共有%d條記錄.\n",L->length);printf("總分最高的記錄:\n");printf("學(xué)號\t姓名\t總分\t平均分\t英語成績\t高數(shù)成績\t數(shù)據(jù)結(jié)構(gòu)成績\n");printf("%d\t%\t%.2f\t%.2f\t%.2f\t\t%.2f\t\t%.2f\n",L->tu[j].num,L->tu[j].name,L->tu[j].um,L->tu[j].average,L->tu[j].englih,L->tu[j].math,L->tu[j].databae);printf("總分最低的記錄:\n");printf("學(xué)號\t姓名\t總分\t平均分\t英語成績\t高數(shù)成績\t數(shù)據(jù)結(jié)構(gòu)成績\n");printf("%d\t%\t%.2f\t%.2f\t%.2f\t\t%.2f\t\t%.2f\n",L->tu[k].num,L->tu[k].name,L->tu[k].um,L->tu[k].average,L->tu[k].englih,L->tu[k].math,L->tu[k].databae);printf("全體同學(xué)平均成績:%.2f\n",aver);printf("英語及格率:%.2f\n",count1/(L->length-1));printf("高數(shù)及格率:%.2f\n",count2/(L->length-1));printf("數(shù)據(jù)結(jié)構(gòu)及格率:%.2f\n",count3/(L->length-1));printf("英語最高分:%.2f\n",L->tu[j1].englih);printf("高數(shù)最高分:%.2f\n",L->tu[j2].math);printf("數(shù)據(jù)結(jié)構(gòu)最高分:%.2f\n",L->tu[j3].databae);printf("英語最低分:%.2f\n",L->tu[k1].englih);printf("高數(shù)最低分:%.2f\n",L->tu[k2].math);printf("數(shù)據(jù)結(jié)構(gòu)最低分:%.2f\n",L->tu[k3].databae);return0;}//函數(shù)6查找intSearch(qlit某L){charn[20];inti=1,ch1,ch2,j,num,low,high,mid;if(L->length<=1){printf("請先輸入數(shù)據(jù)!\n");return0;}printf("1.順序查找\n2.二分查找\n請選擇:");canf("%d",&ch1);if(ch1==1){printf("1.按學(xué)號查找\n2.按姓名查找\n請選擇:");canf("%d",&ch2);if(ch2==1){printf("請輸入學(xué)號:");canf("%d",&num);while(L->tu[i].num!=num&&i<L->length)i++;}ele{printf("請輸入姓名:");canf("%",n);while(trcmp(L->tu[i].name,n)!=0&&i<L->length)i++;}if(i>=L->length){printf("查找失敗!");return0;}printf("查找成功!\n");printf("學(xué)號\t姓名\t總分\t平均分\t英語成績\t高數(shù)成績\t數(shù)據(jù)結(jié)構(gòu)成績\n");printf("%d\t%\t%.2f\t%.2f\t%.2f\t\t%.2f\t\t%.2f\n",L->tu[i].num,L->tu[i].name,L->tu[i].um,L->tu[i].average,L->tu[i].englih,L->tu[i].math,L->tu[i].databae);}if(ch1==2){printf("1.按學(xué)號查找\n2.按姓名查找\n請選擇:");canf("%d",&ch2);if(ch2==1){//二分查找,先按學(xué)號排序for(i=2;i<L->length;i++)if(L->tu[i].num<L->tu[i-1].num){L->tu[0]=L->tu[i];L->tu[i]=L->tu[i-1];for(j=i-2;L->tu[0].num<L->tu[j].num;j--)L->tu[j+1]=L->tu[j];L->tu[j]=L->tu[0];}printf("請輸入學(xué)號:");canf("%d",&num);low=1;high=L->length-1;//置區(qū)間初值while(low<=high){mid=(low+high)/2;if(L->tu[mid].num==num){printf("查找成功!\n");printf("學(xué)號\t姓名\t總分\t平均分\t英語成績\t高數(shù)成績\t數(shù)據(jù)結(jié)構(gòu)成績\n");printf("%d\t%\t%.2f\t%.2f\t%.2f\t\t%.2f\t\t%.2f\n",L->tu[mid].num,L->tu[mid].name,L->tu[mid].um,L->tu[mid].average,L->tu[mid].englih,L->tu[mid].math,L->tu[mid].databae);return0;}eleif(num<L->tu[mid].num)high=mid-1;//繼續(xù)在前半?yún)^(qū)間進(jìn)行查找elelow=mid+1;//繼續(xù)在后半?yún)^(qū)間進(jìn)行查找}printf("查找失敗!\n");return0;}ele{//二分查找,先按姓名排序for(i=2;i<L->length;i++)if(trcmp(L->tu[i].name,L->tu[i-1].name)<0){L->tu[0]=L->tu[i];L->tu[i]=L->tu[i-1];for(j=i-2;trcmp(L->tu[0].name,L->tu[j].name)<0;j--)L->tu[j+1]=L->tu[j];L->tu[j]=L->tu[0];}printf("請輸入姓名:");canf("%",n);low=1;high=L->length-1;//置區(qū)間初值while(low<=high){mid=(low+high)/2;if(trcmp(L->tu[mid].name,n)==0){printf("查找成功!\n");printf("學(xué)號\t姓名\t總分\t平均分\t英語成績\t高數(shù)成績\t數(shù)據(jù)結(jié)構(gòu)成績\n");printf("%d\t%\t%.2f\t%.2f\t%.2f\t\t%.2f\t\t%.2f\n",L->tu[mid].num,L->tu[mid].name,L->tu[mid].um,L->tu[mid].average,L->tu[mid].englih,L->tu[mid].math,L->tu[mid].databae);return0;}eleif(trcmp(n,L->tu[mid].name)<0)high=mid-1;//繼續(xù)在前半?yún)^(qū)間進(jìn)行查找elelow=mid+1;//繼續(xù)在后半?yún)^(qū)間進(jìn)行查找}printf("查找失敗!\n");return0;}//ele}//if(ch1==2)}//函數(shù)7排序intSort(qlit某L){inti,ch1,ch2,j,k;intlow,high,mid;if(L->length<=1){printf("請先輸入數(shù)據(jù)!\n");return0;}printf("1.直接插入排序\t2.折半插入排序\n3.冒泡排序\t4.直接選擇排序\n請選擇:");canf("%d",&ch1);witch(ch1){cae1:printf("1.按學(xué)號排序\n2.按英語成績排序\t3.按高數(shù)成績排序\n4.按數(shù)據(jù)結(jié)構(gòu)成績排序\t5.按總分排序\n請選擇:");canf("%d",&ch2);witch(ch2){cae1:for(i=2;i<L->length;i++)if(L->tu[i].num<L->tu[i-1].num){L->tu[0]=L->tu[i];L->tu[i]=L->tu[i-1];for(j=i-2;L->tu[0].num<L->tu[j].num;j--)L->tu[j+1]=L->tu[j];L->tu[j]=L->tu[0];}break;cae2:for(i=2;i<L->length;i++)if(L->tu[i].englih<L->tu[i-1].englih){L->tu[0]=L->tu[i];L->tu[i]=L->tu[i-1];for(j=i-2;L->tu[0].englih<L->tu[j].englih;j--)L->tu[j+1]=L->tu[j];L->tu[j]=L->tu[0];}break;cae3:for(i=2;i<L->length;i++)if(L->tu[i].math<L->tu[i-1].math){L->tu[0]=L->tu[i];L->tu[i]=L->tu[i-1];for(j=i-2;L->tu[0].math<L->tu[j].math;j--)L->tu[j+1]=L->tu[j];L->tu[j]=L->tu[0];}break;cae4:for(i=2;i<L->length;i++)if(L->tu[i].databae<L->tu[i-1].databae){L->tu[0]=L->tu[i];L->tu[i]=L->tu[i-1];for(j=i-2;L->tu[0].databae<L->tu[j].databae;j--)L->tu[j+1]=L->tu[j];L->tu[j]=L->tu[0];}break;cae5:for(i=2;i<L->length;i++)if(L->tu[i].um<L->tu[i-1].um){L->tu[0]=L->tu[i];L->tu[i]=L->tu[i-1];for(j=i-2;L->tu[0].um<L->tu[j].um;j--)L->tu[j+1]=L->tu[j];L->tu[j]=L->tu[0];}break;}//wich(ch2)break;cae2:printf("1.按學(xué)號排序\n2.按英語成績排序\t3.按高數(shù)成績排序\n4.按數(shù)據(jù)結(jié)構(gòu)成績排序\t5.按總分排序\n請選擇:");canf("%d",&ch2);witch(ch2){cae1:for(i=2;i<L->length;i++){if(L->tu[i].num<L->tu[i-1].num){L->tu[0]=L->tu[i];/某設(shè)置監(jiān)測哨某/low=1;high=i-1;while(low<=high){/某在r[low..high]中折半查找有序插入的位置某/mid=(low+high)/2;if(L->tu[0].num<L->tu[mid].num)high=mid-1;/某插入點在低半?yún)^(qū)某/elelow=mid+1;/某插入點在高半?yún)^(qū)某/}/某whilefor(j=i-1;j>=low;--j)L->tu[j+1]=L->tu[j];/某記錄后移某/L->tu[high+1]=L->tu[0];/某插入到正確位置某/}/某if某/}/某for某/break;cae2:for(i=2;i<L->length;i++){if(L->tu[i].englih<L->tu[i-1].englih){L->tu[0]=L->tu[i];/某設(shè)置監(jiān)測哨某/low=1;high=i-1;while(low<=high){/某在r[low..high]中折半查找有序插入的位置某/mid=(low+high)/2;if(L->tu[0].englih<L->tu[mid].englih)high=mid-1;/某插入點在低半?yún)^(qū)某/elelow=mid+1;/某插入點在高半?yún)^(qū)某/}/某whilefor(j=i-1;j>=low;--j)L->tu[j+1]=L->tu[j];/某記錄后移某/L->tu[high+1]=L->tu[0];/某插入到正確位置某/}/某if某/}/某for某/break;cae3:for(i=2;i<L->length;i++){if(L->tu[i].math<L->tu[i-1].math){L->tu[0]=L->tu[i];/某設(shè)置監(jiān)測哨某/low=1;high=i-1;while(low<=high){/某在r[low..high]中折半查找有序插入的位置某/mid=(low+high)/2;if(L->tu[0].math<L->tu[mid].math)high=mid-1;/某插入點在低半?yún)^(qū)某/elelow=mid+1;/某插入點在高半?yún)^(qū)某/}/某while某/for(j=i-1;j>=low;--j)L->tu[j+1]=L->tu[j];/某記錄后移某/L->tu[high+1]=L->tu[0];/某插入到正確位置某/}/某if某/}/某for某/break;cae4:for(i=2;i<L->length;i++){if(L->tu[i].databae<L->tu[i-1].databae){L->tu[0]=L->tu[i];/某設(shè)置監(jiān)測哨某/low=1;high=i-1;while(low<=high){/某在r[low..high]中折半查找有序插入的位置某/mid=(low+high)/2;if(L->tu[0].databae<L->tu[mid].databae)high=mid-1;/某插入點在低半?yún)^(qū)某/elelow=mid+1;/某插入點在高半?yún)^(qū)某/}/某while某/for(j=i-1;j>=low;--j)L->tu[j+1]=L->tu[j];/某記錄后移某/L->tu[high+1]=L->tu[0];/某插入到正確位置某/}/某if}/某for某/break;cae5:for(i=2;i<L->length;i++){if(L->tu[i].um<L->tu[i-1].um){L->tu[0]=L->tu[i];/某設(shè)置監(jiān)測哨某/low=1;high=i-1;while(low<=high){/某在r[low..high]中折半查找有序插入的位置某/mid=(low+high)/2;if(L->tu[0].um<L->tu[mid].um)high=mid-1;/某插入點在低半?yún)^(qū)某/elelow=mid+1;/某插入點在高半?yún)^(qū)某/}/某whilefor(j=i-1;j>=low;--j)L->tu[j+1]=L->tu[j];/某記錄后移某/L->tu[high+1]=L->tu[0];/某插入到正確位置某/}/某if某/}/某for某/break;}//wich(ch2)break;cae3:printf("1.按學(xué)號排序\n2.按英語成績排序\t3.按高數(shù)成績排序\n4.按數(shù)據(jù)結(jié)構(gòu)成績排序\t5.按總分排序\n請選擇:");canf("%d",&ch2);witch(ch2){cae1://采用自前向后掃描的方法,對順序表L做冒泡排序i=L->length-1;while(i>1){k=1;for(j=1;j<i;j++)if(L->tu[j+1].num<L->tu[j].num){L->tu[0]=L->tu[j];L->tu[j]=L->tu[j+1];L->tu[j+1]=L->tu[0];k=j;/某交換的位置某/}i=k;}break;cae2://采用自前向后掃描的方法,對順序表L做冒泡排序i=L->length-1;while(i>1){k=1;for(j=1;j<i;j++)if(L->tu[j+1].englih<L->tu[j].englih){L->tu[0]=L->tu[j];L->tu[j]=L->tu[j+1];L->tu[j+1]=L->tu[0];k=j;/某交換的位置某/}i=k;}break;cae3://采用自前向后掃描的方法,對順序表L做冒泡排序i=L->length-1;while(i>1){k=1;for(j=1;j<i;j++)if(L->tu[j+1].math<L->tu[j].math){L->tu[0]=L->tu[j];L->tu[j]=L->tu[j+1];L->tu[j+1]=L->tu[0];k=j;/某交換的位置某/}i=k;}break;cae4://采用自前向后掃描的方法,對順序表L做冒泡排序i=L->length-1;while(i>1){k=1;for(j=1;j<i;j++)if(L->tu[j+1].databae<L->tu[j].databae){L->tu[0]=L->tu[j];L->tu[j]=L->tu[j+1];L->tu[j+1]=L->tu[0];k=j;/某交換的位置某/}i=k;}break;cae5://采用自前向后掃描的方法,對順序表L做冒泡排序i=L->length-1;while(i>1){k=1;for(j=1;j<i;j++)if(L->tu[j+1].um<L->tu[j].um){L->tu[0]=L->tu[j];L->tu[j]=L->tu[j+1];L->tu[j+1]=L->tu[0];k=j;/某交換的位置某/}i=k;}break;}//wich(ch2)break;cae4:printf("1.按學(xué)號排序\n2.按英語成績排序\t3.按高數(shù)成績排序\n4.按數(shù)據(jù)結(jié)構(gòu)成績排序\t5.按總分排序\n請選擇:");canf("%d",&ch2);witch(ch2){cae1:for(i=1;i<L->length-1;i++){k=i;for(j=i+1;j<L->length;j++)if(L->tu[k].num>L->tu[j].num)k=j;/某k中存放關(guān)鍵字最小的記錄的下標(biāo)某/if(k!=i){L->tu[0]=L->tu[k];L->tu[k]=L->tu[i];/某關(guān)鍵字最小的記錄與第i個記錄某/L->tu[i]=L->tu[0];}/某if某/}/某for某/break;cae2:for(i=1;i<L->length-1;i++){k=i;for(j=i+1;j<L->length;j++)/某在i開始的L.length-i+1個記錄中選關(guān)鍵字最小的記錄某/if(L->tu[k].englih>L->tu[j].englih)k=j;/某k中存放關(guān)鍵字最小的記錄的下標(biāo)某/if(k!=i){L->tu[0]=L->tu[k];L->tu[k]=L->tu[i];/某關(guān)鍵字最小的記錄與第i個記錄某/L->tu[i]=L->tu[0];}/某iffor某/break;cae3:for(i=1;i<L->length-1;i++){k=i;for(j=i+1;j<L->length;j++)/某在i開始的L.length-i+1個記錄中選關(guān)鍵字最小的記錄某/if(L->tu[k].math>L->tu[j].math)k=j;/某k中存放關(guān)鍵字最小的記錄的下標(biāo)某/if(k!=i){L->tu[0]=L->tu[k];L->tu[k]=L->tu[i];/某關(guān)鍵字最小的記錄與第i個記錄某/L->tu[i]=L->tu[0];}/某if某/}break;cae4:for(i=1;i<L->length-1;i++){k=i;for(j=i+1;j<L->length;j++)/某在i開始的L.length-i+1個記錄中選關(guān)鍵字最小的記錄某/if(L->tu[k].databae>L->tu[j].databae)k=j;/某k中存放

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論