C语言编程学生成绩管理系统
目录
一、介绍
二、功能
1.录入学生
2.删除学生信息
3.修改学生信息
4.查询学生信息
5.所有学生信息
6.成绩排序
7.退出程序
三、代码
1.主函数
2.头文件
3.函数封装库
一、介绍
利用C语言,运用链表、指针、封装函数等基本知识实现一个学生管理系统。通过在终端对学生信息进行一系列操作。
基本思想流程图如下:
基本参数:
二、功能
1.录入学生
通过输入选项 0 匹配功能,进入录入学生信息的程序,将学生的信息录入到程序。
相关函数:
int insert_stu(Class_t *cls)
程序运行结果:
2.删除学生信息
通过输入选项 1 匹配功能,进入删除学生信息的程序,对指定学生的信息删除。
相关函数:
int delete_stu(Class_t *cls)
程序运行结果:
3.修改学生信息
通过输入选项 2 匹配功能,进入修改学生信息的程序,对指定学生的信息进行修改。
相关函数:
int update_stu(Class_t *cls)
程序运行结果:
4.查询学生信息
通过输入选项 3 匹配功能,进入查询学生信息的程序,将指定学生的信息打印出来。
相关函数:
int select_stu(Class_t *cls)
程序运行结果:
5.所有学生信息
通过输入选项 4 匹配功能,进入遍历学生信息的程序,将所有学生的信息打印出来。
相关函数:
void print_all_stu(Class_t *cls)
程序运行结果:
已提前录入aa、bb、cc、dd、ee相关信息。
6.成绩排序
通过输入选项 5 匹配功能,进入成绩排序的程序,将所有的学生按照总成绩降序排序,并打印所有学生的信息。
相关函数:
void sort_stu(Class_t *cls)
程序运行结果:
7.退出程序
通过输入选项 6 匹配功能,退出程序。
程序运行结果:
三、代码
1.主函数
#include "score.h"//学生成绩管理系统
int main(int argc, const char *argv[])
{int chose = 0;int loop = 1;// 1. 定义一个班级的的变量Class_t *cls_p =(Class_t *)malloc(sizeof(Class_t));if (cls_p == NULL){printf("malloc failed!\n");return -1;}// 初始化学生的个数, 数组的变量从第0开始的cls_p->count = -1;while (loop){printf("################################################################\n");printf("#### 0.录入 1.删除 2.修改 3.查询 4.遍历 5.排序 6.退出 ####\n");printf("################################################################\n");printf("请输入你的选择 > ");scanf("%d", &chose);while (getchar() != '\n'); // 循环吃掉所有的垃圾字符switch (chose){case INSERT:insert_stu(cls_p);break;case DELECT:delete_stu(cls_p);break;case UPDATE:update_stu(cls_p);break;case SELECT:select_stu(cls_p);break;case PRINT:print_all_stu(cls_p);break;case SORT:sort_stu(cls_p);print_all_stu(cls_p);break;case QUIT:loop = 0;printf("退出学生成绩管理系统\n");break;default:printf("输入错误,请重新输入!\n");break;}if (!loop){break;}}if (cls_p != NULL){free(cls_p);cls_p = NULL;}return 0;
}
2.头文件
#ifndef __SCORE_H__
#define __SCORE_H__
#include <stdio.h>
#include <string.h>
#include <stdlib.h>// 班级学生的最大的个数
#define NUM 100// 学生成绩管理系统的功能
#define INSERT 0//插入
#define DELECT 1//删除
#define UPDATE 2//修改
#define SELECT 3//查询
#define PRINT 4//遍历
#define SORT 5//排序
#define QUIT 6//退出//声明一个学生成绩组成的结构体类型
typedef struct student_score
{int Maths;int Chinese;int English;int Total_score;
}score_t;// 声明一个学生的结构体类型
typedef struct Student /*不省略结构体名*/
{char name[20];int age;char sex;score_t score;
} Student_t;
// 声明一个班级的结构体类型
typedef struct /*省略结构体名*/
{Student_t stu_arr[NUM];int count; // 记录学生的个数
} Class_t;int insert_stu(Class_t *cls);//录入int delete_stu(Class_t *cls);//删除int update_stu(Class_t *cls);//修改int select_stu(Class_t *cls);//查询void print_all_stu(Class_t *cls);//遍历void sort_stu(Class_t *cls);//排序#endif // __SCORE_H__
3.函数封装库
#include "score.h"/*--------------------------------------------------------功能:录入一个学生参数:@ cls :插入到哪个班级返回值:0:成功-1:失败 学生满不可以插入
*/
int insert_stu(Class_t *cls)
{if (NUM == cls->count-1){printf("内存不足!插入失败!\n");return -1;}cls->count++;printf("请输入所要录入学生的相关信息\n");printf("请输入姓名:");scanf("%s",cls->stu_arr[cls->count].name);printf("请输入年龄:");scanf("%d",&cls->stu_arr[cls->count].age);printf("请输入性别:");scanf("%s",&cls->stu_arr[cls->count].sex);printf("请输入成绩->\n");printf("语文:");scanf("%d",&cls->stu_arr[cls->count].score.Chinese);printf("数学:");scanf("%d",&cls->stu_arr[cls->count].score.Maths);printf("英语:");scanf("%d",&cls->stu_arr[cls->count].score.English);cls->stu_arr[cls->count].score.Total_score = \cls->stu_arr[cls->count].score.Chinese + \cls->stu_arr[cls->count].score.English + \cls->stu_arr[cls->count].score.Maths;printf("总成绩:%-5d\n",cls->stu_arr[cls->count].score.Total_score);printf("录入成功\n");return 0;
}/*---------------------------------------------------------功能:删除一个学生,按照名字删除参数:@ cls : 删除哪个班级的学生返回值:0 :成功-1 : 失败 没有学生的,查无此人
*/
int delete_stu(Class_t *cls)
{char name[20] = "";printf("请输入所要删除学生的姓名:");scanf("%s",name);int i,j = 0;for(i = 0; i <= cls->count; i++){if(!(strcmp(cls->stu_arr[i].name,name))){for(j = i; j <= cls->count; j++){cls->stu_arr[j] = cls->stu_arr[j+1];}printf("删除成功\n");cls->count--;return 0;}}printf("查无此人\n");return -1;
}/*--------------------------------------------------------功能:修改学生成绩,按照名字修改参数:@ cls : 修改哪个班级的学生返回值:0 : 成功-1 : 失败 没有学生的,查无此人
*/
int update_stu(Class_t *cls)
{char name[20] = "";int i = 0; printf("请输入需要修改成绩学生的姓名:\n");scanf("%s",name);for(i = 0; i <= cls->count; i++){if(!strcmp(cls->stu_arr[i].name,name)){printf("该学生语文成绩为:%d\n",cls->stu_arr[i].score.Chinese);printf("请输入新的成绩:\n");scanf("%d",&(cls->stu_arr[i].score.Chinese));printf("该学生数学成绩为:%d\n",cls->stu_arr[i].score.Maths);printf("请输入新的成绩:\n");scanf("%d",&(cls->stu_arr[i].score.Maths));printf("该学生英语成绩为:%d\n",cls->stu_arr[i].score.English);printf("请输入新的成绩:\n");scanf("%d",&(cls->stu_arr[i].score.English));cls->stu_arr[cls->count].score.Total_score = \cls->stu_arr[cls->count].score.Chinese + \cls->stu_arr[cls->count].score.English + \cls->stu_arr[cls->count].score.Maths;printf("总成绩:%-5d\n",cls->stu_arr[cls->count].score.Total_score);printf("修改成功\n");return 0;}}printf("查无此人\n");return -1;
}
/*--------------------------------------------------------功能:查询某个学生成绩,按照名字查询参数:@ cls : 查询哪个班级的学生返回值:0 : 成功-1 : 失败 没有学生的,查无此人
*/
int select_stu(Class_t *cls)
{char name[20] = "";int i = 0; printf("请输入姓名:");scanf("%s",name);for(i = 0; i <= cls->count; i++){if(!(strcmp(cls->stu_arr[i].name,name))){printf("查询成功\n");printf("该学生成绩为->语文:%-4d数学:%-4d英语:%-4d总成绩:%-5d\n",\cls->stu_arr[i].score.Chinese,\cls->stu_arr[i].score.Maths,\cls->stu_arr[i].score.English,\cls->stu_arr[i].score.Total_score);return 0;}}printf("查无此人\n");return -1;
}
/*--------------------------------------------------------功能:打印所有学生成绩信息,参数:@ cls : 打印哪个班级的学生
*/
void print_all_stu(Class_t *cls)
{int i = 0;for(i = 0 ;i <= cls->count; i++){printf("姓名:%-4s年龄:%-4d性别:%-4c成绩->语文:%-4d数学:%-4d英语:%-4d总成绩:%-5d\n",\cls->stu_arr[i].name,\cls->stu_arr[i].age,\cls->stu_arr[i].sex,\cls->stu_arr[i].score.Chinese,\cls->stu_arr[i].score.Maths,\cls->stu_arr[i].score.English,\cls->stu_arr[i].score.Total_score);}
}
/*--------------------------------------------------------功能:对所有学生按照总成绩进行排序,参数:@ cls : 排序哪个班级的学生
*/
void sort_stu(Class_t *cls)
{int i,j = 0;Student_t temp; for(i = 0; i <= cls->count -1; i++){for(j = 0; j <= cls->count -1 -i; j++){if(cls->stu_arr[j].score.Total_score < cls->stu_arr[j+1].score.Total_score){temp = cls->stu_arr[j];cls->stu_arr[j] = cls->stu_arr[j+1];cls->stu_arr[j+1] = temp;}}}printf("排序成功\n");
}
C语言编程学生成绩管理系统相关推荐
- c语言学生管理系统write to a text file,语言编程学生成绩管理系统.doc
语言编程学生成绩管理系统 c语言编程-学生成绩管理系统 #include /*引用库函数*/ #include #include #include typedef struct /*定义结构体数组*/ ...
- c语言程序学生成绩系统论文,c语言程序设计-学生成绩管理系统论文.doc
c语言程序设计-学生成绩管理系统论文 C语言程序设计课程设计报告 - PAGE 11 - 中南民族大学工商学院 电子信息与计算机技术系 项目名称: 学生成绩管理系统 学生姓名: 学 号: 班 级: 指 ...
- 用c语言实现成绩统计的设计,c语言实现学生成绩管理系统.doc
c语言实现学生成绩管理系统.doc 学号102128121武汉理工大学华夏学院课程设计报告书课程名称:数据结构题目:用C语言实现成绩统计程序的设计系名:信息工程系专业班级:软件工程1121姓名:指导教 ...
- c语言编写简单的成绩管理系统,用c语言编写学生成绩管理系统
<用c语言编写学生成绩管理系统>由会员分享,可在线阅读,更多相关<用c语言编写学生成绩管理系统(9页珍藏版)>请在人人文库网上搜索. 1.include#include#inc ...
- C语言实现学生成绩管理系统(原码)
C语言实现学生成绩管理系统(单链表实现)很详细容易理解 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdl ...
- 影碟管理系统c语言小学期,大连东软小学期C语言项目学生成绩管理系统代码.docx...
大连东软小学期C语言项目学生成绩管理系统代码 /*链表版学生成绩管理系统的main函数与链表构建模块的代码*/#include #include #include struct STUDENT{ ch ...
- C语言编写学生成绩管理系统
文章链接:https://codemouse.online/archives/2020-06-04-16-07-48 需求 用C语言编写学生成绩管理系统,要求该系统可 对学生操作:添加和删除操作. 可 ...
- c语言成绩管理系统总结分析报告,c语言下学生成绩管理系统程序设计报告
<c语言下学生成绩管理系统程序设计报告>由会员分享,可在线阅读,更多相关<c语言下学生成绩管理系统程序设计报告(17页珍藏版)>请在人人文库网上搜索. 1.信息技术学院本科课程 ...
- 成绩处理工具C语言论文,学生成绩管理系统C语言程序论文
C语言,大型工作语言,大型工作1项目目录1.目标...........22.主题描述和要求........23.报告内容...........3 3.1需求寻求和分析概要设计........3 3.2 ...
最新文章
- 压测场景下的 TIME_WAIT 处理
- 防火墙(16)——SNAT和DNAT,DNAT实践
- 【HDOJ1043】八数码的八境界
- Linux运维系统工程师系列---13
- phpstudy(自己电脑主机做服务器,手机网站界面打不开)
- 真格量化——菜粕策略
- java手动分页工具类
- 1小时搞懂设计模式之代理模式(静态代理)
- JDK 和 tomcat 安装 配置
- Node.js HTTP
- java8 jstack_java自带命令行工具(jcmd,jstack)
- app小窗口悬浮工具_悬浮窗口大师
- ubuntu安装uTorrent种子下载器
- LTE中资源数量映射用到的PRB数量(TB,CQI,MCS,PRB)
- uart协议测试软件,Uart2any(windows串口调试工具)
- MobPush for Flutter
- 计算机科学中atm是什么,计算机专业知识:ATM网络基本原理
- Valens HDBaseT VCN2K HDMI 1.4接收/发送
- python编写随机获取ip免费调用有道翻译
- webstorm 2018 激活破解方法大全 亲测第三个有用
热门文章
- 搭建SpringBoot脚手架工程系列(3): 一键启动服务
- 厉害了!合肥市4号5号线地铁都有了、工程被中铁、中建包揽了
- 常见的ES6转码(编译)工具——Babel转码器、Traceur转码器
- linux 服务器 日常命令 日常需求
- 厦门建设智慧城市 200多项惠民服务“一网打尽”
- 写技术文章必备的几个小工具
- 李群、李代数等机器人学数学概念
- db migrate mysql_DB Migrate那点事
- 初学Java的第一天
- 技术员系统(x86/x64)装机版/纯净版 2017.06