详细设计说明书
Class RealTime Graph Private stockID //动态数组存储股票价格 ArrayList stockPrice[] Public: //在windowform类中recievemess 后更新当前价格,即在数组后添 加一项最新价格 updatePrice(price,sotckPrice) drawPicture(stockID, stockPrice)
Class stockData 订单号 public int ListID; public int UsrID; public string StockIndex; public flout Price; public int Count; public bool Isbuy; 该类即为向服务端传送数据时的包 详细设计说明书
服务器端
Class TradeService
StockQueue Private stockData data stockData next Public DeleteQueueHead(); AddStockData();
详细设计说明书
该类还要补充若干个StockQueue类型的成员变量
private void StartListening() {
byte[] ipadre = new byte[] { 10, 82, 14, 47}; IPAddress ip=new IPAddress(ipadre); m_Tcplisten = new TcpListener(ip,m_Port); m_Tcplisten.Start(); while (true) { try {
Socket s = m_Tcplisten.AcceptSocket(); clientSocket = s;
m_serverThread = new Thread(new ThreadStart(serviceClient));//多线程deal各个连接用户的socket
m_serverThread.Start(); }
catch (Exception E) {
Console.WriteLine(E.ToString()); } }
}
如以上startlistening代码所示,监听创造一个连接客户端的套接字,再用多线程处理该连接,而服务器端则继续监听新的套接字。
这样主要的交易代码就可以放入ServiceClient这个函数中,当有新客户信息连入时,即可进行查询数据库,对比插入股票队列等工作
详细设计说明书
Class ClientInfo
//这个类记录了客户端的socket
详细设计说明书
数据访问层类图
Class ADOSQLserver Private dataSet //ds userTable 下可有 4 个 dataTable stockTable User_stockTable tempTable Public: ////验证用户信息 Bool CheckUserlogin(string usridstring password); Bool CheckUserMoney(string userID); Bool CheckUserStockCount(string userID); ////交易成功修改用户和股票信息 Void updateUserTable(Class stockData) Void updateStockTable(Class stockData) Void updateUser_stockTable(Class stockData) ///还未成功的交易放入临时表, Void updateTemTable(Class stockData) 注意,每次交易成功要删除临时表的信息 Void deleteInfo(Class stockData) Class stockData 订单号 public int ListID; public int UsrID; public string StockIndex; public int Prince; public int Count; public bool Isbuy; 该类即为向服务端传送数据时的包