C语言设计学生成绩管理系统

学生成绩管理
[问题描述]每名学生的信息包括:学号、姓名、性别、专业、班级、课程成绩等。
[基本要求]
(1)输入十个同学的学号,姓名,四科成绩;(2)计算出平均成绩,以平均成绩降序输出成绩表;
(3)输出全组各科平均分,最高分和最低分;(4)输入姓名查询成绩。
急急如律令,要程序分析和功能图

可以参考一下,复合你的需求:
http://t.csdn.cn/O0HpP
http://t.csdn.cn/gdVsF

推荐题型类似的,已采纳的实例链接给你参考:https://ask.csdn.net/questions/7469485

参考:https://blog.csdn.net/cj12345657582255/article/details/118446896
内含流程图,很详细的一个学生管理系统,可以在此思路上改善完成

参考一下

C语言学生成绩管理系统_nic960的博客-CSDN博客_c语言学生成绩管理系统 学习完C语言基础知识点,现在来用单链表实现一个简单版学生成绩管理系统学生结构体://学生结构体 struct Student{char Name[10];int Num;float Computer;float Math;float English;float Total;float Ave;};结点结构://结点 typedef struct Node{struct Student st;//数据域struct node *pnext;//指针域 https://blog.csdn.net/qq_63294590/article/details/122016767?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166977488616782428683918%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=166977488616782428683918&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~baidu_landing_v2~default-2-122016767-null-null.nonecase&utm_term=C%E8%AF%AD%E8%A8%80%E8%AE%BE%E8%AE%A1%E5%AD%A6%E7%94%9F%E6%88%90%E7%BB%A9%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F&spm=1018.2226.3001.4450

C语言实现学生成绩管理系统设计_鹤影随行的博客-CSDN博客_c语言学生成绩管理系统的设计与实现 本系统有**增加学生记录、修改学生记录、删除学生记录、按姓名查询学生记录、按C语言成绩对学生进行排序、退出系统**6大功能。 能够对学生的姓名,学号,c语言成绩做相应的操作。 在检测到输入成绩大于55时,会自动加上5。该管理系统设计功能模块图: 下面是源代码:#include "stdio.h" #include "string"/*定义学生结构体*/ struct Student https://blog.csdn.net/hpf247/article/details/75716059?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166977488616782428651425%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=166977488616782428651425&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-3-75716059-null-null.nonecase&utm_term=C%E8%AF%AD%E8%A8%80%E8%AE%BE%E8%AE%A1%E5%AD%A6%E7%94%9F%E6%88%90%E7%BB%A9%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F&spm=1018.2226.3001.4450

C语言实现学生成绩管理系统(EasyX图形界面)_半生瓜のblog的博客-CSDN博客_学生成绩管理系统界面 我的小站——半生瓜のblog代码文件下载链接——链接学生成绩管理系统学生成绩管理系统效果图流程&注意要点代码实现学生成绩管理系统效果图流程&注意要点核心部分——EasyX显示图形界面,结构体数组和文件操作负责对数据进行各种操作。只要一进去程序就对存储数据的文件进行读取,如果有数据直接读到学生结构体数组里面,得到当前结构体数组中的数据数量(几个人),并将所有数据打印到屏幕上。管理员用户输入密码验证——读取文件——验证用户输入是否正确。显示所有数据——如果通过文件. https://blog.csdn.net/qq_51604330/article/details/118881541?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166977488616782428651425%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=166977488616782428651425&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-15-118881541-null-null.nonecase&utm_term=C%E8%AF%AD%E8%A8%80%E8%AE%BE%E8%AE%A1%E5%AD%A6%E7%94%9F%E6%88%90%E7%BB%A9%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F&spm=1018.2226.3001.4450

C语言学生成绩管理系统

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//学生结构体 
struct Student
{
    char Name[10];
    int Num;
    float Computer;
    float Math;
    float English;
    float Total;
    float Ave;
};
//结点 
typedef struct Node
{
    struct Student st;//数据域
    struct node *pnext;//指针域
}node, *pnode;//*node等价于struct Student st,pnode等价于struct Node *pNext 

//函数
pnode Input();//录入学生信息
void Show(pnode phead);//显示学生信息
void Add(pnode phead);//增加学生信息
void Delete(pnode phead);//删除学生信息
void Change(pnode phead);//修改学生信息
void Search(pnode phead);//查找学生信息
void Sort(pnode phead);//总分排序 
 
void main()
{
    system("cls");
    printf("\n\n");
    printf("\t\t\t============================================\n");
    printf("\t\t\t|                                          |\n");
    printf("\t\t\t|          欢迎来到学生成绩管理系统        |\n");
    printf("\t\t\t|                                          |\n");
    printf("\t\t\t|==========================================|\n");
    printf("\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|              6.查找学生信息              |\n");
    printf("\t\t\t|              7.按总分排序                |\n");
    printf("\t\t\t|                                          |\n");
    printf("\t\t\t============================================\n");
    int Item;//保存操作命令
    pnode phead=NULL;//定义一个指针
    while(1)
    {
        printf("请选择操作命令:");
        scanf("%d",&Item);
        system("cls");//清屏
        switch(Item)
        {
            case 1://录入学生信息
            {
                phead=Input();
            }
            break;
            case 2://显示学生信息
            {
                Show(phead);
            }
            break;
            case 3://增加学生信息
            {
                Add(phead);
            }
            break;
            case 4://删除学生信息
            {
                Delete(phead);
            }
            break;
            case 5://修改学生信息
            {
                Change(phead);
            }
            break;
            case 6://查找学生信息
            {
                Search(phead);
            }
            break;
            case 7://总分排序
            {
                Sort(phead);
                Show(phead);
            }
            break;
            default:
            break;
        }
    }
    system("pause");
}
//录入学生信息
pnode Input()
{
    int num;//学生的人数
    node stu;//学生结构
    pnode phead=(pnode)malloc(sizeof(node));//定义一个头结点并且为头结点分配内存
    //判断内存是否为空
    if(NULL==phead)
    {
        printf("内存分配失败,程序终止!\n");
        exit(-1);
    }
    pnode ptail=phead;//定义一个指向头结点的指针
    ptail->pnext=NULL;//清空指针域
    printf("请输入学生的人数:");
    scanf("%d",&num);
    int i;
    for(i=0;i<num;i++)
    {
        printf("请输入第%d个学生的姓名:",i+1);
        scanf("%s",stu.st.Name);
        printf("请输入第%d个学生的学号:",i+1);
        scanf("%d",&stu.st.Num);
        printf("请输入第%d个学生的计算机成绩:",i+1);
        scanf("%f",&stu.st.Computer);
        printf("请输入第%d个学生的高数成绩:",i+1);
        scanf("%f",&stu.st.Math);
        printf("请输入第%d个学生的大英成绩:",i+1);
        scanf("%f",&stu.st.English);
        stu.st.Total=stu.st.Computer+stu.st.Math+stu.st.English;//计算总分
        stu.st.Ave=stu.st.Total/3.0f;//计算平均分
        pnode pnew=(pnode)malloc(sizeof(node));//为新节点分配内存
        //判断内存是否为空
        if(NULL==pnew)
        {
            printf("内存分配失败,程序终止!\n");
            exit(-1);
        }
        pnew->st=stu.st;//初始化结点的数据域
        ptail->pnext=pnew;//将新结点挂到老结点后
        pnew->pnext=NULL;//清空新结点的指针域
        ptail=pnew;//将ptail移到新结点上
    }
    return phead;
}
//显示学生信息
void Show(pnode phead)
{
    //定义一个指针用于遍历学生信息
    pnode p=phead->pnext;
    printf("姓名  学号 计算机 高数  大英 总分 平均分\n");
    while(NULL!=p)
    {
        printf("%s    %d    %g    %g    %g   %g    %g\n",p->st.Name,p->st.Num,p->st.Computer,p->st.Math,p->st.English,p->st.Total,p->st.Ave);
        p=p->pnext;
    }
}
//增加学生信息
void Add(pnode phead)
{
    pnode p=phead;
    int i=0;
    struct Student stu;//学生结构体 
    int loc;//插入结点的位置
    printf("请输入插入学生的位置:");
    scanf("%d",&loc);
    while(NULL!=p&&i<loc-1)
    {
        p=p->pnext;
        i++;
    }
    if(NULL==p||i>loc)
    {
        printf("插入结点的位置不存在!\n");
        return;
    }
    printf("你将在第%d个学生后面插入一个学生\n",loc-1);
    printf("请输入第%d个学生的姓名:",loc);
    scanf("%s",stu.Name);
    printf("请输入第%d个学生的学号:",loc);
    scanf("%d",&stu.Num);
    printf("请输入第%d个学生的计算机成绩:",loc);
    scanf("%f",&stu.Computer);
    printf("请输入第%d个学生的高数成绩:",loc);
    scanf("%f",&stu.Math);
    printf("请输入第%d个学生的大英成绩:",loc);
    scanf("%f",&stu.English);
    stu.Total=stu.Computer+stu.Math+stu.English;//计算总分
    stu.Ave=stu.Total/3.0f;//计算平均分
    pnode pnew=(pnode)malloc(sizeof(node));
    if(NULL==pnew)
    {
        printf("动态内存分配失败,程序终止!\n");
        exit(-1);
    }
    pnew->st=stu;
    pnode q=p->pnext;
    p->pnext=pnew;
    pnew->pnext=q;
}
//删除学生信息
void Delete(pnode pHead)
{
    pnode p = pHead;
    int i = 0;
    int loc;
    printf("请输入你需要删除的学生的编号:");
    scanf("%d",&loc);
    while(NULL!=p->pnext&&i<loc-1)
    {
        p=p->pnext;
        i++;
    }
    if(NULL==p->pnext||i>loc-1)
    {
        printf("没找到需要删除的学生的编号!\n");
        return;
    }
    pnode q=p->pnext;
    p->pnext=q->pnext;
    free(q);
    q==NULL;
    printf("你已经成功删除了第%d个学生的信息!\n",loc);
}
//修改学生信息
void Change(pnode phead)
{
    char Name[10];
    printf("请输入你需要修改的学生的姓名:");
    scanf("%s",&Name);
    pnode p=phead->pnext;//定义一个指针用于遍历学生信息
    while(NULL!=p)
    {
        if(0==strcmp(Name,p->st.Name))
        {
            printf("姓名  学号 计算机 高数  大英 总分 平均分\n");
            printf("修改前的学生信息!\n");
            printf("%s    %d    %g    %g    %g   %g    %g\n",p->st.Name,p->st.Num,p->st.Computer,p->st.Math,p->st.English,p->st.Total,p->st.Ave);
            system("pause");
            system("cls");//清屏
            printf("请输入新的学生姓名:");
            scanf("%s",p->st.Name);
            printf("请输入新的学生学号:");
            scanf("%d",&p->st.Num);
            printf("请输入新的学生的计算机成绩:");
            scanf("%f",&p->st.Computer);
            printf("请输入新的学生的高数成绩:");
            scanf("%f",&p->st.Math);
            printf("请输入新的学生的大英成绩:");
            scanf("%f",&p->st.English);
            p->st.Total=p->st.Computer+p->st.Math+p->st.English;//计算总分
            p->st.Ave=p->st.Total/3.0f;//计算平均分
             break;
        }
        p=p->pnext;
    }
}
//查找学生信息
void Search(pnode pHead)
{
    char Name[10];
    printf("请输入你需要查找的学生的姓名:");
    scanf("%s",Name);
    pnode p=pHead->pnext;
    printf("姓名  学号 计算机 高数  大英 总分 平均分\n"); 
    while(NULL!=p)
    {
        if(0==strcmp(Name,p->st.Name))
        {
            printf("%s    %d    %g    %g    %g   %g    %g\n",p->st.Name,p->st.Num,p->st.Computer,p->st.Math,p->st.English,p->st.Total,p->st.Ave);
        }
         p=p->pnext;
    }
}
//总分排序
void Sort(pnode phead)
{
    pnode p, q;//定义两个指针
    node temp;
    for(p=phead->pnext;NULL!=p;p=p->pnext)
    {
        for(q=p->pnext;NULL!=q;q=q->pnext)
          {
            if(p->st.Total<q->st.Total)//当前一个学生的总分小于后一个学生的总分时
               {
                temp.st=p->st;//交换学生的位置
                p->st=q->st;
                q->st=temp.st;
            }
        }
    }
}