源码、经验交流QQ群:613879714,有问题QQ群提问,这里不能及时回复

1. 主要功能

  • 输入学生数据
  • 显示学生数据
  • 计算成绩
  • 成绩排序
  • 成绩查找
  • 成绩修改
  • 添加学生数据
  • 删除学生成绩

2.演示

B站演示视频链接

C语言-学生成绩管理系统

3.源码

#include<stdio.h>
#include<stdlib.h>
#include <conio.h>
#include<string.h>
#define N 30
struct student{ long num;char name[10];unsigned int score[3];float sum;float ave;};
int n;
//进入系统界面
void in()
{printf("\t\t┌───────────────┐\n"); printf("\t\t│                              │\n");printf("\t\t│      学生成绩管理系统        │\n");printf("\t\t│                              │\n"); printf("\t\t│           欢迎使用           │\n");printf("\t\t│                              │\n"); printf("\t\t│     按任意键进入系统……     │\n"); printf("\t\t└───────────────┘\n");getch();
}
//1.这是输入函数
void input(struct student stu[]){ int i,j;system("cls");  //清屏函数printf("\t\t\t┌──────┐\n");printf("\t\t\t│输入学生数据│\n");printf("\t\t\t└──────┘\n");printf("请输入学生人数(1-30):\n");scanf("%d",&n);for(i=0;i<n;i++){printf("请输入第%d个学生的学号:",i+1);scanf("%ld",&stu[i].num);printf("请输入第%d个学生的姓名:",i+1);scanf("%s",stu[i].name);printf("请输入第%d个学生的3门课程成绩(0-100):\n",i+1);for(j=0;j<3;j++)scanf("%d",&stu[i].score[j]);}printf("按任意键返回主菜单:\n");getch();
}// 2.这是显示函数
void display(struct student stu[N])
{  int i;system("cls");printf("\t\t\t┌──────┐\n");printf("\t\t\t│显示学生数据│\n");printf("\t\t\t└──────┘\n");printf("%d 个学生数据为:\n",n);printf("学号\t姓名\tC语言\t高数\t英语\n");for(i=0;i<n;i++)printf("%ld\t%s\t%d\t%d\t%d\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]);printf("按任意键返回主菜单:\n");getch();
}
//3.这是计算成绩
void aver(struct student stu[N])
{ int i,j;system("cls");  //清屏函数printf("\t\t\t┌──────┐\n");printf("\t\t\t│  计算成绩  │\n");printf("\t\t\t└──────┘\n");for(i=0;i<n;i++){stu[i].ave=0;stu[i].sum=0;for(j=0;j<3;j++)stu[i].sum+=stu[i].score[j];stu[i].ave=stu[i].sum/3;}printf("%d个学生的数据:\n",n);printf("学号\t姓名\tC语言\t高数\t英语\t总成绩\t平均成绩\n");for(i=0;i<n;i++)printf("%ld\t%s\t%d\t%d\t%d\t%.2f\t%.2f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].ave);printf("按任意键返回主菜单:\n");getch();
}
//4.这是排序函数
void sort(struct student stu[N])
{int i,k,j;system("cls");  //清屏函数struct student temp;printf("\t\t\t┌──────┐\n");printf("\t\t\t│  成绩排序  │\n");printf("\t\t\t└──────┘\n");for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(stu[k].ave<stu[j].ave) k=j;if(k!=i) { temp=stu[i];stu[i]=stu[k];stu[k]=temp;}}printf("学生成绩按从高到低排序后:\n");printf("学号\t姓名\tC语言\t高数\t英语\t总成绩\t平均成绩\n");for(i=0;i<n;i++)printf("%ld\t%s\t%d\t%d\t%d\t%.2f\t%.2f\n\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].ave);printf("按任意键返回主菜单:\n");getch();
}
//5(1).学号查找
void order(struct student stu[N])
{int i,m;system("cls");  //清屏函数printf("\t\t\t┌──────┐\n");printf("\t\t\t│ 按学号查找 │\n");printf("\t\t\t└──────┘\n");printf("请输入要查找的学号:");scanf("%d",&m);for(i=0;i<N;i++){if(m==stu[i].num){printf("学号\t姓名\tC语言\t高数\t英语\t总成绩\t平均成绩\n");printf("%ld\t%s\t%d\t%d\t%d\t%.2f\t%.2f\n\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].ave);break;}}if(i>=N)printf("找不到该学号!\n");printf("按任意键返回上一级:\n");getch();
}
//5(2).姓名查找
void binary(struct student stu[N])
{ system("cls");  //清屏函数int i;char ch[10];printf("\t\t\t┌──────┐\n");printf("\t\t\t│ 按姓名查找 │\n");printf("\t\t\t└──────┘\n");printf("请输入要查找的姓名:");scanf("%s",ch);for(i=0;i<N;i++){if(strcmp(ch,stu[i].name)==0){printf("学号\t姓名\tC语言\t高数\t英语\t总成绩\t平均成绩\n");printf("%ld\t%s\t%d\t%d\t%d\t%.2f\t%.2f\n\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].ave);break;}}if(i>=N)printf("找不到该姓名!\n");printf("按任意键返回上一级:\n");getch();
}
//5(3).这是求最高成绩
void highENDlow(struct student stu[])
{ int i;system("cls");  //清屏函数printf("\t\t\t┌─────────┐\n");printf("\t\t\t│最高成绩和最低成绩│\n");printf("\t\t\t└─────────┘\n");struct student max,min;max=stu[0];min=stu[0];for(i=1;i<n;i++){if(stu[i].ave>max.ave) max=stu[i];{printf("最高分的学生数据是:\n");printf("学号\t姓名\tC语言\t高数\t英语\t总成绩\t平均成绩\n");printf("%ld\t%s\t%d\t%d\t%d\t%.2f\t%.2f\n\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].ave);printf("\n");}if(stu[i].ave<max.ave) max=stu[i];{printf("最低分的学生数据是:\n");printf("学号\t姓名\tC语言\t高数\t英语\t总成绩\t平均成绩\n");printf("%ld\t%s\t%d\t%d\t%d\t%.2f\t%.2f\n\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].ave);printf("\n");}}printf("按任意键返回主菜单:\n");getch();
}
//5.查找
void find(struct student stu[])
{ struct student *p;p=stu;int n;while(1){  system("cls");printf("\t\t┌───────────────┐\n");printf("\t\t│          成绩查找            │\n");printf("\t\t├───────────────┤\n");printf("\t\t│     1. 按学号查找            │\n");printf("\t\t│     2. 按姓名查找            │\n");printf("\t\t│     3. 查找最高/低成绩       │\n");printf("\t\t│     4. 返回主菜单            │\n");printf("\t\t└───────────────┘\n");printf("请选择(1-3):");scanf("%d",&n);switch(n){   case 1: order(p); break;case 2: binary(p);break;case 3: highENDlow(p);break;case 4: return;   }}
}
//6.修改
void modi(struct student stu[])
{ system("cls");  //清屏函数int i,m,j,score;char ch,y='Y',n='N';printf("\t\t\t┌──────┐\n");printf("\t\t\t│  修改成绩  │\n");printf("\t\t\t└──────┘\n");printf("请输入要修改学生的学号:");scanf("%d",&m);for(i=0;i<N;i++)if(m==stu[i].num){printf("找到要该学生,信息如下:\n");printf("学号\t姓名\tC语言\t高数\t英语\t总成绩\t平均成绩\n");printf("%ld\t%s\t%d\t%d\t%d\t%.2f\t%.2f\n\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].ave);printf("修改C语言成绩输入0,高数输入1,英语输入2:");scanf("%d",&j);printf("要修改为:");scanf("%d",&score);printf("╔════════╗\n");printf("║确认是否修改?Y/N║\n");printf("╚════════╝\n");scanf("%s",&ch);if(ch==y)printf("修改成功!\n");if(ch==n){printf("否!");goto end;}switch(j){case 0: stu[i].score[0]=score;break;case 1: stu[i].score[1]=score;break;case 2: stu[i].score[2]=score;break;}printf("修改后该学生,信息如下:\n");printf("学号\t姓名\tC语言\t高数\t英语\n");printf("%ld\t%s\t%d\t%d\t%d\n\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]);   break;}if(i>=N)printf("找不到该学生信息!\n");end:printf("按任意键返回主菜单:\n");getch();
}
//7.添加学生数据
void add(struct student stu[])
{int i,j,m;system("cls");  //清屏函数printf("\t\t\t┌──────┐\n");printf("\t\t\t│添加学生数据│\n");printf("\t\t\t└──────┘\n");printf("请输入添加学生人数(30以内):\n");scanf("%d",&m);for(i=0;i<m;i++){printf("请输入第%d个学生的学号:",n+i+1);scanf("%ld",&stu[n+i].num);printf("请输入第%d个学生的姓名:",n+i+1);scanf("%s",stu[n+i].name);printf("请输入第%d个学生的3门课程成绩:\n",n+i+1);for(j=0;j<3;j++)scanf("%d",&stu[n+i].score[j]);}printf("添加成功!\n");printf("按任意键返回主菜单:\n");n+=m;getch();
}
//8.删除学生数据
void del(struct student stu[])
{system("cls");  //清屏函数int i,a;int flag=0;printf("\t\t\t┌──────┐\n");printf("\t\t\t│删除学生数据│\n");printf("\t\t\t└──────┘\n");printf("请输入要删除学生数据的学号:");scanf("%d",&a);for(i=0;i<n;i++){if(a==stu[i].num){flag=1; printf("学号\t姓名\tC语言\t高数\t英语\t总成绩\t平均成绩\n");printf("%ld\t%s\t%d\t%d\t%d\t%.2f\t%.2f\n\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].ave);printf("╔════════╗\n");printf("║确认是否删除?Y/N║\n");printf("╚════════╝\n");if (getchar()=='N'){break;} if(getchar()=='Y'){for(i;i<n;i++){stu[i].num=stu[i+1].num;strcpy(stu[i].name,stu[i+1].name);stu[i].score[0]=stu[i+1].score[0];stu[i].score[1]=stu[i+1].score[1];stu[i].score[2]=stu[i+1].score[2];}n--;printf("删除成功!\n");}} if(flag==0) printf("找不到该学号!\n");}printf("按任意键返回主菜单:\n");getch();
}
//这是主函数
int main()
{int n;struct student *p,stu[N];p=stu;system("cls");  //清屏函数in();while(1){    system("cls");  printf("\t\t┌───────────────┐\n");printf("\t\t│        学生成绩管理系统      │\n");printf("\t\t├───────────────┤\n");printf("\t\t│      1. 输入学生数据         │\n");printf("\t\t│      2. 显示学生数据         │\n");printf("\t\t│      3. 计算成绩             │\n");printf("\t\t│      4. 成绩排序             │\n");printf("\t\t│      5. 成绩查找             │\n");printf("\t\t│      6. 成绩修改             │\n");printf("\t\t│      7. 添加学生数据         │\n"); printf("\t\t│      8. 删除学生成绩         │\n");printf("\t\t│      0. 退出                 │\n");printf("\t\t└───────────────┘\n\n");printf("请选择(0-8):");scanf("%d",&n);switch(n){   case 1: input(p); break;case 2: display(p);break;case 3: aver(p); break;case 4: sort(p);break;case 5: find(p);break;case 6: modi(p);break;case 7: add(p);break;case 8: del(p);break;case 0:exit(1);}}return 0;
}

C语言课程设计(1)-学生成绩管理系统相关推荐

  1. c语言声明第一个学生的成绩,C语言课程设计报告--学生成绩管理系统

    <C语言课程设计报告--学生成绩管理系统>由会员分享,可在线阅读,更多相关<C语言课程设计报告--学生成绩管理系统(30页珍藏版)>请在人人文库网上搜索. 1.学生成绩管理系统 ...

  2. 大学生课程设计 ------ Java Web课程设计(学生成绩管理系统03)

    大学生课程设计 ------ Java Web课程设计(学生成绩管理系统03) Java Web课程设计(代码+课程报告) ---------------------我是分割线------------ ...

  3. 大学生课程设计 ------ Java Web课程设计(学生成绩管理系统01)

    大学生课程设计 ------ Java Web课程设计(学生成绩管理系统01) Java Web课程设计(代码+课程报告) 课程作业效果如下: 学生1:后台实现.数据库设计.前端后台整合 学生2:前端 ...

  4. 【Python课程设计】学生成绩管理系统

    [Python课程设计]学生成绩管理系统 1.需求分析 2.功能设计与分析 1.使用数据库对数据进行存取 (1)使用PyMySQL模块操作数据库对数据进行存取 (2)创建数据库school,创建数据表 ...

  5. 学生成绩管理系统mysql课程设计_学生成绩管理系统数据库课程设计报告.doc

    目 录 TOC \o "1-2" \h \z \u HYPERLINK \l "_Toc303696065" 1.开发背景 PAGEREF _Toc303696 ...

  6. 程序设计课程设计报告(学生成绩管理系统)

    程序设计课程设计报告 课程设计题目及内容 题目:学生成绩管理系统 设计要求及提示如下: (1).设计一个学生类Student,包括数据成员:姓名.学号.二门课程(面向对象程序设计.高等数学)的成绩. ...

  7. Web课程设计之学生成绩管理系统

    Web课设之学生成绩管理系统 一.实验题目 二.实验目的 三.总体设计 3.1 实验要求: 3.2 本系统所运用到的技术栈: 3.3 本系统所运用的编程工具 3.4 核心技术介绍 3.5 模块介绍 3 ...

  8. 课程设计:学生成绩管理系统

    亲爱的小伙伴们~[学生成绩管理系统]上线啦!!! [Java毕设项目]手把手教你搭建学生成绩管理系统_操作简单_功能实用(SQL+文档+代码)https://www.bilibili.com/vide ...

  9. Python课程设计:学生成绩管理系统(附源代码)

    版权声明:本文为CSDN博主「大格子嘞」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接: https://blog.csdn.net/qq_43971504 ...

最新文章

  1. 微信小程序发红包功能实现,附效果图加讲解。
  2. 哈工大威海c语言实验报告 第八章 无法运行程序,哈工大(威海)c语言实验报告册答案...
  3. php删除session中的值,PHP中session变量的销毁
  4. Springboot整合Hikari数据库连接池,密码加密
  5. PHP+AJAX 投票器功能
  6. sublime text的dockerfile语法高亮插件
  7. kettle java 变量传递_kettle的jdk1.7环境变量配置
  8. C#字符串:转数组、数字
  9. python基于值的内存管理模式_为什么说python采用的是基于值的内存管理模式
  10. 95-38-035-Buffer-AbstractByteBuf
  11. python编码规范总结、python编码转换
  12. 机器视觉基础知识汇总
  13. 两变频调速电机系统的神经网络逆同步控制
  14. Android 救援模式(Rescue Mode)原理剖析
  15. 串口服务器调试助手使用教程,串口服务器如何配置及串口调试6大技巧
  16. python中随机函数import random作用_python学习之随机函数random
  17. 多元微积分_向量函数偏导
  18. 熵值法的python实现方法
  19. spark常用的linux命令,GitHub - Sparkinzy/linux-command: Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。...
  20. 连共享打印机问题汇总

热门文章

  1. php读取文件不存在,php上传的文件不存在
  2. 网络适配器(SE)通讯调试
  3. 非常详细的Echarts介绍
  4. Node.js的HTTP
  5. Win7系统电脑无法识别U盘启动盘怎么办?
  6. 第四天,同系的大佬都已经开始研究算法了,我还在系统徘徊,是我小吴认怂了,我这进度属实有点慢啊!!
  7. 两个栈实现队列的push-pop操作---C++
  8. 24岁本科女生培训入门,学测试和前端哪个好?
  9. 企业级SSD产品对比
  10. 阿里云(香港节点瘫痪)复盘