zoukankan      html  css  js  c++  java
  • 对大一写的代码函数结构化(没有调整代码书写规范)

    #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("非法输入
    ");
        }
    }
    
    
  • 相关阅读:
    Eclipse优化
    Eclipse插件安装
    2,Spring MVC 学习总结(二)- 方法(Action)参数映射
    1,MySQL常用函数
    1,Spring MVC 学习总结(一)
    学习总结-Redis
    Spring学习总结(2)- AOP
    Spring学习总结(1)- IOC
    Java Web学习总结(13)Listener监听器
    Java Web学习总结(12)Filter过滤器
  • 原文地址:https://www.cnblogs.com/kingbk/p/8733136.html
Copyright © 2011-2022 走看看