1、 char name10; /姓名 char num10; /学号 char score10; /成绩if(fp1=fopen(Ca1.txt,w)=NULL) /文件名,使用文件方式printf(信息写入失败);exit(0);char wjm20; /文件名2.2 函数设计表1 函数列表序号函 数 原 型功 能 说 明1void addnew()新增学生姓名,学号,成绩信息2void addold()在原有基础上继续增加其他同学的信息3void printall()显示所有已经存入学生的成绩等信息4void search()根据姓名或者学号查询学生分数5void jgsearch()根据成
2、绩查询对应的同学6void del()删除学生信息7void modify()修改学生信息8system(“cls”);清屏2.3部分功能设计1.删除学生的信息,输入学生的学号进行删除操作,如果没有此人,系统将会提示无此人,如果找到,系统将会确认你是否需要删除,流程图如1-2所示。Yes输出删除成功结束开始输入学号在文件里查找输出文件无此人确认删除输入1输入0是否找到No图1-2 删除学生信息流程图2.输入学号进行查询对应同学的成绩,流程图如图1-3所示。输入学号或姓名在文件中查找输出姓名,学号,成绩输出文件无此人记录图1-3 查询功能流程图3 系统实现源程序3.1 主函数设计void mai
3、n() int x; system(cls /*清屏*/ do printf(n 欢迎使用学生成绩信息管理系统nnnnn 1 -添加学生信息nn 2 -显示所有学生成绩信息nn 3 -学号或姓名查询nn 4 -成绩查询nn 5 -删除学生成绩信息nn 6 -修改学生成绩信息nn 0 -退出 请您选择:choice: scanf(%d,&x); switch(x) case 1:add();break; case 2:printall(); case 3:search(); case 4:jgsearch(); case 5:del(); case 6:modify(); case 0: def
4、ault:printf(n 错误的选择,请重新选择:goto choice; while(x!=0); printf(nn 欢迎再次使用学生成绩管理系统n3.2 添加学生信息/*学生成绩信息管理系统*/#include stdlib.hstring.hint c,j,t;struct stu /*定义结构体类型*/ student100,newstudent100;/*添加学生个人信息*/ void addnew() int a,b,k;FILE *fp,*fp1,*fp2; /*FILE类型指针变量的定义形式*/ for(a=0;a200;a+) 欢迎使用学生成绩管理系统nnn 录入学生信息
5、nn输入学生姓名: scanf(%sstudenta.name);输入学生学号:studenta.num);输入学生成绩:studenta.score);输入1继续,0结束n /*判断输入是否结束*/ b); if(b=0) c=a; system( break;)=NULL) /*文件名,使用文件方式*/ if(fp2=fopen(Ca2.txt)=NULL) if(fp=fopen(Ca3.txtj=sizeof(struct stu);=c;if(fwrite(&studenta,j,1,fp)!=1)存入失败!if(strcmp(studenta.score,80)=0)fwrite(
6、&studenta,j,1,fp1);elsestudenta,j,1,fp2);添加成功!nn请输入0返回nscanf(k);fclose(fp1);fclose(fp2);fclose(fp);if(k=0)system(/*继续添加成员*/ int a,b,k,p,q; char wjm20; FILE *fp; j=sizeof(struct stu); 欢迎使用学生成绩信息管理系统nnnnn 存储文件名有 Ca1.txt Ca2.txt Ca3.txt nn请输入想继续添加的文件名:,wjm); for(a=0;newstudenta.name);newstudenta.num);n
7、ewstudenta.score); /判断输入是否结束 if(b=0) c=a; system( break; if(fp=fopen(wjm,r文件打开失败! exit(0); a=0; while(!feof(fp) fread(&studenta,j,1,fp); a+; fclose(fp); t=a-1; for(q=0,p=t;q=c,p=t+c;q+,p+) strcpy(studentp.name,newstudentq.name); strcpy(studentp.num,newstudentq.num); strcpy(studentp.score,newstudentq
8、.score); if(fwrite(& if(k=0)void add()int x; 添加学生信息nn 1 重新添加信息n 2 继续添加信息n 0 返回nnn 请选择:switch(x)case 1:addnew();case 2:addold();case 0:default:/*显示所有学生的成绩*/ void printall() int a,b; FILE *fp,*fp1,*fp2; 全部已录入学生信息nn%-10s%-20s%-50sn姓名学号成绩 if(fp=fopen()=NULL) printf(n打开失败 exit(0); if(fp1=fopen( if(fp2=fo
9、pen( if(fread(&studenta,j,1,fp)=1),studenta.name,studenta.num,studenta.score);feof(fp1)studenta,j,1,fp1)=1)feof(fp2)studenta,j,1,fp2)=1) fclose(fp1); fclose(fp2);返回上级请输入0!n: if(b=0)3.3 姓名学号查询 int k,b,a; char cx20; 查找已录入学生成绩信息nn k=0; if(fp=fopen()=NULL) printf(n打开失败! exit(0);请输入学号或姓名:n,cx); if(cx09)
10、a=0; while(! fread(& if(strcmp(studenta.name,cx)=0)nn已查到,该记录为: k=1; a+; if(=cx0=) if(strcmp(studenta.num,cx)=0) if(!k)n文件中无此人的记录。 fclose(fp);n输入“1”继续查找,“0”结束n while(b!3.4 成绩查询int b,a;char cx20;FILE *fp;do 查找学生成绩信息nn请输入学生成绩: fread(& if(strcmp(cx,studenta.score)=0) printf(while(b!3.5 删除学生成绩信息 int m=0,
11、k=0,b,a,q,p; char xh20,wjm20; 删除学生成绩信息nnn请输入学号:,xh);n请输入欲删除的文件名: if(fp=fopen(wjm,n文件打开失败! a=0; fread(& /将文件内容输入到数组中 a+; t=a-1; for(a=0;=t; if(strcmp(xh,studenta.num)=0) k=1; if(a=t) printf(nn文件中无此人的记录。 if(k=1)%-10s%-20s%-50sn确实要删除记录,请按1;不删除记录,请按0: scanf(m); if(m) for(p=a,q=a+1;pt,q strcpy(studentp.name,studentq.name); strcpy(studentp.num,studentq.num); strcpy(studentp.score,studentq.score); t; fwrite(& if(m)n删除成功!n输入“1”继续,“0”结束n3.6 修改学生成绩信息 int k=0,b,a; 修改学生成绩信息nnn请输入欲修改文件名:r+ k=1; break; if
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1