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;
    }
}

 第五步計算平均成績,將數據讀寫到文件。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章