版本:C99

IDE:CLion

编译器:MinGW

#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define MAXSIZE 100     //课程最多人数
#define COURSENUM 6     //课程门数typedef struct student {int num;                    //学号char name[20];              //姓名float score[COURSENUM];     //各门课的成绩float ave;                  //平均分
} StuType;typedef struct Students {StuType *elem;              //学生数组空间起始地址int length;                 //学生实际个数
} Students;void create(Students *sa, int n) {int i, j;char temp;float ave = 0, sum = 0;for (i = 0; i < n; i++) {printf("请输入第%d个学生的信息:\n", i+1);printf("学号:");scanf("%d%c", &sa->elem[i].num, &temp);//为了姓名读入正确,需要去掉录入学号信息时输入的回车printf("姓名:");gets(sa->elem[i].name);printf("六门课的成绩:英语、哲学、高等数学、数据结构、操作系统、计算机网络:");for (j = 0; j < COURSENUM; j++) {scanf("%f", &sa->elem[i].score[j]);sum+=sa->elem[i].score[j];}sa->elem[i].ave = sum/COURSENUM;sa->length = n;sum = 0;}
}void display(Students sa) {int i, j;printf("%d个学生的信息如下:\n", sa.length);printf("学号、姓名、英语、哲学、高等数学、数据结构、操作系统、计算机网络、平均分\n");for (i = 0; i < sa.length; i++) {printf("%d  %s", sa.elem[i].num, sa.elem[i].name);for (j = 0; j < COURSENUM; j++) {printf("%8.1f", sa.elem[i].score[j]);}printf("%8.1f\n", sa.elem[i].ave);}
}void searchByNum(Students sa, int num) {int i, j;for (i = 0; i < sa.length; i++) {if (sa.elem[i].num == num) {printf("学号、姓名、英语、哲学、高等数学、数据结构、操作系统、计算机网络、平均分\n");printf("%d  %s", sa.elem[i].num, sa.elem[i].name);for (j = 0; j < COURSENUM; j++) {printf("%8.1f", sa.elem[i].score[j]);}printf("%8.1f\n", sa.elem[i].ave);break;}}if (i == sa.length){printf("查无此人!\n");}
}void searchByName(Students sa, char *name) {int i, j, flag = 0;for (i = 0; i < sa.length; i++) {if (strcmp(sa.elem[i].name, name) == 0) {printf("学号、姓名、英语、哲学、高等数学、数据结构、操作系统、计算机网络、平均分\n");printf("%d  %s", sa.elem[i].num, sa.elem[i].name);for (j = 0; j < COURSENUM; j++) {printf("%8.1f", sa.elem[i].score[j]);}printf("%8.1f\n", sa.elem[i].ave);flag = 1;break;}}if (!flag) {printf("查无此人!\n");}
}void add(Students *sa) {int i;float sum = 0;char temp;printf("请输入该学生的信息:\n");printf("学号:");scanf("%d%c", &sa->elem[sa->length].num, &temp);//为了姓名读入正确,需要去掉录入学号信息时输入的回车printf("姓名:");gets(sa->elem[sa->length].name);printf("六门课的成绩:英语、哲学、高等数学、数据结构、操作系统、计算机网络:");for (i = 0; i < COURSENUM; i++) {scanf("%f", &sa->elem[sa->length].score[i]);sum+=sa->elem[sa->length].score[i];}sa->elem[sa->length].ave = sum/COURSENUM;sa->length++;
}void deleteByName(Students *sa, int num) {int i, j, flag = 0;for (i = 0; i < sa->length; i++) {if (sa->elem[i].num == num) {for (j = i; j < sa->length; j++) {sa->elem[j] = sa->elem[j+1];}sa->length--;flag = 1;break;}}if (!flag) {printf("查无此人!\n");}
}void modifyByName(Students *sa, int num) {int selected;int i, flag = 0;char temp;for (int i = 0; i < sa->length; i++) {if (sa->elem[i].num == num) {for (;;) {printf("------请选择要修改的项目:------\n");printf("        1:姓名\n");printf("        2:英语成绩\n");printf("        3:哲学成绩\n");printf("        4:高等数学成绩\n");printf("        5:数据结构成绩\n");printf("        6:操作系统成绩\n");printf("        7:计算机网络成绩\n");printf("        8:返回主菜单\n");scanf("%d", &selected);scanf("%c", &temp);switch (selected) {case 1:printf("请输姓名:");gets(sa->elem[i].name);break;case 2:printf("请输入英语成绩:");scanf("%f", &sa->elem[i].score[0]);average(sa);break;case 3:printf("请输入哲学成绩:");scanf("%f", &sa->elem[i].score[1]);average(sa);break;case 4:printf("请输入高等数学成绩:");scanf("%f", &sa->elem[i].score[2]);average(sa);break;case 5:printf("请输入数据结构成绩:");scanf("%f", &sa->elem[i].score[3]);average(sa);break;case 6:printf("请输入操作系统成绩:");scanf("%f", &sa->elem[i].score[4]);average(sa);break;case 7:printf("请输入计算机网络成绩:");scanf("%f", &sa->elem[i].score[5]);average(sa);break;case 8:return;}}flag = 1;break;}}if (!flag) {printf("查无此人!\n");}
}void average(Students *sa) {int i, j;float ave = 0, sum = 0;for (j = 0; j < COURSENUM; j++) {scanf("%f", &sa->elem[i].score[j]);sum+=sa->elem[i].score[j];}sa->elem[sa->length].ave = sum/COURSENUM;
}void sortByCourse(Students *sa) {int selected;for (;;) {printf("------请选择排序依据的科目:------\n");printf("        1:英语\n");printf("        2:哲学\n");printf("        3:高等数学\n");printf("        4:数据结构\n");printf("        5:操作系统\n");printf("        6:计算机网络\n");printf("        7:返回主菜单\n");scanf("%d", &selected);switch (selected) {case 1:sortByCourse2(sa, 0);break;case 2:sortByCourse2(sa, 1);break;case 3:sortByCourse2(sa, 2);break;case 4:sortByCourse2(sa, 3);break;case 5:sortByCourse2(sa, 4);break;case 6:sortByCourse2(sa, 5);break;case 7:return;}}
}void sortByCourse2(Students *sa, int course) {int i, j, max;StuType stu;for (i = 0; i < sa->length; i++) {max = i;for (j = i+1; j < sa->length; i++) {if (sa->elem[j].score[course] > sa->elem[max].score[course]) {max = j;}}if (max != i) {stu.num = sa->elem[i].num;strcpy(stu.name, sa->elem[i].name);for (j = 0; j < COURSENUM; j++) {stu.score[j] = sa->elem[i].score[j];}sa->elem[i].num = sa->elem[max].num;strcpy(sa->elem[i].name, sa->elem[max].name);for (j = 0; j < COURSENUM; j++) {sa->elem[i].score[j] = sa->elem[max].score[j];}sa->elem[max].num = stu.num;strcpy(sa->elem[max].name, stu.name);for (j = 0; j < COURSENUM; j++) {sa->elem[max].score[j] = stu.score[j];}}}
}void level(Students sa) {int selected;for (;;) {printf("------请选择统计分数段的科目:------\n");printf("        1:英语\n");printf("        2:哲学\n");printf("        3:高等数学\n");printf("        4:数据结构\n");printf("        5:操作系统\n");printf("        6:计算机网络\n");printf("        7:返回主菜单\n");scanf("%d", &selected);switch (selected) {case 1:levelByCourse(sa, 0);break;case 2:levelByCourse(sa, 1);break;case 3:levelByCourse(sa, 2);break;case 4:levelByCourse(sa, 3);break;case 5:levelByCourse(sa, 4);break;case 6:levelByCourse(sa, 5);break;case 7:return;}}
}void levelByCourse(Students sa, int course) {int num[6] = {0}, i, j;for (int i = 0; i < sa.length; i++) {if (sa.elem[i].score[course] < 60) {num[0]++;} else if (sa.elem[i].score[course] < 70) {num[1]++;} else if (sa.elem[i].score[course] < 80) {num[2]++;} else if (sa.elem[i].score[course] < 90) {num[3]++;} else {num[4]++;}}switch (course) {case 0:printf("英语成绩分数段分布人数:60分以下、60~69分、70~79分、80~89分、90分以上分别为:\n");break;case 1:printf("哲学成绩分数段分布人数:60分以下、60~69分、70~79分、80~89分、90分以上分别为:\n");break;case 2:printf("高等数学成绩分数段分布人数:60分以下、60~69分、70~79分、80~89分、90分以上分别为:\n");break;case 3:printf("数据结构成绩分数段分布人数:60分以下、60~69分、70~79分、80~89分、90分以上分别为:\n");break;case 4:printf("操作系统成绩分数段分布人数:60分以下、60~69分、70~79分、80~89分、90分以上分别为:\n");break;case 5:printf("计算机网络成绩分数段分布人数:60分以下、60~69分、70~79分、80~89分、90分以上分别为:\n");break;}for (int i = 0; i < 5; i++) {printf("%6d", num[i]);}printf("\n");
}int main() {int selected = 10, count, num;Students sa;char name[20], temp;sa.elem = (StuType *)malloc(sizeof(StuType)*MAXSIZE);for (;;) {printf("------本程序为学生程序管理系统,请选择系统功能:------\n");printf("        1:录入全部学生信息\n");printf("        2:按学号查询学生信息\n");printf("        3:按姓名查询学生信息\n");printf("        4:添加一个学生信息\n");printf("        5:按学号删除学生信息\n");printf("        6:按学号修改学生信息\n");printf("        7:显示所有学生信息\n");printf("        8:按课程成绩从高到低显示所有学生信息\n");printf("        9:按分数段统计学生信息\n");printf("        0:退出程序\n");scanf("%d", &selected);switch (selected) {case 1:printf("请输入学生个数:");scanf("%d", &count);create(&sa, count);break;case 2:printf("请输入要查询的学生的学号:");scanf("%d", &num);searchByNum(sa, num);break;case 3://将菜单选择时键入的回车符删掉scanf("%c", &temp);printf("请输入要查询的学生的姓名:");gets(name);searchByName(sa, name);break;case 4:add(&sa);break;case 5:printf("请输入要删除的学生的学号:");scanf("%d", &num);deleteByName(&sa, num);break;case 6:printf("请输入要修改信息的学生的学号:");scanf("%d", &num);modifyByName(&sa, num);break;case 7:display(sa);break;case 8:sortByCourse(&sa);break;case 9:level(sa);break;case 0:return 0;}}return 0;
}

【C语言】编写一个简单的学生成绩管理系统相关推荐

  1. Python:结合列表和字典,编写一个简单的学生成绩管理系统

            本次主要使用新学的列表和字典,结合定义函数等知识点,成功编写了一个简单的学生成绩管理系统.实现了在系统内使用学生的姓名或者学号,即可实现显示.添加.删除.修改.查找(增删改查).成绩排 ...

  2. Java语言写一个简单的学生信息管理系统,通过JDBC连接数据库对学生信息进行增删改查,采用三层思想和DBUtils第三方框架。

    我把源代码和sql文件放GitHub上了,你们可以自行下载:https://github.com/fenglily1/student. 有问题可以留言或私信,我看到就会回. 进阶版加上页面的管理系统在 ...

  3. C语言期末课设:从头开始设计一个简单的学生成绩管理系统

    整个可以运行的源代码在文章最后!!! 首先我们先创建一个结构体,用来抽象一个学生的信息,包含该学生的学号,姓名,成绩(这里我们为了程序简单,只包含了一个成绩.也可以自行添加,其他成绩信息,以及性别,年 ...

  4. C实现的一个简单的学生成绩管理系统

    /*学生成绩管理系统 */ //#include "StdAfx.h" #include "stdio.h"   /*标准输入输出函数库*/ #include ...

  5. JSP设计一个简单的学生成绩管理系统

    数据库 sqlserver Create database student go use student go create table class(bjbh char(9) primary key, ...

  6. 第一篇博客——C语言实现简单的学生成绩管理系统

    C语言简单实现学生成绩管理系统 一.前言 首先,要写一个管理系统必须要先搭出一个框架来,即明确自己要实现哪些功能,将每个功能都写陈一个函数,然后再去编写实现各个功能的函数,最后再思考各个函数之间的相互 ...

  7. 一个简单的学生成绩管理软件(ODBC开发)

    一个简单的学生成绩管理软件(ODBC开发) 下载本文所附源代码 程序运行效果截图: 前面我写过一篇<一个完善的ODBC数据库程序>,大家可能看到过,有鼓励,也有批评,但是所有这一切只有一个 ...

  8. c语言编写一个简单的答题系统

    利用c语言编写一个简单的答题系统. 思路是先设计好题目和答案,再输入自己的答案,利用输入的答案与正确答案对比,从而得出你回答的对错. (一)捆绑题目和答案 我们可以利用结构体对一个题目捆绑上一个答案. ...

  9. 用计算机怎么做成绩表,利用Excel制作一个简单的学生成绩表.doc

    利用Excel制作一个简单的学生成绩表 教学设计表 学科 信息技术 授课年级 八年级 学校 教师姓名 章节名称初中信息技术八年级上册第7课(第1节)计划学时1学时学习内容分析学习Excel的基础知识, ...

最新文章

  1. Android RxJava 2.0中backpressure(背压)概念的理解
  2. Python通过代理ip访问网站
  3. CTF杂项之“维吉尼亚密码”
  4. 程序员面试系列——冒泡排序
  5. OpenGL剪切平面和双面渲染
  6. 近似求PI(15 分)
  7. jQuery使用最广泛的javascript函数库
  8. 李沐亚马逊资深首席科学家 - 动手学深度学习v2 -2安装
  9. 一元二次方程组求根问题
  10. 欧盟斥资18亿欧元 砸向网络安全领域——英国,你后悔了没?
  11. word怎么让页码在指定页面从1开始
  12. python中Blowfish加密解密
  13. Tomcat修行之路-7.Tomcat-Mapper组件机制以及请求处理机制
  14. [NOIP]模拟17 题解
  15. QQ虎年春节活动ADB自动助手(自动开星星,自动红包雨下拉,自动团圆饭,自动一笔连)
  16. 心理学-在对的时间遇见对的人,不负自己,不负时光。
  17. 项目进阶攻略:如何快速扩大项目规模
  18. Oracle 能够tnsping,但程序无法访问
  19. 全向移动平台运动参数分析
  20. 十进制与二进制相互转换(包括带小数点.各类进制转换公式)

热门文章

  1. 如何正确的通过 C++ Primer 学习 C++?(转自知乎)
  2. 蓝桥杯第六届国赛JAVA真题----切开字符串
  3. 服务器里怎么更改网站图片大小,php实现在服务器端调整图片大小的方法
  4. 拯救者linux无法正常关机,Ubuntu无法关机解决办法
  5. cocos2d c 调用java_cocos2d-x之C++ 调用Java函数并接收返回值
  6. 对应版本_Office 开发版本号与版本对应关系
  7. pycharm中配置r语言_【R语言】R语言中的循环
  8. 如何画圆柱_什么是最速降线?如何来验证一下呢?这里用SolidWorks来试一试
  9. javascript中基本包装、算数运算符、递增递减运算符、赋值运算符、比较运算符、逻辑运算符、运算符优先级
  10. 使用postman操作ElasticSearch