C++智能柜管理系统
T2020_2_22 人气:0#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); }
加载全部内容