• 个人简介

    你已急哭
    你已急哭 你已急哭
    你已急哭
    #include<bits/stdc++.h>
    #include<windows.h>
    using namespace std;
    
    // 新增:游戏说明函数
    void showHelp() {
    	system("cls");
    	cout << "==================== 股市模拟游戏完整说明 ====================\n";
    	cout << "一、基础规则\n";
    	cout << "1. 初始本金 100000 元,纯模拟炒股,无真实金钱交易\n";
    	cout << "2. 系统自带4支默认股票,会随天数自动随机涨跌(-12%~+12%)\n";
    	cout << "3. 只有大盘开盘状态下才能买卖股票、刷新每日股价;休市禁止一切交易\n\n";
    
    	cout << "二、普通股民玩法(1-5功能)\n";
    	cout << "1 查看市场行情:浏览全部股票代码、名称、现价、涨跌幅、是否停牌\n";
    	cout << "2 买入股票:输入代码+数量,扣现金买入计入持仓\n";
    	cout << "3 卖出股票:卖出持仓股票,资金原路返回可用余额\n";
    	cout << "4 查看我的资产:显示现金、持仓个股、持仓均价、个股市值、总资产\n";
    	cout << "5 更新股价:模拟新的一天到来,系统股自动随机波动\n\n";
    
    	cout << "三、老板创业玩法(6-9开公司专属)\n";
    	cout << "6 自己开公司:最低10万现金,开办手续费扣除5万;自定义股票代码、公司名、行业、初始股价(1-20)、总股本(1000-100000);创建后自动持有自家公司50%股份上市交易\n";
    	cout << "7 老板调控自家股票:仅能操作自己创立的公司,包含小幅拉升、小幅打压、发布利好大涨、发布利空暴跌;自建股票不会随每日自动波动,完全由你手动控盘\n";
    	cout << "8 发放股东分红:自定义每股分红金额,所有持有该股票的股东均可获得现金分红\n";
    	cout << "9 增发股票:增加公司总股本,可用于稀释股份、扩容上市\n\n";
    
    	cout << "四、大盘全局控制(10号功能)\n";
    	cout << "10 大盘开盘/休市:开盘后可交易、可刷新股价;休市停止买卖、停止股价刷新;也可对单只股票停牌复牌限制交易\n\n";
    
    	cout << "五、游戏目标\n";
    	cout << "普通玩家:低吸高抛交易系统股,积累总资产冲击千万上亿\n";
    	cout << "老板玩家:创立上市公司,控盘股价吸引散户买入,靠分红、拉高套现赚取巨额资金\n";
    	cout << "===============================================================\n";
    	cout << "按回车返回主菜单...";
    	cin.get();
    	cin.get();
    }
    
    // 股票类
    struct Stock {
    	string code; // 股票代码
    	string name; // 股票名称
    	double price; // 当前价格
    	double change; // 涨跌幅
    	bool isOpen; // 是否开盘交易
    	string owner; // 拥有者(自己开的公司)
    	int totalShares;// 总股本
    };
    
    // 持仓类
    struct Hold {
    	string code;
    	int num;
    	// 持股数量
    	double buyPrice; // 买入均价
    };
    
    vector<Stock> stockList;
    vector<Hold> myHold;
    double money = 1000000000000.0;
    bool marketOpen = true; // 大盘是否开盘
    
    void initStock() {
    	stockList.push_back({"000001", "平安银行", 10.5, 0, true, "", 1000000});
    	stockList.push_back({"600000", "浦发银行", 8.2, 0, true, "", 1000000});
    	stockList.push_back({"300001", "特锐德", 15.3, 0, true, "", 1000000});
    	stockList.push_back({"601318", "中国平安", 42.6, 0, true, "", 1000000});
    }
    
    // 自己开公司
    void createCompany() {
    	if (money < 100000) {
    		cout << "资金不足!需要至少10万资金开公司(手续费5万)" << endl;
    		return;
    	}
    	money -= 50000; // 手续费
    
    	string code, name, industry;
    	double initPrice;
    	int total;
    
    	cout << "请输入自定义股票代码:";
    	cin >> code;
    	cout << "请输入公司名称:";
    	cin >> name;
    	cout << "请输入行业(科技/餐饮/地产/新能源等):";
    	cin >> industry;
    	cout << "请输入初始股价(1~20):";
    	cin >> initPrice;
    	cout << "请输入总股本(1000~100000):";
    	cin >> total;
    
    	if (initPrice < 1 || initPrice > 20 || total < 1000 || total > 100000) {
    		cout << "参数非法!" << endl;
    		money += 50000;
    		return;
    	}
    
    // 检查代码重复
    	for (auto &s : stockList) {
    		if (s.code == code) {
    			cout << "股票代码已存在!" << endl;
    			money += 50000;
    			return;
    		}
    	}
    
    	stockList.push_back({code, name, initPrice, 0, true, "me", total});
    // 自动持有50%股份
    	myHold.push_back({code, total / 2, initPrice});
    	cout << "公司创建成功!已自动持有50%股份!" << endl;
    }
    
    // 老板调控自家股票:拉升/打压
    void bossControlStock() {
    	cout << "1.拉升股价 2.打压股价 3.发布利好(大涨) 4.发布利空(大跌)" << endl;
    	int op;
    	cin >> op;
    	string code;
    	cout << "输入你的公司股票代码:";
    	cin >> code;
    
    	bool find = false;
    	for (auto &s : stockList) {
    		if (s.code == code && s.owner == "me") {
    			find = true;
    			double rate;
    			if (op == 1) rate = 0.08;
    			else if (op == 2) rate = -0.08;
    			else if (op == 3) rate = 0.20;
    			else if (op == 4) rate = -0.20;
    			else {
    				cout << "无效操作" << endl;
    				return;
    			}
    
    			s.price *= (1 + rate);
    			s.change = rate * 100;
    			cout << "操作完成!当前价格:" << fixed << setprecision(2) << s.price << endl;
    			break;
    		}
    	}
    	if (!find) cout << "不是你创建的公司!" << endl;
    }
    
    // 分红
    void shareDividend() {
    	string code;
    	double perShare;
    	cout << "输入你的公司代码:";
    	cin >> code;
    	cout << "每股分红金额:";
    	cin >> perShare;
    
    	for (auto &s : stockList) {
    		if (s.code == code && s.owner == "me") {
    			// 简单实现:自己扣钱分给所有持股人
    			for (auto &h : myHold) {
    				if (h.code == code) {
    					money += h.num * perShare;
    				}
    			}
    			cout << "分红发放成功!" << endl;
    			return;
    		}
    	}
    	cout << "操作失败!" << endl;
    }
    
    // 增发股票
    void addShares() {
    	string code;
    	int num;
    	cout << "输入你的公司代码:";
    	cin >> code;
    	cout << "增发数量:";
    	cin >> num;
    
    	for (auto &s : stockList) {
    		if (s.code == code && s.owner == "me") {
    			s.totalShares += num;
    			cout << "增发成功,当前总股本:" << s.totalShares << endl;
    			return;
    		}
    	}
    	cout << "操作失败!" << endl;
    }
    
    // 大盘开盘/休市
    void openCloseMarket() {
    	cout << "1.开盘 2.休市" << endl;
    	int op;
    	cin >> op;
    	if (op == 1) {
    		marketOpen = true;
    		cout << "股市已开盘,可以交易!" << endl;
    	} else {
    		marketOpen = false;
    		cout << "股市已休市,暂停交易!" << endl;
    	}
    }
    
    // 波动:-12% ~ +12%,幅度更大,随机不稳定
    void updatePrice() {
    	if (!marketOpen) {
    		cout << "当前休市,无法更新股价!" << endl;
    		return;
    	}
    	static bool first = true;
    	if (first) {
    		srand((unsigned)time(NULL));
    		first = false;
    	}
    	for (auto &s : stockList) {
    		if (!s.isOpen) continue; // 自己开的公司不自动随机波动,只能老板手动调控 
    		if(s.owner == "me") continue;
    
    		double base = (rand() % 241 - 120) / 1000.0;
    		double randomFactor = (rand() % 5 + 7) / 10.0; // 0.7 ~ 1.2
    		double r = base * randomFactor;
    
    		s.change = r * 100;
    		s.price *= (1 + r);
    		if (s.price < 0.01) s.price = 0.01;
    	}
    }
    
    void showStock() {
    	cout << "\n===== 市场股票行情 ===" << endl;
    	if (!marketOpen) cout << "【当前休市】" << endl;
    	cout << left << setw(10) << "代码" << setw(12) << "名称" << setw(10) << "价格" << setw(10) << "涨跌幅(%)" << setw(10) << "是否开盘" << setw(10) << "我的公司" << endl;
    	for (auto &s : stockList) {
    		cout << left << setw(10) << s.code << setw(12) << s.name << setw(10) << fixed << setprecision(2) << s.price << setw(10) << fixed << setprecision(2) << s.change << setw(10) << (s.isOpen ? "是" : "否") << setw(10) << (s.owner=="me" ? "√" : "") << endl;
    	}
    }
    
    void buyStock(string code, int num) {
    	if (!marketOpen) {
    		cout << "当前休市,禁止交易!" << endl;
    		return;
    	}
    	Stock target;
    	bool find = false;
    	for (auto &s : stockList) {
    		if (s.code == code) {
    			if (!s.isOpen) {
    				cout << "该股票停牌,无法买入!" << endl;
    				return;
    			}
    			target = s;
    			find = true;
    			break;
    		}
    	}
    	if (!find) {
    		cout << "股票不存在!" << endl;
    		return;
    	}
    
    	double cost = target.price * num;
    	if (cost > money) {
    		cout << "资金不足,无法买入!" << endl;
    		return;
    	}
    
    	money -= cost;
    
    	bool has = false;
    	for (auto &h : myHold) {
    		if (h.code == code) {
    			h.buyPrice = (h.buyPrice * h.num + target.price * num) / (h.num + num);
    			h.num += num;
    			has = true;
    			break;
    		}
    	}
    	if (!has) {
    		myHold.push_back({code, num, target.price});
    	}
    	cout << "买入成功!" << endl;
    }
    
    void sellStock(string code, int num) {
    	if (!marketOpen) {
    		cout << "当前休市,禁止交易!" << endl;
    		return;
    	}
    	for (auto &h : myHold) {
    		if (h.code == code) {
    			if (h.num < num) {
    				cout << "持股数量不足!" << endl;
    				return;
    			}
    			double nowPrice = 0;
    			for (auto &s : stockList) {
    				if (s.code == code) {
    					if (!s.isOpen) {
    						cout << "该股票停牌,无法卖出!" << endl;
    						return;
    					}
    					nowPrice = s.price;
    					break;
    				}
    			}
    			double earn = nowPrice * num;
    			money += earn;
    			h.num -= num;
    			if (h.num == 0) {
    				for (auto it = myHold.begin(); it != myHold.end(); ++it) {
    					if (it->code == code) {
    						myHold.erase(it);
    						break;
    					}
    				}
    			}
    			cout << "卖出成功!" << endl;
    			return;
    		}
    	}
    	cout << "未持有该股票!" << endl;
    }
    
    void showAsset() {
    	cout << "\n===== 我的资产 =====" << endl;
    	cout << "可用资金:" << fixed << setprecision(2) << money << endl;
    	double stockValue = 0;
    	cout << left << setw(10) << "代码" << setw(10) << "持股数" << setw(12) << "买入均价" << setw(12) << "当前市值" << endl;
    	for (auto &h : myHold) {
    		double p = 0;
    		for (auto &s : stockList) {
    			if (s.code == h.code) {
    				p = s.price;
    				break;
    			}
    		}
    		double val = p * h.num;
    		stockValue += val;
    		cout << left << setw(10) << h.code << setw(10) << h.num << setw(12) << fixed << setprecision(2) << h.buyPrice << setw(12) << fixed << setprecision(2) << val << endl;
    	}
    	cout << "股票总市值:" << fixed << setprecision(2) << stockValue << endl;
    	cout << "总资产:" << fixed << setprecision(2) << money + stockValue << endl;
    }
    
    void menu() {
    	cout << "\n===== 模拟股票交易系统(可开公司) =====" << endl;
    	cout << "1. 查看市场行情" << endl;
    	cout << "2. 买入股票" << endl;
    	cout << "3. 卖出股票" << endl;
    	cout << "4. 查看我的资产" << endl;
    	cout << "5. 更新股价(模拟下一天)" << endl;
    	cout << "6. 自己开公司(创建股票)" << endl;
    	cout << "7. 老板调控自家股票" << endl;
    	cout << "8. 发放股东分红" << endl;
    	cout << "9. 增发股票" << endl;
    	cout << "10. 大盘开盘/休市" << endl;
    	cout << "11. 查看完整游戏说明" << endl;
    	cout << "0. 退出" << endl;
    	cout << "请输入操作:";
    }
    
    int main() {
    	initStock();
    	int op;
    	while (true) {
    		menu();
    		cin >> op;
    		if (op == 0) break;
    		if (op == 1) {
    			showStock();
    		} else if (op == 2) {
    			string c;
    			int n;
    			cout << "输入股票代码:";
    			cin >> c;
    			cout << "输入买入数量:";
    			cin >> n;
    			buyStock(c, n);
    		} else if (op == 3) {
    			string c;
    			int n;
    			cout << "输入股票代码:";
    			cin >> c;
    			cout << "输入卖出数量:";
    			cin >> n;
    			sellStock(c, n);
    		} else if (op == 4) {
    			showAsset();
    		} else if (op == 5) {
    			updatePrice();
    			cout << "股价已更新!" << endl;
    		} else if (op == 6) {
    			createCompany();
    		} else if (op == 7) {
    			bossControlStock();
    		} else if (op == 8) {
    			shareDividend();
    		} else if (op == 9) {
    			addShares();
    		} else if (op == 10) {
    			openCloseMarket();
    		} else if (op == 11) {
    			showHelp();
    		}
    	}
    	return 0;
    }
    
    
  • 最近活动