C语言练手自己编写学生成绩管理系统

#include<stdio.h>

#include<stdlib.h>

/*定义学生结构体*/

struct Student

{

    char ID[20];

    char Name[20];

    float Mark1;

    float Mark2;

    float Mark3;

    float Avarage;

};



/*声明学生数组及学生数量*/

struct Student students[1000];

int num=0;



/*计算平均成绩*/

float Avg(struct Student stu)

{

    return (stu.Mark1+stu.Mark2+stu.Mark3)/3;    

}

/*根据学号寻找数组下标*/

int GetIndexByStudentId(char id[])

{

    int i;

    for(i=0;i<num;i++)

    {

        if(strcmp(students[i].ID,id)==0)

        {

            return i;

        }

    }

    return -1;

}

/*根据姓名寻找数组下标*/

int GetIndexByStudentName(char name[])

{

    int i;

    for(i=0;i<num;i++)

    {

        if(strcmp(students[i].Name,name)==0)

        {

            return i;

        }

    }

    return -1;

}



/*SHowStudent*/

int ShowStudentInfo()

{

    int i;

    IO_ReadInfo();

    

    printf("%10s%10s%10s%10s%10s%10s\n","学号","姓名","成绩1","成绩2","成绩3","平均分");

    printf("-----------------------------------------------------------\n");

    

    for(i=0;i<=num;i++)

    {

        students[i].Avarage=Avg(students[i]);

        printf("%10s%10s%10.2f%10.2f%10.2f%10.2f\n",students[i].ID,students[i].Name,students[i].Mark1,students[i].Mark2,

        students[i].Mark3,students[i].Avarage);

    }

    return 0;

}

int ShowStudentInfo1()

{

    int i;

    IO_ReadInfo();

    

    printf("%10s%10s%10s%10s%10s%10s\n","学号","姓名","成绩1","成绩2","成绩3","平均分");

    printf("-----------------------------------------------------------\n");

    

    for(i=0;i<=num;i++)

    {

        students[i].Avarage=Avg(students[i]);

        printf("%10s%10s%10.2f%10.2f%10.2f%10.2f\n",students[i].ID,students[i].Name,students[i].Mark1,students[i].Mark2,

        students[i].Mark3,students[i].Avarage);

    }

    system("pause");

    printMenu();

    printf("%d\n",userChoice());

}

/*增加学生记录*/

int addStudent()

{

    while(1)

    {

        printf("请输入学号:");

        scanf("%s",&students[num].ID);

        printf("请输入姓名:");

        scanf("%s",&students[num].Name);

        printf("请输入成绩1:");

        scanf("%f",&students[num].Mark1);

        printf("请输入成绩2:");

        scanf("%f",&students[num].Mark2);

        printf("请输入成绩3:");

        scanf("%f",&students[num].Mark3);

        ShowStudentInfo();

        IO_WriteInfo();

        num++;

        getchar();

        printf("是否继续?y/n");

        if(getchar()=='n')

        {

            

            printMenu();

            printf("%d\n",userChoice());

            break;

        }

    }

    return 0;

}

/*将信息写入文件*/

int IO_WriteInfo()

{

    int i;

    FILE *fp;

    fp=fopen("C:\\12.txt","wb");

    fwrite(&num,sizeof(int),1,fp);

    for(i=0;i<=num;i++)

    {

        fwrite(&students[i],sizeof(struct Student),1,fp);

    }

    fclose(fp);

}

/*将文件信息读出*/

int IO_ReadInfo()

{

    int i;

    FILE *fp;

    fp=fopen("C:\\12.txt","wb");

    fread(&num,sizeof(int),1,fp);

    for(i=0;i<=num;i++)

    {

        fread(&students[i],sizeof(struct Student),1,fp);

    }

    fclose(fp);

}

int main()

{

    printMenu();



    printf("%d\n",userChoice());

    

    system("pause");

    

}

//菜单打印

int printMenu()

{

    printf("欢迎使用学生成绩管理系统!\n");

    printf("1.增加学生记录\n");

    printf("2.修改学生记录\n");

    printf("3.删除学生记录\n");

    printf("4.查询学生记录\n");

    printf("5.退出\n");

    return 0;

}

//接收用户输入选择

int userChoice()

{

    int choice;

    printf("请输入选择《1-5》:");

    scanf("%d",&choice);

    switch(choice)

    {

    case 1:

        addStudent();

    case 2:

        return 2;

    case 3:

        return 3;

    case 4:

        ShowStudentInfo1();

    case 5:

        exit(0);

    }

}

 

废话不多写,一步一步来。

第一步,要确定自己的需求,打印出需求。

int main()

{

    printf("欢迎使用学生成绩管理系统!\n");

    printf("1.增加学生记录\n");

    printf("2.修改学生记录\n");

    printf("3.删除学生记录\n");

    printf("4.查询学生记录\n");

    printf("5.退出\n");

    system("pause");

}

第二步,将菜单打印写一个函数。

int main()

{

    printMenu();

    system("pause");

}

//菜单打印

int printMenu()

{

    printf("欢迎使用学生成绩管理系统!\n");

    printf("1.增加学生记录\n");

    printf("2.修改学生记录\n");

    printf("3.删除学生记录\n");

    printf("4.查询学生记录\n");

    printf("5.退出\n");

    return 0;

}

第三步,接收用户输入的选择,并测试

int main()

{

    printMenu();

    printf("%d\n",userChoice());

    system("pause");

    

}

//菜单打印

int printMenu()

{

    printf("欢迎使用学生成绩管理系统!\n");

    printf("1.增加学生记录\n");

    printf("2.修改学生记录\n");

    printf("3.删除学生记录\n");

    printf("4.查询学生记录\n");

    printf("5.退出\n");

    return 0;

}

//接收用户输入选择

int userChoice()

{

    int choice;

    printf("请输入选择《1-6》:");

    scanf("%d",&choice);

    switch(choice)

    {

    case 1:

        return 1;

    case 2:

        return 2;

    case 3:

        return 3;

    case 4:

        return 4;

    case 5:

        return 5;



    }

}

第4步,定义结构体变量Student并插入学生信息打印测试。

#include<stdio.h>



/*定义学生结构体*/

struct Student

{

    char ID[20];

    char Name[20];

    float Mark1;

    float Mark2;

    float Mark3;

    float Avarage;

};



/*声明学生数组及学生数量*/

struct Student students[1000];

int num=0;

/*增加学生记录*/

int addStudent()

{



    printf("请输入学号:");

    scanf("%s",&students[num].ID);

    printf("请输入姓名:");

    scanf("%s",&students[num].Name);

    printf("请输入成绩1:");

    scanf("%f",&students[num].Mark1);

    printf("请输入成绩2:");

    scanf("%f",&students[num].Mark2);

    printf("请输入成绩3:");

    scanf("%f",&students[num].Mark3);

    printf("学号:%s,姓名:%s,成绩1:%0.2f,成绩2:%0.2f,成绩3:%0.2f",

        students[num].ID,students[num].Name,students[num].Mark1,students[num].Mark2,students[num].Mark3);

    num++;

    return 0;

}



int main()

{

    printMenu();

    printf("%d\n",userChoice());

    system("pause");

    

}

//菜单打印

int printMenu()

{

    printf("欢迎使用学生成绩管理系统!\n");

    printf("1.增加学生记录\n");

    printf("2.修改学生记录\n");

    printf("3.删除学生记录\n");

    printf("4.查询学生记录\n");

    printf("5.退出\n");

    return 0;

}

//接收用户输入选择

int userChoice()

{

    int choice;

    printf("请输入选择《1-5》:");

    scanf("%d",&choice);

    switch(choice)

    {

    case 1:

        addStudent();

    case 2:

        return 2;

    case 3:

        return 3;

    case 4:

        return 4;

    case 5:

        return 5;

    }

}

 第五步计算平均成绩,将数据读写到文件。

 

你可能感兴趣的:(C语言)