您好,登錄后才能下訂單哦!
小編給大家分享一下C++如何實現智能柜管理系統,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
具體內容如下
#define _CRT_SECURE_NO_DEPRECATE #include <iostream> #include <stdlib.h> #include <fstream> #include <cstdlib> #include <ctime> #include <string> using namespace std; struct Node { int pcode; int num; string pnum; time_t tnum; Node *next; Node *prev; }; //取件成功+剩余提示 void rreaction(int l) { cout << "______________________________________________________________"; cout << endl; cout << endl; cout << " 取件成功!!!"; cout << endl; cout << "______________________________________________________________"; cout << endl; system("pause"); system("cls"); if (l != 0) { cout << "______________________________________________________________"; cout << endl; cout << endl; cout << " 當前手機號還有"<< l <<"件未取!!!"; cout << endl; cout << "______________________________________________________________"; cout << endl; system("pause"); system("cls"); } } //取件碼錯誤 void freaction() { cout << "______________________________________________________________"; cout << endl; cout << endl; cout << " 取件碼錯誤!!!"; cout << endl; cout << "______________________________________________________________"; cout << endl; system("pause"); system("cls"); } //取件系統 int pcode() { int j = 0; int l = 0; int list1[25]; int list2[25]; string list3[25]; int list4[25]; ifstream file1("num.txt"); ifstream file2("tnum.txt"); ifstream file3("pnum.txt"); ifstream file4("pcode.txt"); while (file1.peek() != EOF) { file1 >> list1[j]; file2 >> list2[j]; file3 >> list3[j]; file4 >> list4[j++]; } file1.close(); file2.close(); file3.close(); file4.close(); int pcode; cout << "______________________________________________________________"; cout << endl; cout << endl; cout << " 取件碼:"; cin >> pcode; cout << endl; cout << "______________________________________________________________"; for (int i = 0; i < j-1; i++) { if (list4[i] == pcode) { ofstream file1; file1.open("num.txt"); ofstream file2; file2.open("tnum.txt"); ofstream file3; file3.open("pnum.txt"); ofstream file4; file4.open("pcode.txt"); for (int k = 0; k < j-1; k++) { if (k == i)continue; else { if (list3[i] == list3[k])l = l + 1; file1 << list1[k] << endl; file2 << list2[k] << endl; file3 << list3[k] << endl; file4 << list4[k] << endl; } } file1.close(); file2.close(); file3.close(); file4.close(); system("cls"); cout << "______________________________________________________________"; cout << endl; cout << endl; cout << " 柜號"<<list1[i]<<"已打開"; cout << endl; cout << "______________________________________________________________"; cout << endl; system("pause"); system("cls"); return l; } } system("cls"); return -1; } //快遞員取件 Node* dnode(Node* head,int n) { Node *p0; p0 = head; while (p0->prev != NULL) { if (p0->num == n) { if (p0 == head) { head = head->prev; delete p0; return head; } else { p0->prev->next = p0->next; p0->next->prev = p0->prev; delete p0; return head; } } p0 = p0->prev; if (p0->prev == NULL) { cout << "______________________________________________________________"; cout << endl; cout << endl; cout << " 柜號" << n << "為空!!!"; cout << endl; cout << "______________________________________________________________"; cout << endl; system("pause"); system("cls"); return head; } } return head; } //柜子界面 int ginformation(Node* head) { Node *p0; p0 = head; int j = 1; int n; int m[26] = { 0 }; while (p0->prev != NULL) { m[p0->num] = 1; p0 = p0->prev; } cout << "_________________________________________________________________________________________________________________________" << endl; cout << "| 1 | 2 | 3 | 4 | 5 |" << endl; cout << "| "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " | "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " | "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " | "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " | "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " |" << endl; cout << "|_______________________|_______________________|_______________________|_______________________|_______________________|" << endl; cout << "| 6 | 7 | 8 | 9 | 10 |" << endl; cout << "| "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " | "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " | "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " | "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " | "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " |" << endl; cout << "|_______________________|_______________________|_______________________|_______________________|_______________________|" << endl; cout << "| 11 | 12 | 13 | 14 | 15 |" << endl; cout << "| | | | | |" << endl; cout << "| "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " | "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " | "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " | "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " | "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " |" << endl; cout << "| | | | | |" << endl; cout << "|_______________________|_______________________|_______________________|_______________________|_______________________|" << endl; cout << "| 16 | 17 | 18 | 19 | 20 |" << endl; cout << "| | | | | |" << endl; cout << "| "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " | "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " | "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " | "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " | "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " |" << endl; cout << "| | | | | |" << endl; cout << "|_______________________|_______________________|_______________________|_______________________|_______________________|" << endl; cout << "| 21 | 22 | 23 | 24 | 25 |" << endl; cout << "| | | | | |" << endl; cout << "| | | | | |" << endl; cout << "| "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " | "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " | "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " | "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " | "; if (m[j] == 0) { j++; cout << " --- "; } else { j++; cout << "已存放"; } cout << " |" << endl; cout << "| | | | | |" << endl; cout << "| | | | | |" << endl; cout << "|_______________________|_______________________|_______________________|_______________________|_______________________|" << endl; cout << endl << " 輸入要取出的智能柜的編號(輸入'0'返回):"; cin >> n; switch (n) { case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: case 24: case 25: system("cls"); return n; case 0: system("cls"); return n; default: system("cls"); return -1; } } //初始化 Node* init() { Node *head; head = new Node; head->next = NULL; head->prev = NULL; return head; } Node* autoinput(Node* head) { int j = 0; int list1[25]; int list2[25]; string list3[25]; int list4[25]; ifstream file1("num.txt"); ifstream file2("tnum.txt"); ifstream file3("pnum.txt"); ifstream file4("pcode.txt"); while (file1.peek() != EOF) { file1 >> list1[j]; file2 >> list2[j]; file3 >> list3[j]; file4 >> list4[j++]; } file1.close(); file2.close(); file3.close(); file4.close(); for (int i = 0; i < j-1; i++) { Node *p0, *p1; p0 = head; p1 = new Node; p1->num = list1[i]; p1->tnum = list2[i]; p1->pnum = list3[i]; p1->pcode = list4[i]; p1->prev = p0; p0->next = p1; p1->next = NULL; head = p1; } return head; } //柜滿警告 void serror(Node* head) { system("cls"); cout << "____________________________________________________________________________________"; cout << endl; cout << endl; cout << " 無可用的柜子!!!"; cout << endl; cout << "____________________________________________________________________________________"; cout << endl; system("pause"); system("cls"); } //派送快遞 int sedelivery(Node* head) { int list[25]; int i = 0; int k = 0; Node *p0,*p1,*p2; p0 = head; p2 = head; p1 = new Node; while (p2->prev != NULL) { list[i] = p2->num; p2 = p2->prev; i++; } string size,pnum; unsigned seed; time_t now = time(0); seed = time(0); srand(seed); cout << "____________________________________________________________________________________"; cout << endl; cout << endl; cout << " 包裹大小(small | medium | large):"; cin >> size; cout << endl; cout << endl; cout << " 手機號碼:"; cin >> pnum; cout << endl; cout << "____________________________________________________________________________________"; cout << endl; if (pnum.length() != 11) { cout << " 請輸入正確的手機號碼!!!"; cout << endl; system("pause"); system("cls"); return -1; } else p1->pnum = pnum; if (size == "small") { int j = 1; for (; j <= 10; j++) { for (; k <= i; k++) { if (k == i) { p1->num = j; break; } if (j == list[k]) { k = 0; break; } } if (k != 0)break; }if (j == 11)return 0; } else if (size == "medium") { int j = 11; for (; j <= 20; j++) { for (; k <= i; k++) { if (k == i) { p1->num = j; break; } if (j == list[k]) { k = 0; break; } } if (k != 0)break; }if (j == 21)return 0; } else if (size == "large") { int j = 21; for (; j <= 25; j++) { for (; k <= i; k++) { if (k == i) { p1->num = j; break; } if (j == list[k]) { k = 0; break; } } if (k != 0)break; }if (j == 26)return 0; } else { cout << " 請輸入正確的包裹大小!!!"; cout << endl; system("pause"); system("cls"); return -1; } p1->tnum = now; p1->pcode = rand(); p1->prev = p0; p0->next = p1; p1->next = NULL; head = p1; cout << " 派送成功!!!"; cout << endl; cout << " 包裹將投放到" << p1->num << "號柜"; cout << endl; system("pause"); system("cls"); return 1; } //超時快遞 int iexpress(Node* head) { int n; unsigned seed; time_t now = time(0); seed = time(0); srand(seed); Node *p0,*p1; p0 = head; while (p0->prev->prev != NULL)p0 = p0->prev; p1 = p0; while (p0 != NULL) { if (p0->tnum+86400 <= now) { char* dt = ctime(&p0->tnum); cout << "____________________________________________________________________________________"; cout << endl; cout << endl; cout << " 柜號:" << p0->num << endl; cout << " 時間:" << dt << endl; cout << " 手機號碼:" << p0->pnum; cout << endl; cout << "____________________________________________________________________________________"; cout << endl; } else break; p0 = p0->next; } cout << endl << " 輸入要重放的智能柜的編號(輸入'0'返回):"; cin >> n; if (n == 0); else { while (p1 != NULL) { if (p1->tnum + 86400 <= now) { if (p1->num == n) { if (p1 == head) { p1->tnum = now; p1->pcode = rand(); cout << endl << " 操作成功!!!"; cout << endl; cout << endl; system("pause"); system("cls"); return 1; } else { p1->prev->next = p1->next; p1->next->prev = p1->prev; p1->tnum = now; p1->pcode = rand(); p1->prev = head; head->next = p1; p1->next = NULL; cout << endl << " 操作成功!!!"; cout << endl; cout << endl; system("pause"); system("cls"); return 2; } } } else { cout << endl << " 操作失敗!!!"; cout << endl; cout << endl; system("pause"); system("cls"); return 1; } p1 = p1->next; } } system("cls"); return 1; } //文件輸出 void iinformation(Node* head) { int j = 0; Node *p0; p0 = head; int list1[25]; int list2[25]; string list3[25]; int list4[25]; while (p0->prev != NULL) { list1[j] = p0->num; list2[j] = p0->tnum; list3[j] = p0->pnum; list4[j++] = p0->pcode; p0 = p0->prev; } ofstream file1; file1.open("num.txt"); ofstream file2; file2.open("tnum.txt"); ofstream file3; file3.open("pnum.txt"); ofstream file4; file4.open("pcode.txt"); for (j = j - 1; j >= 0;) { file1 << list1[j] << endl; file2 << list2[j] << endl; file3 << list3[j] << endl; file4 << list4[j--] << endl; } file1.close(); file2.close(); file3.close(); file4.close(); } //快遞員系統界面 int initialization(Node* head) { int n; cout << "____________________________________________________________________________________" << endl; cout << "| |" << endl; cout << "| 智能柜管理系統 |" << endl; cout << "| |" << endl; cout << "| 1.取出快遞 |" << endl; cout << "| |" << endl; cout << "| 2.放置快遞 |" << endl; cout << "| |" << endl; cout << "| 3.查詢超時快遞 |" << endl; cout << "| |" << endl; cout << "| 0.注銷 |" << endl; cout << "| |" << endl; cout << "|__________________________________________________________________________________|" << endl; cout << endl << " 輸入對應數字進入相應功能:"; cin >> n; switch (n) { case 1: system("cls"); return 1; case 2: system("cls"); return 2; case 3: system("cls"); return 3; case 0: system("cls"); return 0; default: system("cls"); return -1; } } //登錄錯誤提示 void lerror() { cout << "____________________________________________________________________________________"; cout << endl; cout << endl; cout << " 賬號或密碼錯誤!!!"; cout << endl; cout << endl; cout << "____________________________________________________________________________________"; cout << endl; system("pause"); system("cls"); } //登錄系統 int lsystem() { int j = 0; int anumber; int password; int list1[10]; int list2[10]; ifstream file1("anumber.txt"); while (!file1.eof()) file1 >> list1[j++]; file1.close(); j = 0; ifstream file2("password.txt"); while (!file2.eof()) file2 >> list2[j++]; file2.close(); cout << "____________________________________________________________________________________"; cout << endl; cout << endl; cout << " 賬號:"; cin >> anumber; cout << endl; cout << endl; cout << " 密碼:"; cin >> password; cout << endl; cout << "____________________________________________________________________________________"; for (int i = 0;i < j; i++) { if (list1[i] == anumber && list2[i] == password) { system("cls"); return 1; } else { system("cls"); return -1; } } return -1; } //系統界面 int linterface() { int n; cout << "____________________________________________________________________________________" << endl; cout << "| |" << endl; cout << "| 智能柜管理系統 |" << endl; cout << "| |" << endl; cout << "| 1.取快遞 |" << endl; cout << "| |" << endl; cout << "| 2.快遞員登錄 |" << endl; cout << "| |" << endl; cout << "| 0.退出 |" << endl; cout << "| |" << endl; cout << "|__________________________________________________________________________________|" << endl; cout << endl << " 輸入對應數字進入相應功能:"; cin >> n; switch (n) { case 1: system("cls"); return 1; case 2: system("cls"); return 2; case 0: exit(1); default: system("cls"); return -1; } } /* n為系統界面返回值 1為取件系統 2為快遞員登錄系統界面 -1為循環 m為取件系統返回值 -1為取件失敗 其他為取件成功 j為登錄系統返回值 1為登陸成功 -1為登錄失敗 k為快遞員系統界面返回值 1為柜子界面 2為派送快遞 3為超時快遞 0為注銷 l為柜子界面返回值 0為返回 -1為循環 其他為快遞員取件 p為派送快遞返回值 0為柜滿 1為成功 -1為返回 o為超時快遞返回值 1為成功 2為失敗 */ int main() { int n,m,j,k,l,p,o; do { n = linterface(); if (n == 1) { m = pcode(); if (m == -1) { freaction(); n = -1; } else { rreaction(m); n = -1; } } else if (n == 2) { j = lsystem(); if (j == 1) { Node *head; head = init(); head = autoinput(head); do { k = initialization(head); if (k == 1) { do { l = ginformation(head); if (l > 0) { head = dnode(head, l); l = -1; } else if (l == 0) { k = -1; break; } } while (l == -1); } else if (k == 2) { p = sedelivery(head); if (p == 0) { serror(head); k = -1; } else if (p == 1) { head = head->next; k = -1; } else if (p == -1) { k = -1; } } else if (k == 3) { o = iexpress(head); if(o == 2)head = head->next; k = -1; } else if (k == 0){ iinformation(head); n = -1; break; } else { k = -1; } } while (k == -1); } else { lerror(); n = -1; } } } while (n == -1); }
以上是“C++如何實現智能柜管理系統”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。