最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實(shí)現(xiàn)銷售管理系統(tǒng)

 更新時(shí)間:2022年02月28日 08:39:14   作者:淺夏&輕吟  
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)銷售管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語言實(shí)現(xiàn)銷售管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

這是題目,沒用到文件相關(guān)的函數(shù),所以不能保存在本地,每次讀入都得重新輸入。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<Windows.h>
#include<conio.h>

struct node
{
?? ?char no[12]; ?/*代號*/
?? ?char name[40]; ?/*姓名*/
?? ?float sales[12]; /*月銷售額*/
?? ?float total; ?/*年度總銷售額*/
?? ?struct node* link;
};

struct List
{
?? ?node* head;
?? ?node* end;
?? ?int size;
};

List* init();

void pushNode(List* list);

bool hasExist(List* list, char* no);

void addNode(List* list, node t);

void showNodes(List* list);

void mainMenu();

void search(List* list);

void change(List* list);

void deleteInfo(List* list);

void showTotal(List* list);

void findMaxMin(List* list);

int main()
{
?? ?List* list = init();
?? ?mainMenu();
?? ?while (true)
?? ?{
?? ??? ?char c;
?? ??? ?c = getch();
?? ??? ?if (c == '1')
?? ??? ??? ?pushNode(list);
?? ??? ?if (c == '2')
?? ??? ??? ?showNodes(list);
?? ??? ?if (c == '3')
?? ??? ??? ?search(list);
?? ??? ?if (c == '4')
?? ??? ??? ?change(list);
?? ??? ?if (c == '5')
?? ??? ??? ?deleteInfo(list);
?? ??? ?if (c == '6')
?? ??? ??? ?showTotal(list);
?? ??? ?if (c == '7')
?? ??? ??? ?findMaxMin(list);
?? ??? ?mainMenu();
?? ?}


?? ?return 0;
}

List* init()
{
?? ?List* list = (List*)malloc(sizeof(List));
?? ?list->head = list->end = NULL;
?? ?list->size = 0;
?? ?return list;
}

void pushNode(List* list)
{
?? ?node t;
?? ?printf("請錄入銷售員的信息,輸入#退出\n");
?? ?while (true)
?? ?{
?? ??? ?node t;
?? ??? ?printf("------------------------\n");
?? ??? ?printf("輸入第%d個(gè)銷售員的代號:", list->size + 1);
?? ??? ?scanf("%s", t.no);
?? ??? ?if (strcmp(t.no, "#") == 0)
?? ??? ??? ?break;
?? ??? ?if (hasExist(list, t.no))
?? ??? ?{
?? ??? ??? ?printf("該代號已存在!\n");
?? ??? ??? ?continue;
?? ??? ?}
?? ??? ?printf("請輸入第%d個(gè)銷售員的姓名:", list->size + 1);
?? ??? ?scanf("%s", t.name);
?? ??? ?memset(t.sales, 0, sizeof(t.sales));
?? ??? ?printf("請錄入該銷售員每月的銷售額,輸入負(fù)數(shù)結(jié)束錄入\n");
?? ??? ?for (int i = 0; i < 12; i++)
?? ??? ?{
?? ??? ??? ?printf("請輸入該銷售員%d月的銷售額:", i + 1);
?? ??? ??? ?float temp;
?? ??? ??? ?scanf("%f", &temp);
?? ??? ??? ?if (temp < 0)
?? ??? ??? ??? ?break;
?? ??? ??? ?else
?? ??? ??? ??? ?t.sales[i] = temp;
?? ??? ?}

?? ??? ?t.total = 0;
?? ??? ?for (int i = 0; i < 12; i++)
?? ??? ??? ?t.total += t.sales[i];
?? ??? ?t.link = NULL;
?? ??? ?addNode(list, t);
?? ?}

}

bool hasExist(List* list, char* no)
{
?? ?node* ptr = list->head;
?? ?while (ptr != NULL)
?? ?{
?? ??? ?if (strcmp(ptr->no, no) == 0)
?? ??? ??? ?return true;
?? ??? ?ptr = ptr->link;
?? ?}
?? ?return false;
}

void addNode(List* list, node t)
{
?? ?node* nd = (node*)malloc(sizeof(node));
?? ?strcpy(nd->no, t.no);
?? ?strcpy(nd->name, t.name);
?? ?nd->link = t.link;
?? ?for (int i = 0; i < 12; i++)
?? ??? ?nd->sales[i] = t.sales[i];
?? ?nd->total = t.total;
?? ?if (list->head == NULL)
?? ??? ?list->head = list->end = nd;
?? ?else {
?? ??? ?list->end->link = nd;
?? ??? ?list->end = nd;
?? ?}
?? ?list->size++;
}

void showNodes(List* list)
{
?? ?node* ptr = list->head;
?? ?int index = 1;
?? ?while (ptr != NULL)
?? ?{
?? ??? ?if (index != 1)
?? ??? ??? ?printf("------------------\n");
?? ??? ?printf("第%d個(gè)銷售員\n", index);
?? ??? ?printf("代號:%s\n", ptr->no);
?? ??? ?printf("姓名:%s\n", ptr->name);
?? ??? ?for (int i = 0; i < 12; i++)
?? ??? ??? ?if (ptr->sales[i] != 0)
?? ??? ??? ??? ?printf("%d月銷售額:%.2f\n", i + 1, ptr->sales[i]);
?? ??? ?printf("總銷售額:%.2f\n", ptr->total);
?? ??? ?index++;
?? ??? ?ptr = ptr->link;
?? ?}
?? ?printf("---------------\n");
?? ?printf("請按下任意鍵返回");
?? ?getch();
}

void mainMenu()
{
?? ?system("cls");
?? ?printf("***********************************************銷售員管理系統(tǒng)***********************************************\n\n");
?? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1.錄入銷售員信息\n");
?? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.展示所有銷售員的信息\n");
?? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3.查找指定銷售員的指定月份的銷售額\n");
?? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4.修改指定銷售員指定月份的銷售額\n");
?? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5.刪除指定員工的信息\n");
?? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 6.統(tǒng)計(jì)所有員工的年度銷售總量\n");
?? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 7.統(tǒng)計(jì)最大和最小月銷售額和年銷售額\n\n");
?? ?printf("****************************************************************************************************************\n");
}

void search(List* list)
{
?? ?printf("按1通過代號查找,否則通過姓名查找\n");
?? ?if (getch() == '1')
?? ?{
?? ??? ?printf("請輸入代號:");
?? ??? ?char s[12];
?? ??? ?scanf("%s", s);
?? ??? ?printf("請輸入要查找的月份:");
?? ??? ?int month;
?? ??? ?scanf("%d", &month);
?? ??? ?node* ptr = list->head;
?? ??? ?bool flag = false;
?? ??? ?while (ptr != NULL)
?? ??? ?{
?? ??? ??? ?if (strcmp(ptr->no, s) == 0)
?? ??? ??? ?{
?? ??? ??? ??? ?flag = true;
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?ptr = ptr->link;
?? ??? ?}
?? ??? ?if (flag)
?? ??? ??? ?printf("銷售額為:%.2f\n", ptr->sales[month - 1]);
?? ??? ?else
?? ??? ??? ?printf("暫未錄入此銷售員信息!\n");
?? ??? ?printf("請按任意鍵返回");
?? ??? ?getch();
?? ?}
?? ?else
?? ?{
?? ??? ?printf("請輸入姓名:");
?? ??? ?char s[40];
?? ??? ?scanf("%s", s);
?? ??? ?printf("請輸入要查找的月份:");
?? ??? ?int month;
?? ??? ?scanf("%d", &month);
?? ??? ?node* ptr = list->head;
?? ??? ?bool flag = false;
?? ??? ?while (ptr != NULL)
?? ??? ?{
?? ??? ??? ?if (strcmp(ptr->name, s) == 0)
?? ??? ??? ?{
?? ??? ??? ??? ?flag = true;
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?ptr = ptr->link;
?? ??? ?}
?? ??? ?if (flag)
?? ??? ??? ?printf("銷售額為:%.2f\n", ptr->sales[month - 1]);
?? ??? ?else
?? ??? ??? ?printf("暫未錄入此銷售員信息!\n");
?? ??? ?printf("請按任意鍵返回");
?? ??? ?getch();
?? ?}
}

void change(List* list)
{
?? ?printf("請輸入待修改員工的代號:");
?? ?char s[12];
?? ?scanf("%s", s);
?? ?while (!hasExist(list, s))
?? ?{
?? ??? ?printf("該員工不存在,請重新輸入!或輸入#退出\n");
?? ??? ?scanf("%s", s);
?? ??? ?if (strcmp("#", s) == 0)
?? ??? ??? ?return;
?? ?}

?? ?printf("請輸入待修改的月份:");
?? ?int month;
?? ?scanf("%d", &month);
?? ?printf("請輸入修改后的銷售額:");
?? ?float temp;
?? ?scanf("%f", &temp);
?? ?node* ptr = list->head;
?? ?while (ptr != NULL)
?? ??? ?if (strcmp(ptr->no, s) == 0)
?? ??? ??? ?break;
?? ?ptr->sales[month - 1] = temp;
?? ?ptr->total = 0;
?? ?for (int i = 0; i < 12; i++)
?? ??? ?ptr->total += ptr->sales[i];
?? ?printf("修改成功!\n");
?? ?printf("------------------\n");
?? ?printf("代號:%s\n", ptr->no);
?? ?printf("姓名:%s\n", ptr->name);
?? ?for (int i = 0; i < 12; i++)
?? ??? ?if (ptr->sales[i] != 0)
?? ??? ??? ?printf("%d月銷售額:%.2f\n", i + 1, ptr->sales[i]);
?? ?printf("總銷售額:%.2f\n", ptr->total);
?? ?printf("--------------------\n");
?? ?printf("請按任意鍵返回");
?? ?getch();
}

void deleteInfo(List* list)
{
?? ?printf("請輸入待刪除員工的代號:");
?? ?char s[12];
?? ?scanf("%s", s);
?? ?while (!hasExist(list, s))
?? ?{
?? ??? ?printf("該員工不存在,請重新輸入或輸入#退出\n");
?? ??? ?scanf("%s", s);
?? ??? ?if (strcmp("#", s) == 0)
?? ??? ??? ?return;
?? ?}
?? ?node* pro = list->head;
?? ?node* ptr;
?? ?if (strcmp(pro->no, s) == 0)
?? ?{
?? ??? ?ptr = pro;
?? ?}
?? ?else {
?? ??? ?while (pro != NULL)
?? ??? ?{
?? ??? ??? ?if (strcmp(pro->link->no, s) == 0)
?? ??? ??? ??? ?break;
?? ??? ??? ?pro = pro->link;
?? ??? ?}
?? ??? ?node* ptr = pro->link;
?? ?}
?? ?printf("------該員工信息-------\n");
?? ?printf("代號:%s\n", ptr->no);
?? ?printf("姓名:%s\n", ptr->name);
?? ?for (int i = 0; i < 12; i++)
?? ??? ?if (ptr->sales[i] != 0)
?? ??? ??? ?printf("%d月銷售額:%.2f\n", i + 1, ptr->sales[i]);
?? ?printf("總銷售額:%.2f\n", ptr->total);
?? ?printf("----------------------\n");
?? ?printf("請按'1'確認(rèn)刪除,其余鍵返回主菜單\n");
?? ?if (getch() == '1')
?? ?{
?? ??? ?if (pro == ptr)
?? ??? ?{
?? ??? ??? ?list->head = list->end = NULL;
?? ??? ??? ?free(ptr);
?? ??? ??? ?printf("刪除成功!\n請按任意鍵返回");
?? ??? ??? ?getch();
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?pro->link = ptr->link;
?? ??? ??? ?free(ptr);
?? ??? ??? ?printf("刪除成功!\n請按任意鍵返回");
?? ??? ??? ?getch();
?? ??? ?}

?? ?}
?? ?else
?? ??? ?return;
}

void showTotal(List* list)
{
?? ?float tal = 0;
?? ?node* ptr = list->head;
?? ?while (ptr != NULL)
?? ?{
?? ??? ?tal += ptr->total;
?? ??? ?ptr = ptr->link;
?? ?}
?? ?printf("------------------\n");
?? ?printf("總銷售額為%.2f\n", tal);
?? ?printf("-------------------\n");
?? ?printf("請按任意鍵返回\n");
?? ?getch();
}

void findMaxMin(List* list)
{
?? ?float maxMonth, minMonth;
?? ?char* maxNo, *minNo;
?? ?float maxYear, minYear;
?? ?char* maxYearNo, *minYearNo;

?? ?node* ptr = list->head;
?? ?if (ptr != NULL)
?? ?{
?? ??? ?minMonth = maxMonth = ptr->sales[0];
?? ??? ?maxNo = minNo = ptr->no;
?? ??? ?maxYear = minYear = ptr->total;
?? ??? ?maxYearNo = minYearNo = ptr->no;
?? ?}
?? ?else
?? ??? ?return;
?? ?while (ptr != NULL)
?? ?{
?? ??? ?for (int i = 0; i < 12; i++)
?? ??? ?{
?? ??? ??? ?if (minMonth > ptr->sales[i])
?? ??? ??? ?{
?? ??? ??? ??? ?minMonth = ptr->sales[i];
?? ??? ??? ??? ?minNo = ptr->no;
?? ??? ??? ?}
?? ??? ??? ?if (maxMonth < ptr->sales[i])
?? ??? ??? ?{
?? ??? ??? ??? ?maxMonth = ptr->sales[i];
?? ??? ??? ??? ?maxNo = ptr->no;
?? ??? ??? ?}
?? ??? ?}

?? ??? ?if (maxYear < ptr->total)
?? ??? ?{
?? ??? ??? ?maxYear = ptr->total;
?? ??? ??? ?maxYearNo = ptr->no;
?? ??? ?}

?? ??? ?if (minYear > ptr->total)
?? ??? ?{
?? ??? ??? ?minYear = ptr->total;
?? ??? ??? ?minYearNo = ptr->no;
?? ??? ?}
?? ??? ?ptr = ptr->link;
?? ?}
?? ?
?? ?printf("-------------------------------------");
?? ?printf("最大月銷售額:%.2f 代號:%s\n", maxMonth, maxNo);
?? ?printf("最小月銷售額:%.2f 代號:%s\n", minMonth, minNo);
?? ?printf("最大年銷售總額:%.2f 代號:%s\n", maxYear, maxYearNo);
?? ?printf("最小年銷售總額:%.2f 代號:%s\n", minYear, minYearNo);
?? ?printf("-------------------------------------");
?? ?getch();
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解C語言進(jìn)程同步機(jī)制

    詳解C語言進(jìn)程同步機(jī)制

    這篇文章主要介紹了詳解C語言進(jìn)程同步機(jī)制的的相關(guān)資料,文中代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • C語言實(shí)現(xiàn)簡單的井字棋游戲

    C語言實(shí)現(xiàn)簡單的井字棋游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡單的井字棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • C語言動態(tài)內(nèi)存函數(shù)(malloc、calloc、realloc、free)詳解

    C語言動態(tài)內(nèi)存函數(shù)(malloc、calloc、realloc、free)詳解

    在C語言中,動態(tài)內(nèi)存函數(shù)是塊重要的知識點(diǎn),以往,我們開辟空間都是固定得,數(shù)組編譯結(jié)束后就不能繼續(xù)給它開辟空間了,開辟的空間滿了,就不能在開辟空間了,學(xué)習(xí)本文章,我們就可以解決這個(gè)問題,向內(nèi)存申請空間,感興趣的小伙伴跟著小編一起來看看吧
    2023-08-08
  • c++超細(xì)致講解引用

    c++超細(xì)致講解引用

    引用(reference)就是C++對C語言的重要擴(kuò)充。引用就是某一變量(目標(biāo))的一個(gè)別名,對引用的操作與對變量直接操作完全一樣
    2022-05-05
  • OpenCV中findContours函數(shù)參數(shù)詳解

    OpenCV中findContours函數(shù)參數(shù)詳解

    Opencv中通過使用findContours函數(shù),簡單幾個(gè)的步驟就可以檢測出物體的輪廓,很方便。本文將和大家一起探討一下findContours方法中各參數(shù)的含義及用法,感興趣的可以了解一下
    2022-08-08
  • C++類模板與模板類深入詳解

    C++類模板與模板類深入詳解

    這篇文章主要介紹了C++類模板與模板類深入詳解,需要的朋友可以參考下
    2014-07-07
  • C語言圖文并茂講解分支語句用法

    C語言圖文并茂講解分支語句用法

    分支結(jié)構(gòu)的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴(yán)格按照語句出現(xiàn)的物理順序。分支結(jié)構(gòu)的程序設(shè)計(jì)方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當(dāng)?shù)姆种дZ句
    2022-04-04
  • C++實(shí)現(xiàn)刪除txt文件中指定內(nèi)容的示例代碼

    C++實(shí)現(xiàn)刪除txt文件中指定內(nèi)容的示例代碼

    這篇文章主要介紹了C++實(shí)現(xiàn)刪除txt文件中指定內(nèi)容的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • C++?JSON庫?nlohmann::basic_json::array?的用法示例詳解

    C++?JSON庫?nlohmann::basic_json::array?的用法示例詳解

    nlohmann::json是一個(gè)C++的JSON庫,它提供了一種容易和直觀的方法來處理JSON數(shù)據(jù),nlohmann::json::array()是用來創(chuàng)建一個(gè)JSON數(shù)組的方法,這篇文章主要介紹了C++ JSON庫nlohmann::basic_json::array的用法,需要的朋友可以參考下
    2023-06-06
  • C語言全方位講解指針與地址和數(shù)組函數(shù)堆空間的關(guān)系

    C語言全方位講解指針與地址和數(shù)組函數(shù)堆空間的關(guān)系

    指針是C語言中一個(gè)非常重要的概念,也是C語言的特色之一。使用指針可以對復(fù)雜數(shù)據(jù)進(jìn)行處理,能對計(jì)算機(jī)的內(nèi)存分配進(jìn)行控制,在函數(shù)調(diào)用中使用指針還可以返回多個(gè)值
    2022-04-04

最新評論

确山县| 宜兰县| 上饶县| 图木舒克市| 翼城县| 平塘县| 金湖县| 杂多县| 阳西县| 万荣县| 安陆市| 郧西县| 高陵县| 浪卡子县| 夏津县| 板桥市| 沁源县| 万年县| 石首市| 东平县| 西乌| 宾川县| 温泉县| 繁峙县| 成都市| 巢湖市| 虹口区| 肥西县| 宜兴市| 琼结县| 吕梁市| 德兴市| 普安县| 永顺县| 栾川县| 邯郸县| 都兰县| 依安县| 夏河县| 咸阳市| 江华|