1、(完整版)C语言学生信息管理系统(附源码)学生信息管理系统includestdio。hinclude#includeconio.h#includeincludedefine LEN sizeof(struct student)#define FORMAT %-12d%12s%-13。1f13。1f%-13.1f%13。1fndefine DATA stui.num,stui.name,stui。chinese,stui.math,stui.english,stui.sum/*定义学生成绩结构体*/struct studentint num;char name15;float chinese;f
2、loat math;float english;float sum;struct student stu50;/*函数声明与简介*/void input();void show();void order();void del();void modify();void menu();void insert();void total();void search();int chcode();/*主函数*/int main()int n;int login = chcode();if(!login)printf(登录失败!n”);return 0;printf(登录成功!n”);menu();sca
3、nf(”d,&n);while(n)switch(n) case 0: exit(0);case 1: input();break; case 2: search();break; case 3: del();break; case 4: modify();break; case 5: insert();break; case 6: order();break; case 7: total();break; case 8: show();break; default:printf(输入有误,请重新输入:);break;getch();menu();scanf(%d,n);return 0;/*
4、自定义函数实现菜单功能*/void menu()system(”cls);printf(”tt|-学生信息系统-|n);printf(tt| |n”);printf(tt| 0. 退出系统ttt |n);printf(tt 1. 输入记录ttt n);printf(tt 2. 查找记录ttt |n);printf(tt| 3. 删除记录ttt n);printf(tt| 4. 修改记录ttt n”);printf(tt 5。 插入记录ttt |n);printf(”tt 6. 记录排序ttt |n”);printf(tt| 7。 记录个数ttt |n”);printf(tt| 8. 显示记录t
5、tt n);printf(”tt-|nn”);printf(”tt请输入你的操作(08):);/*录入学生信息*/void input()int i,m=0;char ch2;FILE *fp;/定义指针文件*/if((fp=fopen(stuData.tet,a+))=NULL)printf(”打开文件失败n”);return;while(!feof(fp)if(fread(stum,LEN,1,fp)=1)m+;fclose(fp);if(m=0)printf(”没有数据!n);elsesystem(cls”);show();if((fp=fopen(”stuData。txt”,wb))=
6、NULL)printf(”打开文件失败n”);return;for(i=0;im;i+)fwrite(stui,LEN,1,fp);printf(请确认(y/n):”);scanf(%s”,ch);while(strcmp(ch,”Y”)=0|strcmp(ch,”y”)=0)printf(”学号:);scanf(d”,stum。num);for(i=0;im;i+)if(stui。num=stum.num)printf(”此学号已存在!”);getch();fclose(fp);return;printf(”姓名:);scanf(”%s”,stum.name);printf(语文成绩:”);
7、scanf(f”,&stum.chinese);printf(”数学成绩:);scanf(f,&stum。math);printf(英语成绩:);scanf(%f,&stum.english);stum。sum=stum。chinese+stum.math+stum.english;if(fwrite(stum,LEN,1,fp)!=1)printf(”保存失败!);getch();elseprintf(%s 已保存!n”,stum。name);m+;printf(是否继续?(y/n):”);scanf(%s”,ch);fclose(fp);printf(操作成功!n”);/*自定义查找*/v
8、oid search()FILE *fp;int snum,i,m=0;char ch2;if(fp=fopen(stuData。txt,”rb))=NULL)printf(”打开文件失败n);return;while(!feof(fp)if(fread(stum,LEN,1,fp)=1)m+;fclose(fp);if(m=0)printf(”文件无记录!n”);return;printf(”请输入需要查找的学生学号:);scanf(”%d,snum);for(i=0;im;i+)if(snum=stui.num)printf(”学生数据已找到,确认显示?(y/n)”);scanf(”%s,
9、ch);if(strcmp(ch,”Y”)=0|strcmp(ch,y)=0)printf(学号 姓名 语文 数学 英语 总分tn);printf(FORMAT,DATA);break;if(i=m)printf(查找失败!n); /*自定义删除*/void del()FILE*fp;int snum,i,j,m=0;char ch2;if((fp=fopen(stuData.tet,r+))=NULL)printf(打开文件失败n);return;while(!feof(fp))if(fread(stum,LEN,1,fp)=1)m+;fclose(fp);if(m=0)printf(”文件
10、无记录!n”);return;show();printf(请输入需要删除的学生学号:);scanf(%d”,&snum);for(i=0;im;i+)if(snum=stui。num)printf(”数据已经找到,是否确认删除?(y/n);scanf(”s,ch);if(strcmp(ch,”Y”)=0strcmp(ch,y”)=0)for(j=i;jm;j+)stuj=stui;m-;if((fp=fopen(stuData。txt,wb)=NULL)printf(打开文件失败n);return;for(j=0;jm;j+)if(fwrite(stuj,LEN,1,fp)!=1)printf
11、(对不起,保存失败!n);getch();fclose(fp);printf(删除成功!n);return;elseprintf(取消删除!n);return;printf(”没有找到要删除的信息!n);/*自定义修改函数*/void modify()FILE *fp;int i,j,m=0,snum;if((fp=fopen(”stuData。txt”,”r+”))=NULL)printf(”打开文件失败n);return;while(!feof(fp))if(fread(&stum,LEN,1,fp)=1)m+;if(m=0)printf(”文件无记录!n);fclose(fp);retu
12、rn;show();printf(”请输入你要修改的的学生学号n”);printf(学号是:”);scanf(”d,&snum);for(i=0;im;i+)if(snum=stui.sum)printf(学生数据已找到,请修改!n”);printf(”name”);scanf(”s”,stui。name);printf(”chinese”);scanf(”f,stui.chinese);printf(math:);scanf(”f,&stui.chinese);printf(english:);scanf(%f,&stui.english);printf(modify successful!
13、);stui。sum=stui.chinese+stui。math+stui.english;if((fp=fopen(stuData.txt”,”wb))=NULL)printf(保存失败!”);getch();fclose(fp);return;printf(”没有找到匹配信息”);/*自定义插入函数*/void insert()FILE *fp;int i,j,k,m=0,snum;if(fp=fopen(”stuData。txt”,”r+”))=NULL)printf(打开文件失败n);return;while(!feof(fp))if(fread(stum,LEN,1,fp)=1)m
14、+;if(m=0)printf(没有数据!n);fclose(fp);return;printf(”请输入数据插入的位置:n”);scanf(”d”,snum);for(i=0;im;i+)if(snum=stui.num)break;for(j=m1;ji;j-)stuj+i=stuj;printf(”请输入待插入数据信息。n);printf(学号”);scanf(”d,stui+1。num);for(k=0;km;k+)if(stuk.num=stum。num)printf(”此学号已存在!);getch();fclose(fp);return;printf(姓名);scanf(”s”,s
15、tui+1。name);printf(语文成绩:”);scanf(”f”,&stui+1.chinese);printf(”数学成绩:”);scanf(”f,stui+1。math);printf(”英语成绩:”);scanf(”f”,stui+1.english);stui+1。sum=stui+1.chinese+stui+1.math+stui+1。english;if(fp=fopen(stuData.txt”,”wb)=NULL)printf(”打开文件失败n”);return;for(k=0;k=m;k+)if(fwrite(&stuk,LEN,1,fp)!=1)printf(”保
16、存失败!”);getch();return;printf(插入函数成功!);getch();fclose(fp);/*自定义排序函数*/void order()FILE *fp;struct student t;int i=0,j=0,m=0;if((fp=fopen(”stuData.txt”,r+”))=NULL)printf(打开文件失败!n”);return;while(!feof(fp))if(fread(&stum,LEN,1,fp)=1)m+;fclose(fp);if(m=0)printf(”无记录!n);return;if(fp=fopen(stuData.txt,”wb))
17、=NULL)printf(”打开文件失败n);return;for(i=0;im-1;i+)if(fwrite(&stui,LEN,1,fp)!=1)printf(”%s 保存失败!n”);getch();fclose(fp);printf(”操作成功n”);/*显示学生总人数*/void total()FILE *fp;int m=0;if((fp=fopen(stuData。txt,r+”))=NULL)printf(打开文件失败n”);return;while(!feof(fp))if(fread(&stum,LEN,1,fp)=1)m+;if(m=0)printf(文件无记录!n”);
18、fclose(fp);return;printf(学生总数为 %d 位!n”,m);fclose(fp);/*显示学生信息*/void show()FILE fp;int i,m=0;fp=fopen(”stuData.txt,”rb);while(!feof(fp))if(fread(stum,LEN,1,fp)=1)m+;fclose(fp);printf(”学号 姓名 语文 数学 英语 总分tn”);for(i=0;im;i+)printf(FORMAT,DATA);int chcode() char pw50,ch;char syspw = ”1234”; / 原始密码int i,m = 0; printf(请输入密码:); while(m 3) i = 0;while(ch = _getch()) != r) if(ch = b & i 0) printf(b b);-i;else if(ch != b) pwi+ = ch;printf(*”);pwi = 0;printf(”n”);if(strcmp(pw,syspw) != 0) printf(”密码错误,请重新输入!n);m+;else printf(”密码正确!n”);system(”pause);return 1;printf(连续3次输入错误,退出!n);system(pause”);return 0;