学生信息管理系统(c语言版)

这篇具有很好参考价值的文章主要介绍了学生信息管理系统(c语言版)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大一下C语言要交课程设计,于是就写了一个学生信息管理系统,仅供参考

学生信息包括姓名,学号,性别,年龄和各科成绩,可根据需要自行修改添加

包括增、删、改查、查看所有、保存、清空7个功能,每个功能都封装成一个函数

保存功能是将所添加的信息保存到文件中

使用链表存储,包括文件操作,没有学生数量限制,各种信息由结构体封装

各种情况如学号错误、学生不存在等考虑比较完备

缺陷是界面没有优化,可以自行优化

部分运行截图如下:

学生信息管理系统c语言程序设计,c语言,开发语言,c++

 学生信息管理系统c语言程序设计,c语言,开发语言,c++

 学生信息管理系统c语言程序设计,c语言,开发语言,c++

 学生信息管理系统c语言程序设计,c语言,开发语言,c++

 完整代码如下:文章来源地址https://www.toymoban.com/news/detail-532952.html

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct scores{
    int math;
    int physics;
    int English;
    int python;
    int c;
    int sum;
    int average;
}scores;
typedef struct students{
    char name[10];
    char id[15];
    char sex[5];
    int age;
    scores score;
}students;
struct node{
    students student;
    struct node* next;
};
struct node *head;
void menu(){
    printf("学生信息管理系统\n");
    printf("1、添加信息\n");
    printf("2、删除信息\n");
    printf("3、修改信息\n");
    printf("4、查找信息\n");
    printf("5、查看所有学生信息\n");
    printf("6、清空信息\n");
    printf("7、保存信息\n");
    printf("0、退出系统\n");
}
void add(){
    struct node *new_node=(struct node*)malloc(sizeof(struct node));
    new_node->next=NULL;
    struct node* i=head;
    printf("请输入学生姓名:\n");
    scanf("%s",new_node->student.name);
    printf("请输入学生学号:\n");
    scanf("%s",new_node->student.id);
    while(i!=NULL){
        if(strcmp(i->student.id,new_node->student.id)==0){
            printf("该学生已存在!\n");
            return;
        }
        i=i->next;
    }
    printf("请输入学生性别:\n");
    scanf("%s",new_node->student.sex);
    printf("请输入学生年龄:\n");
    scanf("%d",&new_node->student.age);
    printf("请输入学生成绩:\n");
    printf("高数:");
    scanf("%d",&new_node->student.score.math);
    printf("物理:");
    scanf("%d",&new_node->student.score.physics);
    printf("英语:");
    scanf("%d",&new_node->student.score.English);
    printf("python:");
    scanf("%d",&new_node->student.score.python);
    printf("c语言:");
    scanf("%d",&new_node->student.score.c);
    new_node->student.score.sum=
    new_node->student.score.math+
    new_node->student.score.physics+
    new_node->student.score.English+
    new_node->student.score.python+
    new_node->student.score.c;

    new_node->student.score.average=
    new_node->student.score.sum/5.0;
    
    struct node *t=head;
    if(head->next==NULL){
        head->next=new_node;
        new_node->next=NULL;
    }
    else{
        while(t->next!=NULL&&t->next->student.score.sum>new_node->student.score.sum){
            t=t->next;
        }
        if(t->next==NULL){
            t->next=new_node;
            new_node->next=NULL;
        }
        else{
            new_node->next=t->next;
            t->next=new_node;
        }
    }
    printf("添加成功!\n");
}
void delete(){
    struct node* t=head,*f;
    char d_id[15];
    printf("请输入你想要删除的学生学号:\n");
    scanf("%s",d_id);
    while(t->next!=NULL){
        if(strcmp(t->next->student.id,d_id)==0){
            if(t->next->next==NULL){
                free(t->next);
                t->next=NULL;
            }
            else{
                f=t->next;
                t->next=f->next;
                free(f);
            }
            printf("删除成功!\n");
            return;
        }
        t=t->next;
    }
    if(t->next==NULL){
        printf("该学生不存在!\n");
    }
}
void change(){
    struct node* t=head->next;
    char c_id[15];
    printf("请输入你要修改的学生学号\n");
    scanf("%s",c_id);
    while(t!=NULL){
        if(strcmp(t->student.id,c_id)==0){
            printf("请输入学生姓名:\n");
            scanf("%s",t->student.name);
            printf("请输入学生学号:\n");
            scanf("%s",t->student.id);
            printf("请输入学生性别:\n");
            scanf("%s",t->student.sex);
            printf("请输入学生年龄:\n");
            scanf("%d",&t->student.age);
            printf("请输入学生成绩:\n");
            printf("高数:");
            scanf("%d",&t->student.score.math);
            printf("物理:");
            scanf("%d",&t->student.score.physics);
            printf("英语:");
            scanf("%d",&t->student.score.English);
            printf("python:");
            scanf("%d",&t->student.score.python);
            printf("c语言:");
            scanf("%d",&t->student.score.c);
            t->student.score.sum=
            t->student.score.math+
            t->student.score.physics+
            t->student.score.English+
            t->student.score.python+
            t->student.score.c;

            t->student.score.average=
            t->student.score.sum/5.0;
            printf("修改成功!\n");
            return;
        }
        t=t->next;
    }
    printf("该学生不存在!\n");
}
void search(){
    struct node* t=head->next;
    printf("请输入你要查找的学生学号:\n");
    char s_id[15];
    scanf("%s",s_id);
    while(t!=NULL){
        if(strcmp(t->student.id,s_id)==0){
            printf("姓名:%s\n",t->student.name);
            printf("学号:%s\n",t->student.id);
            printf("性别:%s\n",t->student.sex);
            printf("年龄:%d\n",t->student.age);
            printf("成绩:\n");
            printf("高数:%d\n",t->student.score.math);
            printf("物理:%d\n",t->student.score.physics);
            printf("英语:%d\n",t->student.score.English);
            printf("python:%d\n",t->student.score.python);
            printf("c语言:%d\n",t->student.score.c);
            printf("总分:%d\n",t->student.score.sum);
            printf("平均分:%d\n",t->student.score.average);
            return;
        }
        t=t->next;
    }
    printf("该学生不存在!\n");
}

void show_all(){
    struct node* t=head->next;
    
    if(head->next==NULL){
        printf("暂无学生信息!\n");
        return;
    }
    printf("所有学生信息:\n\n");
    while(t!=NULL){
        printf("姓名:%s\n",t->student.name);
        printf("学号:%s\n",t->student.id);
        printf("性别:%s\n",t->student.sex);
        printf("年龄:%d\n",t->student.age);
        printf("成绩:\n");
        printf("高数:%d\n",t->student.score.math);
        printf("物理:%d\n",t->student.score.physics);
        printf("英语:%d\n",t->student.score.English);
        printf("python:%d\n",t->student.score.python);
        printf("c语言:%d\n",t->student.score.c);
        printf("总分:%d\n",t->student.score.sum);
        printf("平均分:%d\n",t->student.score.average);
        printf("\n");
        t=t->next;
    }
}
void clear(){ 
    if(head->next==NULL)
        printf("暂无学生信息!\n");
    else{
        struct node* pr=head->next,*la=pr->next;
        head->next=NULL;
        while(la!=NULL){
            free(pr);
            pr=la;
            la=la->next;
        }
        free(pr);
        printf("清空完成!\n");
    }
    
}
void save(){
    FILE* f;
    f=fopen("students system.txt","w");
    if(f==NULL){
        printf("保存失败!\n");
        return;
    }
    struct node* t=head->next;
    if(head->next==NULL)
        printf("暂无学生信息!\n");
    else{
        while(t!=NULL){
            fprintf(f,"姓名:%s\n",t->student.name);
            fprintf(f,"学号:%s\n",t->student.id);
            fprintf(f,"性别:%s\n",t->student.sex);
            fprintf(f,"年龄:%d\n",t->student.age);
            fputs("成绩:\n",f);
            fprintf(f,"高数:%d\n",t->student.score.math);
            fprintf(f,"物理:%d\n",t->student.score.physics);
            fprintf(f,"英语:%d\n",t->student.score.English);
            fprintf(f,"python:%d\n",t->student.score.python);
            fprintf(f,"c语言:%d\n",t->student.score.c);
            fprintf(f,"总分:%d\n",t->student.score.sum);
            fprintf(f,"平均分:%d\n",t->student.score.average);
            fputs("\n",f);
            t=t->next;
        }
        printf("保存成功!\n");
    }
    fclose(f);
}
void Input(){
    int choice;
    scanf("%d",&choice);
    switch (choice)
    {
    case 0:
        exit(0);
        break;
    case 1:
        system("cls");
        printf("添加学生信息:\n");
        add();
        system("pause");
        system("cls");
        break;
    case 2:
        system("cls");
        printf("删除学生信息:\n");
        delete();
        system("pause");
        system("cls");
        break;
    case 3:
        system("cls");
        printf("修改学生信息:\n");
        change();
        system("pause");
        system("cls");
        break;
    case 4:
        system("cls");
        printf("查找学生信息:\n");
        search();
        system("pause");
        system("cls");
        break;
    case 5:
        system("cls");
        show_all();
        system("pause");
        system("cls");
        break;
    case 6:
        system("cls");
        clear();
        system("pause");
        system("cls");
        break;
    case 7:
        system("cls");
        save();
        system("pause");
        system("cls");
        break;
    default:
        system("cls");
        break;
    }
}
int main(){
    head=(struct node*)malloc(sizeof(struct node));//头节点
    head->next=NULL;
    while(1){
    menu();
    Input();
    }
    return 0;
}

到了这里,关于学生信息管理系统(c语言版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于微信小程序学生信息管理系统 可做毕业设计参考

    学生信息管理系统是一个教育单位不可缺少的部分。一个功能齐全、简单易用的信息管理系统不但能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要,所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但

    2024年02月03日
    浏览(47)
  • C语言程序设计——设计一个学生管理系统(完美运行的程序(●‘◡‘●))

    通过c语言设计一个学生管理系统,要求有直观的主菜单,可以录入学生的信息,实现添加学生信息、显示学生信息、查找学生信息、删除学生信息、修改学生信息以及退出等功能。 1、首先因为学生有以下几个基本信息:姓名、年龄、学号、性别,依次由name、age、id和sex来表

    2024年02月08日
    浏览(48)
  • 程序设计课程设计——学生学籍管理系统

    通过设计一个小型的应用系统,使学生进一步掌握面向对象的程序设计方法,运用C++中的类与对象的概念结合面向对象程序设计的思想,独立完成应用系统的设计,并养成良好的编程习惯。通过这个实践教学平台,培养学生对计算机应用系统的综合设计能力,培养学生正确分

    2024年02月09日
    浏览(54)
  • 程序设计基础大作业——学生管理系统

    声明:这是本人所写的程序设计期末大作业实验报告,可供大家学习和参考,也希望能得到一些建议和改正,但如果只为抄袭代码,本人必究! 目录 一、任务描述 二、代码实现 三、运行结果 四、实验体会 写一个命令行交互式C语言程序。该程序需要实现下述菜单功能: 1

    2024年02月10日
    浏览(56)
  • 【Java程序设计】学生成绩管理系统

     相关文章: 【Java程序设计】宠物商店管理系统 【Java程序设计】Java基础知识实验 对于学生成绩管理系统,主要可以分为如下几个功能: 录入学生成绩 统计学生成绩 查找学生成绩 修改学生成绩 删除学生成绩 按平均分排序 显示所有成绩 退出管理系统 进入系统之后,我们

    2024年01月17日
    浏览(47)
  • 【java 程序设计实训】学生请假管理系统

    声明:未经允许,请勿转载 下载链接 https://download.csdn.net/download/weixin_66397563/87976888

    2024年02月08日
    浏览(70)
  • 学生管理系统实验报告-asp.net程序设计

    课程名称 ASP.NET程序设计 实验名称 学生信息管理系统 下载链接:https://download.csdn.net/download/mariodf/85671926?spm=1001.2014.3001.5501 目录 一、实验目的 ... 3 二、实验环境 ... 3 1. 运行环境 .. 3 2. 开发工具 .. 3 三、实验设计 ... 3 1. 系统框架 .. 3 2. 系统总体设计 .. 4 3. 数据库表结构设计

    2024年02月04日
    浏览(49)
  • SSM/Java学生信息管理系统--70168(免费领源码、附论文)可做计算机毕业设计JAVA、PHP、爬虫、APP、小程序、C#、C++、python、数据可视化、大数据、全套文案

    本科毕业 论文 论文题目: 学生信息管理系统的设计与实现 院(系)名  称: 专  业  名  称: 学  生  姓  名: 指导教师(校内): 指导教师(企业): 2022年11月   从20年代开始,计算机疯狂的出现在人们的生活以及工作当中,成为人们生活、工作的好帮手,计算机

    2024年02月05日
    浏览(53)
  • 基于Python 课程设计-学生管理系统(附源码+可执行程序)

    基于Python 课程设计-学生管理系统(附源码+可执行程序) 非常完整的一个项目,可以作为课程设计去学习。 本系统的完整源码在文章结尾处,大家自行获取即可。 本系统的软件开发及运行环境具体如下。 操作系统:Windows 7、Windows 10。 Python版本:Python 3.7.0。 开发工具

    2024年02月06日
    浏览(53)
  • asp毕业设计——基于asp+access的学生排课管理系统设计与实现(毕业论文+程序源码)——学生排课管理系统

    大家好,今天给大家介绍基于asp+access的学生排课管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦 文章目录: 选排课系统功能的

    2024年02月04日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包