C语言学生信息管理系统代码.docx
- 文档编号:3913265
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:21
- 大小:118.58KB
C语言学生信息管理系统代码.docx
《C语言学生信息管理系统代码.docx》由会员分享,可在线阅读,更多相关《C语言学生信息管理系统代码.docx(21页珍藏版)》请在冰点文库上搜索。
C语言学生信息管理系统代码
XX师大学
实验报告
课程C语言课程设计
任课老师
学号
姓名
院系
年月至年月
注意事项
1.使用C语言,代码已在VS中运行过,可以运行(主要功能都能实现)
2.需求分析,前期设计都没写,请同学们自己完成
3.附带有student,txt文件,将其移动至F:
\stu文件夹中,运行程序时可直接选6号指令,从中读取学生信息。
如果没有该txt文件(可能会在上传过程中丢失),仍需在F盘下新建stu文件夹,各文件将保存于该文件夹中
4.按word格式输出尚未设计好,有兴趣可自己完成
5.按excel格式输出,完成后需自行调整相应列宽(拉宽),使容美观
6.从下一页开始,复制余下全文,粘贴即可运行
#include〈stdio.h>
ttdefineM30
//班级总人数,暂定30,可修改
defineN3//课程成绩门数,暂定3,可修改
intinputstu(structstudentstu[].intm,intn):
voidprinstu(structstudentstu[].intm,intn):
intsortsno(structstudentstu[].intm):
intsortage(structstudentstu[],intm):
intsortmark(structstudentstu[],intsm[],intm,intn);voidprinsort(structstudentstu[],intm,intn):
intwritefile(structstudentstu[],FILE*fp,intm,intn):
intreadfile(structstudentstu[],FILE*fp,intm,intn);intfprinword(structstudentstuE],FILE*fp,intm,intn);intfprinexcel(structstudentstu[],FILE*fptint叫intn):
intseachsno(structstudentstud.longsno,intm,intn):
intseachsruime(stnjctstudentstu[],charsname[],intm,intn):
intdesno(structstudentstu[],longsno,intm);
intdesname(structstudentstu[],charsname[],intm):
intcutin(structstudentstu[]fintm.intn):
structstudent
intturn;
longsno;
charsname[20]:
charsgrade[10]:
charsbirth[10]:
intsmark[N]:
};
voidmain()
inti=0;
intconi=0;
intcon2=0;
longsno;
charsname[20]:
FILE*fp=NULL;structstudentstu[M]:
for(i=0;i stu[i]・turn=T; } do{ switch(coni)case1: { printf(H\n***注意! ***\nw); printfC继续进行输入会覆盖原数据! ! ! \n"); printf("第一次使用本软件或需重新写信息请继续: \n”); printf("1继续\n"); printf("-1返回\n"): scanf(n%dn,&con2); if(con2==1) { inputstu(stu,M,N): } break; } case2: prinstu(stu,M,N): break; case3: printf(w1按学号顺序进行排序\n-);printfC2按年龄从小到大排序\n");printfC3按总成绩由高到低排序\n”);printf("-1返回上一级菜单\nn); scanf("%cT,&con2);switch(con2)case1: { sortsno(stu,M);con2=0; break; case2: //sortage(stu,M);break; } case3: { intsm[M]; sortmark(stu,sm,M,N);break; } case-1: break; default: printf("二级命令输入错误,请重试! \n・);fflush(stdin); } }while(con2! =-1): break; } case4: prinsort(stu,M,N): break; case5: writefile(stu,fp,M.N): break; case6: readfile(stuffp,M,N): break; case7: printf(”\n************************************************\n"); printf(n1 printf(n2 将学生信息输出为txt文档,路径: F: \stu\student.txt\nn);将学生信息输出为word文档,路径: F: \stu\student.doc \n"); printf(n3 将学生信息输出为excel文档,路径: F: \stu\stiident.xls \n"); printf(n-1 返回上一级菜单\n・); scanf(%d", &con2); switch(con2) { case1: { break; } case2: {fprinword(stu,fp,MtN);break; } case3: fpi'inexcel(stu,fp,M,N): break; } } break; case8: do printf(**\n*******************************\n\nu);printf("printf("printf("printf("printf(" printf("-1scanfswitch(con2) case1: { printf(B请输入单个学号: \n");scanf&sno); seachsno(stu,snotM,N);break; case2: { printf(”请输入单个学生: \n");scanf("%20s”,sname);seachsname(stu,sname,M,N): break; } case3: { printf(B请输入单个学号: \n");scanf("%10Id”.&sno);desno(stu,sno,M): break; case4: { printfC请输入单个学生: \n");scanf(.sname);desname(stu,sname,M);break; } case5: {cutin(stufM,N): break; } default: { printfC"二级指令错误,请重新输入! \十);break; } } )while(con2! =-1); case-l: printf("感使用本系统! \n");break;default: printfC一级命令输入错误,请重试”); fflush(stdin); break; } }while(coni! =-1); } //输入学生的基本信息 intinputstu(structstudentstu[],intm,intn) ( inti=0; intj=0; printfC请按说明输入学生信息: \n”); while(i { printfC请输入第%d个学生的学号,,班级,出生日期: \n",i+1); scanf(,'%101d%20s%10s%10sF,,&stu[i]・sno,&stu〔i]・sname,&stu[i]・sgrade,&stu〔i]・sbirth); for(j=0;j { printf("请输入第%d个学生的第%d门成绩\n",i+l,j+l);scanf(w%d&stu[i]・smark[j]); } i++; } returni; 〃屏慕输出学生信息 voidprinstu(structstudentstu[],intm,intn)( inti=0; printf学号 成绩3\nw); whi1e(i { if(stu[i].sno=0){ i++; continue; } printf(n%101d%20s%10s%10sstu[i].sno,stu[i].sname,stu[i].sgrade, stu[i]・sbirth); for(j=0;j { printf%dstu[i].smarktj]); } printf("\n"); i++; //按学号顺序进行排序 intsortsno(structstudentstu[],intm) inti=0;intj=0;ints;longsno[M]: for(i=0;i { sno[i]=stu[i]・sno; } for(i=0;i { for(j=i+1;j { s=sno[i]: if(s>sno[j]) { s=sno[j]; sno[j]=sno[i];sno[i]=s; } } } for(i=0;i { for(j=0;j { if(stu[j]・sno==sno[i]) { stu[j]・turn=i; } } } returni; } 〃按年龄对学生进行排序; intsortage(structstudentstu[].intm) ( } 〃按总成绩由高到低排序 intsortmark(structstudentstu[],intsm[],intm,intn)( inti=0; intj=0; ints=0; for(i=0;i sm[i]=0; } for(i=0;i { for(j=0;j { sm[i]=sm[i]+stu[i]・smarkEj]: } } for(i=0;i { for(j二i+1;j { s=sm[i]: if(s } sm[s]=0; stu[s]・turn=i; } } returni; } 〃按顺序屏幕输出 voidprinsort(structstudentstu[],intm.intn) inti=0; intj=0; intk=0; printf学号 成绩3\nw); while(k { if(stu[ij.sno=0) { continue; } for(i=0;i { printf(u%101d%20s%10s%10sstu[i].sno,stu[i].sname, stu[i]・sgrade,stu[i]・sbirth); for(j=0;j { printf(w%d",stu[i].smarkEj]): } printf(H\n"); } } k++; } } //写数据进二进制文件 intwritefile(structstudentstud,FILE*fp,intm,intn) { inti=1: fp=fopen(nf: WstuWstudent.txt","wb"); if(fp==NULL) { printf("打开文件失败! \n"): exit(0); } fwrite(&stu[0],sizeof(structstudent)fp); i=fclose(fp); returni; } 〃从二进制中读取学生信息 intreadfile(structstudentstu[],FILE*fp,intm,intn) ( inti=1; fp=fopen(nf: WstuWstudent.txt","rb"); if(fp==NULL) { printf("打开文件失败! \n"): exit(0); } fread(&stu[0],sizeof(structstudent),m,fp); i=fclose(fp); returni; //将学生信息写入word文档,保存于F: \stu\student.doc intfprinword(structstudentstud,FILE*fp,intm,intn) { inti=0; intj=0; fp=fopen(*'F: WstuWstudent.docJW); if(fp==NULL) { printf("文件打开失败! ”); exit(0); } while(i { if(stu[i].sno=0); { continue; } fprintf(fp,"%101d%20s%10s%10s".stu[i].sno,stu[i].sname,stu[i].sgrade,stu[i]・sbirth); for(j=0;j { fprintf(fpt11%d111stu[i].smarkEj]): } printf("\n"): i++; } fclose(fp); returni; } //将学生信息写入excel文档,保存于F: \stu\student.xls intfprinexcel(structstudentstu[],FILE*fptintm,intn)( inti=0; intj=0; chart='\t'; charlin[20]="成绩J charstr[4][20]: strcpy(str[0],学号"); strcpy(str[l],"”); strcpy(str[2],"班级"); strcpy(str[3],"生日"); fp=fopen(nF: WstuWstudent.xls".uw"): if(fp==NULL) { printf("文件打开失败! ”); exit(0); } fprintf(fp,"%s%c%s%c%s%c%sM,str[0].t,str[1],t,str[2],for(i=0;i { fprintf(fp,n%c%s%dntt,linfi+1); } fprintf(fp,"\n"); i=0; while(i { if(stu[i].sno—-1) { continue; } fprintf(fp,R%101d%c%20s%c%10s%c%10s,r,stu[i].sno,t,stu[i]・sgrade,t,stu[i]・sbirth); for(j=0;j { fprintf(fp,"%c%dntt,stu[i].smark[j]); } fprintf(fp,"\n"); i++; } fclose(fp); returni; } //按学号查询单个学生 intseachsno(structstudentstu[],longsno,intm,intn) { inti=0; intj=0; for(i=0;i { if(stu[i]・sno==sno) t,str[3]): stu[i]・sname111 出生年月成绩1 printfC按学号查询到的学生基本信息如下: \nH);printf学号班级 成绩2成绩3\nw); printf("%101d%20s%10s%10sstu[i].sno,stu[i]. stu[i]・sgrade,stu[i]・sbirth); for(j=0;j { printf(n%dstu[i].smark[j]): } printf(w\nn); break; } } returni; } 〃按查询单个学生 intseachsname(structstudentstud,charsname[],intm,intn) { inti=0; intj=0; ints=T; for(i=0;i { s=strcmp(stu[i]・sname,sname): if(s==0) { print"按查询到的学生基本信息如下: \n"); printf(”学号班级出生年月 成绩2成绩3\n”); printf("%101d%20s%10s%10sstu[i].sno,stu[i]. stu[i]・sgrade,stu[i]・sbirth); for(j=0;j { printf(n%dstu[i].smark[j]): } printf(w\nn); break; } } returni; } 〃按学号删除单个学生信息 sname, 成绩1 sname, desno(structstudentstu[],longsno,intm) inti=0; for(i=0;i { if(stu[订.sno=sno) ( stu[i]・sno=0; break; } } returni; } 〃按删除单个学生 intdesname(structstudentstud,charsname[],intm){ inti=0; intj=0; ints=T; for(i=0;i { s=strcmp(stu[i]・sname,sname): if(s==0) { stu[i]・sno=0; break; } } returni; //插入单个学生 intcutin(structstudentstu[],intm,intn) { inti=0; intj=0; for(i=0;i〈m;i++) { if(stu[ij.sno=0) { sname, printf(”请输入第%(1个学生的学号,,班级,出生日期: \r/,i+1)scanf(rf%101d%20s%10s%10sn,&stu[i]・sno,&stu[i], &stu[i]・sgrade,&stu[i]・sbirth); for(j=0;j printf(w请输入第%d个学生的第%d门成绩\十,i+1,j+1);scanf(n%d",&stu[i]・smark[j]); } break; } if(i==m-1) { printf暂时没有空结构! \nH): } } returni;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 信息管理 系统 代码