数据结构课程设计——ytu学生成绩管理系统

Posted 锐不可当cr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构课程设计——ytu学生成绩管理系统相关的知识,希望对你有一定的参考价值。

Part1:说明信息

/********************************************************************
*版权所有 (C)2016,Chang Rui
*
*文件名称:ytu学生成绩管理系统
*文件标识:无
*内容摘要:简单模拟学生成绩管理过程,
            完成对学生成绩信息的建立、增加、删除、查找、修改等功能
*其他内容:无
*
*当前版本:Codeblocks 16.01
*作者:常锐
*完成日期:2016. 12. 29
*********************************************************************/

Part2:头文件systemuser.h  结构体与各个成员函数定义

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <malloc.h>
//结构体定义部分---------------------------------------------------------------------------------
typedef struct User

    int is_build;                       //判断学生成绩单是否建立,0-未建立 1-已建立
    int is_login;                       //判断是否登录,0-未登录 1-已登录
    char num[32];                       //学生学号
    char name[32];                      //学生姓名
    char classnum[32];                  //学生所在班级编号
    double score[4];                    //学生4门课的单科成绩
    double total;                       //学生4门课的总成绩
    double average;                     //学生4门课的平均成绩
    struct User *next;                  //指向后继节点的指针
 user;
//各功能函数定义部分------------------------------------------------------------------------------
void Login(user *&L);                   //管理员登录
void StuInit(user *&L);                 //初始化学生信息
void CreateStu(user *&L);               //创建学生成绩单
void InsertStu(user *&L);               //增加学生信息
void DeleteStu(user *&L);               //删除学生信息
void FindStu(user *L);                  //查找学生信息
void ModifyStu(user *L);                //修改学生信息
int Stunum(user *L);                    //记录当前学生个数
int FailStunum(user *L);                //记录当前不及格学生个数
void Sortstu(user *L);                  //学生成绩排名
void DispStu(user *L);                  //输出学生成绩信息
void DispFailstu(user *L);              //输出不及格学生成绩信息
void Save(user *L);                     //保存操作结果

Part3:stufun.cpp 各功能函数实现

#include <stdio.h>
#include "systemuser.h"
/*******************************************
* 功能描述:管理员登录
* 输入参数:用户名和密码
* 输出参数:用户名或密码输出有错误时的提示
********************************************/
void Login(user *&L)                     //管理员登录

    char logname[]="admin";            //指定管理员登录用户名与密码
    char passwd[]="ytustu";
    char l[32],p[32],tmp;                //tmp作为判断输入出错标志,输入#可重新输入信息
    int i=3,j;                           //最多3次机会
    while(i)
    
        printf("请输入用户名:\\n");
        scanf("%s",l);
        printf("请输入密码:\\n");
        for(j=0;j<32;j++)                //屏幕上显示密码*
        
            p[j]=getch();
            if(p[j]=='\\r')
            
                tmp=p[j-1];
                break;
            
            printf("*");
        
        p[j]='\\0';
        printf("\\n");
        if(strcmp(logname,l)==0 && strcmp(passwd,p)==0)//用户名和密码均正确表示登录成功
        
            L->is_login=1;
            break;
        
        else if(tmp=='#')
            printf("请重新输入用户名与密码\\n");
        else
        
            printf("用户名或密码错误,请重新输入,您还有%d次机会!\\n",i-1);
            i--;
        
    

/*******************************************
* 功能描述:初始化学生信息
* 输入参数:无
* 输出参数:无
********************************************/
void StuInit(user *&L)                      //初始化学生信息

    int i;
    L=(user *)malloc(sizeof(user));
    L->is_build=0;                          //初始状态-成绩单尚未建立
    L->is_login=0;                          //初始状态-管理员未登录
    for(i=0;i<32;i++)                       //初始化各学生信息
    
        L->num[i]='\\0';
        L->name[i]='\\0';
        L->classnum[i]='\\0';
    
    for(i=0;i<4;i++)
        L->score[i]=0;
    L->total=0;
    L->average=0;
    L->next=NULL;

/*******************************************
* 功能描述:保存操作结果
* 输入参数:无
* 输出参数:操作提示
********************************************/
void Save(user *L)                           //保存操作结果

    int i;
    user *p=L->next, *q=L->next;
    FILE *fp;                                //文件指针
    if(p==NULL)
    
        printf("现在没有学生信息,请先输入学生信息\\n");
        return;
    
    fp=fopen("stu.txt","w");                 //在当前目录下打开stu.txt文件并设置只允许“写”操作
    if(!fp)
    
        printf("文件不存在\\n");
        return;
    
    //将学生信息与不及格学生信息写入文件
    fprintf(fp,"===========================学生成绩信息一览表===========================\\n");
    fprintf(fp,"当前学生个数为:%d\\n",Stunum(L));
    fprintf(fp,"学号\\t姓名\\t班级\\tsc1\\tsc2\\tsc3\\tsc4\\t总成绩\\t平均成绩\\n");
    while(p!=NULL)
    
        fprintf(fp,"%s\\t%s\\t%s\\t%.2lf\\t%.2lf\\t%.2lf\\t%.2lf\\t",p->num,p->name,p->classnum,p->score[0],p->score[1],p->score[2],p->score[3]);
        fprintf(fp,"%.2lf\\t%.2lf\\n",p->total,p->average);
        p=p->next;
    
    fprintf(fp,"\\n=======================不及格学生成绩信息一览表=======================\\n");
    fprintf(fp,"当前不及格学生个数为:%d\\n",FailStunum(L));
    fprintf(fp,"学号\\t姓名\\t班级\\tsc1\\tsc2\\tsc3\\tsc4\\t总成绩\\t平均成绩\\n");
    while(q!=NULL)
    
        for(i=0;i<4;i++)
        
            if(q->score[i]<60)
            
                fprintf(fp,"%s\\t%s\\t%s\\t%.2lf\\t%.2lf\\t%.2lf\\t%.2lf\\t",q->num,q->name,q->classnum,q->score[0],q->score[1],q->score[2],q->score[3]);
                fprintf(fp,"%.2lf\\t%.2lf\\n",q->total,q->average);
                break;
            
        
        q=q->next;
    
    fclose(fp);                              //把缓冲区内最后剩余的数据输出到内核缓冲区,并释放文件指针
    printf("数据已成功导入文件stu.txt!\\n");

/******************************************************************
* 功能描述:创建学生成绩单
* 输入参数:学生学号.姓名.班号及4门课的成绩(学号为0时结束输入)
* 输出参数:操作提示
*******************************************************************/
void CreateStu(user *&L)                    //创建学生成绩单

    user *s,*r;
    int i;
    double subscore[4];
    if(L->is_login==0)
        printf("请您先登录!\\n");
    else
    
        if(L->is_build==1)
            printf("学生成绩单已建立完成,无需再次建立!\\n");
        else
        
            L=(user *)malloc(sizeof(user));
            r=L;
            printf("请输入学生学号.姓名.班号及4门课的成绩,以0结束输入:\\n");
            while(1)
            
                s=(user *)malloc(sizeof(user));
                scanf("%s",s->num);
                if(strcmp(s->num,"0")==0)
                
                    printf("输入结束,您已退出本操作...\\n");
                    break;
                
                scanf("%s %s",s->name,s->classnum);
                s->total=0;
                for(i=0;i<4;i++)
                
                    scanf("%lf",&(subscore[i]));
                    s->score[i]=subscore[i];
                    if(s->score[i]>=0 && s->score[i]<=100)
                        s->total+=(s->score[i]);
                
                s->average=s->total/4;
                r->next=s;
                r=s;
                printf("学生%s的信息已添加至成绩单,操作成功!\\n",s->name);
            
            r->next=NULL;                    //尾指针域置NULL
            L->is_build=1;                   //成绩单已建立完成,is_build置1
        
    

/******************************************************************
* 功能描述:增加学生信息
* 输入参数:学生学号.姓名.班号及4门课的成绩(学号为0时结束输入)
* 输出参数:操作提示
*******************************************************************/
void InsertStu(user *&L)                     //增加学生信息

    user *p=L,*q;
    int i;
    if(L->is_login==0)
        printf("请您先登录!\\n");
    else
    
        if(L->is_build==0)
            printf("学生成绩单未建立,操作失败!\\n");
        else
        
            printf("请输入学生学号.姓名.班号及4门课的成绩,以0结束输入:\\n");
            while(1)
            
                q=(user *)malloc(sizeof(user));  //能插入,分配节点空间
                scanf("%s",q->num);
                if(strcmp(q->num,"0")==0)
                
                    printf("输入结束,您已退出本操作...\\n");
                    break;
                
                scanf("%s %s",q->name,q->classnum);
                q->total=0;
                for(i=0;i<4;i++)
                
                    scanf("%lf",&(q->score[i]));
                    if(q->score[i]>=0 && q->score[i]<=100)
                        q->total+=(q->score[i]);
                
                q->average=q->total/4;
                while(p->next!=NULL)                        //遍历查找第i-1个节点
                    p=p->next;
                q->next=p->next;
                p->next=q;                               //更改指针域,完成插入
                printf("学生%s的信息已添加至成绩单,操作成功!\\n",q->name);
            
        
    

/************************************
* 功能描述:删除学生信息
* 输入参数:学生学号.姓名.班号
* 输出参数:操作提示
*************************************/
void DeleteStu(user *&L)                    //删除学生信息

    int i;
    user *p=L,*q=p->next;                   //”伴随指针“共同作用
    char num[32],name[32],cla[32];
    if(L->is_login==0)
        printf("请您先登录!\\n");
    else
    
        if(L->is_build==0)
            printf("学生成绩单未建立,操作失败!\\n");
        else
        
            printf("请输入被删除学生的学号.姓名.班号,以0结束输入:\\n");
            while(1)
            
                scanf("%s",num);
                if(strcmp(num,"0")==0)
                
                    printf("输入结束,您已退出本操作...\\n");
                    break;
                
                scanf("%s %s",name,cla);
                while(strcmp(q->num,num)!=0 && strcmp(q->name,name)!=0 && strcmp(q->classnum,cla)!=0 && q->next!=NULL)
                
                    p=q;
                    q=q->next;
                
                if(strcmp(q->num,num)==0 && strcmp(q->name,name)==0 && strcmp(q->classnum,cla)==0)
                
                    p->next=q->next;
					printf("===========================被删除学生成绩信息一览===========================\\n");
                    printf("注:sc1-高数, sc2-程序设计, sc3-数据结构, sc4-计组\\n");
                    printf("学号\\t姓名\\t班级\\tsc1\\tsc2\\tsc3\\tsc4\\t总成绩\\t平均成绩\\n");
                    printf("%s\\t",q->num);
                    printf("%s\\t",q->name);
                    printf("%s\\t",q->classnum);
                    for(i=0;i<4;i++)
                        printf("%0.2lf\\t",(q->score[i]));
                    printf("%0.2lf\\t",q->total);
                    printf("%0.2lf\\n",q->average);
					free(q);
					printf("该学生信息已被删除,操作成功!\\n");
                
                else
                    printf("该学生不存在,操作失败!\\n");
            
        
    

/************************************
* 功能描述:查找学生信息
* 输入参数:学生学号.姓名.班号
* 输出参数:操作提示
*************************************/
void FindStu(user *L)                       //查找学生信息

    int i,flag=0;
    user *p=L->next;
    char num[32],name[32],classnum[32];
    if(L->is_login==0)
        printf("请您先登录!\\n");
    else
    
        if(L->is_build==0)
            printf("学生成绩单未建立,操作失败!\\n");
        else
        
            printf("请输入待查询学生的学号.姓名.班号,以0结束输入:\\n");
            while(1)
            
                scanf("%s",num);
                if(strcmp(num,"0")==0)
                
                    printf("输入结束,您已退出本操作...\\n");
                    break;
                
                scanf("%s %s",name,classnum);
                while(p!=NULL)
                
                    if(strcmp(p->num,num)==0 && strcmp(p->name,name)==0 && strcmp(p->classnum,classnum)==0)
                    
                        flag=1;
                        printf("===========================学生成绩查询结果===========================\\n");
                        printf("注:sc1-高数, sc2-程序设计, sc3-数据结构, sc4-计组\\n");
                        printf("学号\\t姓名\\t班级\\tsc1\\tsc2\\tsc3\\tsc4\\t总成绩\\t平均成绩\\n");
                        printf("%s\\t",p->num);
                        printf("%s\\t",p->name);
                        printf("%s\\t",p->classnum);
                        for(i=0;i<4;i++)
                            printf("%0.2lf\\t",(p->score[i]));
                        printf("%0.2lf\\t",p->total);
                        printf("%0.2lf\\n",p->average);
                        break;
                    
                    p=p->next;
                
                if(flag==0)
                    printf("您要查询的学生不存在,操作失败!\\n");
            
        
    

/************************************
* 功能描述:记录当前学生个数
* 输入参数:无
* 输出参数:无
* 返回值:学生个数length1
*************************************/
int Stunum(user *L)

    int length1=0;
    user *p=L->next;                        //length1初始化为0,p指向头节点
    while(p!=NULL)
    
        length1++;
        p=p->next;
    
    return length1;

/************************************
* 功能描述:记录当前不及格学生个数
* 输入参数:无
* 输出参数:无
* 返回值:不及格学生个数length2
*************************************/
int FailStunum(user *L)                     //记录当前不及格学生个数

    int length2=Stunum(L);
    user *p=L->next;                        //length2初始化为0,p指向头节点
    while(p!=NULL)
    
        if(p->score[0]>=60 && p->score[1]>=60 && p->score[2]>=60 && p->score[3]>=60)
            length2--;
        p=p->next;
    
    return length2;

/*****************************************************************************
* 功能描述:修改学生信息
* 输入参数:修改前学生学号.姓名.班号和修改后学生学号.姓名.班号和4门课的成绩
* 输出参数:操作提示
******************************************************************************/
void ModifyStu(user *L)                     //修改学生信息

    int i,flag=0;
    user *p=L->next;
    char num[32],name[32],classnum[32];
    char Modnum[32],Modname[32],Modclassnum[32];
    double Modscore[4];                               //修改后信息
    if(L->is_login==0)
        printf("请您先登录!\\n");
    else
    
        if(L->is_build==0)
            printf("学生成绩单未建立,操作失败!\\n");
        else
        
            printf("请输入待修改学生的学号.姓名.班号,以0结束输入:\\n");
            while(1)
            
                scanf("%s",num);
                if(strcmp(num,"0")==0)
                
                    printf("输入结束,您已退出本操作...\\n");
                    break;
                
                scanf("%s %s",name,classnum);
                while(p!=NULL)
                
                    if(strcmp(p->num,num)==0 && strcmp(p->name,name)==0 && strcmp(p->classnum,classnum)==0)
                    
                        flag=1;
                        printf("===========================学生信息(修改前)===========================\\n");
                        printf("注:sc1-高数, sc2-程序设计, sc3-数据结构, sc4-计组\\n");
                        printf("学号\\t姓名\\t班级\\tsc1\\tsc2\\tsc3\\tsc4\\t总成绩\\t平均成绩\\n");
                        printf("%s\\t",p->num);
                        printf("%s\\t",p->name);
                        printf("%s\\t",p->classnum);
                        for(i=0;i<4;i++)
                            printf("%0.2lf\\t",(p->score[i]));
                        printf("%0.2lf\\t",p->total);
                        printf("%0.2lf\\n",p->average);
                        printf("请输入修改后的学生学号.姓名.班号与4门课成绩:\\n");
                        scanf("%s %s %s",Modnum,Modname,Modclassnum);
                        strcpy(p->num,Modnum);
                        strcpy(p->name,Modname);
                        strcpy(p->classnum,Modclassnum);
                        p->total=0;
                        for(i=0;i<4;i++)
                        
                            scanf("%lf",&(Modscore[i]));
                            p->score[i]=Modscore[i];
                            if(p->score[i]>=0 && p->score[i]<=100)
                                p->total+=(p->score[i]);
                        
                        p->average=p->total/4;
                        printf("该学生信息修改成功!\\n");
                        printf("===========================学生信息(修改后)===========================\\n");
                        printf("注:sc1-高数, sc2-程序设计, sc3-数据结构, sc4-计组\\n");
                        printf("学号\\t姓名\\t班级\\tsc1\\tsc2\\tsc3\\tsc4\\t总成绩\\t平均成绩\\n");
                        printf("%s\\t",p->num);
                        printf("%s\\t",p->name);
                        printf("%s\\t",p->classnum);
                        for(i=0;i<4;i++)
                            printf("%0.2lf\\t",(p->score[i]));
                        printf("%0.2lf\\t",p->total);
                        printf("%0.2lf\\n",p->average);
                    
                    p=p->next;
                
                if(flag==0)
                    printf("该学生不存在,操作失败!\\n");
            
        
    

/************************************
* 功能描述:学生成绩排名
* 输入参数:学生学号.姓名.班号
* 输出参数:操作提示
*************************************/
void Sortstu(user *L)                       //学生成绩排名

    user *p,*q,*r;
    int method;
    if(L->is_login==0)
        printf("请您先登录!\\n");
    else
    
        if(L->is_build==0)
            printf("学生成绩单未建立,操作失败!\\n");
        else
        
            printf("请选择排序方式:");
            printf("1.按科目1成绩排名 2.按科目2成绩排名 3.按科目3成绩排名 4.按科目4成绩排名 5.按总成绩排名\\n");
            scanf("%d",&method);
            switch(method)
            
                case 1:
                    p=L->next->next;                                         //p指向第一个节点的后继
                    L->next->next=NULL;                                      //直接插入排序,第一个元素在有序区,从第二元素起依次插入
                    while(p!=NULL)
                    
                        r=p->next;                                           //r指针暂存p的后继
                        q=L;
                        while(q->next!=NULL && q->next->score[0]>p->score[0])//查找插入位置
                            q=q->next;                                       //将p节点链入链表
                        p->next=q->next;
                        q->next=p;
                        p=r;
                    
                    break;
                case 2:
                    p=L->next->next;
                    L->next->next=NULL;
                    while(p!=NULL)
                    
                        r=p->next;
                        q=L;
                        while(q->next!=NULL&&q->next->score[1]>p->score[1])
                            q=q->next;
                        p->next=q->next;
                        q->next=p;
                        p=r;
                    
                    break;
                case 3:
                    p=L->next->next;
                    L->next->next=NULL;
                    while(p!=NULL)
                    
                        r=p->next;
                        q=L;
                        while(q->next!=NULL&&q->next->score[2]>p->score[2])
                            q=q->next;
                        p->next=q->next;
                        q->next=p;
                        p=r;
                    
                    break;
                case 4:
                    p=L->next->next;
                    L->next->next=NULL;
                    while(p!=NULL)
                    
                        r=p->next;
                        q=L;
                        while(q->next!=NULL&&q->next->score[3]>p->score[3])
                            q=q->next;
                        p->next=q->next;
                        q->next=p;
                        p=r;
                    
                    break;
                case 5:
                    p=L->next->next;
                    L->next->next=NULL;
                    while(p!=NULL)
                    
                        r=p->next;
                        q=L;
                        while(q->next!=NULL&&q->next->total>p->total)
                            q=q->next;
                        p->next=q->next;
                        q->next=p;
                        p=r;
                    
                    break;
                default:
                    printf("操作失败,请输入正确的项目编号!\\n");
                    break;
            
            DispStu(L);
        
    

/************************************
* 功能描述:输出不及格学生信息
* 输入参数:无
* 输出参数:所有不及格学生信息
*************************************/
void DispFailstu(user *L)                   //输出不及格学生成绩信息

    user *p=L->next;
    int i,flag=0;                           //判断成绩单是否为空的标记
    if(L->is_login==0)
        printf("请您先登录!\\n");
    else
    
        if(L->is_build==0)
            printf("学生成绩单未建立,操作失败!\\n");
        else
        
            printf("===========================不及格学生成绩信息一览表===========================\\n");
            printf("当前不及格学生个数为:%d\\n",FailStunum(L));
            printf("注:sc1-高数, sc2-程序设计, sc3-数据结构, sc4-计组\\n");
            printf("学号\\t姓名\\t班级\\tsc1\\tsc2\\tsc3\\tsc4\\t总成绩\\t平均成绩\\n");
            while(p!=NULL)
            
                for(i=0;i<4;i++)
                
                    if(p->score[i]>=0 && p->score[i]<60)
                    
                        flag=1;
                        printf("%s\\t",p->num);
                        printf("%s\\t",p->name);
                        printf("%s\\t",p->classnum);
                        for(i=0;i<4;i++)
                            printf("%0.2lf\\t",(p->score[i]));
                        printf("%0.2lf\\t",p->total);
                        printf("%0.2lf\\n",p->average);
                    
                
                p=p->next;
            
            if(flag==0)
                printf("无不及格学生成绩信息!\\n");
            printf("\\n");
        
    

/************************************
* 功能描述:输出学生信息
* 输入参数:无
* 输出参数:所有学生信息
*************************************/
void DispStu(user *L)                             //输出学生成绩信息

    user *p=L->next;
    int i;
    int flag=0;                                //判断成绩单是否为空的标记
    if(L->is_login==0)
        printf("请您先登录!\\n");
    else
    
        if(L->is_build==0)
            printf("学生成绩单未建立,操作失败!\\n");
        else
        
            printf("==============================学生成绩信息一览表==============================\\n");
            printf("当前学生个数为:%d\\n",Stunum(L));
            printf("注:sc1-高数, sc2-程序设计, sc3-数据结构, sc4-计组\\n");
            printf("学号\\t姓名\\t班级\\tsc1\\tsc2\\tsc3\\tsc4\\t总成绩\\t平均成绩\\n");
            while(p!=NULL)
            
                flag=1;
                printf("%s\\t",p->num);
                printf("%s\\t",p->name);
                printf("%s\\t",p->classnum);
                for(i=0;i<4;i++)
                    printf("%0.2lf\\t",(p->score[i]));
                printf("%0.2lf\\t",p->total);
                printf("%0.2lf\\n",p->average);
                p=p->next;
            
            if(flag==0)
                printf("无学生成绩信息!\\n");
            printf("\\n");
        
    



Part 4:main.cpp 主函数实现

//朱函数实现部分---------------------------------------------------------------------------
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <windows.h>
#include "systemuser.h"
int choice;                           //全局变量,选择项目编号
int signal=0;                         //判断是否再次登录标记,置0
user *L;
void SecMenu();                       //副菜单(声明)
void MainMenu()                       //主菜单

	printf("\\n\\n\\n\\n\\n\\n");
	printf("************************欢迎进入ytu学生成绩管理系统************************\\n");
	printf("\\n\\n");
	system("color 8E");
	printf("请稍后...\\n");
	for(int k=0;k<75;k++)
	
		Sleep(30);
		printf(">");
	
	system("cls");
	printf("\\n\\n\\n\\n\\n\\n");
    printf("************************欢迎进入ytu学生成绩管理系统************************\\n");
	printf("\\n\\n");
	printf("********************************请选择项目*********************************\\n");
	printf("\\n\\n");
	printf("****************              1. 管理员登录                ****************\\n");
	printf("****************            2. 创建学生成绩单              ****************\\n");
	printf("****************             3. 增加学生信息               ****************\\n");
	printf("****************             4. 删除学生信息               ****************\\n");
    printf("****************             5. 修改学生信息               ****************\\n");
    printf("****************             6. 学生成绩查询               ****************\\n");
    printf("****************             7. 学生成绩排名               ****************\\n");
    printf("****************           8. 输出学生成绩信息             ****************\\n");
	printf("****************         9. 输出不及格学生成绩信息         ****************\\n");
	printf("****************             10. 保存操作结果              ****************\\n");
	printf("****************              0. 退出本系统                ****************\\n");
	if(signal==0)
        StuInit(L);
	while(1)
	
	    scanf("%d",&choice);
	    if(choice==0)
        
            printf("您已退出本系统!\\n");
            break;
        
	    else if(choice==1)
        
            if(L->is_login==1 && signal==1)
            
                printf("您已登录本系统,无需再次登录!\\n");
                Sleep(2000);
                system("cls");
                SecMenu();
            
            else
            
                Login(L);
                if(L->is_login==1 && signal==0)
                
                    printf("登录成功!\\n");
                    signal=1;                        //再次登录标记置1
                    Sleep(2000);
                    system("cls");
                    SecMenu();
                
                else
                
                    printf("错误操作次数过多,您已退出本系统!\\n");
                    break;
                
            
        
        else if(choice==2)
        
            CreateStu(L);
            Sleep(2000);
            system("cls");
            SecMenu();
        
        else if(choice==3)
        
            InsertStu(L);
            Sleep(2000);
            system("cls");
            SecMenu();
        
        else if(choice==4)
        
            DeleteStu(L);
            Sleep(2000);
            system("cls");
            SecMenu();
        
        else if(choice==5)
        
            ModifyStu(L);
            Sleep(2000);
            system("cls");
            SecMenu();
        
        else if(choice==6)
        
            FindStu(L);
            Sleep(2000);
            system("cls");
            SecMenu();
        
        else if(choice==7)
        
            Sortstu(L);
            Sleep(5000);
            system("cls");
            SecMenu();
        
        else if(choice==8)
        
            DispStu(L);
            Sleep(5000);
            system("cls");
            SecMenu();
        
        else if(choice==9)
        
            DispFailstu(L);
            Sleep(5000);
            system("cls");
            SecMenu();
        
        else if(choice==10)
        
            Save(L);
            Sleep(2000);
            system("cls");
            SecMenu();
        
        else
        
            printf("请输入正确的项目编号!\\n");
            Sleep(2000);
            system("cls");
            SecMenu();
        
	

void SecMenu()

    printf("\\n\\n\\n\\n\\n\\n");
	printf("************************欢迎进入ytu学生成绩管理系统************************\\n");
	printf("\\n\\n");
	system("color 8E");
	printf("请稍后...\\n");
	for(int k=0;k<75;k++)
	
		Sleep(30);
		printf(">");
	
	system("cls");
	printf("\\n\\n\\n\\n\\n\\n");
    printf("************************欢迎进入ytu学生成绩管理系统************************\\n");
	printf("\\n\\n");
	printf("********************************请选择项目*********************************\\n");
	printf("\\n\\n");
	printf("****************              1. 管理员登录                ****************\\n");
	printf("****************            2. 创建学生成绩单              ****************\\n");
	printf("****************             3. 增加学生信息               ****************\\n");
    printf("****************             4. 删除学生信息               ****************\\n");
    printf("****************             5. 修改学生信息               ****************\\n");
    printf("****************             6. 学生成绩查询               ****************\\n");
    printf("****************             7. 学生成绩排名               ****************\\n");
    printf("****************           8. 输出学生成绩信息             ****************\\n");
	printf("****************         9. 输出不及格学生成绩信息         ****************\\n");
	printf("****************             10. 保存操作结果              ****************\\n");
	printf("****************              0. 退出本系统                ****************\\n");

int main()

    MainMenu();
    return 0;

Part5:运行结果

(1)动态主界面:

(2)管理员登录:


(3)创建学生成绩单:


(4)增加学生信息:


(5)删除学生信息:


(6)修改学生信息:


(7)学生成绩查询:


(8)学生成绩排名:


(9)输出学生成绩信息:


(10)输出不及格学生成绩信息:


(11)保存操作结果:



(12)退出本系统:


        PS:因时间与技术水平有限,设计不当与考虑不周之处在所难免。欢迎大家批评指正、提出建设性意见与建议~

以上是关于数据结构课程设计——ytu学生成绩管理系统的主要内容,如果未能解决你的问题,请参考以下文章

YTU 2626: B 统计程序设计基础课程学生的平均成绩

JAVA课程设计——学生成绩管理系统

用C语言写学生成绩管理系统基本功能:1、 输入一个班级的学生基本信息(包括学号,姓名,性别,5门课程成绩

YTU 2416: C语言习题 成绩输出

JAVA:编写一个学生成绩管理系统。学生的属性包括学号、姓名、年龄等。

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