基于c语言的简单学生管理系统-创新互联

  此代码是本人大一c语言课设,支持从文件导入数据,将数据保存到文件。

10年积累的成都网站制作、网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有河西免费网站建设让你可以放心的选择与我们合作。

界面功能如下:

//李丰旭2021年12月 
#include
#include
#include

struct Student {//建立以姓名 学号 成绩为项目的结构体数组 
 char name[20];
 char number[20];
 int score;
}student[500]; 

//读取文件中的所有学生的信息放到结构体student中。 
int getFilein(){
 FILE *fp = fopen("学生成绩.txt", "r"); 
 if(fp == NULL) {//查看是否有文件。 
     printf("没有找到文件已经重新建立!!\n");
 }
 char res[3][30];
 int a;
 int i = 0;
 while(fscanf(fp,"%s %s %d",res[0],res[1],&a)>0) {        
     strcpy(student[i].name,res[0]);
     strcpy(student[i].number,res[1]);
     student[i].score = a;    
     i++;
 }
 fclose(fp);
 return i;
}

//显示所有学生的信息 
void showStudentin(int l) {
 getFilein();
 int i = 0;
 printf(" 姓名     学号          分数 \n");
 for(i = 0; i< l; i++) {
     printf("%7s ",student[i].name);
     printf(" %-s ",student[i].number);
     printf(" %3d ",student[i].score);
     printf("\n");
 }
}

//搜索学生信息 
void searchStudent(int l) {
 int i = 0;
 printf("请输入要查询的学生的学号:\n");
 char number[20];
 scanf("%s",number); 
 for(i = 0; i< l; i++) {
     if(strcmp(student[i].number,number)==0){
         printf("姓名:%s\n学号:%s\n分数:%d 排名:%d\n",student[i].name,student[i].number,student[i].score,i+1);
         return;
     }
      
 }
 printf("查无此人!"); 
}

//菜单 
void menu(){
 printf("=============================================================\n");
  printf("=***********************************************************=\n");
  printf("=              ******学校学生成绩管理系统                   =\n");
  printf("=============================================================\n");
  printf("=                                                           =\n");
  printf("=    *1.新建学生信息              *2.浏览所有学生信息       =\n");
  printf("=                                                           =\n");
  printf("=    *3.删除学生信息              *4.查询学生信息           =\n");
  printf("=                                                           =\n");
  printf("=    *5.按成绩重新排序                                      =\n");
  printf("=                                                           =\n");
  printf("=    *0.退出并保存学生成绩                                  =\n");
  printf("=                                                           =\n");
  printf("=***********************************************************=\n");
  printf("=                                             ***制作       =\n");
  printf("=============================================================\n");
 
}

//添加学生信息 
void addStudent() {
 printf("请输入要录入的学生的信息:\n");
 printf("请按  姓名 学号 分数  格式输入\n");
 printf("注:******学校学号为11位\n");     
 char name[30];
 char number[100];
 int score;
 scanf("%s %s %d",name,number,&score);
 printf("%s已经成功录入\n",name);
 FILE *fp = fopen("学生成绩.txt", "a");
 fprintf(fp,"%s ",name);
 fprintf(fp,"%s ",number);
 fprintf(fp,"%d\n",score);
 fclose(fp);
}

//删除学生信息 
int deleteStudent(int l) {
 char name[10];
 printf("请输入要删除的学生的姓名\n"); 
 scanf("%s",name);
 //先进行只读,获取非删除学生们的所有信息 
     FILE *fp = fopen("学生成绩.txt", "r"); 
     if(fp == NULL) {//存疑 
         printf("No such file");
     }
     char res[3][30];
     int a;
     int i = 0;
     while(fscanf(fp,"%s %s %d",res[0],res[1],&a)>0) {        
         if(strcmp(res[0],name) != 0) {
                 strcpy(student[i].name,res[0]);
                 strcpy(student[i].number,res[1]);
                 student[i].score = a;
                 i++;
             }
     }
     fclose(fp);
 
 
 
 //没有找到该学生 
 if(l == i){
     return -1;
 }
     
 //进行文件内容覆盖 
 FILE *fq = fopen("学生成绩.txt", "w");
 for(int j = 0; j< i; j++) {
 fprintf(fq,"%s %s %d\n",student[j].name,student[j].number,student[j].score);
 }
 fclose(fq);
 return 1;

//对学生信息根据成绩进行排序 
void sort(int  l) {
 struct Student k;
 int i,j;
 for(i = 0; i< l - 1 ; i++) {//冒泡排序 
     for(j = 1; j< l - i; j++) {
         if(student[j - 1].score
             k = student[j - 1];
             student[j - 1] = student[j];
             student[j] = k;
         }
     }
 }
 FILE *fq = fopen("学生成绩.txt", "w");
 for(int j = 0; j< l; j++) {
 fprintf(fq,"%s %s %d\n",student[j].name,student[j].number,student[j].score);
 }
 fclose(fq);
 printf("排序成功"); 
}

//执行各种操作 
void operate(int studentNum) {
 int opt;
 menu();
 int x = 0;
 while(1) {
     printf("\n请选择接下来的操作:"); 
     scanf("%d",&opt);
     if(opt == 1) {
         addStudent();
         studentNum++;
     }
     else if(opt == 2) {
         showStudentin(studentNum);
     }
     else if(opt == 3) {
         x = deleteStudent(studentNum);
         if(x != -1) {
             studentNum--;
             printf("成功删除\n");
         }
         else{
             printf("查无此人!"); 
         } 
     }
     else if(opt == 4) {
         searchStudent(studentNum);
     }
     else if(opt == 5) {
         sort(studentNum);
     } 
     else if(opt == 0) {
         break;
     } 
 }
 printf("系统已关闭"); 
}

int main() {
 int studentNum  = getFilein();
 operate(studentNum);
 return 0;
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享题目:基于c语言的简单学生管理系统-创新互联
当前链接:http://azwzsj.com/article/esjgs.html