您的位置:首页 > 理论基础 > 数据结构算法

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

2016-12-29 17:01 555 查看
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:因时间与技术水平有限,设计不当与考虑不周之处在所难免。欢迎大家批评指正、提出建设性意见与建议~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: