logo资料库

c语言大作业.docx

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
/*c 语言大作业, 姓名:哈斯木·阿斯图拜。 学号:20161401402。 班级:计算机 16-2. 这个代码是关于管理学生成绩系统的代码。*/ #include #include #include void frist_print() { printf("\t\t********************************\n\n"); printf("\t\t\t 欢迎进入学生成绩系统\n"); //欢迎信息 } void menu() { //管理菜单 printf("\n\t\t********************************\n"); printf("\t\t==\t1.录入学生成绩\n\t\t+\n"); printf("\t\t==\t2.显示学生成绩\n\t\t+\n"); printf("\t\t==\t3.查询学生成绩\n\t\t+\n"); printf("\t\t==\t4.添加学生成绩\n\t\t+\n"); printf("\t\t==\t5.修改学生成绩\n\t\t+\n"); printf("\t\t==\t6.删除学生成绩\n\t\t+\n"); printf("\t\t==\t7.清空页面\n\t\t+\n"); printf("\t\t==\t8.退出系统\n"); printf("\t\t********************************\n"); printf("请确认:1--8:\t"); putchar(10); } struct MM { char num[20]; char name[10]; float pay; int many; }mm; void scanf_1() { char ch; FILE *fp; // 结构体定义变量 //第一次输入信息并保存在文件中 if((fp=fopen("dd.dat","wb+"))==NULL) { printf("cannot open file\n"); 哈斯木·阿斯图拜 20161401402 计算机 16-2
exit(0); } do { printf("请输入成绩的--编号:\t"); getchar(); gets(mm.num); printf("姓名:\t"); gets(mm.name); printf("成绩:\t"); scanf("%f",&mm.pay); printf("学号:\t"); scanf("%d",&mm.many); if(fwrite(&mm,sizeof(struct MM),1,fp)!=1) { printf("file write error\n"); exit(0); } printf("是否继续输入 y or n ?\t"); getchar(); ch=getchar(); }while(ch=='y'||ch=='Y'); fclose(fp); } void find() { int a,b=0; char ch[20]; FILE *fp; //查询成绩的信息 if((fp=fopen("dd.dat","rb"))==NULL) { printf("cannot open file\n"); exit(0); } printf("请输入要查询的成绩的方式\n\t1.编号 2.姓名:\n\t 请选择 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) 哈斯木·阿斯图拜 20161401402 计算机 16-2
{ b++; printf("编号\t 姓名\t 分数\t\t 学号\n"); printf("%s\t%s\t%.3f\t\t%d\n",mm.num,mm.name,mm.pay,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 分数\t\t 学号\n"); printf("%s\t%s\t%.3f\t\t%d\n",mm.num,mm.name,mm.pay,mm.many); } if(b==0) printf("input error!\n"); //第二次输入信息并保存在文件中 } fclose(fp); } void scanf_2() { char ch; FILE *fp; if((fp=fopen("dd.dat","ab"))==NULL) printf("cannot open file\n"); exit(0); { } do { printf("请输入要添加成绩的--编号:\t"); getchar(); gets(mm.num); printf("姓名:\t"); gets(mm.name); printf("分数:\t"); scanf("%f",&mm.pay); printf("学号:\t"); 哈斯木·阿斯图拜 20161401402 计算机 16-2
scanf("%d",&mm.many); if(fwrite(&mm,sizeof(struct MM),1,fp)!=1) { printf("file write error\n"); 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 file\n"); return ; } printf("编号\t 姓名\t 分数\t\t 学号\n"); while(fread(&mm,sizeof(struct MM),1,fp)==1) printf("%s\t%s\t%.3f\t\t%d\n",mm.num,mm.name,mm.pay,mm.many); fclose(fp); //修改信息的函数,定义另 //然后把其余的信息复制到 //把原来的文件移除; void change() { 一个文件,把要修改的信息放到该文件中 struct XX 该文件中;并把该文件从新命名为原来的名 { char num[20]; char name[10]; float pay; int many; }xx; FILE *fp2; int b=0,c=0,n=0; char ch[20],ck; FILE *fp; do{ if((fp=fopen("dd.dat","rb"))==NULL) 哈斯木·阿斯图拜 20161401402 计算机 16-2
{ } { } { { } } { } printf("cannot open file\n"); exit(0); if((fp2=fopen("temp.dat","wb"))==NULL) printf("cannot open file\n"); exit(0); printf("请输入要修改成绩的编号:\t"); scanf("%s",ch); n++; while(fread(&mm,sizeof(struct MM),1,fp)==1) if((strcmp(mm.num,ch)==0)) b++; printf("编号\t 姓名\t 价格\t\t 学号\n"); //b 的值如果一直没有改变说明,没有找到相关的信息; printf("%s\t%s\t%.3f\t\t%d\n",mm.num,mm.name,mm.pay,mm.many); getchar(); printf("请输入成绩的新编号:\t"); gets(xx.num); printf("请输入成绩的新姓名:\t"); gets(xx.name); printf("请输入成绩的新分数:\t"); scanf("%f",&xx.pay); 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"); getchar(); rewind(fp); //如果要继续修改的话,要把标记返回到文件的开头; printf("是否继续修改?enter 'y' or 'n' \t"); 哈斯木·阿斯图拜 20161401402 计算机 16-2
ck=getchar(); fclose(fp); fclose(fp2); remove("dd.dat"); rename("temp.dat","dd.dat"); } } void del() { while(ck=='y'||ck=='Y'); if(b!=0) printf("\t 修改成功:\n"); //如果没有找到相关信息就不能输出 //删除函数和修改很相似 FILE *fp2; int b=0,c=0,n=0; char ch[20],ck; FILE *fp; do { if((fp=fopen("dd.dat","rb"))==NULL) { printf("cannot open file\n"); exit(0); } { } { { if((fp2=fopen("temp.dat","wb"))==NULL) printf("cannot open file\n"); 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 分数\t\t 学号\n"); printf("%s\t%s\t%.3f\t\t%d\n",mm.num,mm.name,mm.pay,mm.many); } } else if(strcmp(mm.num,ch)!=0) fwrite(&mm,sizeof(struct MM),1,fp2); 哈斯木·阿斯图拜 20161401402 计算机 16-2
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) printf("\t 保存成功:\n"); } void myexit() { //如果没有找到相关信息就不能输出 char ch; printf("\t 是否确定退出?请选择 y or n: getchar(); ch=getchar(); if(ch=='y'||ch=='Y') else menu(); exit(0); "); } int main() { int a; frist_print(); menu(); while(1) { scanf("%d",&a); if(a==1) scanf_1(); 哈斯木·阿斯图拜 20161401402 计算机 16-2
else if(a==2) else if(a==3) else if(a==4) else if(a==5) else if(a==6) else if(a==7) else if(a==8) print(); find(); scanf_2(); change(); del(); system("cls"); myexit(); else printf("输入错误!!!请重新输入:\t"); printf("\t 按任意键继续!\n"); menu(); } } 哈斯木·阿斯图拜 20161401402 计算机 16-2
分享到:
收藏