用C語言編制查詢某班同窗的平均成績

1.實驗目的與要求css

⑴ 掌握用C語言編寫查詢統計程序。html

⑵ 掌握C語言的文件讀寫的基本操做。c++

2.實驗內容函數

⑴ 建立一個文本文件,含有若干班級的數據,要求其數據每一個班級至少有50位同窗,每位同窗至少學習10門課程學習

⑵ 寫出函數求出某一位的平均成績code

⑶ 寫出函數求出每一位的平均成績htm

⑷ 使用文件讀入相關數據,將運行結果送到文件中blog

3.實驗準備get

  • 首先應明確建立文本文件的格式,數據協議等。input

  • 其次根據文件讀取數據,並將結果送入結果文件中。

  • 參閱C語言教材中的有關內容。

4.實驗方法

⑴ 用建立文本文件的格式建立數據。

⑵ 編制相應功能函數。

⑶ 讀取文件的數據(注意可能有不一樣的個數的數據)。

⑷ 整合相關函數構成完整的應用程序。

⑸ 輸出結果送入文件中。

代碼

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 153
struct student_type
{
    char name[20];//姓名
    int num;//學號
    int hhh;//班級
    float score1;//數學
    float score2;//英語
    float score3;//物理
    float score4;//電路
    float score5;//馬原
    float score6;//離散
    float score7;//Java
    float score8;//c語言
    float score9;//c++
    float score10;//HTML
    float score11;//CSS
} stud[SIZE];
void menu()
{
    printf("\t\t\t  ********************************\n");
    printf("\t\t\t          學生成績查詢系統1.0     \n");
    printf("\t\t\t    [1]   查看全部學生信息           \n");
    printf("\t\t\t    [2]   查詢學生我的成績     \n");
    printf("\t\t\t    [0]   退出                                \n ");
}

void re_menu()
{
    char c1, c2;
    printf("\n\n\n按回車鍵返回主菜單");
    scanf("%c,%c", &c1, &c2);
    menu();
}
int seek()
{
    int i;
    float ave[SIZE];
    FILE *fp = fopen("input.txt", "rw+");
    FILE *fpWrite = fopen("out.txt", "a+");
    if (fpWrite == NULL && fp == NULL)
    {
        printf("cannot open file\n");
        return 0;
    }
     for (i = 1; i <= SIZE; i++)
    {
        fscanf(fp, " %s %d %d %f %f %f %f %f %f %f %f %f %f %f\n", stud[i].name, &stud[i].hhh, &stud[i].num, &stud[i].score1, &stud[i].score2, &stud[i].score3, &stud[i].score4, &stud[i].score5, &stud[i].score6, &stud[i].score7, &stud[i].score8, &stud[i].score9, &stud[i].score10, &stud[i].score11);
    }
     printf("姓名\t班級\t學號\t數學\t英語\t物理\t電路\t馬原\t離散\tJava\tc語言\tc++\tHTML\tcss\t平均分\n");
    for (i = 1; i <= SIZE; i++)
    {
        ave[i] = (stud[i].score1 + stud[i].score2 + stud[i].score3 + stud[i].score4 + stud[i].score5 + stud[i].score6 + stud[i].score7 + stud[i].score8 + stud[i].score9 + stud[i].score10 + stud[i].score11) / 11;
            printf(" %s\t%d\t %d\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\n ", stud[i].name, stud[i].hhh, stud[i].num, stud[i].score1, stud[i].score2, stud[i].score3, stud[i].score4, stud[i].score5, stud[i].score6, stud[i].score7, stud[i].score8, stud[i].score9, stud[i].score10, stud[i].score11,ave[i]);
        fprintf(fpWrite, "%s"
                         "平均分:"
                         "%-7.1f\n",
                stud[i].name, ave[i]);
    }
    fclose(fp);
    fclose(fpWrite);
    return 0;
}

int seek1()
{
    FILE *fp;
    int i;
    float ave;

    if ((fp = fopen("input.txt", "rw+")) == NULL)
    {
        printf("cannot open file\n");
        return 0;
    }

    for (i = 1; i <= SIZE; i++)
    {
        fscanf(fp, " %s %d %d %f %f %f %f %f %f %f %f %f %f %f\n", stud[i].name,&stud[i].hhh, &stud[i].num, &stud[i].score1, &stud[i].score2, &stud[i].score3, &stud[i].score4, &stud[i].score5, &stud[i].score6, &stud[i].score7, &stud[i].score8, &stud[i].score9, &stud[i].score10, &stud[i].score11);
    }
    printf("請輸入你要查找的學生的班級+空格+學號"); 
    int nub1;
    int nub2;
    int size;
    scanf("%d", &nub1);
    scanf("%d", &nub2);
    for (i = 1; i <= SIZE; i++)
    {
        if (stud[i].hhh == nub1 && stud[i].num == nub2)
        {
            size=i;
            ave = (stud[i].score1 + stud[i].score2 + stud[i].score3 + stud[i].score4 + stud[i].score5 + stud[i].score6 + stud[i].score7 + stud[i].score8 + stud[i].score9 + stud[i].score10 + stud[i].score11) / 11;
            printf("姓名\t班級\t學號\t數學\t英語\t物理\t電路\t馬原\t離散\tJava\tc語言\tc++\tHTML\tcss\t平均分\n");
            printf(" %s\t%d\t %d\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t %-2.1f\t ", stud[i].name, stud[i].hhh, stud[i].num, stud[i].score1, stud[i].score2, stud[i].score3, stud[i].score4, stud[i].score5, stud[i].score6, stud[i].score7, stud[i].score8, stud[i].score9, stud[i].score10, stud[i].score11,ave);
        }
        
    }

    fclose(fp);

    FILE *fpWrite = fopen("out.txt", "a+");
    if (fpWrite == NULL)
    {
        return 0;
    }
    fprintf(fpWrite, "%s"
                     "平均分:"
                     "%-7.1f\n",
            stud[size].name, ave);
    fclose(fpWrite);
    return 0;
}
int main()
{
    menu();
    int a;
    while (1)
    {
        scanf("%d", &a);
        switch (a)
        {
        case 1:
            seek();
            break;
        case 2:
            seek1();
            break;
        }
        if (a == 0)
            break;
        re_menu();
    }
    return 0;
}

文件 input.txt

c語言的文件的操做

相關文章
相關標籤/搜索