数据结构课程设计——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学生成绩管理系统的主要内容,如果未能解决你的问题,请参考以下文章
用C语言写学生成绩管理系统基本功能:1、 输入一个班级的学生基本信息(包括学号,姓名,性别,5门课程成绩