#
包括
包括中
整数N = 2; / /全局变量,输入的学生人数自己改变了它的价值
结构学生
{
字符数[10];
字符名称[10];
浮动得分[3] </持股量平均;
}学生[200];
/ ******************************* ************************************************** ************* /
无效的输入(结构学生t [])/ /输入数据
{
INT I,J,K,;
系统(“CLS”);
printf的(“前输入数据的数量来确定的输入\ n你已经确定了一些\ n”);
printf(“请输入1车继续\ n没有输入0回车键退出程序,改变全局变量的值\ n“);
scanf函数(”%D“,&A);
(A! = 1 )
出口(0);
(i = 0; <N; + +)
{
系统(“CLS”); / /清除屏幕 BR /> printf的(“请输入%d个学生的人数:\ n”,i +1);
scanf函数(“%s”,T [i]的数量);
为(J = 0 J <I,J + +)
如果(STRCMP(T [I]。数,T [J]。NUM)== 0)/ /以避免同样的学生数量
{ /> -
printf的(“学生人数已经存在,请重新输入:”);
睡眠(3000);
突破;
}
}
为(i = 0; <N; + +)
{
系统(“CLS”);
printf的(“请输入学号是%s学生:(用空格隔开)\ n名门第一得分第二门成就第三个门的成绩\ n“,T [I] NUM);
/ / T [i]的。得分[0] = 0,T [i]的。得分[1] = 0,T [i]的。得分[2] = 0;
scanf函数(“%s%F%F%F,T [I]。名称,&T [I]。得分[0],&T [i]的得分[ 1],&T [i]的得分[2]);
T [我]。 AVG =(T [I]。得分[0] + T [i]的得分[1] + [I]。得分[2])/ 3.0;
}
}
/ ************************************************* ********************************************* /
诠释列表(学生t [])/ /显示所有信息
{
我;
系统(“CLS”);
printf的(“%d个学生的信息是如下:\ n \ n“,N);
printf的(”学生ID名称的第一个门成就的第二个门的成绩第三个门成绩平均\ n“);
(i = 0;我+ +)
{
(strlen的(T [I] NUM)!= 0)/ /判断是否结束
printf的(“%S \ t其中%s \ t% 5.2f \ t%5.2f \ t%5.2f \ t%5.2f \吨\ n“,
T [I]。数,T [我的名字,T [i]的得分[0] ,T [I]。得分[1],T [i]的得分[2],T [我]。平均);
其他
突破;
}
的putchar (10);
}
/ ************* ************************************************** ******** /
无效的研究(学生t [])/ /学生ID查找信息
{
INT I,Y;
字符[10];
(1)
{系统(“CLS”);
printf的(“请输入学号:”);
scanf函数( “%s”,&S);
为(i = 0; i + +)
{
系统(“CLS”);
((STRCMP( S,T [i]的。NUM)))/ /如果你找到的学生人数,输出
{
printf的(“学生ID%的学生成绩如下:\ n \ n”, T [] NUM);
printf的(第三个门成就的“第二道门成果的第一门成就的学生人数平均\ n”)的名称;
printf的(“% \ t其中%s \ t%5.2f \ t%5.2f \ t%5.2f \ t%5.2f \吨\ n“,
T [我]。数,T [I]。名称,T [我]。得分[0],T [i]的得分[1],T [I] [2分],T [我]。平均);
的putchar(10);
休息;
}
否则,如果((STRCMP(S,T [I]。NUM))!= 0 &&的strlen(T [I]。NUM)== 0)/ /查找完成后不最终
{
printf的(“\ n不数的信息:\ n \ n”);
突破;
}
}
printf(“请************************************ \ n”;} 输出(继续查询,输入一个回车\ n“);
printf的(”返回到主菜单,输入2输入\ n“);
输出(退出程序,输入任何回车\ n“);
printf(”请************************************ \ n“);
scanf的(”%D“,&A);
(== 1)
研究(学生,N);
否则,如果( == 2)
突破;
其他
{
系统(“CLS”);
printf的(“退出输入一个回车退出并保存数据退出输入2输入,输入22返回到主菜单\ n建议退出之前保存的数量,否则将丢失的数据“);
scanf函数(”%d“的,&Y); BR />如果(== 1)
出口(0);
否则,如果(Y == 2)
保存(STU);
其他
主();
}
}
();
}
/ ******************* ************************************************** ************************* /
无效德尔(学生t [])/ /删除一个学生信息
{
INT I,J,A,Z,Y;
字符B [10];
系统(“CLS”);
printf的(“请输入学校的数量您要删除的:);
scanf函数(“%s”,B);
(i = 0; i + +)
(STRCMP(B,T [ 。民)== 0)
突破;
否则,如果((STRCMP(B,T [I]。NUM))!= 0 &&的strlen(T [I]。NUM)== 0 )
{
printf的(“号的信息:\ n \ n”);
睡眠(3000);
突破;
}
(的strlen(T [NUM)!= 0)
{
系统(“CLS”);
printf(“请确认删除?输入一个回车\ n”); /> scanf的(“%d”,&Z);
(Z == 1)
为(J = I,J + +)
{
(的strlen(T [J]。NUM)== 0)
打破;
其他
{
T [J] = T [j +1]中;
= N-1;}
}
}
系统(“CLS”);
printf的(“************ ************************ \ n“);
printf的(”继续删除输入一个回车符\ n“); ...... /输出(“返回到主菜单,输入回车\ n”);
printf(“请退出程序,输入任何回车\ n”);
printf(“请** ********************************** \ n“);
scanf的(”%d“的, &A);
(== 1)
德尔(STU);
否则,如果(== 2)
();
其他 BR /> {
系统(“CLS”);
printf(“请退出直接退出,输入一个回车,保存退出输入输入的数据,进入22回主菜单\ n建议退出之前保存的数量,否则将丢失的数据“);
scanf函数(”%d“,&Y);
(== 1)
出口( 0);
否则,如果(Y == 2)
保存(STU);
其他
();
}
} </ / ************************************************ ******************************************* void添加(学生t增加学生的资料])/ / {
INT I,J,M,A,Y;
系统(*** /
CLS“);
printf的(“请输入增加的记录数:\纳米=”);
scanf的(“%d”,&M);
为(i = n时,我N + M; + +)
{
系统(“CLS”);
printf的(“请输入学生的ID#%d的新同学:+1);
scanf的(” “T [I]。NUM);
为(J = 0;; J + +)
(STRCMP(T []民,T [J]民) == 0)/ /避免的学号重复
{
-
printf的(“这名学生的学生已经存在,请重新输入:)
睡眠(3000);
突破;
}
}
为(i = n时,我<N + M,我+ +)
{
(“CLS”);
printf的(“请输入%s的增加学校的学生的数量:(用空格隔开)\第三个门的名称第一门得分,第二道门结果\ n “,T [] NUM);
/ / T [i]的分数[0] = 0,T [i]的。分[1] = 0,T [i]的。得分[2] = 0;
scanf函数(“%s%F%F%F,T [I]。名称,&T [I]。得分[0],&T [i]的得分[ 1],&T [i]的得分[2]);
T [我]。 AVG =(T [I]。得分[0] + T [i]的得分[1] + [I] [2分])/ 3.0;
}
N = N +米/ /学生数等于已生的学生人数,加上新增加的
printf的(“************************** ********** \ n“); </输出(”添加“,输入一个回车,\ n”);
printf的(“返回到主菜单,输入2输入\ N“);
printf的(”退出程序,输入任何回车\ n“);
printf的(”******************* ***************** \ n“);
scanf的(”%D“,&A);
(== 1) />添加(STU);
否则,如果(== 2)
();
其他
{
系统(“CLS”); ...... /> printf(“请是否要退出?进入后输入exit退出2进入车内,保存数据,进入22回主菜单\ n建议您在退出之前保存一些,否则,数据将丢失“);
如果scanf的(”%d“,&Y)(Y == 1)
出口(0);
否则,如果(Y == 2 )
保存(STU);
其他
主要();
}
}
/ ************ ************************************************** ******************************** /
整数保存(学生t [])/ /保存数据的文件
{
FILE * FP;
个char [20],CH;
我一个,Y;
系统(“CLS” );
printf(“请保存到一个新的文件,输入一个回车,\ n保存现有的文件输入2输入\ n”);
scanf的(“%d”,&A);的
CH = getchar函数()/ /接收一个回车符,否则得到()函数空间分配给的错误
如果(a == 1)
{
输出( “请输入新的文件名:\ n(包括扩展名,以20个字符或更少)\ n”);
得到(S);
((FP =的FOPEN(S,“ W +“))== NULL)/ / FP指向的文件
{
printf的(”该文件\ n“);
出口(0);
}
}
否则,如果(== 2)
{
printf的(“请输入一个现有的文件名:\ n(包括扩展名不超过20个字符)\ N“);
得到(S);
((FP = FOPEN(”w +“))== NULL)
{
系统(CLS “);
printf(”请\ n“;};
出口(0);
}
}
与fprintf(FP,而不是一个文件”%d \ N“,N)/ /写的文件
为(i = 0;我+ +)
(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”);
}
/ * ************************************************** ******************************************* /
无效阅读(学生t [])/ /读取文件数据
{
FILE * FP;
诠释y,M,I,X;
个char [20],CH;
CH = getchar函数()/ /接收输入字符,否则得到()函数空间分配到s,错误
系统(“CLS”);
printf(“请输入名称的文件中读取数据:\ n(包括其扩展名,20个或更少的字符)\ n“);
得到(S);
((FP = FOPEN (“R”))== NULL)
{
系统(“CLS”);
printf(“请本文件\ n”);
睡眠(3000)
系统(“CLS”);
printf(“请退出?退出输入一个回车,保存退出输入2输入的数据,进入22返回到主菜单\ n建议您退出前的先救数量,否则数据将丢失“);
scanf的(”%d“,&Y);
(Y == 1)
出口(0);
否则,如果(Y == 2)
保存(
其他
();
}
fscanf(FP,“%d”的, &X);/ /读的学生人数
(STU); i = 0;我X,我+ +)/ /读取所有数据
fscanf(FP,“%s%s的%F%F%F%F,T [I]民,T [i]的名称,&T [I]。得分[0],
&T [i]的得分[1],& T [我]。得分[2],&T [i]的。平均);
FCLOSE(FP);
系统(“CLS”);
N-= N / / n将被设置为0
N = X;
printf的(“\ n读取完成!\ n”);
}
/ ******** ************************************************** ************************************ /
菜单()/ /选择菜单 BR /> {
诠释x;
printf的(“请选择相应的菜单:\ n”);
printf的(“************** ********************** \ n“);
printf的(”请输入一个新的记录,输入0输入\ n“);
> printf(“请所有学生中,输入一个回车符\ n”);
printf(“请查询相应的记录,输入2输入\ n”);
printf(“请删除相应的记录,输入3输入\ n“);
printf的(”添加一个新的记录,进入4输入\ n“);
printf的(”从文件中读入的记录,输入5,输入\ n“);
printf(“请平均高至低排序和输出,输入6输入\ n”);
printf的(“学生ID从低到高,且输出,输入7输入\ n”);
>输出(每门成绩得分最高的,输入一个回车\ n“);
printf的(”分数保存到一个文本输入9输入\ n“);
printf的(”退出该程序,输入11,输入\ n“);
printf(”请**************************** ******** \ n“);
scanf的(”%d“的,与X);
返回X;
}
/ ***** ************************************************** *************************************** /
无效to_exit()/ /退出
{
诠释;
系统(“CLS”);
printf(“请退出直接退出,输入一个回车和保存数据,退出输入2输入,进入22回主菜单\ n建议您退出之前,先保存号码,否则将丢失的数据“);
scanf的(”%d“,&Y);
( Y == 1)
退出(0);
其他(Y == 2)
保存(STU);
其他
(); ...... />}
/ ****************************************** ************************************************** * /
无效avg_arrange(学生t [])/ /平均高至低排序
{
I,J;
结构学生TEMP [1]; BR />(i = 0; I <N-1; i + +)
(J = I +1,J <N,J + +)
(T [I]。 AVG <T [J]。平均)
{
TEMP [0] = T [];
T [] = T [J];
吨[J]。 = TEMP [0];
}
列表(STU);
}
/ ******************** ************************************************** ************************ /
无效num_arrange(学生t [])/ /学生数从小到大的顺序
> {
诠释IJ;
结构学生TEMP [1];
为(i = 0; I <N;我+ +)
(J = 0,J < N-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函数(”%d“的,&K);
(i = 1;我<N; + +)
最大[0 ] = [0]。得分[K-1]> T [i]的得分[k-1]最大[0]:[I]
系统(“CLS”);
输出(“%d的主题分为:%5.2f的学生人数是\ n”,K最大值[0]得分[k-1]最大[0] NUM);
}
/ ********************************************* ************************************************* /
()
{
诠释了;
(1)
{
一个菜单();
开关(A) / /做相应的行动的基础上选择菜单
{
情况下,0:输入(STU);突破;
情况1:列表(STU);突破;
情况下,研究(STU);突破;
案例3:DEL(STU);突破;
情况4:添加(STU);突破;
情况下,5:读(STU);休息;
情况6:avg_arrange(STU);突破;
案例7:num_arrange(STU);突破;
案例8:高(STU);突破;
情况:保存(STU);突破;
默认:to_exit();
}
}
}
/ ************ ************************************************** **************************************************北京交通大学,杨东坪******************* / / /