C语言 做一个学生信息管理系统

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct person 
{char name[30];char sex[10];int num;struct person *next;
}stu;
stu *head = NULL;
void printf_link(stu *head)
{stu *pd = head;while(pd != NULL){printf("姓名:%s\t性别:%s\t学号%d\n",pd->name,pd->sex,pd->num);pd = pd->next;}printf("\n");
}
stu *add(stu *head,stu *stu1)
{if(stu1 == NULL ){return head;}if(head == NULL){head = stu1;printf("添加成功\n");return head;}stu *lastNode = head;while(lastNode != NULL){if(lastNode->next == NULL){break;}else{lastNode = lastNode->next;}}lastNode->next = stu1;printf("添加成功\n");return head;
}
stu * add_stu(stu *head)
{stu *stu1 = calloc(1,sizeof(stu));printf("请输入学员姓名:\n");scanf("%s",stu1->name);printf("请输入学院性别:\n");scanf("%s",stu1->sex);printf("请输入学院学号:\n");scanf("%d",&stu1->num);  head = add(head,stu1); return head;
}
int get_len(stu *head)
{int i = 0;stu *pd = head;while(pd != NULL){i++;pd = pd->next;}return i;
}
stu *insert(stu *head)
{stu *stu1 = calloc(1,sizeof(stu));printf("请输入要插入学员的姓名\n");scanf("%s",stu1->name);printf("请输入要插入学员的性别\n");scanf("%s",stu1->sex);printf("请输入要插入学员的学号\n");scanf("%s",&stu1->num);printf("请输入要插入学员的位置(从0开始)\n");int index = 0;scanf("%d",&index);int len = get_len(head);if(index > len){head = add(head,len);return head;}if(index < 0){printf("输入位置有误\n");return head;}if(index == 0){stu1->next = head;head = stu1;printf("添加成功\n");return head;}stu *pd = head;for(int i;i < index-1;i++){pd = pd->next;}stu1->next = pd->next;pd->next = stu1;printf("添加成功\n");return head;
}
stu * delete(stu *head)
{int a;stu *pd=NULL,*p;printf("请输入要删除的学号:\n");scanf("%d",&a);if(!head) {printf("系统中已经没有数据可以删除\n");return head;}p=head;while(p&&p->num !=a){pd=p;p=p->next;}if(p){if(!pd) {head =head->next;}else pd->next=p->next;free(p);}return head;
}
void find(stu *head)
{int b = 0;stu *pd = NULL,*p;printf("请输入要查找的学号:\n");scanf("%d",&b);if(!head) {printf("系统中已经没有数据可以删除\n");return head;}p=head;while(p&&p->num !=b){pd=p;p=p->next;}if(p){if(!pd) {head =head->next;}else pd->next=p->next;free(p);}return head;
}
void my_menu(int tag)
{switch(tag){case 1:printf_link(head);break;case 2:head = add_stu(head);break;case 3:head = insert(head);break;case 4:head = delete(head);break;case 5:break;case 6:break;default:printf("输入有误请重新输入:\n");break;}
}
void free_link(stu *head)
{stu *pd = head;while(pd != NULL){stu *next = pd->next;free(pd);pd = next;}
}
int main(int argc, char const *argv[])
{while (1){printf("1,查询所有学员信息\n2,添加学员信息\n3,插入学员信息\n4,删除学员信息\n5,修改学员信息\n6,查找指定位置的学员\n7,退出程序\n");printf("请输入菜单号:\n");int tag = 0;scanf("%d",&tag);if(tag != 7){my_menu(tag);}else{free_link(head);printf("您下次再来\n");break;}}return 0;
}

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

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

相关文章

提升绘图效率不再难,看看这8款AI流程图软件,一键快速生成流程图!

流程图是表示流程、系统和思想的重要视觉辅助工具。在当今数字时代&#xff0c;AI技术的出现已经彻底改变了制作流程图的方式。 在本文中&#xff0c;我们将与各位分享8款好用的AI流程图软件&#xff0c;借助每款软件内置的AI能力&#xff0c;可以快速绘制出一份完整的流程图&…

11月11日|欢迎参加Sui Meetup泰国活动!

现在是Sui基金会与泰国Sui社区见面的时候啦&#xff0c;我们诚邀每个人参加今年最大的Sui Meetup泰国活动&#xff0c;主题是“Summer Paradise&#xff08;夏日天堂&#xff09;”。在活动中&#xff0c;您将会见到来自Sui基金会、ContributionDAO、KX、Inspex、Cryptomind、A…

线程基础知识

目录 进程 线程 CPU 核心数和线程数的关系 上下文切换(Context switch) Thread 和 Runnable 的区别 Callable、Future 和 FutureTask 面试题:新启线程有几种方式? 中止 中断 深入理解 run()和 start() 进程 我们常听说的是应用程序&#xff0c;也就是 app&#xff…

【算法练习Day42】买卖股票的最佳时机 III买卖股票的最佳时机 IV

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 买卖股票的最佳时机 III买卖…

超声波热量表和电磁热量表有哪些区别?

随着我们能源消耗日益增长&#xff0c;热量计量已成为节能减排、能源管理的重要手段。热量表是用于测量热能消耗的仪表&#xff0c;其中超声波热量表和电磁热量表是常见的两种类型。下面&#xff0c;就由小编来为大家详细的介绍下超声波热量表和电磁热量表的区别&#xff0c;一…

【案例卡】clickhouse:多行数据拼接在一行

一、需求 针对clickhouse数据库中&#xff0c;group by 分组后的字符串字段&#xff0c;拼接处理在一行的问题实现。在mysql中&#xff0c;可以用group_concat()函数来实现&#xff0c;而clickhouse数据库不支持此函数&#xff0c;特此记录实现方式。 二、clickhouse相关函数…

桌面远程连接

遇到的问题&#xff1a; win11家庭版不支持远程连接&#xff0c;如下图所示&#xff1a; 解决办法&#xff1a; 被控方电脑 1、打开控制面板-系统和安全-允许远程访问&#xff0c;勾选允许远程协助连接这台计算机 2、打开控制面板-系统和安全-Windows Defender 防火墙-允许…

php加密解密的用法(对称加密,非对称加密)

加密和摘要的区别 ***摘要&#xff1a;是从已知的数据中&#xff0c;通过摘要计算出一个值&#xff0c;一个数据对应一个或多个摘要的值 *** 比如&#xff1a;md5 和 sha1 sha256 hash 就是得到一个特定的值 &#xff0c;同一个数据得到的md5 是一样的&#xff0c;不会改变的 比…

【C++】万字详解IO流(输入输出流+文件流+字符串流)

文章目录 一、标准输入输出流1.1提取符>>&#xff08;赋值给&#xff09;与插入符<<&#xff08;输出到&#xff09;理解cin >> a理解ifstream&#xff08;读&#xff09; >> a例子 1.2get系列函数get与getline函数细小但又重要的区别 1.3获取状态信息…

动态表单获取某一项值

<template><div><el-form :model"form" :rules"rules" ref"form"><el-row v-for"(item,index) in form.list" :key"index"><el-col :span"6"><el-form-item label"用户名称…

超好用!在线即可制作电子产品图册

​电子产品图册是展示产品特点、功能和外观的重要方式之一。通过图册&#xff0c;可以让客户更好地了解产品&#xff0c;增强信任感&#xff0c;从而促进销售。同时&#xff0c;对于企业来说&#xff0c;制作精美的电子产品图册也是展示企业文化和品牌形象的重要手段之一。 一、…

Nacos服务注册

Nacos: 注册中心 配置中心 服务注册/发现&#xff1a;Nacos Discovery Nacos Discovery与Netflix Ribbon集成&#xff0c;RestTemplate或OpenFeign可用于服务到服务的调用 Nacos 配置规则 Nacos命名空间、分组、DataId关系 Nacos集群架构 三种部署模式 集群部署 默认Na…

Git的安装和常用命令Git与SVN的区别Gitee远程仓库团队开发代码共享演示

目录 一、Git入门 1.1 Git简介 1.2 Git与SVN的区别 1.2.1 详解 1.2.2 图解 1.3 Git相较于SVN的优势与劣势 1.3.1 Git的优势与劣势 1.3.2 SVN的优势与劣势 1.4 Git的工作流程 1.4.1 图解 1.4.2 详解 二、Git的安装以及常用命令 2.1 Git官网链接 2.2 安装步骤 2.…

AppWeb 身份验证绕过漏洞 (CVE-2018-8715)漏洞复现

漏洞描述 AppWeb 是一个嵌入式 Web 服务器&#xff0c;基于由 Embedthis Software LLC 开发和维护的开源 GPL 协议。它是用C / C编写的&#xff0c;几乎可以在任何现代操作系统上运行。当然&#xff0c;它旨在为嵌入式设备提供一个 Web 应用程序容器。 AppWeb 可以配置为身份…

智能井盖生产商家,万宾科技井盖传感器产品详情

市政府管理水平决定城市人民幸福程度&#xff0c;所以在智慧城市推进过程中&#xff0c;市政府也在加快城市信息基础设施建设&#xff0c;希望提高公共服务水平&#xff0c;以此来满足城市居民的需求&#xff0c;进一步推进城市信息化智能化发展。作为城市生命线的一个组成部分…

Java线程状态转换

从java层面&#xff0c;线程状态分为六种&#xff0c;分别是New、Blocked、Waiting、Timed_Waiting、Terminated和Runnable New&#xff1a;初始状态&#xff0c;线程刚刚创建还未调用start方法&#xff0c;线程还没有和操作系统的线程关联起来 New->Runnable(箭头1)&#…

MySQL 批量修改表的列名为小写

1、获取脚本 SELECT concat( alter table , TABLE_NAME, change column , COLUMN_NAME, , lower( COLUMN_NAME ), , COLUMN_TYPE, comment \, COLUMN_COMMENT, \; ) AS 脚本 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA 数据库名 and TABLE_NAME表名-- 大写是up…

ArcGIS小技巧|四种计算图斑面积的方法

ArcGIS中有多种方法可计算出图斑面积&#xff0c;本文总结了四种方法&#xff0c;是否可堪称史上最全&#xff1f; 1、计算几何 这是最适合非专业人士的方法&#xff0c;直接利用ArcGIS中的计算几何功能进行计算。 a、首先添加一double类型字段&#xff0c;用来存储面积数值。…

中文编程软件视频推荐,自学编程电脑推荐,中文编程开发语言工具下载

中文编程软件视频推荐&#xff0c;自学编程电脑推荐&#xff0c;中文编程开发语言工具下载 给大家分享一款中文编程工具&#xff0c;零基础轻松学编程&#xff0c;不需英语基础&#xff0c;编程工具可下载。 这款工具不但可以连接部分硬件&#xff0c;而且可以开发大型的软件…

常用设计模式——策略模式

策略模式是什么 策略模式&#xff08;Strategy&#xff09;&#xff1a;针对一组算法&#xff0c;将每一个算法封装起来&#xff0c;从而使得它们可以相互替换。 比如我们一个软件的会员等级&#xff0c;每一个等级都会有对应的一些等级权益&#xff0c;那么每一个等级权益就…