<kbd id="daqct"></kbd>

  • <nav id="daqct"></nav>
    <wbr id="daqct"><pre id="daqct"></pre></wbr>
    <wbr id="daqct"></wbr>
    <form id="daqct"><th id="daqct"></th></form>
    更多課程 選擇中心

    C/C++培訓
    達內IT學院

    400-111-8989

    C語言基于單鏈表得學生成績管理系統

    • 發布:點點點
    • 來源:C++資訊
    • 時間:2018-08-01 18:22

    傳說中講課通俗而不庸俗,說話風流而不下流的小編又來了哦,今天的主要內容是:C語言基于單鏈表得學生成績管理系統。首先給大家總結下為什么你們學習C語言會覺得難,尤其是對于單鏈表這塊,主要原因得是因為一下兩點:

    編寫流程不清晰

    功能設計不清晰

    基于單鏈表得學生成績管理系統分為兩個模塊。

    C語言基于單鏈表得學生成績管理系統
    C語言基于單鏈表得學生成績管理系統
    #include
    
    #include
    
    #include
    
    struct student
    
    {
    
    char name[20];
    
    charnum[20];
    
    int math;
    
    int english;
    
    };
    
    struct Node
    
    {
    
    //int data;
    
    struct student data;
    
    struct Node* next;
    
    };
    
    struct Node* createList
    
    {
    
    //指針的基礎:指針變成變量:需要內存
    
    struct Node*headNode= (struct Node*)malloc(sizeof(struct Node));
    
    //那么他就可以表示變量,初始化變量里面的東西
    
    //由于功能限制,導致有些東西不需要初始化
    
    headNode->next = NULL;
    
    return headNode;
    
    }
    
    //2.創建結點:數據
    
    struct Node* createNode(struct student data)
    
    {
    
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    
    ewNode->data = data;
    
    ewNode->next = NULL;
    
    return newNode;
    
    }
    
    //插入 學會一種方法就可以:表頭插入 組成鏈表就是連接過程,結構體變量連接結構體
    
    //函數參數是有意義的東西,插入那個鏈表?--》list 插入的數據是多少--》data
    
    void insertNodeByHead(struct Node* headNode, struct student data)
    
    {
    
    //表頭法插入
    
    //1.創建結點
    
    struct Node* newNode = createNode(data);
    
    //插入
    
    ewNode->next = headNode->next;
    
    headNode->next = newNode;
    
    }
    
    //查找
    
    struct Node*findByName(struct Node* headNode, char * name)
    
    {
    
    struct Node* pMove = headNode->next;
    
    while (pMove)
    
    {
    
    //比較,改為字符串比較
    
    if (!strcmp(pMove->data.name,name))
    
    {
    
    return pMove;
    
    }
    
    //沒有往下走
    
    pMove = pMove->next;
    
    }
    
    return NULL;
    
    }
    
    //刪除--》指定刪除
    
    void deleteNodeByName(struct Node* headNode, char * name)
    
    {
    
    //找到指定位置那個結點,以及制定位置前面那個結點
    
    //要有兩個相鄰的指針
    
    struct Node* p = headNode;//前面那個
    
    struct Node* q = headNode->next;//后面那個
    
    if (q == NULL)
    
    {
    
    printf("么有(沒有)可用信息,無法刪除 ");
    
    }
    
    else
    
    {
    
    while (strcmp(q->data.name,name))
    
    {
    
    p = q;//p到達q的位置
    
    q = p->next;//q到達q的下一個
    
    if (q == NULL)
    
    {
    
    printf("未找到制定位置,無法刪除 ");
    
    return;
    
    }
    
    }
    
    p->next = q->next;
    
    free(q);
    
    }
    
    }
    
    //刪除--》指定刪除
    
    void deleteNodeByNum(struct Node* headNode, char * num)
    
    {
    
    //要有兩個相鄰的指針
    
    if (q == NULL)
    
    {
    
    }
    
    else
    
    {
    
    while (strcmp(q->data.num, num))
    
    {
    
    p = q;//p到達q的位置
    
    if (q == NULL)
    
    {
    
    return;
    
    }
    
    }
    
    p->next = q->next;
    
    free(q);
    
    }
    
    }
    
    //打印
    
    void printList(struct Node*headNode)
    
    {
    
    //要從二個開始打印
    
    //定義一個移動的指針
    
    printf("姓名 編號 數學 英語 ");
    
    while (pMove)
    
    {
    
    printf("%s %s %d %d ", pMove->data.name, pMove->data.num, pMove->data.math, pMove->data.english);
    
    pMove = pMove->next;
    
    }
    
    printf(" ");
    
    }
    
    系統設計
    C語言基于單鏈表得學生成績管理系統 
    C語言基于單鏈表得學生成績管理系統
    #define _CRT_SECURE_NO_WARNINGS
    
    #include
    
    #include
    
    #include "singleList.h"
    
    struct Node* list = createList;
    
    //界面
    
    void menu
    
    {
    
    printf(" ");
    
    printf(" 0.退出系統 ");
    
    printf(" 1.錄入信息 ");
    
    printf(" 2.顯示信息 ");
    
    printf(" 3.刪除信息 ");
    
    printf(" 4.查找信息 ");
    
    printf(" 5.保存到文件 ");
    
    }
    
    void menuOfDelete
    
    {
    
    printf(" 1.按照姓名刪除 ");
    
    printf(" 2.按照學號刪除 ");
    
    }
    
    voidkeyDownOfDelete
    
    {
    
    intchoice;
    
    scanf("%d", &choice);
    
    char name[20];
    
    char num[20];
    
    switch (choice)
    
    {
    
    case 1://1.按照姓名刪除
    
    printf("請輸入要刪除的姓名:");
    
    scanf("%s", name);
    
    deleteNodeByName(list, name);
    
    break;
    
    case 2://2.按照學號刪除
    
    printf("請輸入要刪除的學號:");
    
    scanf("%s", num);
    
    deleteNodeByNum(list, num);
    
    break;
    
    default:
    
    printf("輸入錯誤,無法刪除 ");
    
    }
    
    }
    
    //保存到文件
    
    void saveInfoToFile(struct Node* list, char *filePath, char *mode)
    
    {
    
    struct Node* pMove = list->next;
    
    FILE *fp =fopen(filePath, mode);
    
    while (pMove)
    
    {
    
    fprintf(fp, "%s %s %d %d ", pMove->data.name, pMove->data.num, pMove->data.math, pMove->data.english);
    
    pMove = pMove->next;
    
    }
    
    fclose(fp);
    
    }
    
    void readInfoFromFile(struct Node* list, char *filePath, char *mode)
    
    {
    
    struct student data;
    
    while (fscanf(fp, "%s %s %d %d ", data.name, data.num, &data.math, &data.english) !=EOF)
    
    {
    
    insertNodeByHead(list, data);
    
    }
    
    fclose(fp);
    
    }
    
    //交互:按鍵操作+鼠標操作C語言:按鍵操作
    
    void keyDown
    
    {
    
    int choice;
    
    struct student stuInfo;
    
    chartemp= ' ';
    
    switch (choice)
    
    {
    
    case 0:
    
    system("pause");
    
    exit(0);
    
    break;
    
    case 1://1.錄入信息
    
    while (1)
    
    {
    
    printf("請輸入學生的姓名,編號,math,english:");
    
    fflush(stdin);
    
    scanf("%s%s%d%d", stuInfo.name, stuInfo.num, &stuInfo.math, &stuInfo.english);
    
    //鏈表的插入
    
    insertNodeByHead(list, stuInfo);
    
    printf("是否繼續?(N)");
    
    fflush(stdin);
    
    temp = getchar;
    
    if (temp == 'N' ||temp== 'n')
    
    break;
    
    }
    
    break;
    
    case 2://2.顯示信息
    
    printList(list);
    
    break;
    
    case 3://3.刪除信息
    
    menuOfDelete;
    
    keyDownOfDelete;
    
    break;
    
    case 4://4.查找信息
    
    printf("請輸入要查找的學生的姓名:");
    
    scanf("%s", stuInfo.name);
    
    if (findByName(list, stuInfo.name) != NULL)
    
    {
    
    printf("%s %s %d %d ", findByName(list, stuInfo.name)->data.name,
    
    findByName(list, stuInfo.name)->data.num, findByName(list, stuInfo.name)->data.math,findByName(list, stuInfo.name)->data.english);
    
    }
    
    else
    
    {
    
    printf("未找到相關信息! ");
    
    }
    
    break;
    
    case 5://5.保存到文件
    
    saveInfoToFile(list,"1.txt", "w");
    
    break;
    
    default:
    
    printf("輸入錯誤,重新輸入 ");
    
    break;
    
    }
    
    }
    
    int main
    
    {
    
    readInfoFromFile(list, "1.txt", "r");
    
    while (1)
    
    {
    
    menu;
    
    keyDown;
    
    system("pause");
    
    system("cls");
    
    }
    
    return 0;
    
    }

    和大家說了這么多,并不是告訴大家我的技術有多么多么的牛,而是想告訴大家,只要你有決心和意志,要好學C/C++并沒那么難。要混口飯吃也不是這么難哦。

    預約申請免費試聽課

    填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

    上一篇:C語言,一個影響了整個世界的編程語言!
    下一篇:不朽 C++ 為新貴 Python 應用提速 8000 倍!

    C語言宏定義的幾種使用方法

    C與C++內存管理避坑指南

    C/C++代碼規范注釋有哪些講究?

    C語言中,全局變量濫用的后果竟如此嚴重?

    • 掃碼領取資料

      回復關鍵字:視頻資料

      免費領取 達內課程視頻學習資料

    • 視頻學習QQ群

      添加QQ群:1143617948

      免費領取達內課程視頻學習資料

    Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

    選擇城市和中心
    黑龍江省

    吉林省

    河北省

    湖南省

    貴州省

    云南省

    廣西省

    海南省

    欧美三级片,白洁外传,第四色播日韩AV第一页,啪啪免费观看大全av 百度 好搜 搜狗
    <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>