《c语言成绩管理系统源代码+流程图(8页).docx》由会员分享,可在线阅读,更多相关《c语言成绩管理系统源代码+流程图(8页).docx(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-c语言成绩管理系统源代码+流程图-第 8 页#include#include#includevoid frist_print() printf(tt*nn); /欢迎信息 printf(ttt欢迎进入学生成绩系统n); printf(tttttttt 此程序合作完成由); printf(ntttttttt * * * * n); printf(tttttttt * * * * n); printf(tttttttt * * * n); printf(tttttttt * 王杨 * n); printf(tttttttt * * n); printf(tttttttt * 李淼鑫 * n);
2、printf(tttttttt * * n); printf(tttttttt * * n); printf(tttttttt * 孙天顺 * n); printf(tttttttt * * n); printf(tttttttt * * n); printf(tttttttt * * n); printf(tttttttt * * n); printf(tttttttt * * n); printf(tttttttt * n);void menu() printf(ntt*n); /管理菜单 printf(ntt=1.录入学生成绩=ntt+n); printf(tt=2.显示学生成绩=ntt
3、+n); printf(tt=3.查询学生成绩=ntt+n); printf(tt=4.添加学生成绩=ntt+n); printf(tt=5.修改学生成绩=ntt+n); printf(tt=6.删除学生成绩=ntt+n); printf(tt=7.清 空 页 面 =ntt+n); printf(tt=8.退 出 系 统 =n); printf(ntt*n); printf(please choise 1-8:t); putchar(10);struct MM / 结构体定义变量 char num20; char name10; float sco,sco2,sco3,sco4; int ma
4、ny; mm;void scanf_1() /第一次输入信息并保存在文件中 char ch; FILE *fp; if(fp=fopen(dd.dat,wb+)=NULL) printf(cannot open filen); exit(0); do printf(请输入学生的-编号:t); getchar(); gets(mm.num); printf(姓名:t); gets(mm.name); printf(总成绩:t); scanf(%f,&mm.sco); printf(平时成绩:t); scanf(%f,&mm.sco2); printf(作业成绩:t); scanf(%f,&mm.
5、sco3); printf(考试成绩:t); scanf(%f,&mm.sco4); printf(学号:t); scanf(%d,&mm.many); if(fwrite(&mm,sizeof(struct MM),1,fp)!=1) printf(file write errorn); exit(0); printf(是否继续输入y or n ?t); getchar(); ch=getchar(); while(ch=y|ch=Y); fclose(fp); void find() /查询成绩的信息 int a,b=0; char ch20; FILE *fp; if(fp=fopen(
6、dd.dat,rb)=NULL) printf(cannot open filen); exit(0); printf(请输入要查询的成绩的方式nt1.编号 2.姓名:nt请选择 1 or 2 t); scanf(%d,&a); if(a=1) getchar(); printf(请输入学生的编号:t); gets(ch); while(fread(&mm,sizeof(struct MM),1,fp)=1) if(strcmp(mm.num,ch)=0) b+; printf(编号t姓名t成绩tt学号n); printf(%st%st%.3ftt%dn,mm.num,mm.name,mm.s
7、co,mm.many); if(b=0) printf(对不起!没有找到相关信息:n); else if(a=2) printf(请输入学生的姓名:t); getchar(); gets(ch); while(fread(&mm,sizeof(struct MM),1,fp)=1) if(strcmp(mm.name,ch)=0) b+; printf(编号t姓名t成绩tt学号n); printf(%st%st%.3ftt%dn,mm.num,mm.name,mm.sco,mm.many); if(b=0) printf(input error!n); fclose(fp); void sca
8、nf_2() /第二次输入信息并保存在文件中 char ch; FILE *fp; if(fp=fopen(dd.dat,ab)=NULL) printf(cannot open filen); exit(0); do printf(请输入要添加成绩的-编号:t); getchar(); gets(mm.num); printf(姓名:t); gets(mm.name); printf(成绩:t); scanf(%f,&mm.sco); printf(学号:t); scanf(%d,&mm.many); if(fwrite(&mm,sizeof(struct MM),1,fp)!=1) pri
9、ntf(file write errorn); exit(0); printf(是否继续输入y or n ?t); getchar(); ch=getchar(); while(ch=y|ch=Y); fclose(fp);void print() /输出文档中的信息 FILE *fp; if(fp=fopen(dd.dat,rb)=NULL) printf(cannot open filen); return ; printf(编号t姓名t成绩tt学号n); while(fread(&mm,sizeof(struct MM),1,fp)=1) printf(%st%st%.3ftt%dn,m
10、m.num,mm.name,mm.sco,mm.many); fclose(fp); void change() /修改信息的函数,定义另一个文件,把要修改的信息放到该文件中 struct XX /然后把其余的信息复制到该文件中;并把该文件从新命名为原来的名 /把原来的文件移除; char num20; char name10; float sco; int many; xx; FILE *fp2; int a,b=0,c=0,n=0; char ch20,ck; FILE *fp; do if(fp=fopen(dd.dat,rb)=NULL) printf(cannot open file
11、n); exit(0); if(fp2=fopen(temp.dat,wb)=NULL) printf(cannot open filen); exit(0); printf(请输入要修改成绩的编号:t); scanf(%s,ch); n+; while(fread(&mm,sizeof(struct MM),1,fp)=1) if(strcmp(mm.num,ch)=0) b+; /b的值如果一直没有改变说明,没有找到相关的信息; printf(编号t姓名t成绩tt学号n); printf(%st%st%.3ftt%dn,mm.num,mm.name,mm.sco,mm.many); get
12、char(); printf(请输入成绩的新编号:t); gets(xx.num); printf(请输入成绩的新姓名:t); gets(xx.name); printf(请输入成绩的新成绩:t); scanf(%f,&xx.sco); printf(请输入成绩新学号:t); scanf(%d,&xx.many); getchar(); fwrite(&xx,sizeof(struct XX),1,fp2); if(strcmp(mm.num,ch)!=0) fwrite(&mm,sizeof(struct MM),1,fp2); if(b=0) printf(t没有找到相关信息!n); ge
13、tchar(); rewind(fp); /如果要继续修改的话,要把标记返回到文件的开头; printf(是否继续修改?enter y or n t); ck=getchar(); fclose(fp); fclose(fp2); remove(dd.dat); rename(temp.dat,dd.dat); while(ck=y|ck=Y); if(b!=0) /如果没有找到相关信息就不能输出 printf(t修改成功:n);void del() /删除函数(和修改很相似) FILE *fp2; int a,b=0,c=0,n=0; char ch20,ck; FILE *fp; do i
14、f(fp=fopen(dd.dat,rb)=NULL) /判断以读二进制的方式打开文件dd.dat,文件句柄保存到fp,fp是否为空如果为空,就是打开文件失败,否则打开文件成功 printf(cannot open filen); exit(0); if(fp2=fopen(temp.dat,wb)=NULL) printf(cannot open filen); exit(0); printf(请输入要删除成绩的编号:t); scanf(%s,ch); n+; while(fread(&mm,sizeof(struct MM),1,fp)=1) /fread()成功的返回值就是参数里读取的数
15、据块个数,这里就是1; sizeof中是每一项的长度, if(strcmp(mm.num,ch)=0) /设这两个字符串为str1,str2,若str1=str2,则返回零;若str1str2,则返回正数。 b+; /b的值如果一直没有改变说明,没有找到相关的信息; printf(编号t姓名t成绩tt学号n); printf(%st%st%.3ftt%dn,mm.num,mm.name,mm.sco,mm.many); else if(strcmp(mm.num,ch)!=0) fwrite(&mm,sizeof(struct MM),1,fp2); /是向fp2指向的文件中写m中的内容, s
16、izeof中是每一项的长度,后面的1是指写1个长度 if(b=0) printf(t没有找到相关信息!n); getchar(); rewind(fp); getchar(); getchar(); printf(删除成功!); getchar(); /如果要继续修改的话,要把标记返回到文件的开头; printf(是否继续删除?enter y or n t); ck=getchar(); fclose(fp); fclose(fp2); remove(dd.dat); rename(temp.dat,dd.dat); while(ck=y|ck=Y); if(b!=0) /如果没有找到相关信息
17、就不能输出 printf(t保存成功:n);void myexit() int a; char ch; printf(t是否确定退出?请选择 y or n: ); getchar(); ch=getchar(); if(ch=y|ch=Y) exit(0); else menu();int main() int a; frist_print(); menu(); while(1) scanf(%d,&a); if(a=1) scanf_1(); else if(a=2) print(); else if(a=3) find(); else if(a=4) scanf_2(); else if(a=5) change(); else if(a=6) del(); else if(a=7) system(cls); else if(a=8) myexit(); else printf(输入错误!请重新输入:t); printf(t按任意键继续!n); getchar(); menu(); getchar();开始执行主函数执行first_print函数选择程序调用ptinf()调用find()调用change()调用system(“cls”)调用myexit()调用scanf_2()调用del()结束输入代码调用scanf_1()
限制150内