Files
2025-08-11 00:20:16 +08:00

145 lines
3.1 KiB
C++
Raw Permalink 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.

#include <iostream>
#include <cstring>
#include "package.h"
#include "user.h"
extern std::string Crypt(std::string x,std::string y){
std::string temp;
temp = x;
int t;
t = (int)y[0];
t /= 5;
for (int i = 0;i < x.size();i++) {
temp[i] += t;
}
return temp;
}
Package::Package() {
name = "#UNDEFINED_N:P";
pid = "#UNDEFINED_P:P";
owner = new User;
jichu_time = "#UNDEINFED_JT:P";
songda_time = "#UNDEINFED_SD:P";
quhuo_time = "#UNDEFINED_QH:P";
is_picked = false;
volume = -1;
mass = -1;
distance = -1;
stockin = NULL;
stock_num = 0;
is_vfast = false;
}
Package::Package(std::string n, std::string pi, std::string j, std::string s, User* o, double v, double m, double d,bool v0) {
//owner = new User;
name = n;
pid = pi;
owner = o;
jichu_time = j;
songda_time = s;
quhuo_time = "#REQUIRD";
is_picked = false;
volume = v;
distance = d;
mass = m;
is_vfast = v0;
stockin = NULL;
stock_num = 0;
}
//有Bug懒得改了尽量不用用Stock里面的inStock
Package& Package::stocked(Stock* x) {
stockin = x;
stock_num = x->Check_used();
x->inStock(*this);
if (pid == x->Check_Product(x->Check_used())) {
cout << "Successfully Stocked" << endl;
}
else {
cout << "Stock Error! Please Try Again" << endl;
}
return *this;
}
void Package::create_vc() {
verify_code = Crypt(owner->Check_uid(), pid);
cout << "Verify Code Created" << endl;
}
void Package::verifing(std::string n,std::string time) {
if (verify_code == n) {
quhuo_time = time;
is_picked = true;
stockin->outStock(*this);
return;
}
else {
cout << "Verify Code WRONG!" << endl;
return;
}
if (stockin->Check_Product(stock_num) == "-1") {
cout << "Successfully Picked!" << endl;
}
else {
cout << "Can't Be Selected" << endl;
}
}
Package& Package::alter_stock_num(int n) {
stock_num = n;
return *this;
}
Package& Package::alter_stockin(Stock& x) {
stockin = &x;
return *this;
}
std::string Package::Check_pid() {
return pid;
}
std::string Package::Check_vc() {
return verify_code;
}
int Package::Check_stock_num() {
return stock_num;
}
User* Package::Check_User() {
return owner;
}
double Package::create_fee() {
double fee;
if (!is_vfast) fee = 5 * mass + 0.5 * volume;
if (is_vfast) fee = 1.3 * (5 * mass + 0.5 * volume);
return fee;
}
Package& Package::operator=(const Package& x) {
name = x.name;
pid = x.pid;
owner = x.owner;
jichu_time = x.jichu_time;
songda_time = x.songda_time;
quhuo_time = x.quhuo_time;
is_picked = x.is_picked;
verify_code = x.verify_code;
volume = x.volume;
mass = x.mass;
distance = x.distance;
is_vfast = x.is_vfast;
stockin = x.stockin;
stock_num = x.stock_num;
return *this;
}
void Package::display() {
cout << "Package Name : " << name << endl;
cout << "Package Pid : " << pid << endl;
cout << "Package Owner : (Displayed Down)" << endl;
owner->display();
cout << "Package jichu_time : " << jichu_time << endl;
cout << "Package songda_time : " << songda_time << endl;
cout << "Package quhuo_time : " << quhuo_time << endl;
cout << "Package Picked? : " << is_picked << endl;
cout << "Package Mass : " << mass << endl;
cout << "Package Volume : " << volume << endl;
cout << "Package Distance : " << distance << endl;
}