亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言實現簡單學生成績管理系統的方法

發布時間:2022-07-28 11:20:16 來源:億速云 閱讀:171 作者:iii 欄目:開發技術

這篇“C語言實現簡單學生成績管理系統的方法”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“C語言實現簡單學生成績管理系統的方法”文章吧。

系統界面及相關要求

1)系統運行,打開如下界面。列出系統幫助菜單(即命令菜單),提示輸入命令。

C語言實現簡單學生成績管理系統的方法

2)開始時還沒有錄入成績,所以輸入命令 L 也無法列出成績。應提示“成績表為空!請先使用命令 T 錄入學生成績。”

同理,當輸入其他的成績處理命令時也作相應的處理。

C語言實現簡單學生成績管理系統的方法

3)輸入命令 T,調用Type子函數錄入成績。

界面提示輸入學生人數

輸入3 提示輸入3名學生的3門課成績,列出成績單的表頭“學號 語文 數學 英語”,提示學號:1

輸入1號學生的3門課成績,用空格間隔,回車結束。提示學號:2

輸入2號學生的3門課成績,用空格間隔,回車結束。提示學號:3

輸入3號學生的3門課成績,用空格間隔,回車結束。Type子函數調用結束,返回。提示輸入命令。

C語言實現簡單學生成績管理系統的方法

4)輸入命令 L ,調用List子函數輸出成績表。List子函數調用結束,返回。提示輸入命令。

C語言實現簡單學生成績管理系統的方法

5)輸入命令 A ,調用Average子函數計算平均分,提示“平均分已計算。請使用命令L查看。” Average子函數調用結束,返回。提示輸入命令。
輸入命令 L ,調用List子函數輸出成績表。List子函數調用結束,返回。提示輸入命令。

C語言實現簡單學生成績管理系統的方法

6)輸入命令 P ,調用Sort子函數將各學生記錄按平均分由高到低排序,提示“完成排序。請使用命令L查看。” Sort子函數調用結束,返回。提示輸入命令。

輸入命令 L ,調用List子函數輸出成績表。List子函數調用結束,返回。提示輸入命令。

C語言實現簡單學生成績管理系統的方法

7)輸入命令 S ,調用Search子函數查詢學生成績,提示“輸入要查詢的學生學號”。

輸入2 找到2號學生的成績并輸出。Search子函數調用結束,返回。提示輸入命令。

C語言實現簡單學生成績管理系統的方法

8)輸入命令C 執行清屏函數語句system(“clear”);

清除屏幕的所有內容。提示輸入命令。

C語言實現簡單學生成績管理系統的方法

C語言實現簡單學生成績管理系統的方法

9)輸入命令H 調用Help子函數顯示幫助菜單。Help子函數調用結束,返回。提示輸入命令。

C語言實現簡單學生成績管理系統的方法

10)輸入命令Q ,則退出系統。

C語言實現簡單學生成績管理系統的方法

注意:

1)輸出數組元素時,要將學號單獨處理,輸出為整數(即保留0位小數)。同理,在計算成績時也要將第1列的學號撇開,只計算第2列之后的。成績保留1位小數。
2)學生人數n貫穿始終,通過n的值判斷當前命令的子函數是否能夠調用執行。例如:當n=0時,說明還沒有錄入成績。而一旦輸入命令T,也即調用Type子函數錄入了成績,則n的值就不再是0。當n!=0時,就可以進行其他的成績操作,但不能再執行錄用成績的操作。所以當用戶輸入的命令無法執行時,應當給出提示。

代碼

#include <stdio.h>
#include <stdlib.h>
//#include "hs.h"
struct student
{
    int id;
    float yw;
    float sx;
    float wy;
    float pj;
};
void help(void);
int type(struct student *p);
void list(struct student *p,int n);
void average(struct student *p,int n);
void search (struct student *p);
void sort(struct student *p,int n);
int main(int argc, const char *argv[])
{
    char ch;
    struct student stu[32];
    int n=0;
    while(1)
    {
        printf("請輸入命令 = ");
        //getchar();
        scanf("%c",&ch);
        putchar(10);
        if(ch=='T')
        {
            n=type(stu);
        }
        else if(ch=='L')
        {
            if(n==0)
            {
                printf("成績表為空!請先使用T錄入成績!\n");
                putchar(10);
            }
            else
                list(stu,n);
        }
        else if(ch=='A')
        {
            if(n==0)
            {
                printf("成績表為空!請先使用T錄入成績!\n");
                putchar(10);
            }
            else
            {
                average(stu,n);
                printf("平均分已計算,請使用命令L查看!\n");
                putchar(10);
            }
        }
        else if(ch=='H')
            help();
        else if(ch=='C')
            system("clear");
        else if(ch=='S')
        {
            if(n==0)
            {
                printf("成績表為空!請先使用T錄入成績!\n");
                putchar(10);
            }
            else
            {
                search(stu);
                putchar(10);
            }
        }
        else if(ch=='P')
        {
            if(n==0)
            {
                printf("成績表為空!請先使用T錄入成績!\n");
                putchar(10);
            }
            else
            {
                sort(stu,n);
                putchar(10);
            }
        }
        else if(ch=='Q')
        {
            printf("Press any key to continue!\n");
            return -1;
        }
        getchar();
    }
    return 0;
}
int type(struct student *p)
{
    int n=0;
    printf("請輸入學生人數:");
    scanf("%d",&n);
    printf("請輸入學生三門課的成績:\n");
    printf("學號 語文 數學 外語\n");
    for(int i=0;i<n;i++)
    {
        printf("%d    ",i+1);
        struct student stu[i];
        scanf("%f %f %f",&(p+i)->yw,&(p+i)->sx,&(p+i)->wy);
    }
    return n;
}
void list(struct student *p,int n)
{
    printf("學生成績如下:\n");
    printf("學號 語文 數學 外語 平均分\n");
    for(int i=0;i<n;i++)
    {
        printf("%d    ",i+1);
        printf("%.1f %.1f %.1f %.1f",p->yw,p->sx,p->wy,p->pj);
        p++;
        putchar(10);
    }
}
void average(struct student *p,int n)
{
    for(int i=0;i<n;i++)
    {
        (p->pj)=((p->yw)+(p->sx)+(p->wy))/3;
        p++;
    }
}
void help(void)
{
    printf("**********************************\n");
    printf(" *  學生成績管理系統——幫助菜單  * \n");
    printf("**********************************\n");
    printf(" *   H = 顯示幫助菜單           * \n");
    printf(" *   T = 成績錄入               * \n");
    printf(" *   A = 計算學生平均分         * \n");
    printf(" *   L = 列出成績單             * \n");
    printf(" *   P = 按平均成績由高到低排序 * \n");
    printf(" *   S = 按學號查詢學生成績     * \n");
    printf(" *   C = 清屏                   * \n");
    printf(" *   Q =退出系統                * \n");
    printf("**********************************\n");
    printf(" *Copyright(c) 2022.3.15 By liq* \n");
    printf("**********************************\n");
}
void search(struct student *p)
{
    int s=0;
    printf("請輸入要查詢的學生號:");
    scanf("%d",&s);
    printf("學號 語文 數學 外語 平均分\n");
    printf("%d   %.1f  %.1f  %.1f  %.1f",s,(p+s-1)->yw,(p+s-1)->sx,(p+s-1)->wy,(p+s-1)->pj);
    putchar(10);
}
void sort(struct student *p,int n)
{
    struct student temp;
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n-i-1;j++)
        {
            if(p[j].pj<p[j+1].pj)
            {
                temp=p[j];
                p[j]=p[j+1];
                p[j+1]=temp;
            }
        }
    }
    printf("排序完成,請使用命令L查看!\n");
}

注意

如需要分文件編寫。
只需要將上述代碼的函數部分拿出來,新建兩個個文件:fun.c、fun.h。其中fun.c文件用來存放上述代碼的結構體聲明以及函數部分(加上相應的頭文件)。fun.h用來存放結構體聲明以及函數聲明(加上相應的頭文件)。
在主函數中要加上對應的頭文件:#include “fun.h”(雙引號,不是<>)。
編譯的時候需要將主函數以及新建的fun.c文件一起編譯,運行還是同之前一樣,用./a.out運行即可。

具體如下圖所示:

1.新建兩個文件(同名,不同后綴),編譯并運行(需要多文件同時編譯)。

C語言實現簡單學生成績管理系統的方法

2.hs.c存放結構體聲明及對應的函數(這里面的函數還可以拆分成其他的文件,這里我就不拆分了)。

#include <stdio.h>
#include <stdlib.h>
struct student
{
    int id;
    float yw;
    float sx;
    float wy;
    float pj;
};
int type(struct student *p)
{
    int n=0;
    printf("請輸入學生人數:");
    scanf("%d",&n);
    putchar(10);
    printf("請輸入學生三門課的成績:\n");
    putchar(10);
    printf("學號 語文 數學 外語\n");
    for(int i=0;i<n;i++)
    {
        printf("%d    ",i+1);
        struct student stu[i];
        scanf("%f %f %f",&(p+i)->yw,&(p+i)->sx,&(p+i)->wy);
    }
    putchar(10);
    return n;
}
void list(struct student *p,int n)
{
    printf("學生成績如下:\n");
    printf("學號 語文 數學 外語 平均分\n");
    for(int i=0;i<n;i++)
    {
        printf("%d    ",i+1);
        printf("%.1f %.1f %.1f %.1f",p->yw,p->sx,p->wy,p->pj);
        p++;
        putchar(10);
    }
    putchar(10);
}
void average(struct student *p,int n)
{
    for(int i=0;i<n;i++)
    {
        (p->pj)=((p->yw)+(p->sx)+(p->wy))/3;
        p++;
    }
}
void help(void)
{
    printf("**********************************\n");
    printf(" *  學生成績管理系統——幫助菜單  * \n");
    printf("**********************************\n");
    printf(" *   H = 顯示幫助菜單           * \n");
    printf(" *   T = 成績錄入               * \n");
    printf(" *   A = 計算學生平均分         * \n");
    printf(" *   L = 列出成績單             * \n");
    printf(" *   P = 按平均成績由高到低排序 * \n");
    printf(" *   S = 按學號查詢學生成績     * \n");
    printf(" *   C = 清屏                   * \n");
    printf(" *   Q =退出系統                * \n");
    printf("**********************************\n");
    printf(" *Copyright(c) 2022.3.15 By liq* \n");
    printf("**********************************\n");
}
void search(struct student *p)
{
    int s=0;
    printf("請輸入要查詢的學生號:");
    scanf("%d",&s);
    putchar(10);
    printf("學號 語文 數學 外語 平均分\n");
    printf("%d   %.1f  %.1f  %.1f  %.1f",s,(p+s-1)->yw,(p+s-1)->sx,(p+s-1)->wy,(p+s-1)->pj);
    putchar(10);
}
void sort(struct student *p,int n)
{
    struct student temp;
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n-i-1;j++)
        {
            if(p[j].pj<p[j+1].pj)
            {
                temp=p[j];
                p[j]=p[j+1];
                p[j+1]=temp;
            }
        }
    }
    printf("排序完成,請使用命令L查看!\n");
}

3.hs.h存放結構體聲明以及hs.c里面函數對應的函數聲明。

#include <stdio.h>
#include <stdlib.h>
struct student
{
    int id;
    float yw;
    float sx;
    float wy;
    float pj;
};
int type(struct student *p);
void list(struct student *p,int n);
void average(struct student *p,int n);
void help(void);
void search(struct student *p);
void sort(struct student *p,int n);

4.main函數

#include <stdio.h>
#include <stdlib.h>
#include "hs.h"
int main(int argc, const char *argv[])
{
    char ch;
    struct student stu[32];
    int n=0;
    while(1)
    {
        printf("請輸入命令 = ");
        scanf("%c",&ch);
        putchar(10);
        if(ch=='T')
        {
            n=type(stu);
        }
        else if(ch=='L')
        {
            if(n==0)
            {
                printf("成績表為空!請先使用T錄入成績!\n");
                putchar(10);
            }
            else
                list(stu,n);
        }
        else if(ch=='A')
        {
            if(n==0)
            {
                printf("成績表為空!請先使用T錄入成績!\n");
                putchar(10);
            }
            else
            {
                average(stu,n);
                printf("平均分已計算,請使用命令L查看!\n");
                putchar(10);
            }
        }
        else if(ch=='H')
            help();
        else if(ch=='C')
            system("clear");
        else if(ch=='S')
        {
            if(n==0)
            {
                printf("成績表為空!請先使用T錄入成績!\n");
                putchar(10);
            }
            else
            {
                search(stu);
                putchar(10);
            }
        }
        else if(ch=='P')
        {
            if(n==0)
            {
                printf("成績表為空!請先使用T錄入成績!\n");
                putchar(10);
            }
            else
            {
                sort(stu,n);
                putchar(10);
            }
        }
        else if(ch=='Q')
        {
            printf("Press any key to continue!\n");
            return -1;
        }
        getchar();
    }
    return 0;
}

以上就是關于“C語言實現簡單學生成績管理系統的方法”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

陵川县| 农安县| 铁力市| 弋阳县| 永兴县| 都匀市| 来凤县| 庆安县| 台湾省| 临清市| 元朗区| 武定县| 靖江市| 蒙阴县| 峨山| 金阳县| 庄河市| 常德市| 沧州市| 民县| 项城市| 六枝特区| 黔江区| 香格里拉县| 阳朔县| 江北区| 平泉县| 东港市| 巴彦淖尔市| 新安县| 闽侯县| 宜城市| 瑞昌市| 察哈| 子洲县| 阿尔山市| 哈巴河县| 宁强县| 鹤峰县| 西盟| 诏安县|