
C语言程序设计C++ 学生成绩管理系统V1.0。 10
学生成绩管理系统V1.0。从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,利用数组实现下列功能:(1)统计不及格人数并打印不及格学...
学生成绩管理系统V1.0。从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,利用数组实现下列功能:
(1)统计不及格人数并打印不及格学生名单;
(2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单;
(3)按成绩由高到低排出名次;
(4)统计各分数段的学生人数及所占的百分比。 展开
(1)统计不及格人数并打印不及格学生名单;
(2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单;
(3)按成绩由高到低排出名次;
(4)统计各分数段的学生人数及所占的百分比。 展开
展开全部
#包括中
#包括
包括中
/ ********定义学生结构体**** **** /
{
整型数;
字符名称[10];
炭性[4];
诠释中国typedef结构链接;
诠释英语;
诠释匹配;
持股量平均水平;
结构链接*下;
}学生;
整型量= 0 ;/ /记录学生数
/ ***************************** /
/ ******* ****初始化学生表************* /
学生InitStudent()
{
学生* Q;
Q = (学生)的malloc(如sizeof(学生));
(Q! = NULL)
{
Q-> = NULL;
回报Q
}
其他
返回NULL;
}
/ *************************** ******** /
/ **************创建学生数据表****************** *** /
诠释CreatStudent(学生* Q)
{
INT标志,正
学生的;
N = 0;
而(标志)
{
=(学生)的malloc(如sizeof(学生));
(== NULL)
{
printf的(“失败创建!“);
返回0;
}
printf的(”请输入学号(输入0返回前面的步骤):“);
scanf函数(“%d”,&S->号);
(S-> == 0)
转到ENDP;
(N = S->号) /> {
printf(“请输入学生数量已经存在!\ n”);
转到结束;
}
同时(S->号< 0)
{
getchar函数();
printf的(“\ n学生证不能小于零!”);
printf的(“\ n请输入学校返回数,输入0前面的步骤:“);
scanf的(”%d“的,S->数);
}
printf的(”请输入您的姓名);
scanf的(“%s”时,S->名);
printf(“请输入一个性别男/女:”);
scanf函数(“%S”,S-性);
printf的(请输入语言成绩:“);
scanf的(”%d“,&S->中国);
而(S->中国> 100 | | S->英语<0)
{
getchar函数();
printf的(请输入语言成绩:“);
scanf函数(”%d“的,S->中国);
}
而(S->
printf的(“请输入数学:”);
scanf的(“为%d”,&S->匹配);赛后> 100 | | S->匹配<0){
getchar函数();
的printf(请输入数学:“);
scanf函数(”%d“,& S->匹配);
}
printf的(“请输入英文结果);
scanf的(”%d“,&S->英语);
而( S->英语> 100 | | S->英语<0)
{
getchar函数();
printf的(“请输入英语成绩:”); BR /> scanf函数(“%d”,&S->英语);
}
平均=(S->中国+ S->英语+ S->匹配)/ 3;
N = S->数;
S-> Q->下;
Q->下;
金额+ +;
BR />结尾:printf的(“是否继续输入数据:1/0 \ n”);
scanf的(“%d”,&标志);
} ENDP:printf的(“创建!\ n”);
printf的(“输入%d的学生”,金额);
返回1;}
/ ****************************************** /
/ * ********************的学生,学生数**************** /
学生FindStudent (学生* Q,诠释x)
{
学生* Q;
Q = Q->下;
(q! = NULL && Q->数= X)
Q = Q->下;
(q! = NULL)
回报Q;
其他
返回NULL;
}
/ ******************************************** ********** /
/ **************************学生资料***** ********************* /
诠释ModifStudent(学生* Q,诠释x)
{
INT标志,N;
学生* Q;
Q = Q->下;
(q! = NULL && Q->数= X)
Q = Q->下; BR />(q! = NULL)
{
当(N)
{
printf的(“\ n分数的主题:1。语言英语3数学” );
scanf的(“%d”,&标志);
(标志== 1)
{
getchar函数();
printf的(“\ n请输入语言成绩:“);
scanf函数(”%d“,&Q->中国)
而(Q->中国> 100 | | Q->中国<0) {
getchar函数();
printf的(“\ n请输入的语言成绩:”);
scanf函数(“%d”的,与Q->)}
}
否则,如果(标志== 2)
{
getchar函数();
printf的(“\ n请输入数学: “);
scanf函数(”%d“,&Q->匹配);
而(Q->比赛> 100 | | Q->匹配<0)
{<BR / getchar函数();
printf的(“\ n请重新输入数学:”);
scanf函数(“%d”,&Q->匹配);
} }
其他(标志== 3)
{
getchar函数();
printf的(“\ n请输入英文的结果:”);
scanf函数(“%d”,&Q->英语);
而(Q->英语> 100 | | Q->英语<0)
{
printf的(“\ n请重新英语成绩:“);
scanf的(”为%d“,&Q->英语);
}
}
Q->平均=
scanf函数(“%d”(Q->中国+ Q->中文版+ Q->比赛)/ 3;
printf的(“\ n是否继续对数据进行:1/0 \ n”); ,N);
}
返回1;
}
返回0;}
/ *** ************************************************** * /
/ ************************安排学生资料*************** ******** /
学生(学生*排序* Q,当然)
{
学生* P * Q,* T;
>整型数,中国,英国,全场比赛,得分;
字符名称[10],性别[2];
(Q->下一步== NULL)
{
printf(“请学生没有构造函数表!);
返回NULL;
}
开关(当然)
{
案例1:为(P = Q->未来,P,P = P->)
{
T = P;
为(Q = Q->下,Q,Q = Q->下)
{
(T->中国> = Q->中国)
{
数= T->数;
中国= T->中国;
英语= T->英语
匹配= T->匹配;
得分= T->平均水平;
T->数= Q->数;
T->中国= Q->中国;
T->英语= Q->英语;
T->匹配= Q->匹配;
T->平均= Q->平均水平; ...... /> Q->数=号码;
Q->中国=中国;
Q->英语英语;
Q->匹配匹配;
Q->平均=得分;
使用strcpy(名称,T->名);
使用strcpy(性别,T->性别);
使用strcpy(T->名称,Q->名称); />的strcpy(T->性别,Q->;性);
使用strcpy(Q->名称,姓名);
使用strcpy(Q->性别,性别);吨= Q;
}
}
}
突破;
案例2:为(P = Q-> P,P = P->下) /> {
T = P;
为(Q = Q->下一个Q,Q = Q->下)
(T->英语> = Q->英语)
{
数= T->数;
中国= T->中国;
英语= T->英语;
匹配= T - >匹配;
得分= T->平均水平;
T->数= Q->数;
T->中国= Q->中国;
T->英语= Q->英语;
T->匹配= Q->匹配;
T->平均= Q->平均水平;
Q->数数;
Q-> =中国;
Q->英语英语;
Q->匹配匹配;
Q->平均=得分;
使用strcpy(名称,T- >);
使用strcpy(性别,T->性别);
使用strcpy(T->名称,Q->名称);
使用strcpy(T->性别,Q->性);
使用strcpy(Q->名称,姓名);
Q->性别,性别的strcpy();
T = Q;
}
}
}
突破;
案例3:(P = Q->下,P,P = P->)
{
T = P;
(Q = Q->下,Q,Q = Q->)
{
(T->匹配> = Q->匹配)
{
数= T->号码;
中国= T->中国;
英语= T->英语
匹配= T->匹配;
得分= T->平均;
T->数= Q->数;
T->中国= Q->中国;
T->英语Q->英语;
T->匹配= Q->匹配;
T->平均= Q->平均水平;
Q->数字号码;
Q->中国=中国;
Q->英语英语;
Q->匹配匹配;
Q->平均=得分;
使用strcpy(名称,T->名);
使用strcpy(性别,T - >性);
使用strcpy(T->名称,Q->);
T->性别,Q->性的strcpy();
使用strcpy(Q->名称,名称);
使用strcpy(Q->性别,性别);
T = Q;
}
}
}
BR />
}
回报Q;
}
诠释SaveStudent(学生* Q)
我= 0;
学生* P;
FILE * FP;
字符开放[20];
p = Q->下;
printf的(“请输入的文件路径:“);
scanf的(”%s“的,开放的);
((FP =打开(开放,”W +“))== NULL)
{ /> printf的(“失败”);
返回0;
}
fprintf(FP“|学号\ t |名\ T |性别\ T |语言\ T |数学|英语\ t \ t均分\ t \ n“);
在while(p! = NULL && <量)
{
我+ +;
FWRITE(P,sizeof(学生)的,1,FP);
P = P->下;
/ /与fprintf(FP“|%d \ T |%\吨|%S \ T |%d \ T |%d \ T |%d \ T |%d \吨\ n“,对数,P->名称,P->性,对中国, P->英语,P->匹配,对平均);
}
FCLOSE(FP);
返回1;
}
/ ************************************************* ***************** /
/ ******学生的成绩******************输出******************************************* /
无效打印(学生* Q)
{
学生
(Q-> == NULL)* P;
P = Q;
printf的(“没有学生数据!);
其他
{
printf的(“其结果是:\ n”);
而(P>下!= NULL)
{ /> P = P->下;
printf的(“|学号\ t |名\ T |性别\ t |语言\ t |英语\ T |均分|数学\ t \ t \ n“);
printf的(”|%d \ T |%S \ T |%S \ T |%d \ T |%d \ T |%d \ T |%0.2F \ t | \ N“,对数,P->名称,P->性,P-> P->英语,中国,P->匹配,对平均);
}
}
}
/ ********************************* *********************************************** / < / / *********************************************** ********************************* /
的无效LoadStudent()
{
> INT标志= 1;
字符文件名[20];
学生* P;
FILE * FP;
printf的(“请输入一首曲子的文件路径:“);
scanf的(”%s“,文件名[20]);
((FP =打开(文件名,”R +“))!= NULL)
{ BR /> fscanf(FP,“学生ID H \ T | \ t性别\ t |语言\ t |英语\ T |均分|数学\ t \ t \ n”);
printf的(“学生ID \ T名称\ t性别\ t |语言\ t |英语\ t |数学\ T |均分\吨\ n“);
(标志)
{
p =(学生)的malloc(如sizeof(学生))“
fscanf(FP,”%d个%s%s%d月%d%d月%d“,&P->数,P??->名称,P - >性与P->中国与P->英语,P->匹配,与P-平均)
(P>数== NULL)
标志= 0; ;
其他
{
printf的(“|%d \ T |%S \ T |%S \ T |%d \ T |%D \ T |%d \ T |% D \吨\ n“,对数,P->名称,P->性,P-> P->英语,中国,P->匹配,对平均);
标志1
}
}
}
其他
printf的(“带来了失??败!”)的;
FCLOSE(FP); BR />
}
/ ****************************的******** ***菜单界面********* /
无效菜单()
{
INT标志,N,当然,当然,
学生* Q * P * L;
N = 0;
Q = InitStudent();
开始:
printf的(“\ n \ t \ t \ t学生管理系统(可输入中文字符)\ n”);
printf的(“| ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ | \ n“);
printf的(”输入学生数据\ t \ t \ T2学生资料\ t \ t \ T3查找学生的成绩| \ n“);
printf的(”安排学生的数据\ t \ t \ T5保存学生的成绩\ t \ t \ T6带来的文件\ n“);
printf(”请|学生信息\ t \ t \ t0时刻结束程序\ t \ t \ t | \ n“);
printf的(”| ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ | \ n“);
printf的(”\ n操作:);
scanf的(“%d”的,旗);
开关(标志) /> {
情况下,0:转到结束;中断;
案例1:CreatStudent(Q);
(Q);
转到开始;
BR />案例2:(N = 0)
{
printf(“请输入”查找学生学号);
scanf的(“%d”,&N);
}
肯定ModifStudent(Q,N);
(确保== 1)
printf的(“成功\ n”);
其他...... /> printf的(“失败\ n”);
N = 0;
转到开始
案例3:而(N = 0)
{ /> printf的(“请输入”查找学生学号:“);
scanf的(”%d“,&N);
}
P = FindStudent(Q,N); BR />(p! = NULL)
{
printf的(“\ n查询结果:\ n”);
printf的(“学生ID \ T |名称\ T |性别\ T |语言\ T |英语\ T |数学\ T |均分\ t | \ n“);
printf的(”|%d \ T |%S \ T |%S \ T |%e \ T |%d \ T |%d \ T |%d \吨\ n“,对数,P->名称,P->性,对中国,对英语,P->全场比赛,对平均);
}
其他
printf的(“查询失败\ n”);
N = 0;的
转到开始; BR />
案例4:printf的(“请输入一个整理(输入0返回到上一步)\ n1的语言英语3。数学:”);
scanf的(“为%d“,&课程);
(当然== 0)
转到开始;
其他
{
L =排序(Q,课程); BR />(L! = NULL)
印刷(L);}
转到开始;
案例5:SaveStudent(Q);
转到开始;
案例6:LoadStudent();
转到开始;
案例7:打印(Q);
转到开始;}
结束:输出(“\ n \ t \ t \ t \ t学生管理系统\ n”;};
printf的(“| ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ | \ n“);
输出(输入学生数据\ t \ t \ T2学生资料\ t \ t \ T3查找学生的成绩| \ n”); BR /> printf的(“| 0退出程序\ n”);
printf的(“| ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ | \ n“);
}
/ ********************************** *结束************** /
/ **** ************************************************* /
无效的主要()
{
菜单();
}
#包括
包括中
/ ********定义学生结构体**** **** /
{
整型数;
字符名称[10];
炭性[4];
诠释中国typedef结构链接;
诠释英语;
诠释匹配;
持股量平均水平;
结构链接*下;
}学生;
整型量= 0 ;/ /记录学生数
/ ***************************** /
/ ******* ****初始化学生表************* /
学生InitStudent()
{
学生* Q;
Q = (学生)的malloc(如sizeof(学生));
(Q! = NULL)
{
Q-> = NULL;
回报Q
}
其他
返回NULL;
}
/ *************************** ******** /
/ **************创建学生数据表****************** *** /
诠释CreatStudent(学生* Q)
{
INT标志,正
学生的;
N = 0;
而(标志)
{
=(学生)的malloc(如sizeof(学生));
(== NULL)
{
printf的(“失败创建!“);
返回0;
}
printf的(”请输入学号(输入0返回前面的步骤):“);
scanf函数(“%d”,&S->号);
(S-> == 0)
转到ENDP;
(N = S->号) /> {
printf(“请输入学生数量已经存在!\ n”);
转到结束;
}
同时(S->号< 0)
{
getchar函数();
printf的(“\ n学生证不能小于零!”);
printf的(“\ n请输入学校返回数,输入0前面的步骤:“);
scanf的(”%d“的,S->数);
}
printf的(”请输入您的姓名);
scanf的(“%s”时,S->名);
printf(“请输入一个性别男/女:”);
scanf函数(“%S”,S-性);
printf的(请输入语言成绩:“);
scanf的(”%d“,&S->中国);
而(S->中国> 100 | | S->英语<0)
{
getchar函数();
printf的(请输入语言成绩:“);
scanf函数(”%d“的,S->中国);
}
而(S->
printf的(“请输入数学:”);
scanf的(“为%d”,&S->匹配);赛后> 100 | | S->匹配<0){
getchar函数();
的printf(请输入数学:“);
scanf函数(”%d“,& S->匹配);
}
printf的(“请输入英文结果);
scanf的(”%d“,&S->英语);
而( S->英语> 100 | | S->英语<0)
{
getchar函数();
printf的(“请输入英语成绩:”); BR /> scanf函数(“%d”,&S->英语);
}
平均=(S->中国+ S->英语+ S->匹配)/ 3;
N = S->数;
S-> Q->下;
Q->下;
金额+ +;
BR />结尾:printf的(“是否继续输入数据:1/0 \ n”);
scanf的(“%d”,&标志);
} ENDP:printf的(“创建!\ n”);
printf的(“输入%d的学生”,金额);
返回1;}
/ ****************************************** /
/ * ********************的学生,学生数**************** /
学生FindStudent (学生* Q,诠释x)
{
学生* Q;
Q = Q->下;
(q! = NULL && Q->数= X)
Q = Q->下;
(q! = NULL)
回报Q;
其他
返回NULL;
}
/ ******************************************** ********** /
/ **************************学生资料***** ********************* /
诠释ModifStudent(学生* Q,诠释x)
{
INT标志,N;
学生* Q;
Q = Q->下;
(q! = NULL && Q->数= X)
Q = Q->下; BR />(q! = NULL)
{
当(N)
{
printf的(“\ n分数的主题:1。语言英语3数学” );
scanf的(“%d”,&标志);
(标志== 1)
{
getchar函数();
printf的(“\ n请输入语言成绩:“);
scanf函数(”%d“,&Q->中国)
而(Q->中国> 100 | | Q->中国<0) {
getchar函数();
printf的(“\ n请输入的语言成绩:”);
scanf函数(“%d”的,与Q->)}
}
否则,如果(标志== 2)
{
getchar函数();
printf的(“\ n请输入数学: “);
scanf函数(”%d“,&Q->匹配);
而(Q->比赛> 100 | | Q->匹配<0)
{<BR / getchar函数();
printf的(“\ n请重新输入数学:”);
scanf函数(“%d”,&Q->匹配);
} }
其他(标志== 3)
{
getchar函数();
printf的(“\ n请输入英文的结果:”);
scanf函数(“%d”,&Q->英语);
而(Q->英语> 100 | | Q->英语<0)
{
printf的(“\ n请重新英语成绩:“);
scanf的(”为%d“,&Q->英语);
}
}
Q->平均=
scanf函数(“%d”(Q->中国+ Q->中文版+ Q->比赛)/ 3;
printf的(“\ n是否继续对数据进行:1/0 \ n”); ,N);
}
返回1;
}
返回0;}
/ *** ************************************************** * /
/ ************************安排学生资料*************** ******** /
学生(学生*排序* Q,当然)
{
学生* P * Q,* T;
>整型数,中国,英国,全场比赛,得分;
字符名称[10],性别[2];
(Q->下一步== NULL)
{
printf(“请学生没有构造函数表!);
返回NULL;
}
开关(当然)
{
案例1:为(P = Q->未来,P,P = P->)
{
T = P;
为(Q = Q->下,Q,Q = Q->下)
{
(T->中国> = Q->中国)
{
数= T->数;
中国= T->中国;
英语= T->英语
匹配= T->匹配;
得分= T->平均水平;
T->数= Q->数;
T->中国= Q->中国;
T->英语= Q->英语;
T->匹配= Q->匹配;
T->平均= Q->平均水平; ...... /> Q->数=号码;
Q->中国=中国;
Q->英语英语;
Q->匹配匹配;
Q->平均=得分;
使用strcpy(名称,T->名);
使用strcpy(性别,T->性别);
使用strcpy(T->名称,Q->名称); />的strcpy(T->性别,Q->;性);
使用strcpy(Q->名称,姓名);
使用strcpy(Q->性别,性别);吨= Q;
}
}
}
突破;
案例2:为(P = Q-> P,P = P->下) /> {
T = P;
为(Q = Q->下一个Q,Q = Q->下)
(T->英语> = Q->英语)
{
数= T->数;
中国= T->中国;
英语= T->英语;
匹配= T - >匹配;
得分= T->平均水平;
T->数= Q->数;
T->中国= Q->中国;
T->英语= Q->英语;
T->匹配= Q->匹配;
T->平均= Q->平均水平;
Q->数数;
Q-> =中国;
Q->英语英语;
Q->匹配匹配;
Q->平均=得分;
使用strcpy(名称,T- >);
使用strcpy(性别,T->性别);
使用strcpy(T->名称,Q->名称);
使用strcpy(T->性别,Q->性);
使用strcpy(Q->名称,姓名);
Q->性别,性别的strcpy();
T = Q;
}
}
}
突破;
案例3:(P = Q->下,P,P = P->)
{
T = P;
(Q = Q->下,Q,Q = Q->)
{
(T->匹配> = Q->匹配)
{
数= T->号码;
中国= T->中国;
英语= T->英语
匹配= T->匹配;
得分= T->平均;
T->数= Q->数;
T->中国= Q->中国;
T->英语Q->英语;
T->匹配= Q->匹配;
T->平均= Q->平均水平;
Q->数字号码;
Q->中国=中国;
Q->英语英语;
Q->匹配匹配;
Q->平均=得分;
使用strcpy(名称,T->名);
使用strcpy(性别,T - >性);
使用strcpy(T->名称,Q->);
T->性别,Q->性的strcpy();
使用strcpy(Q->名称,名称);
使用strcpy(Q->性别,性别);
T = Q;
}
}
}
BR />
}
回报Q;
}
诠释SaveStudent(学生* Q)
我= 0;
学生* P;
FILE * FP;
字符开放[20];
p = Q->下;
printf的(“请输入的文件路径:“);
scanf的(”%s“的,开放的);
((FP =打开(开放,”W +“))== NULL)
{ /> printf的(“失败”);
返回0;
}
fprintf(FP“|学号\ t |名\ T |性别\ T |语言\ T |数学|英语\ t \ t均分\ t \ n“);
在while(p! = NULL && <量)
{
我+ +;
FWRITE(P,sizeof(学生)的,1,FP);
P = P->下;
/ /与fprintf(FP“|%d \ T |%\吨|%S \ T |%d \ T |%d \ T |%d \ T |%d \吨\ n“,对数,P->名称,P->性,对中国, P->英语,P->匹配,对平均);
}
FCLOSE(FP);
返回1;
}
/ ************************************************* ***************** /
/ ******学生的成绩******************输出******************************************* /
无效打印(学生* Q)
{
学生
(Q-> == NULL)* P;
P = Q;
printf的(“没有学生数据!);
其他
{
printf的(“其结果是:\ n”);
而(P>下!= NULL)
{ /> P = P->下;
printf的(“|学号\ t |名\ T |性别\ t |语言\ t |英语\ T |均分|数学\ t \ t \ n“);
printf的(”|%d \ T |%S \ T |%S \ T |%d \ T |%d \ T |%d \ T |%0.2F \ t | \ N“,对数,P->名称,P->性,P-> P->英语,中国,P->匹配,对平均);
}
}
}
/ ********************************* *********************************************** / < / / *********************************************** ********************************* /
的无效LoadStudent()
{
> INT标志= 1;
字符文件名[20];
学生* P;
FILE * FP;
printf的(“请输入一首曲子的文件路径:“);
scanf的(”%s“,文件名[20]);
((FP =打开(文件名,”R +“))!= NULL)
{ BR /> fscanf(FP,“学生ID H \ T | \ t性别\ t |语言\ t |英语\ T |均分|数学\ t \ t \ n”);
printf的(“学生ID \ T名称\ t性别\ t |语言\ t |英语\ t |数学\ T |均分\吨\ n“);
(标志)
{
p =(学生)的malloc(如sizeof(学生))“
fscanf(FP,”%d个%s%s%d月%d%d月%d“,&P->数,P??->名称,P - >性与P->中国与P->英语,P->匹配,与P-平均)
(P>数== NULL)
标志= 0; ;
其他
{
printf的(“|%d \ T |%S \ T |%S \ T |%d \ T |%D \ T |%d \ T |% D \吨\ n“,对数,P->名称,P->性,P-> P->英语,中国,P->匹配,对平均);
标志1
}
}
}
其他
printf的(“带来了失??败!”)的;
FCLOSE(FP); BR />
}
/ ****************************的******** ***菜单界面********* /
无效菜单()
{
INT标志,N,当然,当然,
学生* Q * P * L;
N = 0;
Q = InitStudent();
开始:
printf的(“\ n \ t \ t \ t学生管理系统(可输入中文字符)\ n”);
printf的(“| ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ | \ n“);
printf的(”输入学生数据\ t \ t \ T2学生资料\ t \ t \ T3查找学生的成绩| \ n“);
printf的(”安排学生的数据\ t \ t \ T5保存学生的成绩\ t \ t \ T6带来的文件\ n“);
printf(”请|学生信息\ t \ t \ t0时刻结束程序\ t \ t \ t | \ n“);
printf的(”| ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ | \ n“);
printf的(”\ n操作:);
scanf的(“%d”的,旗);
开关(标志) /> {
情况下,0:转到结束;中断;
案例1:CreatStudent(Q);
(Q);
转到开始;
BR />案例2:(N = 0)
{
printf(“请输入”查找学生学号);
scanf的(“%d”,&N);
}
肯定ModifStudent(Q,N);
(确保== 1)
printf的(“成功\ n”);
其他...... /> printf的(“失败\ n”);
N = 0;
转到开始
案例3:而(N = 0)
{ /> printf的(“请输入”查找学生学号:“);
scanf的(”%d“,&N);
}
P = FindStudent(Q,N); BR />(p! = NULL)
{
printf的(“\ n查询结果:\ n”);
printf的(“学生ID \ T |名称\ T |性别\ T |语言\ T |英语\ T |数学\ T |均分\ t | \ n“);
printf的(”|%d \ T |%S \ T |%S \ T |%e \ T |%d \ T |%d \ T |%d \吨\ n“,对数,P->名称,P->性,对中国,对英语,P->全场比赛,对平均);
}
其他
printf的(“查询失败\ n”);
N = 0;的
转到开始; BR />
案例4:printf的(“请输入一个整理(输入0返回到上一步)\ n1的语言英语3。数学:”);
scanf的(“为%d“,&课程);
(当然== 0)
转到开始;
其他
{
L =排序(Q,课程); BR />(L! = NULL)
印刷(L);}
转到开始;
案例5:SaveStudent(Q);
转到开始;
案例6:LoadStudent();
转到开始;
案例7:打印(Q);
转到开始;}
结束:输出(“\ n \ t \ t \ t \ t学生管理系统\ n”;};
printf的(“| ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ | \ n“);
输出(输入学生数据\ t \ t \ T2学生资料\ t \ t \ T3查找学生的成绩| \ n”); BR /> printf的(“| 0退出程序\ n”);
printf的(“| ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ | \ n“);
}
/ ********************************** *结束************** /
/ **** ************************************************* /
无效的主要()
{
菜单();
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
↑你是要用C语言写的还是C++写的?
还有学生信息包括哪些?
其实这种管理系统并不是很难,分模块做会比较简单
还有学生信息包括哪些?
其实这种管理系统并不是很难,分模块做会比较简单
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
加油。我以前学过。但现在不记得了。祝你成功。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询