您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“怎么用C語言鏈表實現(xiàn)商品庫存管理系統(tǒng)”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“怎么用C語言鏈表實現(xiàn)商品庫存管理系統(tǒng)”這篇文章吧。
具體內(nèi)容如下
代碼:
#include <stdio.h> #include <stdlib.h> #include <string.h> //定義一個商品結(jié)構(gòu)體 typedef struct sp { char no[12]; //商品編號 char name[40]; //名稱 int workload; //庫存量 struct sp *next; //指向下一節(jié)點的指針 } SP; //函數(shù)聲明放在這里 void ListCreate(SP *L, int n); //創(chuàng)建商品鏈表節(jié)點 void LIstSearch(SP *L); //查找商品信息 void ListModify(SP *L); //修改商品信息 void ListInsert(SP *L); //插入商品信息 void ListDelete(SP *L); //刪除商品信息 void Input(SP *p, int i); //輸入商品信息 void SumSp(SP *L); //統(tǒng)計商品的庫存總量 void Sort(SP *L); //對每類商品的庫存量進行排名 void Menu(); //考試報名管理系統(tǒng)的菜單 //商品庫存管理系統(tǒng)的主函數(shù)入口 int main() { int item, n; //item用于接收輸入的命令,n用于接收輸入的商品人數(shù) SP *L = NULL; //初始化一個頭節(jié)點 L = (SP *)malloc(sizeof(SP)); //為頭節(jié)點開辟內(nèi)存空間 L->next = NULL; //將頭節(jié)點的指針域置空 do { Menu(); //菜單 printf("請輸入相應(yīng)的數(shù)字,進行相應(yīng)的操作:\n"); scanf("%d", &item); system("cls"); switch (item) { case 1: printf("請輸入您要錄入的商品數(shù)目:"); scanf("%d", &n); ListCreate(L, n); getchar(); printf("\n請按任意鍵返回主菜單\n"); getchar(); system("cls"); break; case 2: LIstSearch(L); //查找商品信息 getchar(); printf("\n請按任意鍵返回主菜單\n"); getchar(); system("cls"); break; case 3: ListModify(L); //修改商品庫存信息 getchar(); printf("\n請按任意鍵返回主菜單\n"); getchar(); system("cls"); break; case 4: ListDelete(L); //刪除商品信息 getchar(); printf("\n請按任意鍵返回主菜單\n"); getchar(); system("cls"); break; case 5: ListInsert(L); //插入商品信息 getchar(); printf("\n請按任意鍵返回主菜單\n"); getchar(); system("cls"); break; case 6: SumSp(L); getchar(); printf("\n請按任意鍵返回主菜單\n"); getchar(); system("cls"); break; case 7: Sort(L); getchar(); printf("\n請按任意鍵返回主菜單\n"); getchar(); system("cls"); break; case 0: //退出商品庫存管理系統(tǒng) printf("即將退出商品庫存管理系統(tǒng)....."); exit(0); default: printf("您輸入的指令不正確,請重新輸入"); } printf("\n\n"); } while (item); return 0; } //創(chuàng)建鏈表,將新生成的節(jié)點插入到鏈表的表頭 void ListCreate(SP *L, int n) { int i; for (i = 0; i < n; i++) { SP *p; //將新生成的節(jié)點插入到鏈表中 p = NULL; p = (SP *)malloc(sizeof(SP)); Input(p, i); p->next = L->next; L->next = p; } printf("錄入成功!"); } //查找商品庫存量 void LIstSearch(SP *L) { char n[40]; SP *p = L->next; if (p == NULL) printf("數(shù)據(jù)為空,無法查找!"); else { printf("請輸入您要查找的商品名稱:"); scanf("%s", n); while (strcmp(p->name, n) != 0) { p = p->next; if (p == NULL) { printf("沒有找到相關(guān)信息\n"); return; } } printf("%s的庫存量為%d\n",p->name,p->workload); } } //修改商品的庫存量 void ListModify(SP *L) { int a; char nam[40]; SP *p = L->next; if (p == NULL) printf("數(shù)據(jù)為空,無法修改!"); else { printf("請輸入您修改的商品名稱:"); scanf("%s",nam); while(strcmp(p->name, nam) != 0) { p = p->next; if (p == NULL) { printf("沒有找到相關(guān)信息\n"); return; } } printf("請輸入您修改后的庫存量:"); scanf("%d",&p->workload); printf("修改成功"); } } //刪除商品信息 void ListDelete(SP *L) { char n[40]; SP *p = L->next, *pre = L; //定義p指針指向頭節(jié)點的指向,定義pre指向頭節(jié)點,pre始終指向p的前驅(qū)節(jié)點 if (p == NULL) printf("數(shù)據(jù)為空,無法刪除!"); else { printf("請輸入您要刪除的商品名稱:"); scanf("%s", n); while (strcmp(p->name, n) != 0) { pre = p; p = pre->next; if (p == NULL) { printf("沒有找到相關(guān)信息,無法刪除\n"); return; } } pre->next = p->next; free(p); printf("刪除成功"); } } //插入商品庫存的相關(guān)信息 void ListInsert(SP *L) { SP *s = NULL; //生成一個新節(jié)點s s = (SP *)malloc(sizeof(SP)); printf("請輸入商品的商品編號:"); scanf("%s", s->no); printf("請輸入商品的名稱:"); scanf("%s", s->name); printf("請輸入商品的庫存量:"); scanf("%d", &s->workload); s->next = L->next; L->next = s; printf("插入成功!"); } //統(tǒng)計商品的庫存總量 void SumSp(SP *L) { int sum=0; SP *p=L->next; while(p!=NULL) { sum+=p->workload; p=p->next; } printf("商品的庫存總量為%d\n",sum); } //對每類商品的庫存量進行排名 void Sort(SP *L) { SP *p,*q,*tail,*l; tail=NULL; while((L->next->next) != tail) { p = L; q = L->next; while(q->next != tail) { if((q->workload) > (q->next->workload)) { p->next = q->next; q->next = q->next->next; p->next->next = q; q = p->next; } q = q->next; p = p->next; } tail = q; } printf("商品庫存量從小到大結(jié)果如下:\n"); l=L->next; while(l!=NULL) { if(l->next!=NULL) { printf("%s(%d)->",l->name,l->workload); l=l->next; } else { printf("%s(%d)",l->name,l->workload); l=l->next; } } } //輸入商品庫存的相關(guān)信息 void Input(SP *p, int i) { printf("請輸入第%d個商品的商品編號:", i + 1); scanf("%s", p->no); printf("請輸入第%d個商品的名稱:", i + 1); scanf("%s", p->name); printf("請輸入第%d個商品的庫存量:", i + 1); scanf("%d", &p->workload); } //商品庫存管理系統(tǒng)的菜單 void Menu() { printf("\n\n"); printf("\t\t\t===================商品庫存管理系統(tǒng)======================\n"); printf("\t\t\t* 作者:XXX 班級:XXXXXXXXXXX 學(xué)號:XXXXXXXXXX *\n"); printf("\t\t\t* *\n"); printf("\t\t\t* 1>. 錄入商品庫存信息 *\n"); printf("\t\t\t* 2>. 查找某個商品的庫存量 *\n"); printf("\t\t\t* 3>. 修改某個商品的庫存量 *\n"); printf("\t\t\t* 4>. 刪除某個商品庫存相關(guān)信息 *\n"); printf("\t\t\t* 5>. 插入某個商品的相關(guān)信息 *\n"); printf("\t\t\t* 6>. 統(tǒng)計商品的庫存總量 *\n"); printf("\t\t\t* 7>. 對每類商品的庫存量排名 *\n"); printf("\t\t\t* 0>. 退出管理系統(tǒng) *\n"); printf("\t\t\t* 歡迎使用本系統(tǒng)!*\n"); printf("\t\t\t========================================================\n"); printf("\t\t\t輸入選項,按回車進入選項: \n"); }
部分運行結(jié)果截圖
以上是“怎么用C語言鏈表實現(xiàn)商品庫存管理系統(tǒng)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。