回 帖 发 新 帖 刷新版面

主题:[讨论]C语言程序设计  成绩记录簿   求帮助

编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。具体功能:
    (1)创建信息链表并以磁盘文件保存;
    (2)读取磁盘文件并显示输出所有学生的成绩;
    (3)按学号或姓名查询成绩;
    (4)添加成绩记录;
    (5)修改指定姓名或学号的学生的成绩并可存盘;
    (6)显示输出60分以下、60~79、80~89、90分以上各分数段的学生信

回复列表 (共5个回复)

沙发


请求用TC   在这里谢过

板凳


#include<stdio.h> 
#include<string.h> 
#include<conio.h> 
#include<stdlib.h> 
#include<ctype.h> 
/*定义学生的类型*/ 
struct cj

int cjnum;    //定义学号为整型    
char cjname[20]; //定义姓名为字符数组
float cjcreat,cjnew; //定义成绩,新成绩为浮点型
}cj[1000];

//////////////////////////////////查询成绩模块//////////////////////////////////////////

/////////////////////////////////按学号查询/////////////////////////////////////////////
findcj()

    FILE *fp; //定义文件fp
    int  cjnum;//定义学号
    int i; //定义变量i用来控制学生的个数
    fp=fopen("cj.txt","r"); //用只读的形式打开文件 cj.txt
    printf("\n请输入您要查找的学生学号:"); 
    scanf("%d",&cjnum); //输入学号
    for(i=0;fread(&cj[i],sizeof(struct cj),1,fp)!=0;i++) 
    { 
     if(cjnum==cj[i].cjnum) //判断有没有你要查找的学号
     { 
      printf("\n您要查找的成绩详细信息为:\n");
      printf("学号  姓名      成绩\n%d %8s  %f\n",cj[i].cjnum,cj[i].cjname,cj[i].cjcreat);
      printf("\n查询成功,请按任意键返回.");
      fclose(fp); 
      return 0; //结束此操作
     } 
    } 
     printf("没有您要查询的信息!\n"); 
     fclose(fp);//关闭文件
     return 0; 
}

/////////////////////////////////////按姓名查询///////////////////////////

findcj1()

    FILE *fp; 
    char cjname[20]; 
    int i; 
    fp=fopen("cj.txt","r"); //打开文件
    printf("\n请输入您要查找的学生姓名:\n"); //查找的学生姓名
    scanf("%s",cjname); //输入姓名
    for(i=0;fread(&cj[i],sizeof(struct cj),1,fp)!=0;i++) //在文件中查找
    { 
     if(strcmp(cjname,cj[i].cjname)==0) //判断有没有你要查找的姓名
     { 
      printf("\n您要查找的成绩的详细信息为:\n");
      printf("学号   姓名       成绩\n%d  %8s  %f\n",cj[i].cjnum,cj[i].cjname,cj[i].cjcreat); 
      printf("\n查询成功,请按任意键返回.");
      fclose(fp); //关闭文件
      return 0; 
     } 
    } 
     printf("没有您要查询的信息\n"); 
     fclose(fp); 
     return 0; 
}

////////////////////////////////////查询成绩信息///////////////////////////////////

3 楼



chacj()  

    char ch5; 
    do //不选择返回则进行
    { 
     system("cls");//将屏幕清空
     printf("\n                  ◎◎◎欢迎进入成绩查询系统◎◎◎\n"); 
     printf("                             1: 按学号查询 \n"); 
     printf("                             2: 按姓名查询 \n"); 
     printf("                             0: 返回 \n"); 
     printf("                             请输入您的选择:(0━2):"); 
     ch5=getch(); 
     switch(ch5) 
     { 
      case '1':findcj();getch();break; //调用findcj(),按学号查询
      case '2':findcj1();getch();break; //调用findcj1(),按姓名查询
      case '0':break; //退出,返回上一操作
      default:printf("无此操作!\n");getch();break; //没输入任何数字时则输出无此操作
     } 
    }while(ch5!='0');
    return 0; 
}
////////////////////////////成绩管理模块//////////////////////////////////////

////////////////////////////增加成绩信息///////////////////////////////////////
addcj() 

    FILE *fp; 
    int i=0; 
    char choice='y'; 
    fp=fopen("cj.txt","a+");//用追加的形式打开文件 cj.txt
    while(choice=='y'||choice=='Y') //选择y或Y
    {  
     system("color 3f");//设置背景颜色
     system("cls");  //清屏
     printf("\n                       ◎◎◎欢迎进入成绩添加系统◎◎◎\n");
     printf("\n请输入您要添加的学号:");
     scanf("%d",&cj[i].cjnum); 
     printf("\n请输入您要添加的姓名:"); 
     scanf("%s",cj[i].cjname); 
     printf("\n请输入您要添加的c的成绩:"); 
     scanf("%f",&cj[i].cjcreat); 
     fwrite(&cj[i],sizeof(struct cj),1,fp); //将添加的内容写入文件中
     printf("\n是否要输入下一名学生的信息(y/n):"); 
     scanf("%s",&choice); 
    } 
   fclose(fp); 
}
///////////////////////////////删除学生信息////////////////////////////////////

4 楼

TC  TC  高手  在哪啊?

5 楼

TC还是别用了。。。

我来回复

您尚未登录,请登录后再回复。点此登录或注册