⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stkfile.c

📁 用GTK+做用户界面 股票每日分时行情用数据库管理——MYSQL 软件应用方式客户端/服务器模式 基于TCP/IP的C/S通信模式 实现STOCK
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <unistd.h>#include <fcntl.h>#include <sys/stat.h>#include "jszb.h"#include "gmclient.h"#include "stocksql.h"#include "stockclient.h"//股票初始化结构STOCKINIT stockinit;/*股票明细结构*/STOCKGPMX gpmx;//股票排行榜列表结构,取出标志,取出数量STOCKGPMXLIST *gpmxlist;int frechgpmxlistflag;int gpmxlistsum;/*股票分时数据结构(包含四小时数据量)*/STOCKFS fs[MAXFSLINENUM];/*取出的分时线数量*/int fssum;/*分时数据取出标志 0--未取出 1-取出*/int frechfsflag;/*上海.深圳股票名称表*/STOCKNAMETBL *shtbl;STOCKNAMETBL *sztbl;/*股票代码表取出标志  0--未取出 1--取出*/int frechtblflag;/*上海.深圳股票总数*/int shstocksum;int szstocksum;/* stock k line struct*/STOCK *stock;/*是否取出K线结构 0--no 1--yes*/int frechflag;/* the sum for frech stock k line从文件中取出K线总数*/int stocksum;/*股票买卖分笔明细*/STOCKTRACE trace[MAXTRACENUM];/*股票买卖分笔明细数目*/int tracesum;/*股票代码和名称*/char stockcode[10];char stockname[20];/* 区间内股票最高价*/int areazgj;/* 区间内股票最低价*/int areazdj;/* 区间内成交量最大值*/long areacjl;/*分时数据最高价,最低价,最大成交量*/int fspricezgj;int fspricezdj;int fsmaxcolume;/*k线结构起始位址*/int areastart;/*股票日线文件路径*/char stockpath[50];void stock_init(){   int i,cur,total;      frechtblflag=0;   frechflag=0;   frechfsflag = 0;   fssum = 0;   stocksum=0;   frechgpmxlistflag = 0;   gpmxlistsum = 0;    tracesum = 0;   areazgj=10000;   areazdj=0;   areastart=1;   strcpy(stockpath,"./day/");      stocksql->getSqlInitData();//判断是否已登录服务器   if(stkcli->isLoginServer()){//判断股票代码表是否已更新      if(stockinit.nametblbz == 0){          if(stkcli->dealNameTbl()){              frechtblflag = 1;               stockinit.nametblbz = 1;          }      }      else{        frechStockNameTbl();      }      //判断当日是否已做初始化    if(stockinit.initflag == 0){//初始化股票明细表     if(!stocksql->isExistGpmxTable(SHBZ))         stocksql->createGpmxTable(SHBZ);     else         stocksql->deleteGpmxData(SHBZ);     if(!stocksql->isExistGpmxTable(SHBZ))         stocksql->createGpmxTable(SZBZ);     else         stocksql->deleteGpmxData(SZBZ);      stocksql->insertGpmxDataFromNameTblWithZsp();//初始化股票分时,分笔成交表    StartProgress ("正在进行初始化,请稍候...");
     total=2*(shstocksum+szstocksum);     cur=1;    if(stocksql->selectFsDatabase()){      for(i=1;i<=shstocksum;i++,cur++){        stocksql->quickCreateFsTable(shtbl[i].code);        stocksql->quickDeleteFsData(shtbl[i].code);        UpdateProgress (cur, total);      }          for(i=1;i<=szstocksum;i++,cur++){        stocksql->quickCreateFsTable(sztbl[i].code);        stocksql->quickDeleteFsData(sztbl[i].code);        UpdateProgress (cur, total);      }    }    if(stocksql->selectTraceDatabase()){      for(i=1;i<=shstocksum;i++,cur++){        stocksql->quickCreateTraceTable(shtbl[i].code);        stocksql->quickDeleteTraceData(shtbl[i].code);        UpdateProgress (cur, total);      }          for(i=1;i<=szstocksum;i++,cur++){        stocksql->quickCreateTraceTable(sztbl[i].code);        stocksql->quickDeleteTraceData(sztbl[i].code);        UpdateProgress (cur, total);      }    }    stockinit.initflag = 1;    EndProgress ();
   }   stocksql->updateInitData(stockinit);  }  else{//如果未登录服务器,取本地股票代码表     frechStockNameTbl();  }   return; }void stock_quit(){   if(frechtblflag){       g_free(shtbl);       g_free(sztbl);   }         if(frechflag){       g_free(stock);   }   }int getFileDayKline(char *code){   char filename[50];    FILE *id;   int i=1;   int p1,p2,p3,p4;   int day;   long cjje,cjl;   int recsum;      if(!frechtblflag){    printf("frech tbl fail.\n");    return FAIL;   }       if(strlen(code) != SHCODELEN && strlen(code) != SZCODELEN)      return FAIL;   if(strlen(code) == SHCODELEN){     if(!codeToName(SHBZ,code)) return FAIL;      strcpy(filename,SHDAYPATH);     strcat(filename,code);      strcat(filename,".Day");   }    if(strlen(code) == SZCODELEN){     if(!codeToName(SZBZ,code)) return FAIL;      strcpy(filename,SZDAYPATH);     strcat(filename,code);      strcat(filename,".Day");   }    id=fopen(filename,"r");   if(id == NULL){      printf("open file %s error.\n",filename);      return FAIL;    }   if(frechflag){       g_free(stock);   }   fseek(id,0,SEEK_END);   recsum=(ftell(id))/40;   stock=(STOCK *)g_malloc(sizeof(STOCK)*(recsum+10));   fseek(id,0,SEEK_SET);//   printf("date     kpj    zgj    zdj    spj    cjje   cjl\n");   while(i<=recsum && !feof(id)){     fread(&day,1,sizeof(int),id);     fread(&p1,1,sizeof(int),id);     fread(&p2,1,sizeof(int),id);     fread(&p3,1,sizeof(int),id);     fread(&p4,1,sizeof(int),id);     fread(&cjje,1,sizeof(int),id);     fread(&cjl,1,sizeof(int),id);//   fread(bz,3,sizeof(int),id);     stock[i].jydate=day;     stock[i].kpj=p1/10;     stock[i].zgj=p2/10;     stock[i].zdj=p3/10;     stock[i].spj=p4/10;          stock[i].cjje=cjje;     stock[i].cjsl=cjl;//     printf("%d %3.2f %3.2f %3.2f %3.2f %d %d\n",day,r1,r2,r3,r4,cjje,cjl);    fseek(id,i*40,SEEK_SET);    i++;   }    frechflag=1;   stocksum=recsum;   strcpy(stockcode,code);   klinewidth=9;   areastart=stocksum-50;   mouselinex=stocksum;   createJszbData();   fclose(id);   return recsum;  }/* frech stock day record from stock file filename.day */int frechStock(char *code){//    return getFileDayKline(code);//  return stocksql->getSqlDayKline(code);    return stocksql->getSqlStockData(code);}//取得分时数据int frechFsData(char *code){  return stocksql->getSqlFsData(code);}int getFileNameTbl(){   char shfilename[256];   char szfilename[256];      strcpy(shfilename,SHTBLPATH);   strcat(shfilename,"nametbl.sha");      strcpy(szfilename,SZTBLPATH);   strcat(szfilename,"nametbl.szn");      if(frechShStockTbl(shfilename) && frechSzStockTbl(szfilename)){      frechtblflag=1;       return SUCCESS;     }   else{      frechtblflag=0;       return FAIL;   }  }/*取出股票代码表*/int frechStockNameTbl(){// return getFileNameTbl();  return stocksql->getSqlNameTbl();       }gint frechShStockTbl(gchar *filename){   FILE *id;   int i=1;   char end;   char code[8];   char name[10];   id=fopen(filename,"r");   if(id == NULL){      printf("open file nametbl.sha error.\n");      return FAIL;    }   fseek(id,0,SEEK_END);   shstocksum=(ftell(id))/16;//   printf(" %d %d \n",shstocksum,sizeof(STOCKNAMETBL));   if(shtbl) g_free(shtbl);   shtbl=(STOCKNAMETBL *)         g_malloc(sizeof(STOCKNAMETBL)*(shstocksum+10));   if(shtbl == NULL){       printf("shtbl memory alloc error.\n");       return FAIL;   }  fseek(id,0,SEEK_SET);  while(i<=shstocksum && !feof(id)){   fread(&shtbl[i].type,1,sizeof(char),id);   fread(code,6,sizeof(char),id);   fread(name,8,sizeof(char),id);   fread(&end,1,sizeof(char),id);   code[6]='\0';   name[8]='\0';          strcpy(shtbl[i].code,code);    strcpy(shtbl[i].name,name); //    printf("%d. %s %s\n",i,shtbl[i].code,shtbl[i].name);    fseek(id,i*16,SEEK_SET);    i++;   }    fclose(id);   return SUCCESS;  }gint frechSzStockTbl(gchar *filename){   FILE *id;   int i=1;   char end;   char code[8];   char name[10];   id=fopen(filename,"r");   if(id == NULL){      printf("open file nametbl.szn error.\n");      return FAIL;    }   fseek(id,0,SEEK_END);   szstocksum=(ftell(id))/16;//   printf(" %d \n",shstocksum*sizeof(STOCKNAMETBL));   if(sztbl) g_free(sztbl);   sztbl=(STOCKNAMETBL *)         g_malloc(sizeof(STOCKNAMETBL)*(szstocksum+10));   if(sztbl == NULL){       printf("sztbl memory alloc error");       return FAIL;   }   fseek(id,0,SEEK_SET);   i=1;   while(i<=szstocksum && !feof(id)){    fread(&sztbl[i].type,1,sizeof(char),id);    fread(code,6,sizeof(char),id);    fread(name,8,sizeof(char),id);    fread(&end,1,sizeof(char),id);    code[4]='\0';    name[8]='\0';  //    printf("%d. %s %s\n",i,code,name);        strcpy(sztbl[i].code,code);    strcpy(sztbl[i].name,name);     fseek(id,i*16,SEEK_SET);    i++;   }    fclose(id);      return SUCCESS;  }/*----------------------------------------/股票代码转化股票名称/   BZ -- 上海,深圳标志/   CODE -- 股票代码/--------------------------------------------------*/int codeToName(int bz,char *code){     int i;     int iffind=FAIL;     int recsum;          if(!frechtblflag){         printf("tbl not frech success.");         return FAIL;     }     if(bz == SHBZ)         recsum = shstocksum;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -