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

📄 choicestock.c

📁 用GTK+做用户界面 股票每日分时行情用数据库管理——MYSQL 软件应用方式客户端/服务器模式 基于TCP/IP的C/S通信模式 实现STOCK
💻 C
字号:
#include <stdio.h>#include "gmclient.h"static GtkWidget *tmpentry0;static GtkWidget *tmpentry1;static GtkWidget *tmpentry2;static GtkWidget *tmpentry3;static GtkWidget *tmpentry4;static GtkWidget *tmpentry5;static GtkWidget *tmpentry6;static GSList *reclist;int zs=0,shzs=0,szzs=0;int cgs=0,shcgs=0,szcgs=0;int bl=0,shbl=0,szbl=0;typedef struct{    char code[7];    int date;      //日期     int kpj;    int spj;    int zgj;    int zdj;    int cjl;    int lbts;      //量比天数    int avgcjl;   //区间均量    int lbfd;     //量比幅度    int drzf;     //当日涨幅    int hpts;    //横盘天数    int hpfd;   //横盘区间震幅    int zf;    // 放量後涨幅    int flag;  //成功标志  SUCCESS-成功 FAIL--失败    int addr;  //选股标志位址}REC;static void endProgram1(GtkWidget *widget,gpointer data);static void choiceoneok_clicked(GtkWidget *widget,gpointer data);void endProgram1(GtkWidget *widget,gpointer data){    GSList *node;      for(node=reclist;node;node=node->next)       g_free(node->data);   g_slist_free(reclist);     gtk_widget_destroy(widget);   }void selectRow(GtkWidget *list,gint c,gint r){    GSList *node;    REC *rec; //    strcpy(str,getClist(list));//    printf("c:%d r:%d %s\n",c,r,str);    node=g_slist_nth(reclist,c);    rec=(REC *)node->data;    if(frechStock(rec->code) == 0){         return;    }     if(strlen(rec->code) == 6)      codeToName(SHBZ,rec->code);    else      codeToName(SZBZ,rec->code);    areastart=(rec->addr-6)>0?(rec->addr-6):1;    Repaint();    }static void total_clicked(GtkWidget *widget,gpointer data){      char str[1500];    zs=shzs+szzs;    cgs=shcgs+szcgs;    bl=cgs*100/zs;    shbl=shcgs*100/shzs;    szbl=szcgs*100/szzs;    sprintf(str,"统计总数: %d 成功数: %d 比率: %d%                 上海总数: %d 成功数: %d 比率: %d%                 深圳总数: %d 成功数: %d 比率: %d%",                 zs,cgs,bl,shzs,shcgs,shbl,szzs,szcgs,szbl);   showMessage("统计结果",str);    }static void save_clicked(GtkWidget *widget,gpointer data){    char filename[80];    createFilenameDialog("保存检索结果");  strcpy(filename,getFilename());  printf("%s",filename);    }void choiceoneok_clicked(GtkWidget *widget,gpointer data){   GtkWidget *tmpwin;   GtkWidget *tmpvbox;   GtkWidget *i_box2,*i_but;   GSList *gslist;   int d,i,j,k,qsrq,lbts,lbfd,drzf,hpts,hpfd,zf;//   int tmpzgj,tmpzdj,tmpkpj,tmpspj,tmpcjl;   int tmpavgcjl,tmplbfd,tmpdrzf,tmphpfd,tmpzf;   char strentry[50];   GtkWidget *tmplist;   REC *rec;   gchar *tmprec[5];   gchar str0[88];   gchar str1[88];   gchar str2[88];   gchar str3[88];   gchar str4[88];   tmprec[0]=str0;   tmprec[1]=str1;   tmprec[2]=str2;   tmprec[3]=str3;   tmprec[4]=str4;
    reclist=NULL;    /* --- Call the timer. --- */
    strcpy(strentry,gtk_entry_get_text(GTK_ENTRY(tmpentry0)));//    strentry[4]='\0';    qsrq=atoi(strentry);    strcpy(strentry,gtk_entry_get_text(GTK_ENTRY(tmpentry1)));//    strentry[4]='\0';    lbts=atoi(strentry);    strcpy(strentry,gtk_entry_get_text(GTK_ENTRY(tmpentry2)));//    strentry[4]='\0';    lbfd=atoi(strentry);    strcpy(strentry,gtk_entry_get_text(GTK_ENTRY(tmpentry3)));    drzf=atoi(strentry);    strcpy(strentry,gtk_entry_get_text(GTK_ENTRY(tmpentry4)));    hpts=atoi(strentry);    strcpy(strentry,gtk_entry_get_text(GTK_ENTRY(tmpentry5)));    hpfd=atoi(strentry);    strcpy(strentry,gtk_entry_get_text(GTK_ENTRY(tmpentry6)));    zf=atoi(strentry);        gtk_widget_destroy(widget);    StartProgress ("正在检索成交量,请稍候...");
//       n=0;       k=0;//       m=0;    for(i=1;i<=shstocksum;i++){        if(shtbl[i].code[0]!='6' && shtbl[i].code[0]!='5'){             continue;        }        if(frechStock(shtbl[i].code) == 0){             continue;        }      for(j=1;j<=stocksum;j++){        if(stock[j].jydate<qsrq) continue;        tmpavgcjl=getAverageColume(j,lbts);        if(tmpavgcjl <= 0) continue;        tmplbfd = stock[j].cjsl*100/tmpavgcjl;        if(tmplbfd < lbfd) continue;        if(stock[j].kpj == 0 || stock[j].spj == 0) continue;        tmpdrzf = (stock[j].spj-stock[j].kpj)*100/stock[j].kpj;        if(tmpdrzf < drzf)            continue;        d=(j-hpts>0)?(j-hpts):1;        tmphpfd = (stock[j].spj-stock[d].spj)*100/stock[j].spj;        if(tmphpfd > hpfd)            continue;        /*        tmpzgj=stock[j].zgj;        tmpzdj=stock[j].zdj;        tmpkpj=stock[j].kpj;        tmpspj=stock[j].spj;        tmpcjl=stock[j].cjsl;*/                d = getAreazgj(j,j+40);        tmpzf=(d-stock[j].spj)*100/stock[j].spj;                     rec=(REC *)g_malloc(sizeof(REC));             strcpy(rec->code,stockcode);             rec->date=stock[j].jydate;             rec->kpj=stock[j].kpj;             rec->spj=stock[j].spj;             rec->zdj=stock[j].zdj;             rec->zgj=stock[j].zgj;             rec->cjl=stock[j].cjsl;             rec->lbts=lbts;             rec->avgcjl=tmpavgcjl;             rec->lbfd=tmplbfd;             rec->drzf=tmpdrzf;             rec->hpts=hpts;             rec->hpfd=tmphpfd;             rec->zf=tmpzf;             rec->addr=j;             reclist=g_slist_append(reclist,rec);             shzs++;                      if(tmpzf >= zf){             rec->flag = SUCCESS;             shcgs++;         }else{             rec->flag = FAIL;         }         }              if(k>=shstocksum/10){          UpdateProgress (i,shstocksum);          k=0;        }        else{          k++;        }      } 
         for(i=1;i<=szstocksum;i++){        if(sztbl[i].code[0]!='4' && sztbl[i].code[0]!='0'){             continue;        }        if(frechStock(sztbl[i].code) == 0){             continue;        }      for(j=1;j<=stocksum;j++){        if(stock[j].jydate<qsrq) continue;        tmpavgcjl=getAverageColume(j,lbts);        if(tmpavgcjl <= 0) continue;        tmplbfd = stock[j].cjsl*100/tmpavgcjl;        if(tmplbfd < lbfd) continue;        if(stock[j].kpj == 0 || stock[j].spj == 0) continue;        tmpdrzf = (stock[j].spj-stock[j].kpj)*100/stock[j].kpj;        if(tmpdrzf < drzf)            continue;        d=(j-hpts>0)?(j-hpts):1;        tmphpfd = (stock[j].spj-stock[d].spj)*100/stock[j].spj;        if(tmphpfd > hpfd)            continue;        /*        tmpzgj=stock[j].zgj;        tmpzdj=stock[j].zdj;        tmpkpj=stock[j].kpj;        tmpspj=stock[j].spj;        tmpcjl=stock[j].cjsl;*/                d = getAreazgj(j,j+40);        tmpzf=(d-stock[j].spj)*100/stock[j].spj;                     rec=(REC *)g_malloc(sizeof(REC));             strcpy(rec->code,stockcode);             rec->date=stock[j].jydate;             rec->kpj=stock[j].kpj;             rec->spj=stock[j].spj;             rec->zdj=stock[j].zdj;             rec->zgj=stock[j].zgj;             rec->cjl=stock[j].cjsl;             rec->lbts=lbts;             rec->avgcjl=tmpavgcjl;             rec->lbfd=tmplbfd;             rec->drzf=tmpdrzf;             rec->hpts=hpts;             rec->hpfd=tmphpfd;             rec->zf=tmpzf;             rec->addr=j;             reclist=g_slist_append(reclist,rec);             szzs++;         if(tmpzf >= zf){             rec->flag = SUCCESS;             szcgs++;         }else{             rec->flag = FAIL;         }         }              if(k>=szstocksum/10){          UpdateProgress (i,szstocksum);          k=0;        }        else{          k++;        }      } 
    zs=shzs+szzs;     EndProgress ();
    if(zs == 0){      showMessage("提示","未检索到符合结果.");     return;    }     tmpwin=createWindow("当前股票检索结果",480,300,0,0,2,                       GTK_SIGNAL_FUNC(endProgram1));        gtk_window_set_policy(GTK_WINDOW(tmpwin),FALSE,FALSE,TRUE);        tmpvbox=createBox(tmpwin,VERTICAL,0);       tmplist=createClist(tmpvbox,5,GTK_SIGNAL_FUNC(selectRow));    setupClist(tmplist,0,"股票代码",64);         setupClist(tmplist,1,"日期",64);         setupClist(tmplist,2,"量比",64);         setupClist(tmplist,3,"当日涨幅",64);         setupClist(tmplist,4,"后涨幅",48);              i=0;    for(gslist=reclist;gslist || i<zs;gslist=gslist->next){      rec=(REC *)gslist->data;//      printf("%s %d %d %d %d %d\n",rec->code,rec->zdjdate,//              rec->zdj,rec->zgj,rec->zdf,rec->addr);      strcpy(tmprec[0],rec->code);      sprintf(tmprec[1],"%d",rec->date);      sprintf(tmprec[2],"%d%",rec->lbfd);      sprintf(tmprec[3],"%d%",rec->drzf);      sprintf(tmprec[4],"%d%",rec->zf);      insertClist(tmplist,tmprec);      i++;    }  i_box2 = gtk_hbutton_box_new();  gtk_button_box_set_layout(GTK_BUTTON_BOX(i_box2), SPREAD);  gtk_button_box_set_spacing(GTK_BUTTON_BOX(i_box2), 10);  gtk_box_pack_start(GTK_BOX(tmpvbox), i_box2, FALSE, FALSE, 0);  gtk_widget_show(i_box2);  i_but = gtk_button_new_with_label("统计");  gtk_signal_connect_object(GTK_OBJECT(i_but), "clicked",   GTK_SIGNAL_FUNC(total_clicked),GTK_OBJECT(tmpwin));  gtk_box_pack_start(GTK_BOX(i_box2), i_but, TRUE, TRUE, 0);  gtk_widget_show(i_but);  i_but = gtk_button_new_with_label("保存");  gtk_signal_connect_object(GTK_OBJECT(i_but), "clicked",   GTK_SIGNAL_FUNC(save_clicked),GTK_OBJECT(tmpwin));  gtk_box_pack_start(GTK_BOX(i_box2), i_but, TRUE, TRUE, 0);  gtk_widget_show(i_but);  i_but = gtk_button_new_with_label("退出");  gtk_signal_connect_object(GTK_OBJECT(i_but), "clicked",   GTK_SIGNAL_FUNC(endProgram1),GTK_OBJECT(tmpwin));  gtk_box_pack_start(GTK_BOX(i_box2), i_but, TRUE, TRUE, 0);  gtk_widget_show(i_but);//  gtk_grab_add(tmpwin);}void choiceOne(){    GtkWidget *tmpwin;    GtkWidget *tmpvbox;    GtkWidget *i_box2,*i_but;            if(!frechflag) return;    tmpwin = createWindow("选股方案一",300,380,0,0,20,                          GTK_SIGNAL_FUNC(endProgram));    tmpvbox = createBox(tmpwin,VERTICAL,0);               createLabel(tmpvbox,"扫描起始日期(yyyymmdd)");    tmpentry0=createEntry(tmpvbox,"19960101");    createLabel(tmpvbox,"选择成交量扫描区间(天数)");    tmpentry1=createEntry(tmpvbox,"20");           createLabel(tmpvbox,"输入成交量放大比率(>%)");    tmpentry2=createEntry(tmpvbox,"100");    createLabel(tmpvbox,"输入成交量放大日股价涨幅比率(>%)");    tmpentry3=createEntry(tmpvbox,"5");    createLabel(tmpvbox,"输入成交量放大前横盘整理时间(天数)");    tmpentry4=createEntry(tmpvbox,"120");    createLabel(tmpvbox,"输入横盘整理区间波动幅度(正负%)");    tmpentry5=createEntry(tmpvbox,"20");    createLabel(tmpvbox,"成功标志(放量后40天内涨幅>%)");    tmpentry6=createEntry(tmpvbox,"50");        createLabel(tmpvbox,"         ");  i_box2 = gtk_hbutton_box_new();  gtk_button_box_set_layout(GTK_BUTTON_BOX(i_box2), SPREAD);  gtk_button_box_set_spacing(GTK_BUTTON_BOX(i_box2), 10);  gtk_box_pack_start(GTK_BOX(tmpvbox), i_box2, FALSE, FALSE, 0);  gtk_widget_show(i_box2);  i_but = gtk_button_new_with_label("OK");   gtk_signal_connect_object(GTK_OBJECT(i_but), "clicked",    GTK_SIGNAL_FUNC(choiceoneok_clicked),GTK_OBJECT(tmpwin));  gtk_box_pack_start(GTK_BOX(i_box2), i_but, TRUE, TRUE, 0);  gtk_widget_show(i_but);  i_but = gtk_button_new_with_label("Cancel");  gtk_signal_connect_object(GTK_OBJECT(i_but), "clicked",   GTK_SIGNAL_FUNC(endProgram),GTK_OBJECT(tmpwin));  gtk_box_pack_start(GTK_BOX(i_box2), i_but, TRUE, TRUE, 0);  gtk_widget_show(i_but);   gtk_grab_add(tmpwin);}

⌨️ 快捷键说明

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