当前位置: 首页 > news >正文

数组实现c语言学生成绩管理系统

c语言管理系统

牛~~

/*引用库函数*/
#include<stdio.h> 
#include<stdlib.h>
#include<string.h>/*定义结构体数组*/
typedef struct 
{char num[12];       /*学号*/char name[20];      /*姓名*/char sex[2];        /*性别*/int score[3];       /*成绩*/float avg;          /*平均分*/int sum;            /*总成绩*/
}Student;Student studentAll[80]; /*结构体数组*/
int student_number = 0; /*总人数*/
/*菜单函数*/
int menu_select() 
{int check_number;do{system("cls");  /*运行前清屏clear screen,在stdlib.h中*/printf("\t************学生成绩管理系统*************\n"); /*菜单选择*/printf("\t*| 1. 添加学生信息                      *\n");printf("\t*| 2. 显示学生信息                      *\n");printf("\t*| 3. 按学号排序                        *\n");printf("\t*| 4. 按总成绩排序                      *\n");printf("\t*| 5. 查找单个学生                      *\n");printf("\t*| 6. 删除指定学生                      *\n");printf("\t*| 7. 修改学生信息                      *\n"); printf("\t*| 8. 查看各门课程的成绩情况            *\n");printf("\t*| 9. 待定功能                          *\n");printf("\t*| 0. 保存退出                          *\n");printf("\t*****************************************\n");printf("请输入选择(0-9):");scanf("%d",&check_number);              /*读入选择*/}while(check_number<0||check_number>9);return(check_number);                   /*返回选择*/
}//以下的student都是形式参数,真正的数组是在全局变量里定义的studentAll数组/*输入若干条记录*/
void Input(Student student[])
{int i=0,j;char flag,clear[10];                        /*clear[10]为清除多余的数据所用*/char studentNum[12];                        //暂存某学生学号//判断是否已经存在相同学生的学号while(flag!='n'&&flag!='N')             //判断flag是不是n/N,以此判断是否继续输入学生信息{printf("请输入学生学号:   ");scanf("%s",studentNum);while(strcmp(student[i].num,studentNum)!=0&&i<student_number){ i++;                            /*查找判断*/}//查找到学生,无法增加学生信息,返回主函数if(i<student_number)printf("已有相同学号的学生,请重新输入\n");//如果没有查找到学生,即可增加学生信息else { if(i==student_number) {memset(student[i].num, 0, sizeof(student[i].num));//字符串清空strcpy(student[i].num,studentNum);printf("学生姓名:");scanf("%s",student[student_number].name);printf("学生性别:");scanf("%s",student[student_number].sex);            printf("c语言成绩:");scanf("%d",&student[student_number].score[0]);printf("数据结构成绩:");scanf("%d",&student[student_number].score[1]);printf("数据库成绩:");scanf("%d",&student[student_number].score[2]);student[student_number].sum=0;for(j=0;j<3;j++)student[student_number].sum+=student[student_number].score[j];student[student_number].avg = (float)student[student_number].sum/3;//printf("%.2f\n",student[student_number].avg);gets(clear);                        //*清除多余的输入printf("此学生信息录入完毕,是否继续?(Y/N)");scanf("%c",&flag);          //输入判断student_number++;//总人数加1i=0;}}       }}/*显示所有记录*/
void Display(Student student[]) 
{int i;printf("共有%d名同学\n",student_number);printf("----------------------------------------------------------------------------------------------------------\n");printf("学生学号\t学生姓名\t学生性别\tc语言成绩\t数据结构成绩\t数据库成绩\t平均成绩\t总成绩\n");printf("----------------------------------------------------------------------------------------------------------\n");for(i=0;i<student_number;i++){printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\t\t%d\t\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);}system("pause");}/*按学号排序*/
void Sort_by_num(Student student[]) 
{ int i,j;for(i=0;i<student_number-1;i++){for(j=0;j<student_number-1-i;j++){if(strcmp(student[j].num,student[j+1].num)){Student t;t=student[j];student[j]=student[j+1];student[j+1]=t;}}}}/*按总成绩排序*/
void Sort_by_sum(Student student[]) 
{ int i,j;for(i=0;i<student_number-1;i++){for(j=0;j<student_number-1-i;j++){if(student[j].sum<student[j+1].sum){Student t;t=student[j];student[j]=student[j+1];student[j+1]=t;}}}}/*按姓名查找,删除一条记录*/
void Delete_a_record(Student student[]) 
{char studentName[20];int i=0;printf("请输入要删除记录的姓名");scanf("%s",studentName);while(strcmp(student[i].name,studentName)!=0&&i<student_number){i++;                            /*查找判断*/}int t=i;if(i<student_number){int j=student_number-1;for(;j>i;i++){student[i]=student[i+1];}student_number--;}if(t==student_number){printf("没有此人,请重新输入");}   
}/*按姓名查找并显示一个记录*/
void Query_a_record(Student student[]) 
{char studentName[20];int i=0;printf("请输入要查找记录的姓名");scanf("%s",studentName);while(strcmp(student[i].name,studentName)!=0&&i<student_number){i++;                            /*查找判断*/}if(i<student_number){printf("------------------------------------------------------------------------------------------------------------------------\n");printf("学生学号\t学生姓名\t学生性别\tc语言成绩\t数据结构成绩\t数据库成绩\t平均成绩\t总成绩\n");printf("------------------------------------------------------------------------------------------------------------------------\n");printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\t\t%d\t\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);}if(i==student_number){printf("没有此人,请重新输入");}   }
/*修改学生信息*/
void modifyStudentinformation(Student student[])
{char studentName[20];int i=0;printf("请输入要修改记录的姓名");scanf("%s",studentName);while(strcmp(student[i].name,studentName)!=0&&i<student_number){i++;                            /*查找判断*/}if(i<student_number){printf("修改前的记录:");printf("------------------------------------------------------------------------------------------------------------------------\n");printf("学生学号\t学生姓名\t学生性别\tc语言成绩\t数据结构成绩\t数据库成绩\t平均成绩\t总成绩\n");printf("------------------------------------------------------------------------------------------------------------------------\n");printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\t\t%d\t\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum); printf("\n学生学号:");scanf("%s",student[i].num);printf("学生姓名:");scanf("%s",student[i].name);printf("学生性别:");scanf("%s",student[i].sex);         printf("c语言成绩:");scanf("%d",&student[i].score[0]);printf("数据结构成绩:");scanf("%d",&student[i].score[1]);printf("数据库成绩:");scanf("%d",&student[i].score[2]);for(int j=0;j<3;j++)student[i].sum+=student[i].score[j];student[i].avg = (float)student[i].sum/3;printf("\n修改后的记录:\n");printf("------------------------------------------------------------------------------------------------------------------------\n");printf("学生学号\t学生姓名\t学生性别\tc语言成绩\t数据结构成绩\t数据库成绩\t平均成绩\t总成绩\n");printf("------------------------------------------------------------------------------------------------------------------------\n");printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\t\t%d\t\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);}if(i==student_number){printf("没有此人,请重新输入");}   }/*查看各门课程的成绩情况*/
void showClass(Student student[]) 
{ char studentName[20];int i=0;printf("请输入要查看各门课程成绩的学生的姓名");scanf("%s",studentName);while(strcmp(student[i].name,studentName)!=0&&i<student_number){i++;                            /*查找判断*/}if(i<student_number){printf("***********\n");printf("c语言成绩:%d\n",student[i].score[0]);printf("***********\n\n");printf("**************\n");printf("数据结构成绩:%d\n",student[i].score[1]);printf("**************\n\n");printf("**************\n");printf("数据库成绩:%d\n",student[i].score[2]);printf("**************\n");}if(i==student_number){printf("没有此人,请重新输入");}   
}/*从文件中读入数据*/
void AddfromText(Student student[]) 
{ int i=0;int number = 0;FILE *fp;                                                           /*定义文件指针*/if((fp=fopen("D:\\student.txt","rb"))==NULL)                /*打开二进制文件,如果不存在则创建*/{ fp=fopen("D:\\student.txt","rb") ;}fscanf(fp,"%d",&student_number);                                    /*读入总记录量*/while(i<student_number)                                             /*循环读入数据*/{fscanf(fp,"%s%s%s%d%d%d%f%d",student[i].num,student[i].name,student[i].sex,&student[i].score[0],&student[i].score[1],&student[i].score[2],&student[i].avg,&student[i].sum);i++;}fclose(fp); }
/*将所有记录写入文件*/
WritetoText(Student student[])
{FILE *fp;if((fp=fopen("D:\\student.txt","wb"))==NULL){printf("error");}else{fprintf(fp,"%d",student_number);for(int i=0;i<student_number;i++){fprintf(fp,"\t%s\t%s\t%s\t%d\t%d\t%d\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);}fclose(fp);}  
}/*主函数*/
int main() 
{AddfromText(studentAll);for(;;){switch(menu_select())                                           /*选择判断*/{case 1:printf("插入学生信息\n");                             /*输入若干条记录*/Input(studentAll);break;case 2:printf("显示记录\n");                               /*显示所有记录*/Display(studentAll);break;case 3:printf("按学号排序\n");Sort_by_num(studentAll);                                    /*按学号排序*/printf("按学号排序成功!\n");Display(studentAll);system("pause");break;case 4:printf("按总成绩排序\n");Sort_by_sum(studentAll);                                    /*按总成绩排序*/printf("按总成绩排序成功!\n");Display(studentAll);system("pause");break;case 5:printf("查找单个学生\n");Query_a_record(studentAll);                                 /*按姓名查找学生*/system("pause");break;case 6:printf("删除指定学生\n");Delete_a_record(studentAll);                                /*按姓名查找,删除一条记录*/system("pause");break;case 7:printf("修改学生信息\n");modifyStudentinformation(studentAll);                               /*查看学生成绩情况*/system("pause");break;case 8:printf("查看各门课程的成绩情况\n");showClass(studentAll);                                      /*查看各门课程的成绩情况*/system("pause");break;case 9:printf("待定功能\n");printf("功能描述");system("pause");break;case 0:WritetoText(studentAll);printf("已保存,退出系统\n");       /*结束程序*/system("pause");//exit(0);}}
} 

靓仔点赞

在这里插入图片描述


http://www.taodudu.cc/news/show-1944756.html

相关文章:

  • 【physx/wasm】在physx中添加自定义接口并重新编译wasm
  • excel---常用操作
  • Lora训练Windows[笔记]
  • linux基础指令讲解(ls、pwd、cd、touch、mkdir)
  • InnoDB 事务处理机制
  • 启明云端ESP32 C3 模组WT32C3通过 MQTT 连接 AWS
  • 学生成绩管理系统(C语言实现)
  • c语言学生成绩管理系统的设计,C语言学生成绩管理系统设计
  • c语言学生成绩管理系统讲解,C语言学生成绩管理系统(含源代码)精编.doc
  • C语言学生成绩管理系统设计 《C语言程序设计》实训报告
  • 课设——C语言学生成绩管理系统
  • c语言学生成绩管理系统总结
  • c语言课程设计学生成绩管理系统作业,C语言学生成绩管理系统课程设计word版
  • 学生成绩管理系统简单c语言源代码,c语言学生成绩管理系统源代码
  • c语言编写成绩管理系统代码,C语言学生成绩管理系统源代码
  • 基于c语言的学生成绩管理系统论文,C语言学生成绩管理系统论文
  • C语言实现学生成绩管理系统
  • c语言 学生成绩管理系统
  • C语言学生成绩管理系统(综合项目)
  • 学生成绩管理系统(C语言)
  • 在线反编译
  • swf反编译及修改
  • swf反编译为as
  • 如何防止SWF文件被反编译 如何防止SWF文件被反编译(2)
  • swf文件的反编译或着flash文件的反编译
  • swc反编译工具_ffdec 10.0|ffdec(flash反编译工具)下载v10.0.0官方最新版 - 欧普软件下载...
  • swc反编译工具_Flash反编译工具下载_Flash反编译工具(JPEXS Free Flash Decompiler)v11.3中文版-这家软件站...
  • swc反编译工具_JPEXS Free Flash Decompiler(Flash反编译工具)v11.3.0 中文免费版-ucbug软件站...
  • flash 反编译资料
  • Sothink SWF Decompiler 反编译swf
  • 如何防止SWF文件被反编译
  • SWF反编译工具
  • 使用swix反编译swf文件修改版权
  • 反编译swf工具
  • SWF文件反编译调试记录
  • 反编译swf