def test_simple_optimal_trade(self): mutator = Purchaser( 50.0, [], {'AGNC': 1}, {'AGNC': 49.0}) self.assertItemsEqual(mutator.optimal_trades(), [Buy(1, 'AGNC')])
def test_optimal_trade_equal_equity_picks_lower_price(self): mutator = Purchaser( 6.0, [], {'AGNC': 1, 'NLY': 1}, {'AGNC': 4.0, 'NLY': 5.0}) self.assertItemsEqual(mutator.optimal_trades(), [ Buy(1, 'AGNC'), ])
def test_optimal_trade_where_already_have_one(self): mutator = Purchaser( 11.0, [Position('AGNC', 1.0)], {'AGNC': 1, 'NLY': 1}, {'AGNC': 10.0, 'NLY': 10.0}) self.assertItemsEqual(mutator.optimal_trades(), [ Buy(1, 'NLY'), ])
def test_optimal_trade_where_three_can_be_bought(self): mutator = Purchaser( 33.0, [], {'AGNC': 1}, {'AGNC': 10.0}) self.assertItemsEqual(mutator.optimal_trades(), [ Buy(3, 'AGNC'), ])
def login(self): '''带前台的登陆界面''' pur_num = input("请输入您的编号:").strip() pur = Basic.queryOnePurchase(pur_num) if not pur: print("不存在该编号.") return False else: self.admin = Purchaser(pur) return True
def test_optimal_trade_where_weighting_buys_would_fail(self): mutator = Purchaser( 16.0, [Position('AGNC', 1.0)], {'AGNC': 1, 'NLY': 2}, {'AGNC': 4.0, 'NLY': 10.0}) self.assertItemsEqual(mutator.optimal_trades(), [ Buy(1, 'NLY'), Buy(1, 'AGNC'), ])
def test_optimal_trade_with_different_weights(self): mutator = Purchaser( 33.0, [], {'AGNC': 2, 'NLY': 1}, {'AGNC': 10.0, 'NLY': 10.0}) self.assertItemsEqual(mutator.optimal_trades(), [ Buy(2, 'AGNC'), Buy(1, 'NLY'), ])
def test_optimal_trade_with_two_targets(self): mutator = Purchaser( 50.0, [], {'AGNC': 1, 'NLY': 1}, {'AGNC': 24.0, 'NLY': 24.0}) self.assertItemsEqual(mutator.optimal_trades(), [ Buy(1, 'AGNC'), Buy(1, 'NLY'), ])
def queryAllPurchaser(): '''前台 查询所有purchase''' info = Basic.queryAllPurchaser() table = Purchaser.getTableaHead() for i in info: table.add_row(i) print(table) print("以上共{}条记录.".format(len(info)))
def queryOnePurchaser(): pur_no = input("请输入需要查询的进货员的编号:").strip() pur = Basic.queryOnePurchase(pur_no) if pur == []: print("该进货员不存在.") return table = Purchaser.getTableaHead() table.add_row(pur) print(table)
class PurchaseManage: def __init__(self): self.admin = None def login(self): '''带前台的登陆界面''' pur_num = input("请输入您的编号:").strip() pur = Basic.queryOnePurchase(pur_num) if not pur: print("不存在该编号.") return False else: self.admin = Purchaser(pur) return True def meta(self): '''操作选项界面''' if not self.login(): return while True: os.system("cls") print("------------------------------------------------") print("1: 查询单个商品信息") print("2: 查看所有商品信息") print("3: 添加商品信息") print("4: 查看所有进货信息") print("5: 进货") print(" 其他数字退出") print("------------------------------------------------") cmd = input("请输入选项:").strip() if cmd == "1": self.queryOne() elif cmd == "2": self.queryAll() elif cmd == "3": self.addOne() elif cmd == "4": self.querAllStock() elif cmd == "5": self.purchase() else: self.admin = None break os.system("pause") def querAllStock(self): generaloperat.queryAllStock() def addOne(self): '''前台 添加一个新的商品,库存数量为0''' com_num = input("请输入要添加的商品编号:").strip() com = Basic.queryOneCommodity(com_num) if com != []: print("该商品已存在不能重复添加.") return com_name = input("请输入商品名称:").strip() com_type = input("请输入商品类型:").strip() com_size = input("请输入规格:").strip() com_price = float(input("请输入单价:").strip()) com_mdate = input("请输入生产日期(格式 年-月-日):").strip() com_edate = input("请输入过期日期(格式 年-月-日):").strip() com_quantity = 0 try: Basic.addOneCommodity(com_num, com_name, com_type, com_size, com_price, com_mdate, com_edate, com_quantity) print("添加成功") except Exception as e: print("添加失败,原因:", e) def purchase(self): '''前台 进货''' com_num = input("请输入要进货的商品编号:").strip() com = Basic.queryOneCommodity(com_num) if com == []: print("该商品不存在,请先添加该商品.") return com_cnt = int(input("请输入进货的数量:").strip()) com_price = float(input("请输入进货的单价:").strip()) in_date = input("请输入进货日期(格式 年-月-日):").strip() try: num = self.getFlowNum() Basic.addOneStock(self.admin.getNo(), com_num, num, com_price, com_cnt, in_date) Basic.addOneCommodityCnt(com_num, com_cnt) print("操作成功.") except Exception as e: print("操作失败,原因:", e) def queryAll(self): '''前台 查看所有商品信息''' generaloperat.queryAllCommodity() def queryOne(self): '''前台 查看一个商品信息''' generaloperat.queryOneCommodity() def exitlogin(self): '''前台 退出登陆 ,保证已经登陆''' self.admin = None def getFlowNum(self): while True: num = Basic.getFlowNum() info = Basic.queryOneStockFlowNum(num) if info == []: return num