【C语言】编写一个简单的学生成绩管理系统
版本: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语言】编写一个简单的学生成绩管理系统相关推荐
- Python:结合列表和字典,编写一个简单的学生成绩管理系统
本次主要使用新学的列表和字典,结合定义函数等知识点,成功编写了一个简单的学生成绩管理系统.实现了在系统内使用学生的姓名或者学号,即可实现显示.添加.删除.修改.查找(增删改查).成绩排 ...
- Java语言写一个简单的学生信息管理系统,通过JDBC连接数据库对学生信息进行增删改查,采用三层思想和DBUtils第三方框架。
我把源代码和sql文件放GitHub上了,你们可以自行下载:https://github.com/fenglily1/student. 有问题可以留言或私信,我看到就会回. 进阶版加上页面的管理系统在 ...
- C语言期末课设:从头开始设计一个简单的学生成绩管理系统
整个可以运行的源代码在文章最后!!! 首先我们先创建一个结构体,用来抽象一个学生的信息,包含该学生的学号,姓名,成绩(这里我们为了程序简单,只包含了一个成绩.也可以自行添加,其他成绩信息,以及性别,年 ...
- C实现的一个简单的学生成绩管理系统
/*学生成绩管理系统 */ //#include "StdAfx.h" #include "stdio.h" /*标准输入输出函数库*/ #include ...
- JSP设计一个简单的学生成绩管理系统
数据库 sqlserver Create database student go use student go create table class(bjbh char(9) primary key, ...
- 第一篇博客——C语言实现简单的学生成绩管理系统
C语言简单实现学生成绩管理系统 一.前言 首先,要写一个管理系统必须要先搭出一个框架来,即明确自己要实现哪些功能,将每个功能都写陈一个函数,然后再去编写实现各个功能的函数,最后再思考各个函数之间的相互 ...
- 一个简单的学生成绩管理软件(ODBC开发)
一个简单的学生成绩管理软件(ODBC开发) 下载本文所附源代码 程序运行效果截图: 前面我写过一篇<一个完善的ODBC数据库程序>,大家可能看到过,有鼓励,也有批评,但是所有这一切只有一个 ...
- c语言编写一个简单的答题系统
利用c语言编写一个简单的答题系统. 思路是先设计好题目和答案,再输入自己的答案,利用输入的答案与正确答案对比,从而得出你回答的对错. (一)捆绑题目和答案 我们可以利用结构体对一个题目捆绑上一个答案. ...
- 用计算机怎么做成绩表,利用Excel制作一个简单的学生成绩表.doc
利用Excel制作一个简单的学生成绩表 教学设计表 学科 信息技术 授课年级 八年级 学校 教师姓名 章节名称初中信息技术八年级上册第7课(第1节)计划学时1学时学习内容分析学习Excel的基础知识, ...
最新文章
- Android RxJava 2.0中backpressure(背压)概念的理解
- Python通过代理ip访问网站
- CTF杂项之“维吉尼亚密码”
- 程序员面试系列——冒泡排序
- OpenGL剪切平面和双面渲染
- 近似求PI(15 分)
- jQuery使用最广泛的javascript函数库
- 李沐亚马逊资深首席科学家 - 动手学深度学习v2 -2安装
- 一元二次方程组求根问题
- 欧盟斥资18亿欧元 砸向网络安全领域——英国,你后悔了没?
- word怎么让页码在指定页面从1开始
- python中Blowfish加密解密
- Tomcat修行之路-7.Tomcat-Mapper组件机制以及请求处理机制
- [NOIP]模拟17 题解
- QQ虎年春节活动ADB自动助手(自动开星星,自动红包雨下拉,自动团圆饭,自动一笔连)
- 心理学-在对的时间遇见对的人,不负自己,不负时光。
- 项目进阶攻略:如何快速扩大项目规模
- Oracle 能够tnsping,但程序无法访问
- 全向移动平台运动参数分析
- 十进制与二进制相互转换(包括带小数点.各类进制转换公式)
热门文章
- 如何正确的通过 C++ Primer 学习 C++?(转自知乎)
- 蓝桥杯第六届国赛JAVA真题----切开字符串
- 服务器里怎么更改网站图片大小,php实现在服务器端调整图片大小的方法
- 拯救者linux无法正常关机,Ubuntu无法关机解决办法
- cocos2d c 调用java_cocos2d-x之C++ 调用Java函数并接收返回值
- 对应版本_Office 开发版本号与版本对应关系
- pycharm中配置r语言_【R语言】R语言中的循环
- 如何画圆柱_什么是最速降线?如何来验证一下呢?这里用SolidWorks来试一试
- javascript中基本包装、算数运算符、递增递减运算符、赋值运算符、比较运算符、逻辑运算符、运算符优先级
- 使用postman操作ElasticSearch