国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C語言學(xué)生成績信息管理系統(tǒng)(超詳細版)

這篇具有很好參考價值的文章主要介紹了C語言學(xué)生成績信息管理系統(tǒng)(超詳細版)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

主題:一個簡易成績管理系統(tǒng)

功能介紹:

1.以文本形式存儲學(xué)生信息

2.對以存信息進行? ?1. 插入 2. 修改3. 刪除? 4.查詢? 5.成績數(shù)字特征

目錄

一:分析

二:查詢?

三:菜單

四:初始化函數(shù)

五:插入函數(shù)

六:修改函數(shù)

七:刪除函數(shù)

八:數(shù)字特征

九:顯示函數(shù)


一:分析

要進行 插入 查詢 刪除 修改 就還需要進行查詢

這些函數(shù)內(nèi)部都需要調(diào)用同一種功能的函數(shù)因此

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 查詢函數(shù)模塊需要精心設(shè)計

接下來先看查詢函數(shù)

在這之前確定數(shù)據(jù)結(jié)構(gòu)? 鏈式結(jié)構(gòu)(鏈表), 順序結(jié)構(gòu)(數(shù)組

分析:

0)要進行初始化可以鏈表頭插法(建議帶頭結(jié)點優(yōu)點接下來可以看到增刪查改省去很多判斷)

student_information *head;
head = (student_information *)malloc(sizeof(student_information));
head->next = NULL;
while (1)
{
        printf("是否繼續(xù)輸入成績: 1(是)/0(否) ");
        scanf("%d", &judge);
        if (judge == 1)
        {
            student_information *p;
            p = (student_information *)malloc(sizeof(student_information));
            if (!head->next)
            {
                head->next = p;
                p->next = NULL;
            }
            else
            {
                p->next = head->next;
                head->next = p;
            }
        else
        {
            return head;
        }
}

??????也可以結(jié)構(gòu)體數(shù)組

1)要進行插入用鏈表較方便方法如下:

//p為目標結(jié)點
    p->next = pf->next;
    pf->next = p;

數(shù)組需要進行整體向后挪移 時間復(fù)雜度大,寫起來不方便

?2)要進行刪除鏈表也較方便:

    pf->next = pf->next->next;

?同樣數(shù)組需要進行整體向后挪移 時間復(fù)雜度大,寫起來不方便

?3)要進行修改,查詢兩者相差不大

綜上所述:鏈表較優(yōu)

于是

typedef struct student_information
{
    char name[15];   //姓名
    char number[15]; //學(xué)號
    int score[3];    //三科成績
    //還可以加入其他信息類型
    struct student_information *next;
} student_information;

OK

二:查詢?

這是姓名進行查詢

/// @brief 姓名查詢函數(shù)
/// @param head
/// @param name
/// @return 返回目標前指針
student_information *inquery_name(student_information *head, char name[])
{
    student_information *p = head;
    while (p->next)
    {
        if (strcmp((p->next)->name, name) != 0)//strcmp()返回值為-+0相等為零
            p = p->next;
        else
            return p;
    }
    return p;
}

下面是學(xué)號查詢

/// @brief 學(xué)號查詢函數(shù)
/// @param head
/// @param number
/// @return 返回目標前指針
student_information *inquery_number(student_information *head, char number[])
{
    student_information *p = head;
    while (p->next)
    {
        if (strcmp((p->next)->number, number) != 0)
            p = p->next;
        else
            return p;
    }
    return p;
}

/*這兩個函數(shù)可以改成QQ號,手機號等信息查詢,也可以進行雙重查詢(將姓名QQ一起查詢)只需將函數(shù)進行雙重判斷就行。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 這兩個也可以合并為一個函數(shù)因為參數(shù)都是string,但是要進行提示使用者要進行何種查詢。? ? ? ? ? */

接下來分析函數(shù)

1.參數(shù):是用鏈表進行的線性結(jié)構(gòu)存儲方式,自然參數(shù)要有頭指針。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.返回值:為目標結(jié)點前一結(jié)點利于插入刪除,都需要前一結(jié)點較方便,上面的函數(shù)可以看出來)。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3.主體較簡單,逐個比較即可。

將兩函數(shù)進行合并為一個函數(shù)塊

/// @brief 分為 姓名查詢與學(xué)號查詢
/// @param head
/// @return 返回頭指針  目標信息的前指針
student_information **inquery_info(student_information *head)
{
    student_information *q, *qf;
    int b;
    char name_inquery[15];
    char number_inquery[15];
    printf("請選擇查詢方式:1.姓名查詢  2.學(xué)號查詢\n");
    scanf("%d", &b);
    switch (b)
    {
    case 1:
        scanf("%s", name_inquery);
        qf = q = inquery_name(head, name_inquery); //接收前指針
        q = q->next;
        if (q)
        {
            printf("************************************************\n");
            printf("姓名\t學(xué)號\t\t成績1\t成績2\t成績3\n");
            printf("%s\t%s\t%d\t%d\t%d\n", q->name, q->number, q->score[0], q->number[1], q->score[2]);
            printf("************************************************\n");
        }
        else
            printf("查詢的信息不存在?。?!\n");
        break;
    case 2:
        printf("請輸入學(xué)號:");
        scanf("%s", number_inquery);
        qf = q = inquery_number(head, number_inquery); //接收前指針
        q = q->next;
        if (q)
        {
            printf("************************************************\n");
            printf("姓名\t學(xué)號\t\t成績1\t成績2\t成績3\n ");
            printf("%s\t%s\t%d\t%d\t%d\n", q->name, q->number, q->score[0], q->number[1], q->score[2]);
            printf("************************************************\n");
        }
        else
            printf("查詢的信息不存在?。?!\n");
        break;
    default:
        printf("輸入錯誤!??!\n");
        break;
    }
    point[0] = head;//此處將head,和qf一并傳回
    point[1] = qf;
    return point;
}

三:菜單

int main(void)
{
    student_information *head;
    student_information **temp; //臨時存儲頭指針與目標前指針
    int flag = 1;
    do
    {
        printf("初始化信息: 1\n");
        printf("插入信息:   2\n");
        printf("查詢信息:   3\n");
        printf("修改信息:   4\n");
        printf("刪除信息:   5\n");
        printf("成績特征:   6\n");
        printf("打印信息單: 7\n");
        printf("退出程序:   0\n");
        int o;
        printf("請選擇功能:");
        scanf("%d", &o);
        switch (o)
        {
        case 1:
            head = init_info();
            break;
        case 2:
            head = insert_info(head);
            break;
        case 3:
            temp = inquery_info(head);
            head = temp[0];
            break;
        case 4:
            head = modify_info(head);
            break;
        case 5:
            head = dele_info(head);
            break;
        case 6:
            digitalFeature(head);
            break;
        case 7:
            show_info(head);
            break;
        case 0:
            flag = 0;
            printf("************************************************\n");
            printf("感謝使用??!!\n");
            printf("************************************************\n");
            break;
        default:
            printf("\n輸入錯誤,請重新輸入!!!!\n\n");
            break;
        }
    } while (flag);
}

四:初始化函數(shù)

要求需要將信息存儲進文件如下

//文件寫入
    FILE *fp = fopen("information.txt", "w+");
    if (!fp)
    {
        printf("文件打開失?。?!");
    }
    char str_1[] = "s";

    fputs(p->name, fp);
    fputs("\t", fp);

    fputs(p->number, fp);
    fputs("\t", fp);

    itoa(p->score[0], str_1, 10);//integer to array 整形轉(zhuǎn)化為字符串
    fputs(str_1, fp);
    fputs("\t", fp);

    itoa(p->score[1], str_1, 10);
    fputs(str_1, fp);
    puts("\t", fp);

    itoa(p->score[2], str_1, 10);
    fputs(str_1, fp);
    fputs("\n", fp);

    fclose(fp);

?初始化:

student_information *init_info()
{
    int judge;

    //文件寫入
    FILE *fp = fopen("information.txt", "w+");
    if (!fp)
    {
        printf("文件打開失敗?。?);
    }

    //帶頭結(jié)點鏈表
    student_information *head;
    head = (student_information *)malloc(sizeof(student_information));
    head->next = NULL;
    while (1)
    {
        printf("是否繼續(xù)輸入成績: 1(是)/0(否) ");
        scanf("%d", &judge);
        if (judge == 1)
        {
            student_information *p;
            p = (student_information *)malloc(sizeof(student_information));
            printf("請輸入信息:\n姓名\t學(xué)號\t成績1\t成績2\t成績3\n");
            scanf("%s%s%d%d%d", p->name, p->number, &(p->score[0]), &(p->score[1]), &(p->score[2]));
            if (!head->next)
            {
                head->next = p;
                p->next = NULL;
            }
            else
            {
                p->next = head->next;
                head->next = p;
            }
            //文件寫入部分
            //
        }
        else
        {
            fclose(fp);
            return head;
        }
    }
}

五:插入函數(shù)

/// @brief 顯示系統(tǒng)所有信息 將新信息插入到指定位序上
/// @param head
/// @return 返回新鏈表的頭指針
student_information *insert_info(student_information *head)
{
    //文件寫入

    int j, i;
    show_info(head);
    printf("請輸入要插入的位序 \n");
    scanf("%d", &j);
    student_information *p;
    p = (student_information *)malloc(sizeof(student_information));
    printf("請輸入信息:姓名\t學(xué)號\t成績1\t成績2\t成績3\n");
    scanf("%s%s%d%d%d", p->name, p->number, &(p->score[0]), &(p->score[1]), &(p->score[2]));
    student_information *pf = head;
    for (i = 1; i < j; i++)
    {
        pf = pf->next;
    }
    p->next = pf->next;
    pf->next = p;
    printf("插入成功?。。n");
    p = head->next;
    //寫入文件
    char str_2[] = "s";
    while (p)
    {
        //即使存入文件
        //文件寫入部分
        //
        p = p->next;
    }
    //fclose(fp_1);
    return head;
}

六:修改函數(shù)

/// @brief 修改信息 并重新存儲到文檔中
/// @param head
/// @return 返回新鏈表的頭指針
student_information *modify_info(student_information *head)
{
    //文件寫入
    //

    student_information **p;
    student_information *q;
    p = inquery_info(head); //接受返回的頭指針與目標前指針
    q = p[1];               //接收目標指針
    q = q->next;            //移動到目標指針
    if (q == NULL)
    {
        printf("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        printf("輸入信息錯誤,信息不存在??!\n");
    }
    else
    {
        int flag = 1;
        while (flag)
        {
            int s;
            printf("請選擇要修改的信息:\n1.姓名, 2.學(xué)號, 3.成績1, 4.成績2, 5.成績3, 0.不修改退出\n");
            scanf("%d", &s);
            switch (s)
            {
            case 1:
                printf("請輸入新姓名\n");
                scanf("%s", q->name);
                printf("修改成功?。。?!\n");
                break;
            case 2:
                printf("請輸入新學(xué)號\n");
                scanf("%s", q->number);
                printf("修改成功!?。?!\n");
                break;
            case 3:
                printf("請輸入新成績1\n");
                scanf("%d", &(q->score[0]));
                printf("修改成功!?。?!\n");
                break;
            case 4:
                printf("請輸入新成績2\n");
                scanf("%d", &(q->score[0]));
                printf("修改成功?。。?!\n");
                break;
            case 5:
                printf("請輸入新成績3\n");
                scanf("%d", &(q->score[0]));
                printf("修改成功!?。?!\n");
                break;
            case 0:
                flag = 0;
                break;
            default:
                printf("請重新輸入!!\n");
                break;
            }
        }
    }
    student_information *p_2;
    p_2 = head->next;
    char str_3[] = "j";
    //寫入文件
    while (p_2)
    {
        //
        p_2 = p_2->next;
    }
    //fclose(fp_2);
    return p[0]; //返回頭指針
}

七:刪除函數(shù)

/// @brief 刪除信息 并重新存儲到文檔中
/// @param head
/// @return 返回新鏈表的頭指針
student_information *dele_info(student_information *head)
{
    //文件寫入

    student_information **p;
    student_information *q;
    p = inquery_info(head); //接受返回的頭指針與目標前指針
    q = p[1];               //接收目標指針的前指針 不移動到目標指針利于刪除
    if ((q->next) != NULL)
    {
        q->next = q->next->next;
        printf("刪除成功!?。。n");
    }
    else
    {
        printf("輸入信息錯誤,信息不存在!!\n");
    }
    head = p[0]; //接收頭指針

    student_information *p_3;
    p_3 = head->next;
    char str_4[] = "j";
    //寫入文件
    while (p_3)
    {
        //

        p_3 = p_3->next;
    }
    //fclose(fp_3);
    return head; //返回新鏈表的頭指針
}

八:數(shù)字特征

自由發(fā)揮部分

/// @brief 顯示平均分 最高分 不及格人數(shù) 優(yōu)秀率
/// @param head
void digitalFeature(student_information *head)
{
    int h;
    student_information *sco = head->next;
    int total[subjectTotal] = {0};       //臨時變量 存分數(shù)之和
    double average[subjectTotal];        //平均分
    int max_score[subjectTotal] = {0};   //最高分
    double people = 0.0;                 //總?cè)藬?shù)
    int people_fail[subjectTotal] = {0}; //三科不及格人數(shù)
    int people_good[subjectTotal] = {0}; //優(yōu)秀人數(shù)
    double goodRate[subjectTotal] = {0}; //三科優(yōu)秀率
    while (sco != NULL)
    {
        people += 1;
        for (h = 0; h < subjectTotal; h++)
        {
            total[h] += sco->score[h];
            if (sco->score[h] < 60)
                people_fail[h]++;
            if (sco->score[h] >= 85)
                people_good[h]++;
            if (sco->score[h] > max_score[h])
                max_score[h] = sco->score[h];
        }
        sco = sco->next;
    }
    for (h = 0; h < subjectTotal; h++)
    {
        average[h] = total[h] / people;
        goodRate[h] = people_good[h] / people;
    }
    printf("**********************************************************************\n");
    printf("                         成績數(shù)字特征                              \n");
    for (h = 0; h < subjectTotal; h++)
    {
        printf("科目%d\t平均分%6.2f\t最高分%d\t不及格人數(shù)%d\t優(yōu)秀率%6.2f\n", h + 1, average[h], max_score[h], people_fail[h], goodRate[h]);
    }
    printf("**********************************************************************\n");
}

九:顯示函數(shù)

/// @brief 顯示全部信息
/// @param head
void show_info(student_information *head)
{
    student_information *p = head->next;
    int i = 1;
    printf("************************************************\n");
    printf("序號\t姓名\t學(xué)號\t\t成績\t成績\t成績\n ");
    while (p)
    {
        printf("%d\t%s\t%s\t%d\t%d\t%d\n", i, p->name, p->number, p->score[0], p->number[1], p->score[2]);
        p = p->next;
        i++;
    }
    printf("************************************************\n");
}

十:運行結(jié)果?

菜單

c語言學(xué)生成績信息管理系統(tǒng),c語言,大作業(yè),函數(shù),c語言,數(shù)據(jù)結(jié)構(gòu),鏈表

初始化?

c語言學(xué)生成績信息管理系統(tǒng),c語言,大作業(yè),函數(shù),c語言,數(shù)據(jù)結(jié)構(gòu),鏈表

插入?

c語言學(xué)生成績信息管理系統(tǒng),c語言,大作業(yè),函數(shù),c語言,數(shù)據(jù)結(jié)構(gòu),鏈表

查詢?

c語言學(xué)生成績信息管理系統(tǒng),c語言,大作業(yè),函數(shù),c語言,數(shù)據(jù)結(jié)構(gòu),鏈表

修改?

c語言學(xué)生成績信息管理系統(tǒng),c語言,大作業(yè),函數(shù),c語言,數(shù)據(jù)結(jié)構(gòu),鏈表

刪除?

c語言學(xué)生成績信息管理系統(tǒng),c語言,大作業(yè),函數(shù),c語言,數(shù)據(jù)結(jié)構(gòu),鏈表

?就到這了?。。。。?!

內(nèi)容僅供自己學(xué)習(xí)記錄,歡迎指正!?。?!感謝?。。?!文章來源地址http://www.zghlxwxcb.cn/news/detail-525242.html

到了這里,關(guān)于C語言學(xué)生成績信息管理系統(tǒng)(超詳細版)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 學(xué)生成績管理系統(tǒng)(合并文件,查找,總分排序,保存補考學(xué)生信息)

    目錄 題目及要求: 錄入學(xué)生成績信息到鏈表中 合并文件 直接插入排序(總分降序) 冒泡排序(總分降序) 順序查找(名字查找) 二分查找(名字查找) ?這里是先按字母首字母排序再查找 保存不及格學(xué)生到文件中 現(xiàn)有學(xué)生成績信息文件 1(1.txt),內(nèi)容如下(同學(xué)自己補

    2024年02月10日
    瀏覽(35)
  • Java基礎(chǔ)——學(xué)生成績信息管理系統(tǒng)(簡單實現(xiàn))

    1、 定義一個學(xué)生類 Student,包含姓名、成績信息; 2、使用 ArrayList集合存儲學(xué)生對象; 3、 對集合中的元素進行增刪查改的操作。 學(xué)生類可以包含姓名、成績、學(xué)號、年齡等等,這里只包含了前兩項學(xué)生類屬性。 在該類中定義了簡單的增、刪、查、改的方法。 其中,遍歷集

    2024年02月11日
    瀏覽(21)
  • 【學(xué)生成績管理系統(tǒng)----C語言】

    【學(xué)生成績管理系統(tǒng)----C語言】

    還在為期末程序設(shè)計而煩惱嗎,不要擔(dān)心,大師幫你安利一波完整的的管理系統(tǒng)代碼,對你有幫助記得加關(guān)注噢! 文章目錄 一、學(xué)生成績管理系統(tǒng)是什么? 二、信息管理的七個模塊 1.Step one 2.Step Two? 3.Step Three 4.Step four 5.Step five 6.Step Six 7.Next 總結(jié) ? ? ? ?學(xué)生信息管理系統(tǒng)

    2024年02月03日
    瀏覽(22)
  • 學(xué)生成績管理系統(tǒng)(C語言實現(xiàn))

    學(xué)生成績管理系統(tǒng)(C語言實現(xiàn))

    設(shè)計并實現(xiàn)一個簡單的學(xué)生成績管理系統(tǒng) 學(xué)生成績表信息包括學(xué)號、姓名、各科課程成績(語文、數(shù)學(xué)、英語、政治)和總分。用帶頭結(jié)點的單鏈表管理學(xué)生成績表,每個學(xué)生的信息依次從鍵盤輸入,并根據(jù)需要進行插入、刪除、排序、輸出等操作。 一、 實訓(xùn)環(huán)境 信息工程

    2024年02月11日
    瀏覽(25)
  • 課設(shè)——C語言學(xué)生成績管理系統(tǒng)

    ????????相信許多同學(xué)在大學(xué)期間,學(xué)習(xí)計算機相關(guān)課程的時候,都有一個令人頭疼的問題——課程設(shè)計。那么本片文章就詳細的分享一個用C語言實現(xiàn)一個簡單學(xué)生成績管理系統(tǒng),供同學(xué)們學(xué)習(xí)和參考(文章最后會附上源程序)。 1.建立一張學(xué)生成績表,每個學(xué)生包含 學(xué)

    2024年02月11日
    瀏覽(91)
  • 學(xué)生信息及成績管理系統(tǒng)(Python+Sqlite)數(shù)據(jù)庫版

    學(xué)生信息及成績管理系統(tǒng)(Python+Sqlite)數(shù)據(jù)庫版

    目錄 功能模塊: 運行功能演示: ?具體代碼實現(xiàn)過程: 創(chuàng)建sqlite?數(shù)據(jù)庫 ?Python代碼 引入os和sqlite3包: 初始化數(shù)據(jù)庫: 連接數(shù)據(jù)庫: 關(guān)閉并提交數(shù)據(jù)到數(shù)據(jù)庫: 查詢數(shù)據(jù)并顯示: 添加并插入數(shù)據(jù)到數(shù)據(jù)庫: 更新數(shù)據(jù)到數(shù)據(jù)庫: 刪除數(shù)據(jù)并更新數(shù)據(jù)庫: ?導(dǎo)入和導(dǎo)出數(shù)據(jù)

    2024年02月04日
    瀏覽(40)
  • C語言編程學(xué)生成績管理系統(tǒng)

    C語言編程學(xué)生成績管理系統(tǒng)

    目錄 一、介紹 二、功能 1.錄入學(xué)生 2.刪除學(xué)生信息 3.修改學(xué)生信息 4.查詢學(xué)生信息 5.所有學(xué)生信息 6.成績排序 ?7.退出程序 三、代碼 1.主函數(shù) 2.頭文件 3.函數(shù)封裝庫 ? ? ? ? 利用C語言,運用鏈表、指針、封裝函數(shù)等基本知識實現(xiàn)一個學(xué)生管理系統(tǒng)。通過在終端對學(xué)生信息進

    2024年02月10日
    瀏覽(61)
  • C語言學(xué)生成績管理系統(tǒng)(綜合項目)

    C語言學(xué)生成績管理系統(tǒng)(綜合項目)

    1. 這個代碼主要實現(xiàn)以下功能: 2. 用到的主要參數(shù)有: ? ? 1.整型變量int n;用于儲存學(xué)生人數(shù)和之后的循環(huán)判斷。 ? ? 2.字符串char name[][];用于儲存姓名。 ? ? 3.浮點型變量float score[];用于儲存成績。 ? ? 4.長整型變量long ID[Max];用于儲存學(xué)號。 3.用到的子函數(shù)有: int ?Menu(

    2024年02月11日
    瀏覽(23)
  • C語言課程設(shè)計-學(xué)生成績管理系統(tǒng)

    C語言課程設(shè)計-學(xué)生成績管理系統(tǒng)

    需求分析: 1.設(shè)計題目:學(xué)生成績管理系統(tǒng) 2.系統(tǒng)功能需求分析:實現(xiàn)對學(xué)生各科成績總分及平均分的排序,和成績的查找 概要設(shè)計 1. 功能模塊圖 詳細設(shè)計 1. 流程圖 測試結(jié)果 :列出所有功能的運行界面,并作文字說明。 1.錄入成績:錄入3個人的學(xué)號和各科成績 2.每門課程

    2024年02月11日
    瀏覽(26)
  • 基于mysql+jdbc+java swing的學(xué)生成績信息管理系統(tǒng)

    基于mysql+jdbc+java swing的學(xué)生成績信息管理系統(tǒng)

    來csdn也有兩年了,在這期間學(xué)了很多的知識,也跟著許多的大神做了幾個小項目。但自己也在想什么時候能夠有個自己的項目,之前在學(xué)校做過一個基于集合存儲數(shù)據(jù)的學(xué)生信息管理系統(tǒng),現(xiàn)在想著改進一下,于是趁著暑假做了一個小項目吧(基于mysql+jdbc+java swing的學(xué)生成績

    2024年02月04日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包