C语言课程设计|学生成绩管理系统(含完整代码)

目录

前言

简介

学生信息录入功能

学生单个信息查询

查询全部学生信息

修改学生信息

删除学生信息 

退出

完整代码 


前言

        在临近期末之际,相信好多初学C语言的同学都开始为写C语言课程设计这件事开始焦虑了吧?或许会不知所措,或许会有所畏惧,亦或是对那几百行的代码望而止步了吧,毕竟这是作为程序员的第一个小项目——需要自己一个人着手去敲代码、测试等操作,不过这些事情都不需要去害怕,我们缺少的并不是知识的多少,根本原因是内心深处是否有自信的存在,只要我们鼓起勇气尝试着做第一步、第二步,逐渐地熟能生巧就好了!今天我给大家带来一篇C语言课程设计——学生成绩管理系统,希望能够帮助大家以后在敲代码的道路上越走越远。

简介

        现在我们步入正题吧,主要来介绍一下改学生成绩管理系统都运用了哪些知识以及实现了哪些功能:首先是知识方面,主要是使用了简单的循环语句、函数、结构体、链表存储数据;然后是功能方面,主要是学生信息录入学生单个信息查询查询全部学生信息修改学生信息删除学生信息退出系统。接下来就一起来看代码吧!

学生信息录入功能

void Add(){system("cls");int count;printf("请输入要录入信息的个数:");scanf("%d",&count);struct Student *s1,*s2,*temp;s1=s2=(struct Student*)malloc(LEN);if(head==NULL){head = s1;}else{end->next = s1 ;}int i = 1;	while(count>0){printf("请输入第%d位学生信息:\n",i++);printf("学号:\n");scanf("%s",&s1->number);printf("姓名:\n");scanf("%s",&s1->name);printf("性别:\n");scanf("%s",&s1->sex);printf("语文成绩:\n");scanf("%d",&s1->Chinese);printf("数学成绩:\n");scanf("%d",&s1->Math);printf("英语成绩:\n");scanf("%d",&s1->English);count--;s2->next=s1;s2=s1;s1=(struct Student*)malloc(LEN);printf("添加成功!\n");system("pause");system("cls");}s2->next= NULL;end = s2;printf("全部添加成功!\n");system("pause");
}

学生单个信息查询

函数作用:有目的性地寻找学生的所有信息。

实现方法:将链表中的数据一一遍历,与所输入的数据进行对比,若匹配成功,则将该指针所指向结构体中的数据输出。

void View(){system("cls");struct Student *VS;printf("输入要查询信息的学生学号:\n");char num[10];int flag=1;scanf("%s",&num);for(VS=head;VS!=NULL;){if(strcmp(VS->number,num)==0){printf("成功找到!\n");printf("学号:%s\t姓名:%s\t性别:%s\n",VS->number,VS->name,VS->sex);printf("语文:%d\t数学:%d\t英语:%d",VS->Chinese,VS->Math,VS->English);flag=0;break;}VS=VS->next;}if(flag){printf("不好意思,未找到!\n");}system("pause");
}

查询全部学生信息

函数作用:将学生信息管理系统中所有数据呈现出来。

实现方法:定义一个结构体指针变量(局部变量)VA,将头指针head赋值给VA,通过循环输出pt指针所指向的结构体,并将所指向结构体中的next所指向的地址赋值给VA,从而实现对下一个结构体的访问。

void ViewAll(){system("cls");struct Student *VA;if(head!=NULL){printf("所有学生成绩如下:\n");for(VA=head;VA!=NULL;){printf("学号:%s\t姓名:%s\t性别:%s\n",VA->number,VA->name,VA->sex);printf("语文:%d\t数学:%d\t英语:%d\n",VA->Chinese,VA->Math,VA->English);VA=VA->next; }}else{printf("该系统中还未录入信息");}	system("pause");
}

修改学生信息

void Repair(){system("cls");struct Student *RS;char num[10];int flag = 1;printf("输入要修改成绩学生的学号:\n");scanf("%s",num);for(RS=head;RS!=NULL;){if(strcmp(RS->number,num)==0){printf("成功找到该学生");printf("学号:%s\t姓名:%s\t性别:%s\n",RS->number,RS->name,RS->sex);printf("语文:%d\t数学:%d\t英语:%d\n",RS->Chinese,RS->Math,RS->English);flag = 0;printf("学号:\n");scanf("%s",&RS->number);printf("姓名:\n");scanf("%s",&RS->name);printf("性别:\n");scanf("%s",&RS->sex);printf("语文成绩:\n");scanf("%d",&RS->Chinese);printf("数学成绩:\n");scanf("%d",&RS->Math);printf("英语成绩:\n");scanf("%d",&RS->English);printf("修改成功");system("pause");}RS=RS->next;}if(flag){printf("输入信息有误,未查询到");system("pause");}
}

删除学生信息 

函数作用:有目的性地删除一些失效信息

实现方法:依然是通过遍历找到想要删除的指针,不过在这之前应该定义一个结构体指针用来获取DS的地址。其目的是为了能够在删除该指针之前将该指针之前的数据与之后的数据能够连接起来。

void Delete(){system("cls");int flag =1;while(flag){printf("请输入要删除的学生学号:");char num[10];scanf("%s",&num);struct Student * DS,*temp;for(DS=head;DS!=NULL;){if(strcmp(DS->number,num)==0){if(DS==head){head = DS->next;flag = 0;printf("删除成功!\n");system("pause");}else{flag = 0;printf("删除成功!\n");temp->next= DS->next;free(DS);system("pause");}}temp = DS;DS=DS->next;}if(flag){printf("未找到该学生学号!\n");system("pause");}}
}

退出

exit(0),简单的皮一下! 

完整代码 

本次由于时间的原因,所以未对所有代码作详解 ,希望大家可以理解。不过大家如果有不理解的地方或者代码有误的地方,都可以私聊我,随时为你解答。

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#define LEN sizeof(struct Student)
struct Student{char number[20];		//学号 char name[10];		//姓名 char sex[4];			//性别 int Chinese;			//语文成绩 int Math;				//数学成绩 int English;			//英语成绩 struct Student* next;	//指向下一个数据的指针 
};
struct Student* head = NULL;
struct Student* end = NULL;void Menu(){void Menu();void Add();void View();void Delete();void Repair();void ViewAll();system("cls");printf("1、学生信息录入\n");printf("2、学生单个成绩查询\n");printf("3、查询全部学生成绩\n");printf("4、修改学生信息\n");printf("5、删除学生信息\n");printf("6、退出系统\n");int choice;printf("请选择要使用的功能:\n");loop:scanf("%d",&choice);switch (choice) {case 1:Add();Menu();case 2:View();Menu();case 3:ViewAll();Menu();case 4:Repair();Menu();case 5:Delete();Menu();case 6:exit(0);default:printf("输入有误,请重新选择:");goto loop;	}
} void Add(){system("cls");int count;printf("请输入要录入信息的个数:");scanf("%d",&count);struct Student *s1,*s2,*temp;s1=s2=(struct Student*)malloc(LEN);if(head==NULL){head = s1;}else{end->next = s1 ;}int i = 1;	while(count>0){printf("请输入第%d位学生信息:\n",i++);printf("学号:\n");scanf("%s",&s1->number);printf("姓名:\n");scanf("%s",&s1->name);printf("性别:\n");scanf("%s",&s1->sex);printf("语文成绩:\n");scanf("%d",&s1->Chinese);printf("数学成绩:\n");scanf("%d",&s1->Math);printf("英语成绩:\n");scanf("%d",&s1->English);count--;s2->next=s1;s2=s1;s1=(struct Student*)malloc(LEN);printf("添加成功!\n");system("pause");system("cls");}s2->next= NULL;end = s2;printf("全部添加成功!\n");system("pause");
}
void View(){system("cls");struct Student *VS;printf("输入要查询信息的学生学号:\n");char num[10];int flag=1;scanf("%s",&num);for(VS=head;VS!=NULL;){if(strcmp(VS->number,num)==0){printf("成功找到!\n");printf("学号:%s\t姓名:%s\t性别:%s\n",VS->number,VS->name,VS->sex);printf("语文:%d\t数学:%d\t英语:%d",VS->Chinese,VS->Math,VS->English);flag=0;break;}VS=VS->next;}if(flag){printf("不好意思,未找到!\n");}system("pause");
}
void ViewAll(){system("cls");struct Student *VA;if(head!=NULL){printf("所有学生成绩如下:\n");for(VA=head;VA!=NULL;){printf("学号:%s\t姓名:%s\t性别:%s\n",VA->number,VA->name,VA->sex);printf("语文:%d\t数学:%d\t英语:%d\n",VA->Chinese,VA->Math,VA->English);VA=VA->next; }}else{printf("该系统中还未录入信息");}	system("pause");
}
void Repair(){system("cls");struct Student *RS;char num[10];int flag = 1;printf("输入要修改成绩学生的学号:\n");scanf("%s",num);for(RS=head;RS!=NULL;){if(strcmp(RS->number,num)==0){printf("成功找到该学生");printf("学号:%s\t姓名:%s\t性别:%s\n",RS->number,RS->name,RS->sex);printf("语文:%d\t数学:%d\t英语:%d\n",RS->Chinese,RS->Math,RS->English);flag = 0;printf("学号:\n");scanf("%s",&RS->number);printf("姓名:\n");scanf("%s",&RS->name);printf("性别:\n");scanf("%s",&RS->sex);printf("语文成绩:\n");scanf("%d",&RS->Chinese);printf("数学成绩:\n");scanf("%d",&RS->Math);printf("英语成绩:\n");scanf("%d",&RS->English);printf("修改成功");system("pause");}RS=RS->next;}if(flag){printf("输入信息有误,未查询到");system("pause");}
}
void Delete(){system("cls");int flag =1;while(flag){printf("请输入要删除的学生学号:");char num[10];scanf("%s",&num);struct Student * DS,*temp;for(DS=head;DS!=NULL;){if(strcmp(DS->number,num)==0){if(DS==head){head = DS->next;flag = 0;printf("删除成功!\n");system("pause");}else{flag = 0;printf("删除成功!\n");temp->next= DS->next;free(DS);system("pause");}}temp = DS;DS=DS->next;}if(flag){printf("未找到该学生学号!\n");system("pause");}}
}int main(){void Menu();void Add();void View();void Delete();void Repair();void ViewAll();Menu();}

创作不易,给个三连吧 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/823540.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

这些浏览器中的AI扩展太香了

B站&#xff1a;啥都会一点的研究生公众号&#xff1a;啥都会一点的研究生 众所周知&#xff0c;浏览器只有添加了扩展才能让其火力全开&#xff0c;效率翻倍&#xff0c;而当有了AI的加持后&#xff0c;直接起飞 本期将整理一些目前肥肠火的基于AI语言模型的扩展程序&#x…

java企业网站系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web企业网站系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

【Linux驱动】设备树简介 | 内核对设备树的处理

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《Linux驱动》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 目录 &#x1f9f2;设备树简介&#x1f3f9;设备树语法&#x1f3f9;常见节点和属性&#x1f3f9…

基于ssm的二手商品交易平台+vue论文

摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到了互联网时代才发现能补上自古…

基于ssm的航空票务推荐系统的设计与实现论文

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;航班信息因为其管理内容繁杂&#xff0c;管理数量繁多导致手工进行处理不能满足广大…

Vue.js学习笔记(1)——Visual Studio Code搭建Vue.js框架

1 安装Node.js 1、下载安装包&#xff1a;进入官网&#xff08;https://nodejs.org/en&#xff09;&#xff0c;下载左侧的稳定版。 2、选择安装位置&#xff0c;不用勾选自动安装必要工具。 其他都默认Next。 配置环境&#xff0c;具体参考本文章&#xff1a; https://blo…

用通俗易懂的方式讲解大模型:基于 Langchain 和 ChatChat 部署本地知识库问答系统

之前写了一篇文章介绍基于 LangChain 和 ChatGLM 打造自有知识库问答系统&#xff0c;最近该项目更新了0.2新版本&#xff0c;这个版本与之前的版本差别很大&#xff0c;底层的架构发生了很大的变化。 该项目最早是基于 ChatGLM 这个 LLM&#xff08;大语言模型&#xff09;来…

操作系统:可变分区管理

有作业序列&#xff1a;作业A要求42K&#xff1b;作业B要求27K&#xff0c;作业C要求22K&#xff0c;作业和空闲内存区如下图所示&#xff0c;请画出最佳适应算法空闲队列图&#xff0c;并分析最佳适应算法是否适合该作业系列。 答&#xff1a;最佳适应算法是按照空闲块由小到大…

解决windows系统找不到msvcr100.dll问题,vcomp100.dll缺失的5个解决方法

在日常使用计算机的过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中之一就是“找不到vcomp100.dll”的错误。那么&#xff0c;vcomp100.dll究竟是什么文件&#xff1f;为什么会出现丢失的情况&#xff1f;本文将为您详细解析vcomp100.dll的作用、丢失原因以及提…

ssm500基于J2EE的仓库管理系统设计与开发论文

摘 要 如今社会上各行各业&#xff0c;都在用属于自己专用的软件来进行工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。互联网的发展&#xff0c;离不开一些新的技术&#xff0c;而新技术的产生往往是为了解决现有问题而产生的。针对于仓库信息…

Java注解以及自定义注解

Java注解以及自定义注解 要深入学习注解&#xff0c;我们就必须能定义自己的注解&#xff0c;并使用注解&#xff0c;在定义自己的注解之前&#xff0c;我们就必须要了解Java为 我们提供的元注解和相关定义注解的语法。 1、注解 1.1 注解的官方定义 注解是一种元数据形式。…

【Git】Git的基本操作

前言 Git是当前最主流的版本管理器&#xff0c;它可以控制电脑上的所有格式的文件。 它对于开发人员&#xff0c;可以管理项目中的源代码文档。&#xff08;可以记录不同提交的修改细节&#xff0c;并且任意跳转版本&#xff09; 本篇博客基于最近对Git的学习&#xff0c;简单介…

2023年03月15日_GPT4的发布会简单介绍

文章目录 各种考试长度限制图像输入功能开发者API定价评估框架1 - 基准测试表现2 - 文本和图像提示3 - 系统消息功能4 - 真实性、稳定性、可靠性 2023年3月15日 今天凌晨呢 万众瞩目的大型多模态模型 GPT-4正式发布 我们先总结一下发布会的重点 首先 这个模型能够接受图像和…

【Leetcode 39】组合总和 —— 回溯法

39. 组合总和 给你一个无重复元素的整数数组candidates和一个目标整数target &#xff0c;找出candidates中可以使数字和为目标数target的 所有不同组合&#xff0c;并以列表形式返回。你可以按**任意顺序 **返回这些组合。 candidates中的同一个数字可以 无限制重复被选取 。…

Vue3-29-路由-编程式导航的基本使用

补充一个知识点 路由配置中的 name 属性 &#xff1a; 可以给你的 路由 指定 name属性&#xff0c;称之为 命名路由。 这个 name 属性 在 编程式导航 传参时有重要的作用。 命名路由的写法如下 &#xff1a; 像指定 path 一样&#xff0c;直接指定一个 name 属性即可。{path:/d…

GBASE南大通用-小内存单机安装GBase 8c分布式数据库实践

* 这种小内存部署方式仅用于分布式数据库个人学习使用&#xff0c;不建议用于其他用途。 随着数据高并发复杂场景业务需求不断增多&#xff0c;信息数据呈现出爆炸式增长、多源多维、数据类型繁复等特征。在这一趋势下&#xff0c;目前分布式数据库因其架构的天然优势&#xf…

开放网络+私有云=?星融元的私有云承载网络解决方案实例

在全世界范围内的云服务市场上&#xff0c;开放网络一直是一个备受关注的话题。相比于传统供应商的网络设备&#xff0c;开放网络具备软硬件解耦、云原生、可选组件丰富等优势&#xff0c;对云服务商和超大型企业有足够的吸引力。 SONiC作为开源的网络操作系统&#xff0c;使得…

2047过滤空格(C语言)

目录 一&#xff1a;题目 二&#xff1a;思路分析 三&#xff1a;代码 一&#xff1a;题目 二&#xff1a;思路分析 1.首先&#xff0c;这道题是一个字符串的问题&#xff0c;我们要先知道字符串存放在char类型的数组中的&#xff0c;并不是一个变量就可直接存放的下一个完整…

了解 NSA 关于管理 OSS 和 SBOM 的最新指南

开源软件很容易受到恶意行为者的攻击&#xff0c;但软件材料清单可以帮助减轻威胁。美国国家安全局的指导为管理生态系统奠定了坚实的基础。 软件供应链安全仍然是网络安全和软件行业的一个关键话题&#xff0c;并且有充分的理由&#xff0c;从针对大型软件供应商的持续攻击到…

vlc 查看音频有没有声音

播放文件或者实时流 播放文件 选择音频文件 打开网络流 输入实时流地址 查看音频是否有声音