学生管理系统(c语言)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <math.h>

#define STRING_SIZE 20                      /*字符串的最大长度*/
#define Init_SIZE 5                         /*初始学生信息的人数*/
#define STU_MNG_FAIL 0                      /*学生管理系统是否正常运行*/
#define STU_MNG_SUCCESS (!STU_MNG_FAIL)
#define ERR_WARNING() printf("\a")          /*对错误信息作出警告*/
#define IG while(getchar()!='\n')


#define c 1                                 /*代表语文*/
#define m 2                                 /*代表数学*/
#define e 3                                 /*代表英语*/

/*
**学生信息的结构
*/

typedef struct sInfo_
{
    char name[STRING_SIZE]; /*学生姓名*/
    char sNum[STRING_SIZE]; /*学生学号*/
    char sex;               /*性别(t表示男生,v表示女生)*/
    float cScore;           /*语文成绩*/
    float mScore;           /*数学成绩*/
    float eScore;           /*英语成绩*/
    struct sInfo_ *nextStu;
}sInfo;

/*
**学生管理系统的结构
*/

typedef struct sysDev_
{
    unsigned stuNum;            /*学生的人数*/
    char pw[STRING_SIZE];       /*管理系统的密码*/
    sInfo *theFirstPointer;     /*学生系统指向第一个学生的指针*/
    sInfo *theLastPointer;      /*学生系统指向最后一个学生的指针*/
}sysDev;
sysDev sysDevMng;               /*全局变量,定义一个学生管理系统*/

/*
**不及格学生的结构
*/

typedef struct
{
    char name[STRING_SIZE];     /*不及格学生的姓名*/
    char upSub[STRING_SIZE];    /*不及格学生的学科*/
    float upScore;              /*不及格学生的成绩*/
}upStuinfo;


/*
**不及格学生信息的结构
*/

struct
{
    upStuinfo *ptrUpStu;        /*指向不及格学生的指针*/
    struct                      /*位字段*/
    {
        unsigned int sum:8;
        unsigned int ch:8;
        unsigned int ma:8;
        unsigned int en:8;
    }upSinfo;
}upStuDev;
#define   UP_SUM  upStuDev.upSinfo.sum      /*不及格学生的总数*/
#define   UP_CH   upStuDev.upSinfo.ch       /*语文不及格学生的人数*/
#define   UP_MA   upStuDev.upSinfo.ma       /*数学不及格学生的人数*/
#define   UP_EN   upStuDev.upSinfo.en       /*英语不及格学生的人数*/
#define   UP_CH_MA_EN                   (UP_CH + UP_MA + UP_EN)
void sysDevInit(sysDev *);                  /*学生管理系统的初始化*/
void addStuInfo(const sInfo *);             /*向系统添加已有学生的信息*/
void copyStuInfo(sInfo * ,const sInfo * );  /*复制学生信息*/
void sPasswordInput();                      /*输入学生管理系统的密码*/
#define  PRINT_LINE  printf("   --------------------------------------------------------------------\n")    /*打印分割线*/
#define  PRINT_ITEMS   printf("     name  sNum    sex cScore  mScore  eSocre    sumScore    avScore\n")     /*打印表头信息*/

void disAllStuInfo();                       /*显示所有学生的信息*/
void disStuInfo(const sInfo *);             /*显示一个学生的信息*/
void showHomePage();                        /*显示整个学生管理系统的界面*/
void showItems();                           /*显示操作项目的信息*/
void runItems();                            /*运行操作项目*/
void sortItems();                           /*对于排序方法的显示*/
void runSortItems();                        /*排序方法的执行*/
void sortByName();                          /*按名字进行排序*/
sInfo **getPointerTab();                    /*建立一个指向学生信息链表的指针数组*/
void disStuInfoByPtab(sInfo **,const int ); /*显示tab数组中的学生信息*/
void sortByNum();                           /*按学号进行排序*/
void sortBySumScore();                      /*按总分进行排序*/
int sortBySubjectItems();                   /*显示按科目进行排序的items*/
void runSortBySubject();                    /*执行按科目排序*/
void sortBySubject(int subject);            /*按科目进行排序*/
int addStu();                               /*向学生管理系统增加血神*/
void enterStuInfo(sInfo *);                 /*输入学生信息*/

/*学生信息的初始化*/
sInfo stuInitTab[Init_SIZE]={
        { "Jams",     "2014243", 'B',  88.5,    92.0,     84.0 },
        { "Lily",     "2014116", 'G',  92.0,    32.5,     60.0 },
        { "Tom",      "2014503", 'B',  5.5,     88.0,     72.5 },
        { "Lynda",    "2014423", 'G',  52.0,    7.0,      65.5 },
        { "Philips",  "2014368", 'B',  45.0,    65.5,      5.0 }
};

/*
**输入学生管理系统的密码
*/

void sPasswordInput()
{
    char pwTmp[STRING_SIZE];

    puts("please input your password:");
    gets(pwTmp);

    while(strcmp(pwTmp,sysDevMng.pw)!=0)
    {
        fputs("wrong password!\n please input password again!",stderr);
        ERR_WARNING();
        gets(pwTmp);
    }

    strcpy(sysDevMng.pw,pwTmp);
}

/*
**加载学生信息的文件
*/

void loadFile()
{
    int tmp,idx;
    FILE *fp;
    sInfo tmpStu;

    if((fp=fopen("stu.dat","r"))==NULL)
    {
        fputs("can't load the file!\n",stderr);
        ERR_WARNING();
        return;
    }

    rewind(fp);

    fread(&tmp,sizeof(int),1,fp);
    fread(&sysDevMng.pw,sizeof(sysDevMng.pw),1,fp);

    for(idx=0;idx<tmp;idx++)
    {
        fread(&tmpStu,sizeof(sInfo),1,fp);
        addStuInfo(&tmpStu);
    }

    printf("there are %d students\n",tmp);
    fclose(fp);
}

/*
**学生管理系统的初始化
*/

void sysDevInit(sysDev *s)
{
    int index;

    s->stuNum=0;
    s->theFirstPointer=NULL;
    s->theLastPointer=NULL;
    for(index=0;index<Init_SIZE;index++)
        addStuInfo(&stuInitTab[index]);
    loadFile();
}

/*
**将一个已有学生的信息添加到系统
*/

void addStuInfo(const sInfo  *s)
{
    sInfo *tmp;

    tmp=(sInfo *)malloc(sizeof(sInfo));
    if(tmp==NULL)
    {
        fputs("error!",stderr);
        ERR_WARNING();
    }

    /*
    **判断指向系统的第一个指针是否为空。若为空,则将tmp作为
    **指向系统的第一个指针和指向系统的最后一个指针;若不为空,
    **则将tmp赋给系统的第一个指针(学生)的下一个学生,并将指向
    **系统最后一个学生的指针,指向tmp。指向系统最后一个学生的指针
    **的next指向NULL,将tmp学生的信息复制给theFirstPointe,stuNum
    **加一。
    */
    if(!sysDevMng.theFirstPointer)
    {
        sysDevMng.theFirstPointer=tmp;
        sysDevMng.theLastPointer=tmp;
    }
    else
    {
        sysDevMng.theLastPointer->nextStu=tmp;
        sysDevMng.theLastPointer=tmp;
    }

    sysDevMng.theLastPointer->nextStu=NULL;
    copyStuInfo(sysDevMng.theLastPointer,tmp);
    sysDevMng.stuNum++;

}

/*
**将src学生的信息复制到dst中
*/

void copyStuInfo(sInfo *dst,const sInfo *src)
{
    strcpy(dst->name,src->name);
    strcpy(dst->sNum,src->sNum);
    dst->sex=src->sex;
    dst->cScore=src->cScore;
    dst->mScore=src->mScore;
    dst->eScore=src->eScore;
}

/*
**打印一个学生的信息
*/

void disStuInfo(const sInfo *s)
{
    printf("    %s  %s  %c  %5.1f   %5.1f   %5.1f       %5.1f       %5.1f\n",s->name,s->sNum,s->sex,s->cScore,s->mScore,s->eScore,s->cScore+s->mScore+s->eScore,(s->cScore+s->mScore+s->eScore)/3.0);
}

/*
**打印所有学生的信息
**将tmp赋值为学生系统的theFirstPointer,只要tmp不为NULL,
**打印学生信息。
*/

void disAllStuInfo()
{
    sInfo *tmp=sysDevMng.theFirstPointer;
    PRINT_LINE;
    PRINT_ITEMS;
    PRINT_LINE;

    while(tmp)
    {
        disStuInfo(tmp);
        tmp=tmp->nextStu;
    }

    PRINT_LINE;
    printf("the sum of student is %d",sysDevMng.stuNum);
    PRINT_LINE;

    Sleep(750);

    showItems();
}

/*
**对于排序方法的显示
*/

void sortItems()
{
    puts("please input the selection <1-4> of sorted information according to:");
    PRINT_LINE;
    puts("              1>name              2>studentNum");
    puts("              3>sumScore          4>subject");
    PRINT_LINE;
}

/*
**排序方法的执行
*/

void runSortItems()
{
    /*
    **用枚举建立排序方法的名称
    */

    enum sortName{name=1,studentNum,sumScore,subject}index;
    int tmp;

    /*将枚举转化为int类型*/
    scanf("%d",&tmp);
    index=(enum sortName)tmp;

    switch(index)
    {
    case name:
        sortByName();
        Sleep(750);
        showItems();
        break;
    case studentNum:
        sortByNum();
        Sleep(750);
        showItems();
        break;
    case sumScore:
        sortBySumScore();
        Sleep(750);
        showItems();
        break;
    case subject:
        //sortBySubjectItems();
        runSortBySubject();
        Sleep(750);
        showItems();
        break;
    default:
        fputs("input error!\n",stderr);
        sortItems();
    }
}

/*
**建立一个指向学生信息链表的指针数组
*/

sInfo **getPointerTab()
{
    sInfo *tmp,**index,**tab;

    index=tab=(sInfo **)malloc(sysDevMng.stuNum*(sizeof(sInfo)));

    if(tab==NULL)
    {
        fputs("unknown error!\n",stderr);
        ERR_WARNING();
    }
    else
    {
        tmp=sysDevMng.theFirstPointer;
        while(tmp)
        {
            *(index++)=tmp;
            tmp=tmp->nextStu;
        }
    }

    return tab;
}

/*
**显示tab数组中的学生信息
*/

void disStuInfoByPtab(sInfo **tab,const int size)
{
    int i;

    PRINT_LINE;
    PRINT_ITEMS;
    PRINT_LINE;
    for(i=0;i<size;i++)
    {
        disStuInfo(*tab++);
    }

    PRINT_LINE;

    printf("                                                    Now the SumStu is %d\n", sysDevMng.stuNum);
    PRINT_LINE;

}

/*
**按名字进行排序
*/

void sortByName()
{
    int i,j;
    sInfo *tmp,**tab;

    tab=getPointerTab();
    if(tab==NULL)
    {
        fputs("unknown error!\n",stderr);
        ERR_WARNING();
    }else
    {
        for(i=0;i<sysDevMng.stuNum-1;i++)
        {
            for(j=i+1;j<sysDevMng.stuNum;j++)
            {
                if(strcmp(tab[i]->name,tab[j]->name)>0)
                {
                    tmp=tab[i];
                    tab[i]=tab[j];
                    tab[j]=tmp;
                }
            }
        }
        puts("the sort by studentName is:");
        disStuInfoByPtab(tab,sysDevMng.stuNum);
    }
    free(tab);
}

/*
**按学号进行排序
*/

void sortByNum()
{
    int i,j;
    sInfo *tmp,**tab;

    tab=getPointerTab();
    if(tab==NULL)
    {
        fputs("unknown error!\n",stderr);
        ERR_WARNING();
    }else
    {
        for(i=0;i<sysDevMng.stuNum-1;i++)
        {
            for(j=i+1;j<sysDevMng.stuNum;j++)
            {
                if(strcmp(tab[i]->sNum,tab[j]->sNum)>0)
                {
                    tmp=tab[i];
                    tab[i]=tab[j];
                    tab[j]=tmp;
                }
            }
        }
        puts("the sort by studentNum is:");
        disStuInfoByPtab(tab,sysDevMng.stuNum);
    }
    free(tab);
}

/*
**按总分进行排序
*/

void sortBySumScore()
{
    int i,j;
    sInfo *tmp,**tab;

    tab=getPointerTab();
    if(tab==NULL)
    {
        fputs("unknown error!\n",stderr);
        ERR_WARNING();
    }else
    {
        for(i=0;i<sysDevMng.stuNum-1;i++)
        {
            for(j=i+1;j<sysDevMng.stuNum;j++)
            {
                float sum1=tab[i]->cScore+tab[i]->eScore+tab[i]->mScore;
                float sum2=tab[j]->cScore+tab[j]->eScore+tab[j]->mScore;
                if(sum1>sum2)
                {
                    tmp=tab[i];
                    tab[i]=tab[j];
                    tab[j]=tmp;
                }
            }
        }
        puts("the sort by studentsumScore is:");
        disStuInfoByPtab(tab,sysDevMng.stuNum);
    }
    free(tab);


}

/*
**显示按科目进行排序的items
*/

int sortBySubjectItems()
{
    int index;

    puts("input <1-3> to select :");
    PRINT_LINE;
    puts("        1>cScore          2>mScore         3>eScore");
    PRINT_LINE;

    while(!((1==scanf("%d",&index))&&(index>=1&&index<=3)))
    {
        fputs("input error!\nplease input <1-3> according to :",stderr);
        ERR_WARNING();
    }
    return index;
}
#define sortBycScoe() sortBySubject(c)
#define sortBymScoe() sortBySubject(m)
#define sortByeScoe() sortBySubject(e)

/*
**执行按科目进行排序
*/

void runSortBySubject()
{

    switch(sortBySubjectItems())
    {
        case c:
            sortBycScoe();
            break;
        case m:
            sortBycScoe();
            break;
        case e:
            sortBycScoe();
            break;
    }
}

/*
**按科目成绩进行排序
*/

void sortBySubject(int subject)
{
    int i,j;
    sInfo *tmp,**tab;

    tab=getPointerTab();
    if(tab==NULL)
    {
        fputs("unknown error!\n",stderr);
        ERR_WARNING();
    }else
    {
        for(i=0;i<sysDevMng.stuNum-1;i++)
        {
            for(j=i+1;j<sysDevMng.stuNum;j++)
            {
                float sum1=0.0,sum2=0.0;
                if(subject==1)
                {
                    sum1=tab[i]->cScore;
                    sum2=tab[j]->cScore;
                }else if(subject==2)
                {
                    sum1=tab[i]->mScore;
                    sum2=tab[j]->mScore;
                }else if(subject==3)
                {
                    sum1=tab[i]->eScore;
                    sum2=tab[j]->eScore;
                }
                if(sum1>sum2)
                {
                    tmp=tab[i];
                    tab[i]=tab[j];
                    tab[j]=tmp;
                }
            }
        }
        if(subject==1)
        {
            puts("the sort by studentcScore is:");
        }else if(subject==2)
        {
            puts("the sort by studentmScore is:");
        }else if(subject==3)
        {
            puts("the sort by studenteScore is:");
        }

        disStuInfoByPtab(tab,sysDevMng.stuNum);
    }
    free(tab);
}

/*
**向学生管理系统增加血神
*/

int addStu()
{
    sInfo *tmp;

    if(!(tmp=(sInfo *)malloc(sizeof(sInfo))))
    {
        fputs("malloc error!\n",stderr);
        ERR_WARNING();
        return STU_MNG_FAIL;
    }
    if(!sysDevMng.theFirstPointer)
    {
        sysDevMng.theFirstPointer=sysDevMng.theLastPointer=tmp;
    }
    else
    {
        sysDevMng.theLastPointer->nextStu=tmp;
        sysDevMng.theLastPointer=tmp;
    }
    sysDevMng.theLastPointer->nextStu=NULL;
    enterStuInfo(sysDevMng.theLastPointer);
    sysDevMng.stuNum++;
    puts("add student successfully!");

    disAllStuInfo();
    return STU_MNG_SUCCESS;
}

/*
**输入学生信息
*/

void enterStuInfo(sInfo *stu)
{
    puts("please input your name:");
    scanf("%s",stu->name);IG;
    puts("please input your stunum(102117):");
    scanf("%s",stu->sNum);IG;
    puts("please input your sex(t or v):");
    scanf("%c",&stu->sex);IG;
    puts("please input your cScore:");
    scanf("%f",&stu->cScore);IG;
    puts("please input your mScore:");
    scanf("%f",&stu->mScore);IG;
    puts("please input your eScore:");
    while(!scanf("%f",&stu->eScore))
    {
        fputs("input error!\n",stderr);
        ERR_WARNING();
    }
}

/*
**删除学生链表中的结点
*/

int deleteStustr(const char *str)
{
    sInfo *headcur=NULL,*tailcur=sysDevMng.theFirstPointer;

    while(tailcur&&(strcmp(tailcur->name,str)!=0&&strcmp(tailcur->sNum,str)!=0))
    {
        headcur=tailcur;
        tailcur=tailcur->nextStu;
    }
    if(tailcur==NULL)
    {
        fputs("error!Stu not found.",stderr);
        ERR_WARNING();
        return STU_MNG_FAIL;
    }
    if(tailcur==sysDevMng.theFirstPointer)
    {
        sysDevMng.theFirstPointer=tailcur->nextStu;
        free(tailcur);
    }
    else
    {
        headcur->nextStu=tailcur->nextStu;
        free(tailcur);
    }

    sysDevMng.stuNum--;
    return STU_MNG_SUCCESS;

}

/*
**删除学生
*/

int deleteStu()
{
    int res;
    char tmp[STRING_SIZE];

    puts("please input delete Stu'name or Stu'num:");
    gets(tmp);

    res=deleteStustr(tmp);
    if(res==STU_MNG_FAIL)
    {
        fputs("delete error!",stderr);
        ERR_WARNING();
    }
    else
    {
        puts("delete successfully!");
    }
    disAllStuInfo();
    return res;
}

/*
**加载不及格学生的信息
*/

void loadUpSinfo(const sInfo *stu)
{
    UP_SUM=UP_CH=UP_MA=UP_EN=0;

    if(stu==NULL)
    {
        upStuDev.ptrUpStu=NULL;
        fputs("No stuInfo!",stderr);
        ERR_WARNING();
        return;
    }
    while(stu)
    {
        if(stu->cScore<60||stu->mScore<60||stu->eScore<60)
        {
            UP_SUM++;
            if(stu->cScore<60)
            {
                upStuDev.ptrUpStu=(upStuinfo *)realloc(upStuDev.ptrUpStu,(UP_CH_MA_EN+1)*sizeof(upStuinfo));
                if(upStuDev.ptrUpStu==NULL)
                {
                    fputs("realloc error!",stderr);
                    ERR_WARNING();
                }
                else
                {
                    strcpy((upStuDev.ptrUpStu+UP_CH_MA_EN)->name,stu->name);
                    strcpy((upStuDev.ptrUpStu+UP_CH_MA_EN)->upSub,"chinese");
                    (upStuDev.ptrUpStu+UP_CH_MA_EN)->upScore=stu->cScore;
                }
                UP_CH++;
            }
            if(stu->mScore<60)
            {
                upStuDev.ptrUpStu=(upStuinfo *)realloc(upStuDev.ptrUpStu,(UP_CH_MA_EN+1)*sizeof(upStuinfo));
                if(upStuDev.ptrUpStu==NULL)
                {
                    fputs("realloc error!",stderr);
                    ERR_WARNING();
                }
                else
                {
                    strcpy((upStuDev.ptrUpStu+UP_CH_MA_EN)->name,stu->name);
                    strcpy((upStuDev.ptrUpStu+UP_CH_MA_EN)->upSub,"math");
                    (upStuDev.ptrUpStu+UP_CH_MA_EN)->upScore=stu->mScore;
                }
                UP_MA++;
            }
            if(stu->eScore<60)
            {
                upStuDev.ptrUpStu=(upStuinfo *)realloc(upStuDev.ptrUpStu,(UP_CH_MA_EN+1)*sizeof(upStuinfo));
                if(upStuDev.ptrUpStu==NULL)
                {
                    fputs("realloc error!",stderr);
                    ERR_WARNING();
                }
                else
                {
                    strcpy((upStuDev.ptrUpStu+UP_CH_MA_EN)->name,stu->name);
                    strcpy((upStuDev.ptrUpStu+UP_CH_MA_EN)->upSub,"english");
                    (upStuDev.ptrUpStu+UP_CH_MA_EN)->upScore=stu->eScore;
                }
                UP_EN++;
            }
        }
        stu=stu->nextStu;
    }
}

/*
**显示不及格学生的信息
*/

void disUpassStu()
{
    unsigned int i;

    loadUpSinfo(sysDevMng.theFirstPointer);

    if( upStuDev.ptrUpStu==NULL )
    {
        fputs("Not found unpassStu!",stderr);
        ERR_WARNING();
    }
    else
    {
        printf("unpassStu information:\n");
        printf("  UnPassesStu info: \n");
        printf("    -----------------------------------------------\n");
        printf("       UnpassSum   UnpassCh   UnpassMa   UnpassEn  \n");
        printf("    -----------------------------------------------\n");
        printf("          %d          %d           %d          %d  \n",UP_SUM,UP_CH,UP_MA,UP_EN);
        printf("    -----------------------------------------------\n");
        printf("      UnpassStuName    UnpassSubj    UnpassScore   \n");
        printf("    -----------------------------------------------\n");
        for(i=0;i<(UP_CH_MA_EN);i++)
        {
             printf("   %10s       %10s          %.1f      \n",(upStuDev.ptrUpStu)->name,(upStuDev.ptrUpStu+i)->upSub,(upStuDev.ptrUpStu+i)->upScore);
        }
    }

    printf("    -----------------------------------------------\n\n");
    showItems();
    Sleep(750);

    free(upStuDev.ptrUpStu);

}

/*
**修改密码
*/

void chPasswd()
{
    int oldPasswd;
    char temp1[STRING_SIZE],temp2[STRING_SIZE];

    oldPasswd=strlen(sysDevMng.pw);

    if(oldPasswd==0)
    {
        puts("please create a password!");
        puts("please input password:");
        LabelA:gets(temp1);
        puts("please input the password again:");

        gets(temp2);
        if(strcmp(temp1,temp2)==0)
        {
            puts("create password successfully!");
        }
        else
        {
            fputs("The two passwords you entered do not match, please input again: ",stderr);
            ERR_WARNING();
            goto LabelA;
        }
    }
    else
    {
        puts("please input a new password:");
        LabelB:gets(temp1);
        while(strcmp(temp1,sysDevMng.pw)==0)
        {
            fputs("\n  The password you input already exists! Please input a new password again: \n", stderr);
            ERR_WARNING();
            gets(temp1);
        }
        puts("please input the password again:");

        gets(temp2);
        if(strcmp(temp1,temp2)==0)
        {
            puts("create password successfully!");
        }
        else
        {
            fputs("The two passwords you entered do not match, please input again: ",stderr);
            ERR_WARNING();
            goto LabelB;
        }
    }
    strcpy(sysDevMng.pw,temp2);
    Sleep(750);

    showItems();
}

/*
**将信息已文件的方式保存
*/

void saveFile()
{
    FILE *fp;
    sInfo *pstu;

    if((fp=fopen("stu.dat","wb"))==NULL)
    {
        fputs("can't save the file\n",stderr);
        ERR_WARNING();
        return;
    }

    rewind(fp);

    fwrite(&sysDevMng.stuNum,sizeof(int),1,fp);
    fwrite(&sysDevMng.pw,sizeof(sysDevMng.pw),1,fp);
    for(pstu=sysDevMng.theFirstPointer;pstu!=sysDevMng.theLastPointer;++pstu)
    {
        fwrite(pstu,sizeof(sInfo),1,fp);

    }

    printf("there are %d student saved\n",sysDevMng.stuNum);
    fclose(fp);

}

/*
**退出系统
*/

void quitSystem()
{
    int cnt=3;
    saveFile();
    do
    {
        printf("the Sys will quit in %d\n",cnt);
        Sleep(1000);
        --cnt;
    }while(cnt>1);
    printf("the Sys will quit in %d\n",cnt);

    exit(0);

}

/*
**显示学生管理系统的整个界面
*/

void showHomePage()
{
    printf("        ==========================================================      \n");
    printf("        **                                                      **      \n");
    printf("        **         Student information Management System        **      \n");
    printf("        **              Copyright(C)  of   cyf                  **      \n");
    printf("        **            TIME:%s %s                 **\n",__DATE__,__TIME__);
    printf("        **                                                      **      \n");
    printf("        ==========================================================      \n");

}

/*
**显示操作项目的信息
*/

void showItems()
{
    puts("Please input <1-7> to select items:");
    puts("      -----------------------------------------------------------------------");
    puts("        1>scan all student's information    2>sorted student's information");
    puts("        3>add student's information         4>delete student's information");
    puts("        5>scan unpass student's information 6>change password");
    puts("        7>quit from system");
    puts("      -----------------------------------------------------------------------");

    puts("      -----------------------------------------------------------------------");
}

/*
**运行操作的功能
*/

void runItems()
{

    while(STU_MNG_SUCCESS)
    {
        /*用枚举类型表示选项的数字*/
        enum itemsChoice{disAllInfo=1,sortedInfo,addStuInfo,deleteStuInfo,disUpStu,changePw,quitSys} index;

        /*
        **将枚举类型转换成int类型
        */
        int t;
        scanf("%d",&t);
        while(getchar()!='\n');
        index=(enum itemsChoice)t;

        /*
        **完成相应的操作
        */

       switch(index)
        {
        case disAllInfo:
            disAllStuInfo();
            break;
        case sortedInfo:
            sortItems();
            runSortItems();
            break;
        case addStuInfo:
            addStu();
            break;
        case deleteStuInfo:
            deleteStu();
            break;
        case disUpStu:
            disUpassStu();
            break;
        case changePw:
            chPasswd();

            break;
        case quitSys:
            quitSystem();
            break;
        default:
            fputs("input error!please input <1-7>to select items!\n",stderr);
            ERR_WARNING();
            showItems();
        }

    }

}

/*
**学生管理系统的运行
*/

void sysDevRun()
{
    showHomePage();

    sPasswordInput();

    showItems();
    runItems();
}

/*
**主函数
*/

int main()
{

    sysDevInit(&sysDevMng);
    sysDevRun();
    return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yiluohan0307

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值