对大一写的代码函数结构化(没有调整代码书写规范)

#include <stdio.h>
#include <conio.h>
#include <string.h>
#define NUMSTU 5000     /*最大学生人数*/
#define NUMSCORE 4    /*成绩个数*/
#define NAMELEN 10    /*姓名的最大长度<10*/


/*主要数据结构*/
struct StudentInfo
{
    unsigned long no;       /*学号*/
    char name[NAMELEN];   /*姓名*/
    float score[NUMSCORE];   /*数学、语文、英语、平均成绩*/
};

struct StudentList
{
    struct StudentInfo List[NUMSTU];
    int excellentNum[3];           /*每科成绩为优秀(>=90)的人数*/
    char subject[NUMSCORE][NAMELEN]= {"数学","语文","英语","平均"};  /*科目*/
    int currentNumStu;  /*当前表中的学生人数*/
} Students;

char menuItem,subItem;        /*用户输入的菜单项*/
int i,j,l;
unsigned long tempNo;       //用于排序对调内存的中间变量
struct StudentInfo nostudent;
char tempName[NAMELEN],namewj[NUMSTU];
float  sum,k;
FILE *zp,*fp;

/*功能函数*/
void MainMenu();/*主菜单*/
void SortMenu();/*按学号升序或降序排列实现*/
void Creat();/*创建成绩单*/
void Add();/*添加学生*/
void Edit();/*编辑学生信息*/
void Delete();/*删除指定学号的学生信息*/
void Count();/*统计每科成绩>=90分以上的学生人数*/
void SortUp();/*升序排列*/
void SortDown();/*降序排列*/
void Show();/*显示学生信息*/
void AddFile();/*从文件添加学生信息*/
void ShowFile();/*先是学生信息到文件*/
void Choose();/*功能选择*/
void preinstall();/*结构体预设*/

int main()
{

    preinstall();
    do
    {
        MainMenu();
        Choose();
    }
    while(menuItem!='0');
    return 0;
}

void preinstall()
{
    Students.List[NUMSTU].no= {0};       /*学号*/
    Students.List[NUMSTU].score[NUMSCORE]= {0};   /*数学、语文、英语、平均成绩*/
    Students.excellentNum[3]= {0};           /*每科成绩为优秀(>=90)的人数*/
    Students.currentNumStu=0;
}

void MainMenu()//主菜单
{
    printf("|-------------------------------------------------------|
");
    printf("|							|
");
    printf("|		  请输入选项编号(0 ~~ 7):  		|
");
    printf("|							|
");
    printf("|-------------------------------------------------------|
");
    printf("|							|
");
    printf("|		    1——创建成绩单          		|
");
    printf("|		    2——添加学生          		|
");
    printf("|		    3——编辑学生          		|
");
    printf("|		    4——删除学生          		|
");
    printf("|		    5——统计成绩          		|
");
    printf("|		    6——排序成绩单        		|
");
    printf("|		    7——显示成绩         		|
");
    printf("|		    8——从文件读入         		|
");
    printf("|		    9——输出到文件         		|
");
    printf("|		    0——退出                 		|
");
    printf("|-------------------------------------------------------|
");

    printf("请输入选项编号(0 ~ 7): ");
    /*清除键盘缓冲区*/
    fflush(stdin);
    scanf("%c",&menuItem);
}

void SortMenu()
{
    /*按学号升序或降序排列实现*/
    printf("|---------------------------------------|
");
    printf("|                                       |
");
    printf("|               排序菜单                |
");
    printf("|                                       |
");
    printf("|---------------------------------------|
");
    printf("|                                       |
");
    printf("|          1——按学号升序排列          |
");
    printf("|          2——按学号降序排列          |
");
    printf("|---------------------------------------|
");

    printf("请输入选项编号(1 ~2): ");
    fflush(stdin);
    scanf("%c",&subItem);

    switch(subItem)
    {
    case '1':
        SortUp();
        break;
    case '2':
        SortDown();
        break;
    default:
        printf("非法输入
");
    }
}

void Creat()
{
    /*创建成绩单*/
    if(Students.currentNumStu>0)
    {
        printf("
不能重新创建学生成绩单
");
    }
    else
    {
        printf("注意:输入的结束标志为学号为0!
");
        i=0;
        printf("请输入学号:");
        scanf("%lu",&Students.List[i].no);

        /*清除键盘缓冲区*/
        fflush(stdin);
        while(Students.List[i].no!=0&&Students.currentNumStu<NUMSTU)
        {
            printf("请输入姓名:");
            gets(Students.List[i].name);
            for(j=0; j<NUMSCORE-1; j++)
            {
                printf("请输入%s成绩:",Students.subject[j]);
                scanf("%f",&Students.List[i].score[j]);
            }

            /*计算平均成绩*/
            sum=0;
            for(j=0; j<NUMSCORE-1; j++)
                sum = sum+Students.List[i].score[j];
            Students.List[i].score[3] =  sum/3;

            Students.currentNumStu++;
            if(Students.currentNumStu==NUMSTU)
            {
                printf("成绩单已满!结束创建!!
");
                break;
            }
            i++;

            printf("请输入学号:");
            scanf("%lu",&Students.List[i].no);
            /*清楚键盘缓冲区*/
            fflush(stdin);
        }
    }
}

void Add()
{
    /*添加学生*/
    if(Students.currentNumStu>=NUMSTU)
    {
        printf("成绩单已满!不可再加学生信息!!
");
    }
    else
    {
        i=Students.currentNumStu;
        printf("请输入学号:");
        scanf("%lu",&Students.List[i].no);
        fflush(stdin);
        printf("请输入姓名:");
        gets(Students.List[i].name);
        for(j=0; j<NUMSCORE-1; j++)
        {
            printf("请输入%s成绩:",Students.subject[j]);
            scanf("%f",&Students.List[i].score[j]);
        }

        /*计算平均成绩*/
        sum=0;
        for(j=0; j<NUMSCORE-1; j++)
            sum = sum+Students.List[i].score[j];
        Students.List[i].score[3] =sum/3;
        Students.currentNumStu++;
        printf("添加成功!
");
    }
}
void Edit()
{
    /*编辑学生信息*/
    scanf("%lu",&tempNo);
    for(i=0; i<Students.currentNumStu; i++)
        if(Students.List[i].no==tempNo)
            break;
    if(i!=Students.currentNumStu)
    {
        for(j=0; j<NUMSCORE-1; j++)
        {
            printf("请输入%s成绩:",Students.subject[j]);
            scanf("%f",&Students.List[i].score[j]);
        }

        /*计算平均成绩*/
        sum=0;
        for(j=0; j<NUMSCORE-1; j++)
            sum = sum+Students.List[i].score[j];
        Students.List[i].score[3] =sum/3;
        printf("编辑成功!
");
    }
    else
        printf("不存在该学生!
");
}

void Delete()
{
    /*删除指定学号的学生信息*/
    printf("请输入学号:");
    scanf("%lu",&tempNo);
    for(i=0; i<Students.currentNumStu; i++)
        if(Students.List[i].no==tempNo)
            break;
    if(i!=Students.currentNumStu)
    {
        for(; i<Students.currentNumStu-1; i++)
        {
            Students.List[i].no=Students.List[i+1].no;
            strcpy(Students.List[i].name,Students.List[i+1].name);
            for(j=0; j<NUMSCORE; j++)
            {
                Students.List[i].score[j]=Students.List[i+1].score[j];
            }
        }
        Students.currentNumStu--;
        printf("删除成功!
");
    }
    else
        printf("不存在该学生!
");
}

void Count()
{
    /*统计每科成绩>=90分以上的学生人数*/
    if(Students.currentNumStu==0)
        printf("目前无记录,请添加成绩单信息!
");
    else
    {
        for(i=0; i<Students.currentNumStu; i++)
            for(j=0; j<NUMSCORE-1; j++)
            {
                if(Students.List[i].score[j]>=90)
                    Students.excellentNum[j]++;
            }
        printf("%10s%10s%10s
","数学成绩","语文成绩","英语成绩");
        for(j=0; j<NUMSCORE-1; j++)
            printf("%10d",  Students.excellentNum[j]);
        printf("
");
    }
}

void SortUp()
{
    /*升序排列*/
    if(Students.currentNumStu<2)
    {
        printf("成绩表中少于2人则不做排序!
");
    }
    else
    {
        /*按学号升序排列*/
        for(i=0; i<Students.currentNumStu-1; i++)
            for(j=i+1; j<Students.currentNumStu; j++)
            {
                if(Students.List[i].no>Students.List[j].no)
                {
                    nostudent=Students.List[i];
                    Students.List[i]=Students.List[j];
                    Students.List[j]=nostudent;
                }
            }
        printf("排序结束,请选择菜单项显示信息!
");
    }
}

void SortDown()
{
    /*降序排列*/
    if(Students.currentNumStu<2)
    {
        printf("成绩表中少于2人则不做排序!
");
    }
    else
    {
        /*按学号降序排列*/
        for(i=0; i<Students.currentNumStu-1; i++)
            for(j=i+1; j<Students.currentNumStu; j++)
            {
                if(Students.List[i].no<Students.List[j].no)
                {
                    nostudent=Students.List[i];
                    Students.List[i]=Students.List[j];
                    Students.List[j]=nostudent;
                }
            }
        printf("排序结束,请选择菜单项显示信息!
");
    }
}

void Show()
{
    /*显示学生信息*/
    if(Students.currentNumStu==0)
    {
        printf("无学生记录,请创建成绩单!
");
    }
    else
    {
        printf("学生信息如下:
");
        printf("%15s%15s%10s%10s%10s%10s
","学号","姓名","数学成绩","语文成绩","英语成绩","平均成绩");
        for(i=0; i<Students.currentNumStu; i++)
        {
            printf("%15lu",Students.List[i].no);
            printf("%15s",Students.List[i].name);
            for(j=0; j<NUMSCORE; j++)
                printf("%10.1f", Students.List[i].score[j]);
            printf("
");
        }
    }
}
void AddFile()
{
    /*从文件添加学生信息*/
    if(Students.currentNumStu>=NUMSTU)
    {
        printf("成绩单已满!不可打开文件添加信息!
");
    }
    else
    {
        printf("请输入文件名:");
        scanf("%s",namewj);
        if((fp=fopen(namewj,"r"))==NULL)
        {
            printf("文件打开失败!
");
            return;
        }
        i=Students.currentNumStu;
        while(!feof(fp))
        {
            if(Students.currentNumStu==5)
            {
                printf("成绩单已添加满!不可再加文件剩余学生信息!!
");
                break;
            }
            fscanf(fp,"%lu",&Students.List[i].no);
            fflush(stdin);
            fscanf(fp,"%s",&Students.List[i].name);
            for(j=0; j<NUMSCORE-1; j++)
            {
                fscanf(fp,"%f",&Students.List[i].score[j]);
            }
            /*计算平均成绩*/
            sum=0;
            for(j=0; j<NUMSCORE-1; j++)
                sum = sum+Students.List[i].score[j];
            Students.List[i].score[3] =sum/3;
            Students.currentNumStu++;
        }
        if(!feof(fp))
            printf("文件信息添加完成!
");
        fclose(fp);
    }

}

void ShowFile()
{
    /*显示学生信息到文件*/
    printf("请输入文件名:");
    scanf("%s",namewj);
    if((zp=fopen(namewj,"w"))==NULL)
    {
        printf("文件打开失败!
");
        return;
    }
    fprintf(zp,"count=%d
",Students.currentNumStu);
    fprintf(zp,"%15s%15s%10s%10s%10s%10s
","number","name","math","chinese","english","average");
    for(i=0; i<Students.currentNumStu; i++)
    {
        fprintf(zp,"%15lu",Students.List[i].no);
        fprintf(zp,"%15s",Students.List[i].name);
        for(j=0; j<NUMSCORE; j++)
            fprintf(zp,"%10.1f",  Students.List[i].score[j]);
        fprintf(zp,"
");
    }
    printf("文件输入完成!
");
    fclose(fp);
}

void Choose()
{
    /*功能选择*/
    switch(menuItem)
    {
    case '1':
        Creat();
        break;
    case '2':
        Add();
        break;
    case '3':
        Edit();
        break;
    case '4':
        Delete();
        break;
    case '5':
        Count();
        break;
    case '6':
        SortMenu();
        break;
    case '7':
        Show();
        break;
    case '8':
        AddFile();
        break;
    case '9':
        ShowFile();
        break;
    case '0':
        printf("您选择了“0——退出”
");
        break;
    default:
        printf("非法输入
");
    }
}

原文地址:https://www.cnblogs.com/kingbk/p/8733136.html