Files
C-Projects/Cai_Niao_E_Station/main.cpp
2025-08-11 00:20:16 +08:00

217 lines
6.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
Developed By
...:::^^^^^^^^^:::..
.::^^~~~~~~~~~~~~~~~~~^::..
.:~?JYY?~^~^^^^^^^~~~~~~~~?YYJ?!:.
.:!7!!!7J5!^^^^^^^^^^^^~^!5Y7!!!7!^:.
.:^~~~~^^^^~7^^^^^^^^^^^^^^7!^~~~~~~~~:.
.:~!!^::::::::^^::::::::^^^!!^::::^^^~~~^:.
.:::5GGY. ..::::::^::YGG5. .^^:.
.^:.7YY7:::::::....::..::^..!YY?^:^^:::....^~:.
:~~~^^^^~~^^^:::::......:::^:^^^~~~~~~~~~~~!~^.
.:~~~~~~~~~~^^:::........:::::^^^~~~~~~~~~~~!~^:
.^~~~~~~^^^^^^:::::::::::::::^^^^^~~~~~~~~~~!~^:
.^~~~~~~^^^^^^^::::::::::::^^^^^^^~~~~~~~~~~!~^:
.:~~~~~7!^^^^^^^^^^^:::^^^^^^^^^~~~~~~~7!~~!!~^.
.^~~~~!J!^^^^^^^^^^^^^^^^^^^^~~~~~~~~?J~~!!!~:.
.:^~~~~!Y?~^^~~^^^^^^^^^^^~~~~~~~~~7YJ!~!!!~^.
.:^~~~~~J5J7~~^^^^~~~~~~~~~~~~~!?YY?~~!!!~^.
.:^~~~~~!?Y55J?7!!~~~~~~!77JY55Y7~~!!!~~:.
.:^~~~~~~!7JY555P5555P555Y?7!~~!!!!~^:.
.:^~~!~~~~~~~!!!!!!!!~~~~~!!!!~~^:.
.::^~~!!!!!~~~~~~!!!!!!!!~~^:..
..:^^~~~~~~!!!~~~~~^^::..
....:::::::::...
*/
#include <iostream>
#include <cstring>
#include <stdexcept>
#include "package.h"
#include "user.h"
#include "stock.h"
#include "delivery_method.h"
#include "exception.h"
#define Endl std::endl
//Exception E;
Package* k;
User* p;
std::string Crypt(std::string x, std::string y);
using std::cin;
using std::cout;
using std::endl;
using std::string;
extern Stock cainiao[10];
extern User temp;
extern void PRINT_LIU_YING();
int main() {
//先print一下哈哈
//PRINT_LIU_YING();
//初始化人员列表
p = new User[20];
p[1].reg("Zhang", "111111198301", "000011");
p[2].reg("Wang", "12211198301", "000012");
p[3].reg("Li", "13311198301", "000013");
p[4].reg("Zhao", "14411198301", "000014");
p[5].reg("Sun", "15511198301", "000015");
p[6].reg("Zhou", "16611198301", "000016");
p[7].reg("Xu", "17711198301", "000017");
p[8].reg("Wan", "18811198301", "000018");
p[9].reg("Liu", "19911198301", "000019");
p[10].reg("Su", "10011198301", "000020");
p[11].reg("Green", "10111198301", "000021");
//测试检测手机号是否为11位功能
/*旧版
try {
std::string test01, test02, test03;
test01 = "ERROR";
test02 = "98301";
test03 = "000022";
p[12].reg(test01, test02, test03);
if (test02.size() != 11) {
throw E.User_Phone_Number_Error();
delete &p[12];
}
}
catch (const std::string& x) {
cout << x << endl;
}*/
//新版
try {
std::string test01, test02, test03;
test01 = "ERROR";
test02 = "98301";
test03 = "000022";
p[12].reg(test01, test02, test03);
if (test02.size() != 11) {
throw Etest::User_Phone_Number_Error();
delete& p[12];
}
}
catch (const std::runtime_error& x) {
cout << x.what() << endl;
}
k = new Package[TOTAL0];
k[1] = Package("Dildo", "pid1919810", "2025-05-08-00-00-00", "2025-05-09-10-00-00", &temp, 5.4, 10.0, 10.3, false);
k[2] = Package("Clothes", "10002", "2025-05-06-14-15-00", "2025-05-08-11-30-00", &p[2], 1.5, 8.0, 5.6, false);
k[3] = Package("Laptop", "10003", "2025-05-05-10-00-00", "2025-05-06-09-20-00", &p[3], 3.0, 15.0, 20.2, false);
k[4] = Package("Shoes", "10004", "2025-05-07-16-00-00", "2025-05-09-08-00-00", &p[4], 2.8, 9.5, 6.1, false);
k[5] = Package("Snacks", "10005", "2025-05-08-09-45-00", "2025-05-09-14-00-00", &p[5], 1.2, 5.0, 3.7, false);
k[6] = Package("Monitor", "10006", "2025-05-06-11-20-00", "2025-05-07-10-10-00", &p[6], 6.5, 20.0, 18.9, false);
k[7] = Package("Tablet", "10007", "2025-05-07-13-50-00", "2025-05-08-17-00-00", &p[3], 1.8, 14.0, 10.5, false);
k[8] = Package("Camera", "10008", "2025-05-05-07-30-00", "2025-05-06-08-00-00", &p[3], 2.6, 11.0, 9.2, false);
k[9] = Package("Glasses", "10009", "2025-05-06-12-00-00", "2025-05-07-15-30-00", &p[9], 0.8, 4.0, 2.0, false);
k[10] = Package("Headphones", "10010", "2025-05-08-10-00-00", "2025-05-09-13-00-00", &p[10], 1.1, 6.0, 4.4, false);
k[11] = Package("Books", "10011", "2025-05-07-08-30-00", "2025-05-08-10-00-00", &p[1], 2.3, 12.5, 8.0, false);
//测试用户系统
cout << "Display User :" << endl;
temp.display();
p[2].display();
cout << "Alter p2" << Endl;
p[2].alt_name("W..");
p[2].alt_pn("110");
p[2].display();
cout << "测试结束" << endl;
cout << endl;
//测试包裹存储驿站、超额警报
cout << "检测: Stock k1 ~ k11 to Stock0, Stock1" << Endl;
cainiao[0].inStock(k[1]);
cainiao[0].inStock(k[2]);
cainiao[0].inStock(k[3]);
cainiao[0].inStock(k[4]);
cainiao[0].inStock(k[5]);
cainiao[0].inStock(k[6]);
cainiao[0].inStock(k[7]);
cainiao[0].inStock(k[8]);
cainiao[0].inStock(k[9]);
cainiao[1].inStock(k[10]);
cainiao[1].inStock(k[11]);
cout << "已存入" << Endl;
cout << "展示库存DisPlay Stock" << Endl;
for (int i = 0;i < 10;i++) {
cout << *(cainiao[0].Check_ProductAll() + i) << " ";
}
cout << Endl;
for (int i = 0;i < 10;i++) {
cout << *(cainiao[1].Check_ProductAll() + i) << " ";
}
cout << endl;
cout << "测试结束" << endl;
//测试取出包裹的对应
//k1.display();
cout << "测试取出包裹的对应" << Endl;
k[1].create_vc();
string Code = Crypt(temp.Check_uid(), k[1].Check_pid());
k[1].verifing(Code, "2025-05-10-10-00-00");
k[1].display();
cout << endl;
cout << "展示库存变化" << Endl;
for (int i = 0;i < 10;i++) {
cout << *(cainiao[0].Check_ProductAll() + i) << " ";
}
cout << Endl;
for (int i = 0;i < 10;i++) {
cout << *(cainiao[1].Check_ProductAll() + i) << " ";
}
cout << Endl;
//向空Stock加入包裹从小往上加
cout << "测试向空Stock加入包裹从小往上加" << endl;
cainiao[0].inStock(k[1]);
for (int i = 0;i < 10;i++) {
cout << *(cainiao[0].Check_ProductAll() + i) << " ";
}
cout << Endl;
for (int i = 0;i < 10;i++) {
cout << *(cainiao[1].Check_ProductAll() + i) << " ";
}
cout << "测试结束" << endl;
cout << Endl;
//查询用户的包裹
cout << "测试查询用户包裹" << Endl;
int dw = 3;
cout << " 先展示用户信息" << endl;
p[dw].display();
cout << "再展示货物信息" << Endl;
k[3].display();
cout << "下面开始查询" << Endl;
Package* pkgs = p[dw].Check_Package();
for (int i = 0;i < TOTAL0 - 1;i++){
if(pkgs[i].Check_pid() != "#UNDEFINED_P:P" )
cout << pkgs[i].Check_pid() << " ";
}
cout << Endl;
//查询包裹状态,拥有者
k[2].display();
//测试付费系统
cout << "Test Over" << endl;
return 0;
}