c语言学生管理系统

创建结构体里面包含学生的各种信息。

struct xs {int xh;char xm[20];int gs, yy, wl;double pj;struct xs* next;
};

创建菜单

void menu()
{printf("\n************************************\n");printf("*         学生管理系统(1.0)        *\n");printf("  ************************************\n");printf("  ************************************\n");printf("*             1.创建链表             *\n");printf("*             2.显示链表             *\n");printf("*             3.保存文件             *\n");printf("*             4.读取文件             *\n");printf("*             5.系统退出             *\n");printf("  ************************************\n");printf("*          请选择操作:(1-5)         *\n");printf("  ************************************\n");
}

创建链表

struct xs* create()
{struct xs* hd = (struct xs*)malloc(sizeof(struct xs)), * p = NULL, * r = NULL;hd->next = NULL;r = hd;printf("请输入学生人数: ");scanf("%d", &rs);for (int i = 1; i <= rs; i++){printf("请输入第%d个学生成绩信息: \n", i);p = (struct xs*)malloc(sizeof(struct xs));p->next = NULL;printf("学号:");scanf("%d", &p->xh);printf("姓名:");scanf("%s", &p->xm);printf("高数:");scanf("%d", &p->gs);printf("英语:");scanf("%d", &p->yy);printf("物理:");scanf("%d", &p->wl);p->pj = (p->gs + p->yy + p->wl) / 3.0;r->next = p;r = r->next;}printf("创建链表完毕,请按任意键继续!\n");_getch();return hd;
}

打印信息

void print(struct xs* hd)
{if (hd == NULL){printf("当前链表为空,请按任意键继续!");_getch();return;}struct xs* p = hd->next;printf("   学号  姓名  高数  英语 物理  平均  \n");printf("  ************************************\n");while (p != NULL){printf("    %d%     -6s     %d     %d%     d     %.2f\n", p->xh, p->xm, p->gs, p->yy, p->wl, p->pj);p = p->next;}printf("  ************************************\n");printf("链表显示完毕,请按任意键继续!\n");_getch();
}

数据保存

void save(struct xs* hd)
{if (hd == NULL)printf("当前链表为空,请按任意键继续!");else{struct xs* p = NULL;FILE* fp = fopen("1.txt", "w");fprintf(fp, "%d\n", rs);p = hd->next;while (p != NULL){fprintf(fp, "%d%s%d%d%d%lf\n", p->xh, p->xm, p->yy, p->wl, p->pj);p = p->next;}fclose(fp);printf("数据保存结束,请按任意键继续!\n");}_getch();
}

读取文件

struct xs* read()
{struct xs* hd = (struct xs*)malloc(sizeof(struct xs)), * p = NULL, * r = NULL;FILE* fp = fopen("1.txt", "r");hd->next = NULL;r = hd;fscanf(fp, "%d\n", &rs);for (int i = 1; i <= rs; i++){p = (struct xs*)malloc(sizeof(struct xs));fscanf(fp, "%d%s%d%d%d%lf\n", &p->xh, p->xm, &p->gs, &p->yy, &p->wl, &p->pj);p->next = NULL;r->next = p;r = r->next;}printf("读取文件结束,请按任意键继续!\n");_getch();return hd;
}

释放资源

void sflb(struct xs* hd)
{struct xs* p = NULL;while (hd != NULL && hd->next != NULL){p = hd->next;hd->next = p->next;free(p);}free(hd);
}

主函数

void main()
{struct xs* head = NULL;int xz;do{system("cls");menu();scanf("%d", &xz);switch (xz){case 1:sflb(head); head = create(); break;case 2:print(head); break;case 3:save(head); break;case 4:sflb(head); head = read(); break;case 5:sflb(head);}} while (xz != 5);
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 图解教程 第5版 —— 第25章 反射和特性

文章目录 25.1 元数据和反射25.2 Type 类25.3 获取 Type 对象25.4 什么是特性25.5 应用特性25.6 预定义的保留特性25.6.1 Obsolete 特性25.6.2 Conditional 特性25.6.3 调用者信息特性25.6.4 DebuggerStepThrough 特性25.6.5 其他预定义特性 25.7 关于应用特性的更多内容25.7.1…

C#- Attribute(特性)

文章目录 前言一、C#- Attribute&#xff08;特性&#xff09;是什么&#xff1f;二、预定义特性二、自定义特性总结 前言 C# 的Attribute&#xff08;特性&#xff09;用法 一、C#- Attribute&#xff08;特性&#xff09;是什么&#xff1f; 特性&#xff08;Attribute&…

51-12 多模态论文串讲—BLIP 论文精读

视觉语言预训练VLP模型最近在各种多模态下游任务上获得了巨大的成功&#xff0c;目前还有两个主要局限性: (1) 模型角度: 大多数方法要么采用encoder模型&#xff0c;要么采用encoder-decoder模型。然而&#xff0c;基于编码器的模型不太容易直接转换到文本生成任务&#xff0…

代码随想录 Leetcode242. 有效的字母异位词

题目&#xff1a; 代码&#xff08;首刷看解析 2024年1月14日&#xff09;&#xff1a; class Solution { public:bool isAnagram(string s, string t) {int hash[26] {0};for(int i 0; i < s.size(); i) {hash[s[i] - a];}for(int i 0; i < t.size(); i) {hash[t[i]…

【动态规划】dp多状态问题

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;【LeetCode】winter vacation training 目录 &#x1f449;&#x1f3fb;按摩师&#x1f449;&…

Edge扩展插件安装位置

根据所获取的信息&#xff0c;Microsoft Edge的扩展插件安装位置和配置方式可以通过不同的方法管理。以下是一个大纲&#xff0c;概述了如何配置和管理Edge扩展插件&#xff1a; Edge扩展插件安装和管理大纲 了解扩展插件的安装模式 安装模式的选项&#xff1a;了解allowed、…

一元二次方程虚数解

对一元二次方程axbxc0 (a≠0)&#xff1b;若判别式△b-4ac<0,则方程无实根,虚数解为&#xff1a;x(-b i√(4ac-b))/(2a)。 只含有一个未知数&#xff08;一元&#xff09;&#xff0c;并且未知数项的最高次数是2&#xff08;二次&#xff09;的整式方程叫做一元二次方程[1] …

three.js学习笔记 day1-2

1.three.js是什么 开发Web 3D 应用的js封装类 2.three.js需要怎么上手 2.1引入 <script src"https://cdn.bootcdn.net/ajax/libs/three.js/r122/three.min.js"></script> 2.2三要数&#xff08;场景&#xff0c;照相机&#xff0c;渲染器&#xff0…

如何申请IP地址证书

什么是IP地址证书&#xff1f; IP地址证书是一种用于验证网站服务器身份的数字证书&#xff0c;它可以确保网站与用户之间的通信安全。与传统的域名证书不同&#xff0c;IP地址证书直接针对服务器的IP地址进行认证&#xff0c;适用于没有独立域名的网站或需要对多个域名进行统…

树莓派ubuntu22桌面配置(一)

烧录系统至树莓派 下载系统&#xff1a;https://ubuntu.com/download/raspberry-pi 选择合适的版本下载 镜像安装器安装&#xff1a;终端输入&#xff1a; sudo snap install rpi-imager 打开镜像安装器&#xff0c;按照需求选择树莓派版本与要写入的系统还有安装的u盘 方案…

Python 中的字符串匹配识别文本中的相似性

更多Python学习内容&#xff1a;ipengtao.com 字符串匹配是自然语言处理&#xff08;NLP&#xff09;和文本处理中的一个重要任务&#xff0c;它可以识别文本之间的相似性、找到相同或相似的模式&#xff0c;以及进行文本分类和信息检索等应用。本文将深入探讨Python中的字符串…

ssh 远程登录协议

一、SSH 服务 1.1 SSH 基础 SSH&#xff08;Secure Shell&#xff09;是一种安全通道协议&#xff0c;主要用来实现字符界面的远程登录、远程 复制等功能。SSH 协议对通信双方的数据传输进行了加密处理&#xff0c;其中包括用户登录时输入的用户口令&#xff0c;SSH 为建立在应…

【Java-随笔】常见异常

org.apache.ibatis.exceptions.PersistenceException org.apache.ibatis.executor.ExecutorException Executor was closed.【说明】 SqlSession被关闭了&#xff0c;检查是否使用了被关闭的SqlSession&#xff1b;在sqlsession会话关闭后&#xff0c;再使用sqlsession就会出现…

坚持刷题|翻转二叉树

坚持刷题&#xff0c;老年痴呆追不上我&#xff0c;今天先刷个简单的&#xff1a;翻转二叉树 题目 226.翻转二叉树 考察点 翻转二叉树又称为镜像二叉树&#xff0c;使用Java实现翻转二叉树通常是为了考察对二叉树的基本操作和递归的理解能力 递归的理解&#xff1a; 能够理解…

vue前端开发自学基础,动态切换组件的显示

vue前端开发自学基础,动态切换组件的显示&#xff01;这个是需要借助于&#xff0c;一个官方提供的标签&#xff0c;名字叫【Component】-[代码demo:<component :is"ComponetShow"></component>]。 下面看看代码详情。 <template><h3>动态…

独孤思维:程前其实不该道歉

最近沸沸扬扬的程前事件&#xff0c;说一个不同的视角观点。 程在三个old money面前&#xff0c;表现出肚里没货&#xff0c;不懂礼貌。 甚至还对三个老一辈进行人身攻击。 事件持续发酵&#xff0c;程顶不住压力&#xff0c;诚恳道歉&#xff0c;却被网络群嘲。 程彻底丧失…

opencv多张图片实现全景拼接

最近camera项目需要用到全景拼接&#xff0c;故此查阅大量资料&#xff0c;终于将此功能应用在实际项目上&#xff0c;下面总结一下此过程中遇到的一些问题及解决方式&#xff0c;同时也会将源码附在结尾处&#xff0c;供大家参考&#xff0c;本文采用的opencv版本为3.4.12。 首…

Qt/QML编程学习之心得:小键盘keyboard(36)

小键盘对于qml应用是经常用到的,在qml里面,就如一个fileDialog也要自己画一样,小键盘keyboard也是要自己画的,对于相应的每个按键的clicked都要一一实现的。 这里有一个示例: 代码如下: import QtQuick 2.5 import QtQuick.Controls 1.4 import QtQuick.Window 2.0 im…

Jerry每次能向前或向后走n*n步(始终不能超过初始位置1e5),q(q <= 1e5)次询问,求向前走d最少要几次

题目 思路&#xff1a;因为有走的过程不能超初始位置1e5的限制&#xff0c;所以不能直接用奇数最多两次&#xff0c;4的倍数最多两次的结论。spfa&#xff0c;平方数的dis为1&#xff0c;然后推出其他数的dis #include<bits/stdc.h> using namespace std; #define int …