C语言源代码系列-管理系统之学生信息管理系统

news2025/7/27 8:40:17
往期文章分享
  • 点击跳转=>《导航贴》- Unity手册,系统实战学习
  • 点击跳转=>《导航贴》- Android手册,重温移动开发

👉关于作者

众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣 !!!
专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎私我,交流群让学习不再孤单

在这里插入图片描述

👉实践过程

😜问题

用C语言实现学生信息管理系统,学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:
1)系统以菜单方式工作
2)学生信息录入功能(学生信息用文件保存)--输入
3)学生信息浏览功能--输出
4)学生信息查询功能--算法
按学号查询
按姓名查询
5)学生信息的删除与修改(可选项)

😜回答

在这里插入图片描述
在这里插入图片描述

#include "stdafx.h"
#include <stdio.h>
#include <string.h>

struct student //结构体类型名 
{
    long int num;
    char name[20];
    int age;
    char sex[4];
    char b[30];
    char p[15];
};

int n = 0;

struct student
stu[100];
struct student

*p; //指向student中的一个指针变量 
void lr();
void ll();
void cx();
void xg();
void sc();

int main()
{
    int z;
    printf("+---------------------------+\n");
    printf("| 欢迎使用学生信息管理系统 |\n");
    printf("+---------------------------+\n");
    printf("提示:为保证您的操作得到保存,请按正常顺序退出系统^_^\n");
    do
    {
        printf("\n\t\t\t--------------------------------\n");
        printf("\t\t\t+ 主菜单 |\n");
        printf("\t\t\t--------------------------------\n");
        printf("\t\t\t+ [1]----录入学生信息 |\n");
        printf("\t\t\t+ [2]----浏览学生信息 |\n");
        printf("\t\t\t+ [3]----查询学生信息 |\n");
        printf("\t\t\t+ [4]----删除学生信息 |\n");
        printf("\t\t\t+ [5]----修改学生信息 |\n");
        printf("\t\t\t+ [0]----退出系统 |\n");
        printf("\t\t\t--------------------------------\n");
        printf("请输入您的选择:");
        scanf("%d", &z);
        switch (z)
        {
            case 0: break;
            case 1:
                lr();
                break;
            case 2:
                ll();
                break;
            case 3:
                cx();
                break;
            case 4:
                sc();
                break;
            case 5:
                xg();
                break;
            default: printf("\n无效选项!");
        }
    } while (z != 0);
}

void lr() /*录入函数*/
{
    int y;
    if (n == 0)
        p = stu;
    do
    {
        printf("--------------------\n");
        printf("请输入学生的学号:");
        scanf("%ld", &p->num);
        printf("请输入学生的姓名:");
        scanf("%s", p->name);
        printf("请输入学生的年龄:");
        scanf("%d", &p->age);
        printf("请输入学生的性别:");
        scanf("%s", p->sex);
        printf("请输入学生的地址:");
        scanf("%s", p->b);
        printf("请输入学生的电话:");
        scanf("%s", p->p);
        n++;
        p++;
        printf("\n1.继续输入.\n0.输入完毕.\n");
        printf("请选择:");
        scanf("%d", &y);
    } while (y == 1);

    printf("提示:输入完毕!你一共输入%d个\n", n);
}

void ll() /*浏览函数*/
{
    int i, j;
    if (n != 0)
    {
        printf("学生总数:%d\n", n);
        printf("学号\t姓名\t年龄\t性别\t地址\t\t电话\n");
        printf("-----------------------------------------------------\n");
        for (i = 0; i < n; i++)
            printf("%ld\t%s\t%d\t%s\t%s\t\t%s\n", stu[i].num, stu[i].name, stu[i].age, stu[i].sex, stu[i].b, stu[i].p);
    }
    else printf("提示:无学生数据,请输入数据!");
}

void cx() /*查询函数*/
{
    int c;
    int w, i, j = 0;
    char name[20];
    if (n != 0)
    {
        do
        {
            printf("\n");
            printf("+--------------------+\n");
            printf("| 按学号查询 请按 1 |\n");
            printf("| 按姓名查询 请按 2 |\n");
            printf("| 取消 请按 0 |\n");
            printf("+--------------------+\n");
            printf("请输入您的选择:");
            scanf("%d", &c);
            switch (c)
            {
                case 0: break;
                case 1:
                    printf("请输入学生的学号;");
                    scanf("%ld", &w);
                    printf("\n");
                    for (i = 0; i < n; i++)
                        if (stu[i].num == w)
                        {
                            printf("\n学号\t姓名\t年龄\t性别\t地址\t\t电话\n");

                            printf("%ld\t%s\t%d\t%s\t%s\t\t%s\n", stu[i].num, stu[i].name, stu[i].age, stu[i].sex,
                                stu[i].b, stu[i].p);
                            j = 1;
                        }

                    if (j == 0)
                        printf("提示:没有该学生记录,请核对!");
                    break;
                case 2:
                    printf("请输入学生的姓名:");
                    scanf("%s", name);
                    printf("\n");
                    for (i = 0; i < n; i++)
                        if (strcmp(name, stu[i].name) == 0)
                        {
                            printf("\n学号\t姓名\t年龄\t性别\t地址\t\t电话\n");
                            j = 1;
                            printf("%ld\t%s\t%d\t%s\t%s\t\t%s\n", stu[i].num, stu[i].name, stu[i].age, stu[i].sex,
                                stu[i].b, stu[i].p);
                        }

                    if (j == 0)
                        printf("提示:没有该学生记录,请核对!");
                    break;
                default:
                    printf("\n提示:无效选项!");
                    break;
            }
        } while (c != 0);
    }
    else printf("提示:无学生数据,请输入数据!");

    return;
}

void xg() /*修改函数*/
{
    long int num;
    int i, j, c;
    if (n != 0)
    {
        printf("请输入您要修改的学生的学号:");
        scanf("%ld", &num);
        printf("\n");
        for (i = 0; i < n; i++)
            if (stu[i].num == num)
                j = i;
        do
        {
            printf("请选择您要修改的学生的信息内容:\n");
            printf("+----------------------+\n");
            printf("| 姓名 请按 1 |\n");
            printf("| 年龄 请按 2 |\n");
            printf("| 性别 请按 3 |\n");
            printf("| 学号 请按 4 |\n");
            printf("| 地址 请按 5 |\n");
            printf("| 电话 请按 6 |\n");
            printf("| 取消 请按 0 |\n");
            printf("+----------------------+\n");
            printf("请输入您的选择:");
            scanf("%d", &c);
            printf("\n");
            switch (c)
            {
                case 0: break;
                case 1:
                    printf("请输入新姓名:");
                    scanf("%s", stu[j].name);
                    break;
                case 2:
                    printf("请输入新年龄:");
                    scanf("%d", &stu[j].age);
                    break;
                case 3:
                    printf("请输入新性别:");
                    scanf("%s", stu[j].sex);
                    break;
                case 4:
                    printf("请输入新学号:");
                    scanf("%ld", &stu[j].num);
                    break;
                case 5:
                    printf("请输入新地址:");
                    scanf("%s", stu[j].b);
                    break;
                case 6:
                    printf("请输入新电话:");
                    scanf("%s", stu[j].p);
                    break;
                default:
                    printf("\n无效选项!");
                    break;
            }
        } while (c != 0);
    }
    else printf("提示:无学生数据,请输入数据!");
}

void sc() /*删除函数*/
{
    long int num;
    int i, j, e;
    if (n != 0)
    {
        printf("学号\t姓名\t年龄\t性别\t地址\t\t电话\n");

        printf("-----------------------------------------------------\n");

        for (i = 0; i < n; i++)
            printf("%ld\t%s\t%d\t%s\t%s\t\t%s\n", stu[i].num, stu[i].name, stu[i].age, stu[i].sex, stu[i].b, stu[i].p);

        printf("请输入您要删除的学生的学号:");

        scanf("%ld", &num);
        printf("\n");
        for (i = 0; i < n; i++)
            if (num == stu[i].num)
                j = i;
        if (j != (n - 1))
        {
            for (e = i - 1; e < n; e++, j++)
            {
                stu[j].num = stu[j + 1].num;
                strcpy(stu[j].name, stu[j + 1].name);

                strcpy(stu[j].sex, stu[j + 1].sex);

                stu[j].age = stu[j + 1].age;
                strcpy(stu[j].b, stu[j + 1].b);
                strcpy(stu[j].p, stu[j + 1].p);
                n--;
                p--;
            }
        }
        else
        {
            n--;
            p--;
        }

        printf("提示:删除完毕!");
    }
    else printf("提示:无学生数据,请输入数据!");
}

👉其他

📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。
空名先生

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

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

相关文章

竞赛开源项目汇总

1、Kaggle Titanic 一个Kaggle竞赛的案例&#xff0c;演示基本的数据转换、分析和可视化技术 https://github.com/agconti/kaggle-titanic 2、Humpback Whale Identification 1st https://github.com/earhian/Humpback-Whale-Identification-1st- 3、Data Science Competi…

【附源码】计算机毕业设计JAVA砂石矿山管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven Vue 等等组成&#xff0c;B/…

无代码开发工具突破数据“孤岛“,让数据“动”起来

在信息化的发展过程中&#xff0c;每个独立运作的企业和机构都会使用2-3种以上的软件&#xff0c;而在某些比较成熟的公司&#xff0c;其软件产品的数量就更加惊人了&#xff0c;一个中等规模的公司可以拥有数百套软件系统来支持公司的正常运转。 许多公司的CIO或CTO&#xff0…

智能漏电断路器主要有哪些功能?

安科瑞 华楠 ASCB1 系列智能微型断路器是安科瑞电气股份有限公司 全新推出的智慧用电产品&#xff0c;产品由智能微型断路器与智 能网关两部分组成&#xff0c;可用于对用电线路的关键电气因 素&#xff0c;如电压、电流、功率、温度、漏电、能耗等进行实 时监测&#xff0c;具…

DOX-TF/Ce6/IgG 转铁蛋白/光敏剂/单抗IgG修饰阿霉素/阿霉素白蛋白纳米粒的制备

今天要分享的科研知识是DOX-TF/Ce6/IgG 转铁蛋白/光敏剂/单抗IgG修饰阿霉素/阿霉素白蛋白纳米粒&#xff0c;下面和小编一起来看&#xff01; DOX-IgG 单抗IgG偶联阿霉素的制备&#xff1a; 设计了一种叶酸-聚乙二醇-免疫球蛋白G-阿霉素(FA-PEG-IgG-DOX)的四元靶向给药系统.其…

石子合并系列问题

石子合并 石子合并问题在网上有三个版本&#xff1a; AcWing 282. 石子合并 设有 N 堆石子排成一排&#xff0c;其编号为 1&#xff0c;2&#xff0c;3&#xff0c;…&#xff0c;N。 每堆石子有一定的质量&#xff0c;可以用一个整数来描述&#xff0c;现在要将这 N 堆石子合…

Android 编译C++

Android 编译C项目前言正文一、基本知识① 要做什么&#xff1f;② JNI是什么&#xff1f;③ NDK是什么&#xff1f;二、配置NDK三、创建新工程① 工程目录说明② 分析cpp文件③ JNI数据类型四、现有工程使用C① 创建C文件② 创建CMake③ 使用C五、源码前言 在开发过程中&#…

集采报告丨国家药品带量采购政策及趋势分析

本人在医药领域从事药品数据分析工作多年&#xff0c;前几天在了解VBP药品带量采购相关事项时遇见了一些网上不好查找答案的问题&#xff08;国家药品带量采购目录、流程、区别、数据分析、政策、执行、结果、公示、网站、意思&#xff09;&#xff0c;对此笔者将其整理出来并解…

追求极致性能,RocketMQ 消息通信详解

1 介绍 RocketMQ 消息队列架构主要包括 NameServe、Broker(Master/Slave)、Producer、Consumer 4 个核心部件&#xff0c;基本执行流程如下&#xff1a; 点击查看大图 NameServer 优先启动。NameServer 是整个 RocketMQ 的“中央大脑” &#xff0c;作为 RocketMQ 的服务注册中…

计算机网络(下)

运输层 运输层概述 概念 进程之间的通信 从通信和信息处理的角度看&#xff0c;运输层向它上面的应用层提供通信服务&#xff0c;它属于面向通信部分的最高层&#xff0c;同时也是用户功能中的最低层。当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通…

【深度学习】U-net网络结构搭建 | pytorch

文章目录前言一、U-net网络结构复现&#xff08;上采样部分采用转置卷积nn.ConvTranspose2d&#xff09;1.1、整体结构介绍1.2、encoder部分实现&#xff08;左边网络部分&#xff09;1.3、decoder部分实现&#xff08;右边网络部分&#xff09;1.4、整个网络搭建二、U-net网络…

React源码分析5-commit

前两章讲到了&#xff0c;react 在 render 阶段的 completeUnitWork 执行完毕后&#xff0c;就执行 commitRoot 进入到了 commit 阶段&#xff0c;本章将讲解 commit 阶段执行过程源码。 总览 commit 阶段相比于 render 阶段要简单很多&#xff0c;因为大部分更新的前期操作都…

Dubbo框架基本使用

一&#xff1a;软件架构的演练过程【了解】 单体应用架构--->垂直应用架构--->分布式架构&#xff08;SOA架构/微服务架构) 1.单体应用架构 单体应用架构&#xff0c;就是将一个系统的多个模块做成一个项目&#xff0c;然后部署到tomcat服务器上 优点&#xff1a; 项目架…

第01章+Java概述

课程链接&#xff1a;韩顺平Java_程序举例_哔哩哔哩_bilibili 什么叫程序 程序&#xff1a;计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合。 Java版本迭代 官网介绍&#xff1a; Oracle Java SE Support Roadmap LTS为长期支持版本&#xff1a;推荐使用…

IQM的Unimon:一种新的量子比特,可促进量子计算机的实用化

​ 量子处理器中unimon 量子比特的艺术效果图。&#xff08;图片来源&#xff1a;网络&#xff09; 来自芬兰IQM量子计算机公司、阿尔托大学和芬兰VTT技术研究中心的一组科学家发现了一种新的超导量子比特——unimon&#xff0c;可提高量子计算的准确性。该团队已经实现了第一…

解读阿里Q2财报:阿里云的跨周期引擎

昨天&#xff0c;阿里巴巴公布今年6月到9月财务业绩&#xff0c;显示云业务总收入为267.6亿元&#xff0c;在除去阿里内部使用的额度后&#xff0c;抵销跨分部交易后营收为207.57亿元&#xff0c;比上一个季度增长超17%。 具体看&#xff0c;值得关注的有三点&#xff1a; 1、…

Python爬取公交线路信息及站点shp数据 文末附数据下载地址

本篇主要记录爬取公交网整个过程,由于这次所用方法虽比较常规,但由于该网站页面内容转码原因以及遍历链接较多,所以小坑还是比较多的,特在此进行记录。 以前爬过百度地图,当时用的是API平台,加上网站比较规范,所以标签节点什么的都比较清晰,但这次由于特殊原因所选择的…

对JavaScript中的Math.random随机函数破解

什么是随机 在通常的说法中&#xff0c;随机性是指事件中明显实际缺乏可预测性&#xff0c;事件、符号或步骤的随机序列通常没有顺序 举个例子&#xff0c;比如我们在抛硬币&#xff0c;硬币的结果取决于很多因素&#xff0c;比如说我们施加的力&#xff0c;空气阻力&#xff…

Linus shell 在一个脚本中调用另外一个脚本变量

1.新建public.sh文件&#xff0c;并添加以下内容&#xff1a; 2.新建ceshi.sh文件&#xff0c;并添加以下内容&#xff1a; 3.在终端赋予ceshi.sh文件执行权限&#xff0c;并运行该文件。

角度回归(复数与欧拉公式,L1,L2)

文章目录1 BEV下&#xff0c;Eula 损失函数2 BEV下&#xff0c;PointPillars使用sin联合SmoothL13 透视图下&#xff0c; MultiBin 全局方向损失4 L1/L2-norm 的周期损失函数1 BEV下&#xff0c;Eula 损失函数 Yolo-complex的论文中&#xff0c;对于BEV视角下&#xff0c;目标…