班级学生成绩管理 出现一些错误 帮忙修改下
1,修改 排序 删除是什么都没有的 这个是指 只有界面没有功能修改 排序 删除 的函数都没有 就是个空的
2,添加时出乱码的
3,查询还少了个返回 回不到菜单
4,排序分 按总成绩排序和按平均分排序
5,删除分 按学号删除和按姓名删除
6,修改是可以该已经储存的任何一条信息里的内容
下面是代码。。。。。帮忙修改下,,,,,
程序代码:
#include<stdio.h> #include<math.h> struct stu1 { char num[10]; char name[10]; char sex[2]; float yuwen; float waiyu; float huaxue; float shuxue; float diangong; float totle; float ave; }xs[20],*pp; static int i=0; int p; FILE *fp; void sr(); void bc(); void xg(); void xianshi(); void cx(); void px(); void xm(); void xh(); void add(); main() { int k=1,n; while(k) { menu(); scanf("%d",&n); switch(n) { case 1:sr();break; case 2:xg();break; case 3:xianshi();break; case 4:cx();break; case 5:px();break; case 6:add();break; case 7:break; default:printf("输入错误,请重新选择!\n"); } if(n==7)break; } } void menu() { printf("\t1输入学生成绩\t\t\t\t\t2修改学生成绩\n"); printf("\t3显示学生成绩\t\t\t\t\t4查询学生成绩\n"); printf("\t5排序学生成绩\t\t\t\t\t6添加学生成绩\n"); printf("\t7退出系统\n"); printf("请选择:"); } void sr() { printf("输入的人数为:"); scanf("%d",&p); for(i=0;i<p;i++) { printf("学号:"); scanf("%s",xs[i].num); printf("姓名:"); scanf("%s",xs[i].name); printf("性别:"); scanf("%s",xs[i].sex); printf("语文成绩:"); scanf("%f",&xs[i].yuwen); printf("外语成绩:"); scanf("%f",&xs[i].waiyu); printf("化学成绩:"); scanf("%f",&xs[i].huaxue); printf("数学成绩:"); scanf("%f",&xs[i].shuxue); printf("电工成绩:"); scanf("%f",&xs[i].diangong); xs[i].totle=xs[i].yuwen+xs[i].waiyu+xs[i].huaxue+xs[i].shuxue+xs[i].diangong; xs[i].ave=xs[i].totle/5; } bc(); } void bc() { FILE *fp=fopen("e:\\student.txt","w"); int j; fprintf(fp,"学号 姓名 性别 语文成绩 外语成绩 化学成绩 数学成绩 电工成绩 总成绩 平均成绩\n"); for(j=0;j<i;j++) { fprintf(fp,"%s\t%s\t %s %3.1f\t%3.1f\t %3.1f\t %3.1f\t %3.1f\t %3.1f\t %3.1f\t\n",xs[j].num,xs[j].name,xs[j].sex,xs[j].yuwen,xs[j].waiyu,xs[j].shuxue,xs[j].huaxue,xs[j].diangong,xs[j].totle,xs[j].ave); } fclose(fp); } void xg() { } void xianshi() { FILE *fp; char ch; if((fp=fopen("e:\\student.txt","rt"))==NULL) { printf("\ncannot open file strike any key exit!"); getch(); exit(1); } ch=fgetc(fp); while(ch!=EOF) { putchar(ch); ch=fgetc(fp); } fclose(fp); } void cx() { int n=0; printf("1、 按姓名查找\n"); printf("2 、按学号查找\n"); scanf("%d",&n); switch(n) { case 1: xm(); break; case 2: xh(); break; default: printf("输入错误!\n"); break; } } void xm()//按姓名查找 { int Number; char name[10]; int i=0; printf("请输入要查找学生的姓名:"); scanf("%s",&name); system("cls"); printf("学号\t姓名\t性别\t语文\t外语\t化学\t数学\t电工\t总成绩\t平均成绩\n"); for (i=0;i<Number;i++) { if (strcmp(name,xs[i].name)==0) { printf("\t%s\t%s\t%s\t%.1f\t%.1f\t%.1f\t %.1f\t %.1f\t %.1f\t %.1f\n",xs[i].num,xs[i].name,xs[i].sex,xs[i].yuwen,xs[i].waiyu,xs[i].huaxue,xs[i].shuxue,xs[i].diangong,xs[i].totle,xs[i].ave); } } } void xh()//按学号查找 { int Number; char num[10]; int i=0; printf("请输入要查找的学生学号:"); scanf("%s",&num); system("cls"); printf("学号\t姓名\t性别\t语文\t外语\t化学\t数学\t电工\t总成绩\t平均成绩\n"); for (i=0;i<Number;i++) { if (strcmp(num,xs[i].num)==0) { printf("\t%s\t%s\t%s\t%.1f\t%.1f\t%.1f\t %.1f\t %.1f\t %.1f\t %.1f\n",xs[i].num,xs[i].name,xs[i].sex,xs[i].yuwen,xs[i].waiyu,xs[i].huaxue,xs[i].shuxue,xs[i].diangong,xs[i].totle,xs[i].ave); } } } void px() { struct stu1 temp; int y,z; for(y=1;y<i;y++) { for(z=1;z<=i-y;z++) { if(xs[z-1].ave<xs[z].ave) { temp=xs[z]; xs[z]=xs[z-1]; xs[z-1]=temp; } } } } void add() { FILE *fp; char ch; pp=xs; if((fp=fopen("e:\\student.txt","at+"))==NULL) { printf("\ncannot open file strike any key exit!"); getch(); exit(1); } printf("\n\t\t输入新插入学生成绩\n"); printf("\n输入学生学号:"); scanf("%s",xs[i].num); printf("\n输入学员姓名:"); scanf("%s",xs[i].name); printf("\n输入学员性别:"); scanf("%s",xs[i].sex); printf("\n输入语文成绩:"); scanf("%f",&xs[i].yuwen); printf("\n输入外语成绩:"); scanf("%f",&xs[i].waiyu); printf("\n输入化学成绩:"); scanf("%f",&xs[i].huaxue); printf("\n输入数学成绩:"); scanf("%f",&xs[i].shuxue); printf("\n输入电工成绩:"); xs[i].totle=xs[i].yuwen+xs[i].waiyu+xs[i].huaxue+xs[i].shuxue+xs[i].diangong; xs[i].ave=xs[i].totle/5; fwrite(pp,sizeof(struct stu1),20,fp); rewind(fp); ch=fgetc(fp); while(ch!=EOF) { putchar(ch); ch=fgetc(fp); } printf("\n"); fclose(fp); }
谢谢!!!!!