C语言学生信息管理系统代码.docx
- 文档编号:11014478
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:23
- 大小:18.21KB
C语言学生信息管理系统代码.docx
《C语言学生信息管理系统代码.docx》由会员分享,可在线阅读,更多相关《C语言学生信息管理系统代码.docx(23页珍藏版)》请在冰豆网上搜索。
C语言学生信息管理系统代码
XX师大学
实验报告
课程C语言课程设计
任课老师
学号
姓名
院系
_______年______月至_______年_______月
注意事项
1.使用C语言,代码已在vs中运行过,可以运行(主要功能都能实现)
2.需求分析,前期设计都没写,请同学们自己完成
3.附带有student.txt文件,将其移动至F:
\stu文件夹中,运行程序时可直接选6号指令,从中读取学生信息。
如果没有该txt文件(可能会在上传过程中丢失),仍需在F盘下新建stu文件夹,各文件将保存于该文件夹中
4.按word格式输出尚未设计好,有兴趣可自己完成
5.按excel格式输出,完成后需自行调整相应列宽(拉宽),使容美观
6.从下一页开始,复制余下全文,粘贴即可运行
#include
#defineM30//班级总人数,暂定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(structstudentstu[],FILE*fp,intm,intn);
intfprinexcel(structstudentstu[],FILE*fp,intm,intn);
intseachsno(structstudentstu[],longsno,intm,intn);
intseachsname(structstudentstu[],charsname[],intm,intn);
intdesno(structstudentstu[],longsno,intm);
intdesname(structstudentstu[],charsname[],intm);
intcutin(structstudentstu[],intm,intn);
structstudent
{
intturn;
longsno;
charsname[20];
charsgrade[10];
charsbirth[10];
intsmark[N];
};
voidmain()
{
inti=0;
intcon1=0;
intcon2=0;
longsno;
charsname[20];
FILE*fp=NULL;
structstudentstu[M];
for(i=0;i { stu[i].turn=-1; } do{ printf("\n\n********************************************\n"); printf("\n***学生信息管理系统***\n\n"); printf("***请按提示输入相应命令: ***\n\n"); printf("1键盘输入所有学生的基本信息\n"); printf("2屏幕输出所有学生的基本信息\n"); printf("3子菜单: 按一定顺序对学生进行排序\n"); printf("4按顺序屏幕输出学生信息\n"); printf("5保存学生信息(二进制文件)\n"); printf("6从上次保存的二进制文件中读取学生信息\n"); printf("7子菜单: 将学生信息保存为文本文档(人工阅读)\n"); printf("8子菜单: 对单个学生的插入删除查询修改\n"); printf("-1退出系统\n"); scanf("%d",&con1); switch(con1) { case1: { printf("\n***注意! ***\n"); printf("继续进行输入会覆盖原数据! ! ! \n"); printf("第一次使用本软件或需重新写信息请继续: \n"); printf("1继续\n"); printf("-1返回\n"); scanf("%d",&con2); if(con2==1) { inputstu(stu,M,N); } break; } case2: prinstu(stu,M,N);break; case3: { do{ printf("\n****************************************\n"); printf("1按学号顺序进行排序\n"); printf("2按年龄从小到大排序\n"); printf("3按总成绩由高到低排序\n"); printf("-1返回上一级菜单\n"); scanf("%d",&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(stu,fp,M,N);break; case7: { printf("\n************************************************\n"); printf("1将学生信息输出为txt文档,路径: F: \stu\student.txt\n"); printf("2将学生信息输出为word文档,路径: F: \stu\student.doc\n"); printf("3将学生信息输出为excel文档,路径: F: \stu\student.xls\n"); printf("-1返回上一级菜单\n"); scanf("%d",&con2); switch(con2) { case1: { break; } case2: { fprinword(stu,fp,M,N); break; } case3: { fprinexcel(stu,fp,M,N); break; } } } break; case8: { do { printf("\n*******************************\n\n"); printf("1按学号查询单个学生\n"); printf("2按查询单个学生\n"); printf("3按学号删除单个学生\n"); printf("4按删除单个学生\n"); printf("5插入单个学生信息\n"); printf("-1返回主菜单\n"); scanf("%d",&con2); switch(con2) { case1: { printf("请输入单个学号: \n"); scanf("%10ld",&sno); seachsno(stu,sno,M,N); break; } case2: { printf("请输入单个学生: \n"); scanf("%20s",sname); seachsname(stu,sname,M,N); break; } case3: { printf("请输入单个学号: \n"); scanf("%10ld",&sno); desno(stu,sno,M); break; } case4: { printf("请输入单个学生: \n"); scanf("%s",sname); desname(stu,sname,M); break; } case5: { cutin(stu,M,N); break; } default: { printf("二级指令错误,请重新输入! \n"); break; } } }while(con2! =-1); } case-1: printf("感使用本系统! \n");break; default: printf("一级命令输入错误,请重试"); fflush(stdin); break; } }while(con1! =-1); } //输入学生的基本信息 intinputstu(structstudentstu[],intm,intn) { inti=0; intj=0; printf("请按说明输入学生信息: \n"); while(i { printf("请输入第%d个学生的学号,,班级,出生日期: \n",i+1); scanf("%10ld%20s%10s%10s",&stu[i].sno,&stu[i].sname,&stu[i].sgrade,&stu[i].sbirth); for(j=0;j { printf("请输入第%d个学生的第%d门成绩\n",i+1,j+1); scanf("%d",&stu[i].smark[j]); } i++; } returni; } //屏幕输出学生信息 voidprinstu(structstudentstu[],intm,intn) { inti=0; intj=0; printf("**********************************************************\n"); printf("学生基本信息如下: \n"); printf("学号班级出生年月成绩1成绩2成绩3\n"); while(i { if(stu[i].sno==0) { i++; continue; } printf("%10ld%20s%10s%10s",stu[i].sno,stu[i].sname,stu[i].sgrade,stu[i].sbirth); for(j=0;j { printf("%d",stu[i].smark[j]); } 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].smark[j]; } } for(i=0;i { for(j=i+1;j { s=sm[i]; if(s { s=j; } sm[s]=0; stu[s].turn=i; } } returni; } //按顺序屏幕输出 voidprinsort(structstudentstu[],intm,intn) { inti=0; intj=0; intk=0; printf("\n**********************************************************\n"); printf("按排序,学生基本信息如下: \n"); printf("学号班级出生年月成绩1成绩2成绩3\n"); while(k { if(stu[i].sno==0) { continue; } for(i=0;i { if(stu[i].turn==k) { printf("%10ld%20s%10s%10s",stu[i].sno,stu[i].sname,stu[i].sgrade,stu[i].sbirth); for(j=0;j { printf("%d",stu[i].smark[j]); } printf("\n"); } } k++; } } //写数据进二进制文件 intwritefile(structstudentstu[],FILE*fp,intm,intn) { inti=1; fp=fopen("f: \\stu\\student.txt","wb"); if(fp==NULL) { printf("打开文件失败! \n"); exit(0); } fwrite(&stu[0],sizeof(structstudent),m,fp); i=fclose(fp); returni; } //从二进制中读取学生信息 intreadfile(structstudentstu[],FILE*fp,intm,intn) { inti=1; fp=fopen("f: \\stu\\student.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(structstudentstu[],FILE*fp,intm,intn) { inti=0; intj=0; fp=fopen("F: \\stu\\student.doc","w"); if(fp==NULL) { printf("文件打开失败! "); exit(0); } while(i { if(stu[i].sno==0); { continue; } fprintf(fp,"%10ld%20s%10s%10s",stu[i].sno,stu[i].sname,stu[i].sgrade,stu[i].sbirth); for(j=0;j { fprintf(fp,"%d",stu[i].smark[j]); } printf("\n"); i++; } fclose(fp); returni; } //将学生信息写入excel文档,保存于F: \stu\student.xls intfprinexcel(structstudentstu[],FILE*fp,intm,intn) { inti=0; intj=0; chart='\t'; charlin[20]="成绩"; charstr[4][20]; strcpy(str[0],"学号"); strcpy(str[1],""); strcpy(str[2],"班级"); strcpy(str[3],"生日"); fp=fopen("F: \\stu\\student.xls","w"); if(fp==NULL) { printf("文件打开失败! "); exit(0); } fprintf(fp,"%s%c%s%c%s%c%s",str[0],t,str[1],t,str[2],t,str[3]); for(i=0;i { fprintf(fp,"%c%s%d",t,lin,i+1); } fprintf(fp,"\n"); i=0; while(i { if(stu[i].sno==-1) { continue; } fprintf(fp,"%10ld%c%20s%c%10s%c%10s",stu[i].sno,t,stu[i].sname,t,stu[i].sgrade,t,stu[i].sbirth); for(j=0;j { fprintf(fp,"%c%d",t,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) { printf("按学号查询到的学生基本信息如下: \n"); printf("学号班级出生年月成绩1成绩2成绩3\n"); printf("%10ld%20s%10s%10s",stu[i].sno,stu[i].sname,stu[i].sgrade,stu[i].sbirth); for(j=0;j { printf("%d",stu[i].smark[j]); } printf("\n"); break; } } returni; } //按查询单个学生 intseachsname(structstudentstu[],charsname[],intm,intn) { inti=0; intj=0; ints=-1; for(i=0;i { s=strcmp(stu[i].sname,s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 信息管理 系统 代码