包括
包括
整數N = 2;//全局變量。輸入的學生人數會自行改變其值。
結構學生
{
字符數[10];
角色名[10];
浮動分數[3]平均持股量;
}學生【200】;
/ ******************************* ************************************************** ************* /
無效輸入(結構學生t[])//輸入數據
{
INT I,J,K,;
系統(“CLS”);
Printf的("輸入由輸入數據的數量決定\ n您已經確定了壹些\ n ");
Printf("請輸入1繼續\ n不輸入0退出程序,並更改全局變量的值\ n ");
Scanf函數(" %d ",& a);
(答!= 1 )
退出(0);
(I = 0;& ltn;+ +)
{
系統(“CLS”);//清除屏幕BR/& gt;Printf("請輸入% d學生人數:\ n ",I+1);
Scanf函數(" %s ",T [i]的個數);
Is (j = 0j
If (STRCMP(T [I])。數,T [J]。NUM)= = 0)//避免學生人數相同。
{/& gt;-
printf("學生人數已經存在,請重新輸入:");
睡眠(3000);
突破;
}
}
是(I = 0;& ltn;+ +)
{
系統(“CLS”);
Printf的("請輸入學號% s:(用空格隔開)\ n第二門第壹成績和第二門第三成績\ n ",T[I]NUM);
//T [i]。Score [0] = 0,T [i]。Score [1] = 0,T [i]。score[2]= 0;
Scanf函數(" %s% f% f% f,T [I])。名稱,&t [i]。分數[0],分數為&t [I] [1],分數為& t[I][2]);
AVG .score[0]+T[I]score[1]+[I]。得分[2])/3.0;
}
}
/ ************************************************* ********************************************* /
註釋列表(student t[])//顯示所有信息。
{
我;
系統(“CLS”);
printf ("%d學生信息如下:\ n \ n ",n);
Printf的(“學生證名字第壹門成就第二門,第三門成績壹般\ n”);
(I = 0;I++)
{
(T[I]strlen的編號)!= 0)//判斷是否結束。
printf(" % % S \ t where % S \ t % 5.2f \ t % 5.2f \ t % 5.2f \ t % 5.2f \ t \ t ",
T [I].數,T[我的名字,T [i]分數[0],T [I]。Score [1],T [i] score [2],T [i]。平均);
其他的
突破;
}
putchar(10);
}
/ ************* ************************************************** ******** /
無效的研究(學生t[])//學生id查找信息。
{
INT I,Y;
字符[10];
(1)
{系統(“CLS”);
Printf的("請輸入妳的學號:");
Scanf函數(" %s ",& s);
是(I = 0;i + +)
{
系統(“CLS”);
((STRCMP( S,T [i]))。num))//如果找到學生人數,輸出。
{
Printf's("學號%的學生成績如下:\ n \ n ",T[]NUM);
printf的名稱(“第二成績第壹成績平均人數\ n”為第三成績);
printf(" % \ t where % s \ t % 5.2f \ t % 5.2f \ t % 5.2f \ t % 5.2f \ t ",
T [me]號,T [I]。姓名,T[我]。得分[0],T [i]得分[1],T [I] [2分],T [I]。平均);
putchar(10);
休息;
}
否則,if ((STRCMP(S,T [I])。NUM))!= 0 & amp& ampStrlen(T [I]。NUM)= = 0)//搜索完成後不是最終結果
{
printf(" \ n無計數信息:\ n \ n ");
突破;
}
}
printf(" please * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ";}輸出(繼續查詢並輸入回車\ n ");
(“of printf返回主菜單,輸入2,回車\ n”);
Output(退出程序並輸入任何回車\ n ");
printf(" please * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
(%d個scanf,& a;
(== 1)
研究(學生,n);
否則,如果(== 2)
突破;
其他的
{
系統(“CLS”);
Printf的(" Exit and enter a carriage return以退出並保存數據");
Scanf函數(&y,共' % d ');BR/>;If (== 1)
退出(0);
否則,如果(Y == 2)
保存(STU);
其他的
Lord();
}
}
();
}
/ ******************* ************************************************** ************************* /
invalid Del(student t[])//刪除壹條學生信息。
{
INT I,J,A,Z,Y;
字符B[10];
系統(“CLS”);
Printf("請輸入您要刪除的學校數量:);
Scanf函數(" %s ",b);
(I = 0;i + +)
(STRCMP(B,T [.人)== 0)
突破;
否則,if ((STRCMP(B,T [I])。NUM))!= 0 & amp& ampStrlen(T [I]。NUM)== 0)
{
printf("編號信息:\ n \ n ");
睡眠(3000);
突破;
}
(strlen(T [NUM)!= 0)
{
系統(“CLS”);
Printf("請確認刪除?輸入回車\ n ");/& gt;(" %d ",&z)的scanf
(Z == 1)
Is (J = I,J++)
{
(strlen(T [J])。NUM)== 0)
打破;
其他的
{
T[J]= T[J+1];
= N-1;
}
}
}
系統(“CLS”);
Printf的(" * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
(' of printf繼續刪除並輸入回車\ n ');...../output("返回主菜單並輸入\ n ");
Printf("請退出程序並輸入任何回車\ n ");
printf(" please * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
(" %d ",&a)的scanf
(== 1)
斯圖;
否則,如果(== 2)
();
其他BR />{
系統(“CLS”);
Printf("請直接退出,輸入回車,保存輸入和退出的數據,進入主菜單22次\ n建議退出之前保存的金額,否則數據會丟失");
Scanf函數(" %d ",& y);
(== 1)
退出(0);
否則,如果(Y == 2)
保存(STU);
其他的
();
}
} & lt//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
INT I,J,M,A,Y;
系統(* * *
CLS”);
Of printf("請輸入添加的記錄數:\ nm = ");
(" %d ",&m)的scanf
For (i = n,我是N+M;+ +)
{
系統(“CLS”);
Printf的("請輸入學生ID #% d的新同學:+1);
Scanf的(" " T [I]。NUM);
is(J = 0;;J + +)
(STRCMP(T [] min,T[J]min)= = 0)//避免重復的學號。
{
-
Printf的("該生的學生已經存在,請重新輸入:)。
睡眠(3000);
突破;
}
}
當(i = n,I
{
(《CLS》);
Printf的("請輸入% s的學生人數增加學校:(用空格隔開)\第三門名稱,第壹門成績,第二門成績\ n ",T[]NUM);
//T [i][0]= 0,T[I]的分數。With [1] = 0,T [i]。score[2]= 0;
Scanf函數(" %s% f% f% f,T [I])。名稱,&t [i]。分數[0],分數為&t [I] [1],分數為& t[I][2]);
AVG .score[0]+T[I]score[1]+[I][2分])/3.0;
}
N = N+m//學生數等於已經出生的學生數,加上新增加的。
Printf的(" * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");& lt/Output ("Add ",輸入壹個回車,\ n ");
printf("返回主菜單,輸入2,回車\ N ");
(" of printf退出程序並輸入任何回車\ n ");
Printf的(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
(%d個scanf,& a;
(= = 1)/& gt;add(STU);
否則,如果(== 2)
();
其他的
{
系統(“CLS”);....../& gt;Printf("您想退出嗎?進入後,進入2號出口進入車內,保存數據,進入主菜單22次\ nI建議您在退出前保存壹些,否則數據會丟失”);
If scanf's ("%d ",&y) (y = = 1)
退出(0);
否則,如果(Y == 2)
保存(STU);
其他的
主要是();
}
}
/ ************ ************************************************** ******************************** /
integer save(student t[])//文件來保存數據。
{
FILE * FP
CHar [20],ch;
我是壹,y;
系統(“CLS”);
Printf("請保存到新文件並輸入回車,\ n保存現有文件並輸入2 \ n ");
(" %d ",&a)的scanf關於
CH = getchar function()//接收回車,否則得到()函數空間被分配到的錯誤。
如果(a == 1)
{
Output("請輸入新文件名:\ n(包括擴展名,長度不超過20個字符)\ n ");
獲取;
((FP的FOPEN(S =(S," w+")= = null)//FP指向的文件。
{
printf(" this file \ n ");
退出(0);
}
}
否則,如果(== 2)
{
printf("請輸入現有文件名:\ N(包括擴展名,不超過20個字符)\ N ");
獲取;
((FP = FOPEN(" w+")= = NULL)
{
系統(CLS”);
printf(" Please \ n ";};
退出(0);
}
}
用fprintf(FP)而不是文件“%%d \ N”,N)//編寫的文件
是(I = 0;I++)
(strlen的T [I]。NUM)!= 0)//如果學生人數不為空,則將數據寫入指定文件。
{
fprintf(FP," % S \ T % S \ T %-5.2f \ T % 5.2f \ T % 5.2f \ T % 5.2f ",
T [I].編號,T []。,T [] [0],T [i]得分[1],T [i]得分[2],T [i]平均);
fprintf(FP," \ n ");
}
其他的
;
FCLOSE(FP);
系統(“CLS”;);
Printf("請\ n保存它,就大功告成了!\ n ");
}
/ * ************************************************** ******************************************* /
無效讀取(student t[])//讀取文件數據
{
FILE * FP
解釋y,m,I,x;
CHar [20],ch;
CH = getchar function()//接收輸入字符,否則()函數空間分配給S. Error。
系統(“CLS”);
Printf("請輸入讀取數據的文件名:\ n(包括擴展名,20個字符以內)\ n ");
獲取;
((FP = FOPEN ("R"))== NULL)
{
系統(“CLS”);
printf(" Please this file \ n ");
睡眠(3000)
系統(“CLS”);
Printf("請退出?退出並輸入壹個回車保存退出2中輸入的數據,輸入22返回主菜單\ nI建議您在退出前保存數字,否則數據會丟失”);
(" %d ",scanf的& y;
(Y == 1)
退出(0);
否則,如果(Y == 2)
保存(
其他的
();
}
Fscanf(FP," %d ",& x);//註冊的學生人數
(斯圖);I = 0;I x,i++)//讀取所有數據。
Fscanf(FP," % f % f % f % f of % s % s,T [I] min,T [I]的名稱,&t [i]。得分[0],
得分為&t [I] [1],&t [I]。分數[2],&t [I]。平均);
FCLOSE(FP);
系統(“CLS”);
N-= N//n將被設置為0。
n = X;
printf(" \ n讀取完成!\ n ");
}
/ ******** ************************************************** ************************************ /
Menu()//選擇菜單BR/& gt;{
解讀x;
printf("請選擇相應的菜單:\ n ");
Printf的(" * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
printf的(“請輸入新記錄,輸入0並輸入\ n”);
& gtPrintf("所有學生,請輸入回車\ n ");
Printf("請查詢對應記錄,輸入2,輸入\ n ");
Printf("請刪除相應記錄,輸入3,然後輸入\ n ");
(“of printf增加壹條新記錄,輸入4 input \ n”);
Printf的("從文件中讀取的記錄,輸入5,輸入\ n ");
Printf("請平均從最高到最低排序輸出,input 6 input \ n ");
Printf("學號從低到高,並輸出,輸入7輸入\ n ");
& gt輸出(每門課分數最高的壹門,輸入壹個回車\ n”);
(" printf的分數被保存到文本輸入9 input \ n ");
(“of printf退出程序,輸入11,輸入\ n”);
printf(" please * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
Scanf的(" %d "和x);
返回x;
}
/ ***** ************************************************** *************************************** /
無效的to_exit()//exit。
{
解讀;
系統(“CLS”);
Printf("請直接退出,輸入回車並保存數據,退出輸入2並進入主菜單22次\ nI建議您在退出前保存數字,否則會丟失數據");
(" %d ",scanf的& y;
(Y == 1)
退出(0);
其他(Y == 2)
保存(STU);
其他的
();....../& gt;}
/ ****************************************** ************************************************** * /
avg _ arrange(student t[])//平均高到低排序無效。
{
I,J;
結構學生溫度[1];BR/>;(I = 0;我& ltn-1;i + +)
(J = I +1,J & ltn,J + +)
(T [I].AVG <T [J].平均)
{
TEMP[0]= T[];
T[]= T[J];
噸[J]。= TEMP[0];
}
列表(STU);
}
/ ******************** ************************************************** ************************ /
無效num _ arrange(student t[])//學生人數從小到大的順序。
& gt{
解讀IJ;
結構學生溫度[1];
是(I = 0;我& ltn;I++)
(J = 0,J & ltN-1,J + +)
(STRCMP(T [J]).編號,T [j +1]。NUM)>0)
{
溫度[0] = T [J]。
T[J]= T[J+1];
= T[j+1]中的TEMP[0];
}
列表(t);
}
/ **************************************** ************************************************** **** /
無效高(學生t[])//搜索科目最高分。
{
INT I,J,K,
結構生最大【1】;
最大值[0]= T[0];
系統(“CLS”);
printf的("請輸入妳要找的主題:1或2或3 \ n ");
Scanf函數(&k,共' % d ');
(I = 1;我
最大值[0] = [0]。分數[K-1]& gt;T [i] [k-1]的分數最大[0]: [I]
系統(“CLS”);
輸出("將% d的科目分為:% %5.2f的學生數為\ n ",k [0]的最高分為[k-1],最高分為[0]NUM);
}
/ ********************************************* ************************************************* /
()
{
已解釋;
(1)
{
壹個菜單();
switch(A)//根據相應的動作選擇菜單。
{
本例中為0:input(STU);突破;
案例1:列表(STU);突破;
案例、研究(STU);突破;
案例三:德爾(斯圖);突破;
情況四:添加(STU);突破;
萬壹,5:讀書(STU);休息;
場景6:avg _ arrange(stu);突破;
案例7:num _ arrange(stu);突破;
案例八:斯圖;突破;
情況:保存(STU);突破;
默認值:to _ exit();
}
}
}
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *