[置顶] 数据结构课程设计——ytu学生成绩管理系统
2016-12-29 17:01
555 查看
Part1:说明信息
Part2:头文件systemuser.h 结构体与各个成员函数定义
Part3:stufun.cpp 各功能函数实现
Part 4:main.cpp 主函数实现
Part5:运行结果
(1)动态主界面:
(2)管理员登录:
(3)创建学生成绩单:
(4)增加学生信息:
(5)删除学生信息:
(6)修改学生信息:
(7)学生成绩查询:
(8)学生成绩排名:
(9)输出学生成绩信息:
(10)输出不及格学生成绩信息:
(11)保存操作结果:
(12)退出本系统:
PS:因时间与技术水平有限,设计不当与考虑不周之处在所难免。欢迎大家批评指正、提出建设性意见与建议~
/******************************************************************** *版权所有 (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:因时间与技术水平有限,设计不当与考虑不周之处在所难免。欢迎大家批评指正、提出建设性意见与建议~
相关文章推荐
- [置顶] 数据结构课程设计-学生成绩管理系统
- [置顶] C语言项目--教师信息/学生成绩管理系统
- 数据结构课程设计——学生成绩管理系统
- [置顶] C语言项目--教师信息/学生成绩管理系统
- [置顶] c语言文件读取 学生成绩管理系统的设计与实现
- C#打造:学生成绩管理系统
- 我写的Java学生成绩管理系统源代码
- 学生成绩管理系统完整版
- 大学校园学生成绩管理查询系统
- C语言编写的简单的学生成绩管理系统
- 简单的学生成绩管理系统
- vc小技巧(ODBC)(学生成绩管理系统)
- JAVA写的学生成绩管理系统
- 用 c编写的一个学生成绩管理系统
- 学生成绩管理系统下载
- 【原创视频教程】学生信息管理系统4--成绩添加
- 用C写的简单学生成绩管理系统
- 用文件实现学生成绩管理系统
- 【原创视频教程】学生信息管理系统4--成绩添加
- C++学生成绩管理系统