教务信息管理系统.docx

上传人:b****4 文档编号:3734768 上传时间:2022-11-25 格式:DOCX 页数:15 大小:19.19KB
下载 相关 举报
教务信息管理系统.docx_第1页
第1页 / 共15页
教务信息管理系统.docx_第2页
第2页 / 共15页
教务信息管理系统.docx_第3页
第3页 / 共15页
教务信息管理系统.docx_第4页
第4页 / 共15页
教务信息管理系统.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

教务信息管理系统.docx

《教务信息管理系统.docx》由会员分享,可在线阅读,更多相关《教务信息管理系统.docx(15页珍藏版)》请在冰豆网上搜索。

教务信息管理系统.docx

教务信息管理系统

包括:

学生基本信息,如学号,姓名,性别,年龄,等;2.学生选修课程基本信息,包括课程编号,课程名称,考试成绩,平时成绩,综合成绩,学分,重修否,若重修,需考虑重修学期,重修成绩,并考虑多次重修情况。

只能用C语言,要有用户界面,必须用结构体和链表等数据结构。

/*-------------1-------------*/

#include

#include/*头文件*/

#include

#include

#include

#include

#include

#include

#defineNULL0

#defineESC0x001b/*退出*/

#defineF10x3b00/*查看帮助信息,调用HelpMassage()函数*/

#defineF20x3c00/*输入学生成绩*/

#defineF30x3d00/*按学号查找*/

#defineF40x3e00/*按姓名查找*/

#defineF50x3f00/*列出所有学生成绩*/

#defineF60x4000/*统计*/

structstuType/*定义结构体变量*/

{

charNO[11];/*学号长度为10*/

charXM[10];

charAGE[2];/*年龄长度为2*/

floatCJ[4];/*包含4门成绩*/

};

/*-------------2-------------*/

intJY_NO(char*stu_num,FILE*fp)/*检验学号的正确性*/

{structstuTypestud;

intNO;

char*p=stu_num;

if(strcmp(stu_num,"#")==0)return1;/*若输入"#"返回真值,不再循环输入*/

while(*p!

='\0')/*学号必须是数字,否则返回重新输入*/

{NO=(int)*p;

if(NO<48||NO>57)

{puts("\t\tUndefinedSN!

Pleaseinputagain!

\n");/*非法学号!

请重新输入!

*/

return0;

}

elsep++;/*指针加1*/

}

if(strlen(stu_num)!

=10)/*若学号长度不为10,则返回重新输入*/

{puts("\t\tLengthofSNError!

\n");/*学号长度不对*/

return0;

}

if(getchar()!

='\n')/*若学号后面的字符不是回车符,则学号长度大于10*/

{printf("\t\tThelengthofSNshouldmorethan10!

Pleaseinputagain!

\n");/*学号长度大于10个,请重新输入*/

do{}while(getchar()!

='\n');/*用getchar接收多余的字符*/

return0;

}

else

{

rewind(fp);/*使文件指针指向头*/

while(!

feof(fp))/*若文件指针未到结尾,就继续执行下面的循环,feof遇到文件结束符返回非零值,否则返回0*/

{fread(&stud,sizeof(structstuType),1,fp);/*读取一定长度的数据*/

if(strcmp(stu_num,stud.NO)==0)/*学号的唯一性*/

{printf("\t\tRepeatSN,Pleaseinputagain!

\n");/*学号重复!

请重新输入*/

printf("\t\tTheRecordofthisstudent:

\n");/*该学生成绩如下*/

printf("\t\tChinese:

%.1f\n",stud.CJ[0]);/*语文*/

printf("\t\tMath:

%.1f\n",stud.CJ[1]);/*数学*/

printf("\t\tEnglish:

%.1f\n",stud.CJ[2]);/*英语*/

printf("\t\tTotal:

%.1f\n",stud.CJ[3]);/*总评*/

return0;

}

}

}

return1;

}

/*-------------3-------------*/

intJY_NO2(char*stu_num)/*检验学号*/

{intNO;

char*p=stu_num;

if(strcmp(stu_num,"#")==0)return1;/*若输入“#”,则返回真值结束*/

if(strlen(stu_num)!

=10)/*学号长度不为10*/

{puts("\t\tLengthofSNError!

\n");/*学号长度不对*/

return0;

}

while(*p!

='\0')/*学号必须用数字,若包含有字母,或其它字符则返回假值重新输入*/

{NO=(int)*p;

if(NO<48||NO>57)

{puts("\t\tUndefinedSN!

Pleaseinputagain!

\n");/*非法学号!

请重新输入*/

return0;

}

elsep++;/*指针加1*/

}

if(getchar()!

='\n')/*检验学号长度是否大于10,并把多余的字符去掉*/

{printf("\t\tThelengthofSNshouldmorethan10!

Pleaseinputagain!

\n");/*学号长度大于10个,请重新输入*/

do{}while(getchar()!

='\n');

return0;

}

return1;

}

/*-------------4-------------*/

intJY_XM(char*stu_XM)/*检验姓名*/

{intPD;

char*p;

p=stu_XM;

while(*p!

='\0')/*姓名只能用英文*/

{

PD=(int)*p;

if(PD<0)

{puts("\t\tNameshoulduseEnglish,Pleaseinputagain!

\n");/*姓名只能用英文请重新输入*/

return0;

}

elsep++;/*使指针加1,指向下一汉字*/

}

if(getchar()!

='\n')/*姓名长度不得大于5个*/

{printf("\t\tThelengthofNameismorethan5,Pleaseinputagain!

\n");/*姓名长度大于5个请重新输入*/

do{}while(getchar()!

='\n');

return0;

}

return1;/*字符串全为汉字返回真*/

}

 

/*-------------5-------------*/

intJY_AGE(floatstu_AGE)/*年龄只能在0~100之间*/

{

if(stu_AGE<0||stu_AGE>100)

{printf("\t\tInputError!

Recordshouldbetween0~100!

\n");/*输入错误,成绩只能在0~100之间*/

return0;

}

return1;

}

/*-------------6-------------*/

intJY_CJ(floatstu_CJ)/*学生成绩只能在0~100之间*/

{

if(stu_CJ<0||stu_CJ>100)

{printf("\t\tInputError!

Recordshouldbetween0~100!

\n");/*输入错误,成绩只能在0~100之间*/

return0;

}

return1;

}

/*-------------7-------------*/

voidCreatFile()/*输入文件*/

{FILE*fp;

structstuTypestu,stu0={"","",};/*对stu0xianfuzhi*/

fp=fopen("stu.dat","wb+");/*打开或创建一个二进制文件,打开时将原来的内容删除*/

if(fp==NULL)

{printf("\t\tFileopensError!

\n\t\t\tPressAnykeyback...");/*文件打开失败,按任意键返回*/

getch();

return;

}

else

{while

(1)

{stu=stu0;

do{printf("\n\t\tPleaseinputSN:

");/*输入学号并检验其正确性*/

scanf("%10s",stu.NO);

}while(!

JY_NO(stu.NO,fp));

if(strcmp(stu.NO,"#")==0)break;

do{printf("\n\t\tPleaseinputName:

");/*输入姓名并检验其正确性*/

scanf("%10s",stu.XM);

}while(!

JY_XM(stu.XM));

do{printf("\n\t\tPleaseinputage:

");/*输入年龄绩并检验其正确性*/

scanf("%f",&stu.AGE);

}while(!

JY_AGE(stu.AGE[0]));

do{printf("\n\t\tPleaseinputrecordofChinese:

");/*输入成绩并检验其正确性*/

scanf("%f",&stu.CJ[0]);

}while(!

JY_CJ(stu.CJ[0]));

do{printf("\n\t\tPleaseinputrecordofMath:

");/*同上*/

scanf("%f",&stu.CJ[1]);

}while(!

JY_CJ(stu.CJ[1]));

do{printf("\n\t\tPleaseinputrecordofEnglish:

");

scanf("%f",&stu.CJ[2]);

}while(!

JY_CJ(stu.CJ[2]));

do{printf("\n\t\tPleaseinputrecordofTotal:

");

scanf("%f",&stu.CJ[3]);

}while(!

JY_CJ(stu.CJ[3]));

fwrite(&stu,sizeof(structstuType),1,fp);/*写文件*/

}

}

fclose(fp);/*关闭文件*/

}

/*-------------8-------------*/

voidSearch_Xuehao()/*按学号查询*/

{FILE*fp;

intflag;

structstuTypestu,stud;

fp=fopen("stu.dat","rb");

if(fp==NULL)/*若文件打不开则输出下面的信息*/

{printf("\t\tFileopensError!

\n\t\t\tPressAnykeyback...");

getch();

return;

}

else

{do{puts("\n\t\tPress\"#\"orsearch");

do{printf("\t\tPleaseinputtheSNwhatyouwant:

");

scanf("%10s",stu.NO);

}while(!

JY_NO2(stu.NO));

if(strcmp(stu.NO,"#")==0)break;/*若输入“#”则结束循环*/

flag=0;

rewind(fp);

while(fread(&stud,sizeof(structstuType),1,fp))/*检查文件指针结束*/

{if(strcmp(stu.NO,stud.NO)==0)/*比较学号*/

{puts("\t\tTheRecordofthisstudent:

");

printf("\t\tSN:

%s\n",stud.NO);

printf("\t\tName:

%s\n",stud.XM);

printf("\t\tAGE:

%.1f\n",stud.AGE[0]);

printf("\t\tChinese:

%.1f\n",stud.CJ[0]);

printf("\t\tMath:

%.1f\n",stud.CJ[1]);

printf("\t\tEnglish:

%.1f\n",stud.CJ[2]);

printf("\t\tTotal:

%.1f\n",stud.CJ[3]);

flag=1;/*记录学号是否查到*/

}

}

if(flag==0)puts("\t\tUndefinedSN");

}while(strcmp(stu.NO,"#")!

=0);

 

}

fclose(fp);/*关闭文件*/

}

/*-------------9-------------*/

voidSearch_Xingming()/*按姓名查找*/

{FILE*fp;

intflag=0;

structstuTypestu,stud;

fp=fopen("stu.dat","rb");

if(fp==NULL)

{printf("\t\tFileopensError!

\n\t\tPressAnykeyback...");

getch();

return;

}

else

{do{

do{printf("\t\tPleaseinputtheNameoftheStudentwhatyouwant:

");

scanf("%10s",stu.XM);

}while(!

JY_XM(stu.XM));

rewind(fp);/*文件指针指向头*/

while(fread(&stud,sizeof(structstuType),1,fp))

{if(strcmp(stu.XM,stud.XM)==0)/*比较姓名是否相同*/

{puts("\t\tThenameoftheStudentis:

");

printf("\t\tSN:

%s\n",stud.NO);

printf("\t\tName:

%s\n",stud.XM);

printf("\t\tAGE:

%.1f\n",stud.AGE[0]);

printf("\t\tChinese:

%.1f\n",stud.CJ[0]);

printf("\t\tMath:

%.1f\n",stud.CJ[1]);

printf("\t\tEnglish:

%.1f\n",stud.CJ[2]);

printf("\t\tTotal:

%.1f\n",stud.CJ[3]);

flag=1;/*记录姓名是否被查到*/

}

}

if(flag==0)puts("\n\t\tUndefinedName!

");

puts("\t\tContinue?

(y--yes,Elsekeyback)?

");

}while(getch()=='y');

}

fclose(fp);

/*puts("\t\tPressAnykeytocontinue...");*/

/*getch();*/

 

}

/*-------------10-------------*/

intListFile(void)/*输出文件,列出所有学生成绩*/

{FILE*fp;

intREC=0;/*记录学生人数*/

structstuTypestu;

fp=fopen("stu.dat","rb");

if(fp==NULL)

{printf("\t\tFileopensError!

\n\t\tPressAnykeyback...");

getch();

return1;

}

else{printf("\t\tRecordsoftheStudents:

\n");

printf("\t\tSN\t\tName\tChinese\tMath\tEnglish\tTotal\n");

rewind(fp);

while(fread(&stu,sizeof(structstuType),1,fp))

{/*每读取一个长度的数据就输出*/

printf("\t\t%s",stu.NO);

printf("\t%s",stu.XM);

printf("\t%.1f",stu.AGE);

printf("\t%.1f",stu.CJ[0]);

printf("\t%.1f",stu.CJ[1]);

printf("\t%.1f",stu.CJ[2]);

printf("\t%.1f",stu.CJ[3]);

printf("\n");

REC++;

if(REC%20==0)/*20个学生成绩,停一下*/

{printf("\t\tPressAnykeytocontinue...\n");

getch();

}

}

}

fclose(fp);/*关闭文件*/

printf("\t\tContinue...");

getch();

}

/*-------------11-------------*/

voidStatistics()/*统计及格和优秀人数*/

{FILE*fp;

intREC=0,unpass[4]={0},good[4]={0};/*REC--记录个数,即人数,unpass--重修人数,good--优秀人数*/

floathighest[4]={0},score[4]={0};/*highest--最高分,score--总分*/

structstuTypestu;

fp=fopen("stu.dat","rb");

if(fp==NULL)

{printf("\t\tFileopensError!

\n\t\tPressAnykeyback...");

getch();

return;

}

else{rewind(fp);

while(fread(&stu,sizeof(structstuType),1,fp))

{REC++;

score[0]=score[0]+stu.CJ[0];/*语文*/

if(stu.CJ[0]<=60)unpass[0]++;

if(stu.CJ[0]>=80)good[0]++;

if(highest[0]

score[1]=score[1]+stu.CJ[1];/*数学*/

if(stu.CJ[1]<=60)unpass[1]++;

if(stu.CJ[1]>=80)good[1]++;

if(highest[1]

score[2]=score[2]+stu.CJ[2];/*英语*/

if(stu.CJ[2]<=60)unpass[2]++;

if(stu.CJ[2]>=80)good[2]++;

if(highest[2]

score[3]=score[3]+stu.CJ[3];/*总评*/

if(stu.CJ[3]<=60)unpass[3]++;

if(stu.CJ[3]<=80)good[3]++;

if(highest[3]

}

if(REC==0)/*可以防止记录为0是REC作除数而造成的错误*/

{printf("\t\tYoudid'tinputtheName!

PressAnykeyback...");

getch();

return;

}

else{

printf("\tChinese\tMath\tEnglish\tTotal\n");/*输出统计信息*/

printf("\tAverage:

%.1f\t%.1f\t%.1f\t\t%.1f\n",score[0]/REC,score[1]/REC,score[2]/REC,score[3]/REC);

printf("\tToprecord:

%.1f\t%.1f\t%.1f\t\t%.1f\n",highest[0],highest[1],highest[2],highest[3]);

printf("\tNumberofgoodstudents:

%d\t\t%d\t%d\t\t%d\n",good[0],good[1],good[2],good[3]);

printf("\tNumberofunpassedstudents:

%d\t\t%d\t%d\t\t%d\n",unpass[0],unpass[1],unpass[2],unpass[3]);

}

}

fclose(fp);

printf("\n\t\t\tPressAnykeytocontinue...");

getch();

}

 

/*-------------12-------------*/

voidHelpMessage()

{clrscr();

printf("\n\n\n\n\nchixitongshilaoshisuobuzhizuoyebianzhiercheng,gaixitongjuyoucunchuxueshengshuju,anxuehao,xingmingchaxun,liechuxueshengchengjihetongjigongneng.\n\nshiyongfangfa:

xitongshulushujuhou,jiangzaidangqianmuluzhongjianliyigemingweistu.datwenjian,yongyubaocunshuludeshuju.xuehaoshulu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1