学生信息管理系统--C语言版

学生管理系统--C语言版

个人原创,转载请注明出处

这个学生管理系统是bug的,但是是可以正常运行的,如果要修改学生人数,可以在常量中修改。

大笑欢迎各位大神指正和各位朋友的意见!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define STU_MAX 2
/********************************************************/
struct student {
/**包括学号.姓名.2门课程的成绩总分和平均分!**/
    char studentNumber[20]; /**学生学号**/
    char studentName[20];   /**学生姓名**/
    char studentSex[4];     /**学生的性别**/
    int performance[2];    /**学生的成绩**/
    int performanceTotal;   /**每个学生总成绩**/
    int performanceAverage;/**每个学生的平均成绩**/
};
struct student stu[STU_MAX]; /**共有两个学生**/
/********************************************************/
int main()
{
    int i, j;       /**循环变量**/
    /***********************以下是为了查询而输入的信息**********************/
    int record;     /**保存用户的选择**/
    int index = -1;      /**保存下标值**/
    int index2[STU_MAX];      /**多个下标值时**/
    int count = -1;     /**记数器变量**/
    char stuNum[20];/**输入学生的学号**/
    char stuNa[20]; /**输入学生的姓名**/
    char stuSex[4];    /**输入学生的性别**/
    int indexSex[5];    /**找到的学生的性别**/
    int stuPerfor = -1;  /**输入学生的成绩**/
    int stuPerTo;       /**学生的总成绩**/
    char record2[6];   /**是否继续**/
    char choose[2];     /**选择是否退出**/
    printf("提示:按Y/y后按Enter继续!按N/n健按后Enter退出系统!\n\n");/**给用户提示是否继续还是退出**/
    scanf("%s", record2);
    if (strcmp(record2, "Y") == 0 || strcmp(record2, "y") == 0) /**判断用户是否继续**/
    {
         for (i = 0; i < STU_MAX; i++) /**循环录入学生的学号,姓名,二门成绩**/
        {
                printf("\n请输入第%d位学生的信息:\n", i + 1); /**学生顺序**/
                printf("学号:");
                scanf("%s", stu[i].studentNumber);
                printf("姓名:");
                scanf("%s", stu[i].studentName);
                printf("性别:");
                scanf("%s", stu[i].studentSex);
                printf("第一科成绩:");
                scanf("%d", &stu[i].performance[0]);
                printf("第二科成绩:");
                scanf("%d", &stu[i].performance[1]);
        }
        printf("\n*************************************************************\n");
    } else if (strcmp(record2, "N") == 0 || strcmp(record2, "n") == 0)  /**退出**/
    {
        printf("退出系统!");
        exit(0);
    } else  /**输入非n非y时,还有一次机会.这里功能有bug未实现**/
    {
        printf("请再次输入你的选择:");
        scanf("%s", record2);
        if (record2 != 89 || record2 != 121)
        {
            printf("你输入不正确,程序退出!");
            exit(0);
        }
    }

    for (i = 0; i < STU_MAX; i++)/**计算总分及平均分**/
    {
        stu[i].performanceTotal = stu[i].performance[0] + stu[i].performance[1];   /**每个学生的总成绩**/
        stu[i].performanceAverage = stu[i].performanceTotal / 2;                  /**每个学生的平均分**/
        /**打印每个学生的所有录入信息**/
        printf("第%d名学生的信息如下:\n学号为:%s\n性别为:%s\t姓名为:%s\n第一门成绩为:%d\t\t第二门成绩为:%d\n总成绩为:%d\t\t平均成绩为:%d\n\n",
               i + 1, stu[i].studentNumber, stu[i].studentSex,stu[i].studentName, stu[i].performance[0], stu[i].performance[1],
               stu[i].performanceTotal, stu[i].performanceAverage);
    }
    /**查找某个学生的某个信息**/
    printf("1.学号!\n");
    printf("2.姓名!\n");
    printf("3.单科成绩!\n");
    printf("4.性别!\n");
    printf("5.总成绩!\n");
    printf("6.平均成绩!\n");
    printf("7.退出系统!\n");
    printf("请输入你要的功能:");
    scanf("%d", &record);           /**输入功能序号**/
    while(1)
    {
        switch(record)
        {/**有bug就是输入错误时就只给一个提示就不会让用户从新输入了**/
        case 1:
            index = -1; /**设初始值**/
            /**查询学生学号**/
            printf("请输入学生的学号:");
            scanf("%s", stuNum);
            for (i = 0; i < STU_MAX; i++) /**找到输入的编号记录下来**/
            {
                if (strcmp(stu[i].studentNumber, stuNum) == 0)
                {
                    index = i;/**记录下标值**/
                }
            }
            if (index != -1)    /**打印该生的信息,然后退出**/
            {
                printf("************************************************************************\n");
                printf("此学号的学生所有信息如下:\n");
                printf("学号:%s\t姓名:%s\t性别:%s\n第一科成绩:%d\t第二科成绩:%d\n总成绩:%d\t平均成绩:%d\n",
                        stu[index].studentNumber, stu[index].studentName, stu[index].studentSex, stu[index].performance[0],
                        stu[index].performance[1], stu[index].performanceTotal, stu[index].performanceAverage);
            } else  /**没有找到就提示用户,然后退出**/
            {
                printf("没有找到你输入的学号!");
            }
            break;
        case 2:
            index = -1; /**设置回初始值**/
            /**查询学生姓名**/
            printf("请输入学生的姓名:");
            scanf("%s", stuNa); /**输入要查询学生的名字**/

            for (i = 0; i < STU_MAX; i++) /**遍历所有学生**/
            {
                if (strcmp(stuNa, stu[i].studentName) == 0)
                {
                    index = i;/**记录下标值**/
                }
            }
            if (index != -1)    /**如果不等于初始值就是找到了,打印出此学生信息**/
            {
                printf("**************************************************************\n");
                printf("该名学生的信息如下:\n学号:%s\t姓名:%s\t性别:%s\n第一科成绩:%d\t第二科成绩:%d\n总成绩:%d\t平均成绩:%d\n",
                       stu[index].studentNumber, stu[index].studentName, stu[index].studentSex, stu[index].performance[0],
                       stu[index].performance[1], stu[index].performanceTotal, stu[index].performanceAverage);
            } else
            {
                printf("查无此学生!");
            }
            break;
        case 3:
            index2[STU_MAX] = NULL;   /**设置为空值**/
            count = -1;
            /**查询单科成绩对应学生**/
            printf("请输入学生的单科成绩");
            scanf("%d", &stuPerfor);    /**用户输入的成绩**/
            for (i = 0; i < STU_MAX; i++) /**和每个学生的的每门课程相比**/
            {
                if (stuPerfor == stu[i].performance[0] || stuPerfor == stu[i].performance[1])/**找到这个成绩的学生打印出来**/
                {
                    index2[i] = i;  /**因为考到此分数的学生可能不止一个,所以把下标值保存在数组中**/
                    printf("****************************************************\n");
                    printf("该名学生的信息如下:学号:%s\t姓名:%s\n性别:%s\t第一科成绩:%d\n第二科成绩:%d\t总成绩:%d\n平均成绩:%d\n",
                                  stu[index2[i]].studentNumber, stu[index2[i]].studentName, stu[index2[i]].studentSex,
                                  stu[index2[i]].performance[0], stu[index2[i]].performance[1], stu[index2[i]].performanceTotal,
                                  stu[index2[i]].performanceAverage);
                } else if(index2[i] > 4 || index2[i] < 0)
                {
                    count++;    /**循环一次没有找到就++1**/
                    continue;
                }
            }
            if (count == STU_MAX - 1)/**等于4既是说明一个都没有找到**/
            {
                printf("没有学生考到这样一个分数!");
            }
            break;
        case 4:
            index2[STU_MAX] = NULL;   /**设置为空值**/
            count = -1;     /**设置为初始值**/
            /**查询学生性别有那些**/
            count = -1; /**设为初始值**/
            printf("请输入要查询学生的性别:");
            scanf("%s", stuSex);    /**输入的性别**/
            for (i = 0; i < STU_MAX; i++)
            {
                if (strcmp(stuSex, stu[i].studentSex) == 0) /**找到后记录下标值并打印该生信息**/
                {
                    indexSex[i] = i;    /**记录符合学生的下标植**/
                    printf("****************************************************\n");
                    printf("该名学生的信息如下:\n学号:%s\t姓名:%s\n性别:%s\t第一科成绩:%d\n第二科成绩:%d\t总成绩:%d\n平均成绩:%d\n",
                           stu[indexSex[i]].studentNumber, stu[indexSex[i]].studentName, stu[indexSex[i]].studentSex,
                           stu[indexSex[i]].performance[0], stu[indexSex[i]].performance[1], stu[indexSex[i]].performanceTotal,
                           stu[indexSex[i]].performanceAverage);
                } else
                {
                    count++;    /**没有符合的记数器就+1**/
                    continue;
                }
            }
            if (count == STU_MAX) /**等于4就是说一个学生都没有找到**/
            {
                printf("请你认真点,输入正确的性别!");
            }
            break;
        case 5:
            count = -1;     /**记数器返回初始值**/
            index2[STU_MAX] = NULL;/**设置为空值**/
            /**查询总成绩对应的学生**/
            printf("请输入学生的总成绩:");
            scanf("%d", &stuPerTo);   /**输入要查询的总成绩**/
            for (i = 0; i < STU_MAX; i++) /**遍历所有的学生**/
            {
                if (stuPerTo == stu[i].performanceTotal)    /**如果符合即记录并打印**/
                {
                    index2[i] = i;
                    printf("**************************************************************\n");
                    printf("该名学生的信息如下:\n学号:%s\t姓名:%s\n性别:%s\t第一科成绩:%d\n第二科成绩:%d\t总成绩:%d\n平均成绩:%d\n",
                           stu[index2[i]].studentNumber, stu[index2[i]].studentName, stu[index2[i]].studentSex,stu[index2[i]].performance[0],
                           stu[index2[i]].performance[1], stu[index2[i]].performanceTotal,stu[index2[i]].performanceAverage);
                }
                else
                {
                    count++;    /**否则记数器加1**/
                }
            }
            if (count == STU_MAX) /**当记数器STU_MAX-1时则是一个都没有找到**/
            {
                printf("你输入的总成绩,不存在!");
            }
            break;
        case 6:
            stuPerfor = -1;    /**设置回初始值**/
            index2[STU_MAX] = NULL;   /**设置为空值**/
            /**查询平均成绩对应的学生**/
            printf("请输入学生的成绩");
            scanf("%d", &stuPerfor);
            for (i = 0; i < STU_MAX; i++)
            {
                if (stuPerfor == stu[i].performanceAverage)   /**对比**/
                {
                    index2[i] = i;  /**记录下这个平均成绩的学生**/
                    printf("****************************************************************************\n");
                    printf("该名学生的信息如下:\n学号:%s\t姓名:%s\n性别:%s\t第一科成绩:%d\n第二科成绩:%d\t总成绩:%d\n平均成绩%d\n",
                           stu[index2[i]].studentNumber, stu[index2[i]].studentName, stu[index2[i]].studentSex, stu[index2[i]].performance[0],
                           stu[index2[i]].performance[1], stu[index2[i]].performanceTotal, stu[index2[i]].performanceAverage);
                }
                else
                {
                    count++;    /**记录器加1**/
                }
            }
            if (count == STU_MAX - 1)
            {
                printf("没有找到!");
            }
            break;
        case 7:
            /**退出系统**/
            printf("退出系统!");
            exit(0);
            break;
        default:
            printf("暂时没有你要的功能!\n");
            printf("退出系统!");
            exit(0);
        break;
        }
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/lirenxian0316/article/details/79370461