C++如何实现智能柜管理系统
短信预约 -IT技能 免费直播动态提醒
小编给大家分享一下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; }}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++如何实现智能柜管理系统”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341