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

📄 main1.c

📁 C语言编写的仿视窗多程序演示系统
💻 C
📖 第 1 页 / 共 4 页
字号:
            {
                case 1:
                    clrkey();
                return(num);
                case 2:
                return(-1);
            }
        }

        else if (c==8)
        {
            setcolor(WHITE);
            rectangle(x,y,x+wid,y+20);
            setfillstyle(SOLID_FILL,BLUE);
            bar(x+1,y+1,x+wid-1,y+20-1);
            num=0;
            i=0;
        }
        else if ((c>=48)&&(c<=57))
        {
            if (i==0)
            {
                setcolor(WHITE);
                rectangle(x,y,x+wid,y+20);
                setfillstyle(SOLID_FILL,BLUE);
                bar(x+1,y+1,x+wid-1,y+20-1);
                sprintf(temp,"%d",c-48);
                num=c-48;
            }
            if (i==1)
            {
                setcolor(WHITE);
                rectangle(x,y,x+wid,y+20);
                setfillstyle(SOLID_FILL,BLUE);
                bar(x+1,y+1,x+wid-1,y+20-1);
                sprintf(temp,"%d",num*10+c-48);
                num=num*10+c-48;
            }
            outtextxy(x+5,y+8,temp);
            i++;
        }
        else continue;
    }


}


void giveerr(char *tdinfo)
{
    
    char c;
    Draw_swindow(220,120,250,140,"错误提示");
    PrintTextxy(230,160,tdinfo,RED);
    PrintTextxy(230,180,"请返回重新输入",RED);
    Down_sbutton(300,210,100,25,2,"返回");
    while(1)
    {
        c=Contrkey();
        if ((c==ESC)||(c==ENTER))
        {
        Clr_scr(5+100+10+5,35+5,MaxX-115-5-15,MaxY-45-15);
        return;
        }
    }
}

void giveok(int billnum)
{
    char temp[2]={0};
    char c;
    Draw_swindow(220,120,240,120,"操作成功");
    sprintf(temp,"%d",billnum);
    PrintTextxy(250,160,temp,RED);
    PrintTextxy(250+1,160+1,temp,YELLOW);
    PrintTextxy(270,160,"号票退票成功!",RED);

    Down_sbutton(290,200,100,25,2,"确定");
    while(1)
    {
        c=Contrkey();
        if ((c==ESC)||(c==ENTER))
        {
        Clr_scr(5+100+10+5,35+5,MaxX-115-5-15,MaxY-45-15);
        return;
        }
    }

}

void huanok(int numold,int numnew)
{
    char tempold[2]={0},tempnew[2]={0};
    char c;
    Draw_swindow(220,120,240,120,"操作成功");
    sprintf(tempold,"%d",numold);
    sprintf(tempnew,"%d",numnew);

    PrintTextxy(250,160,tempold,RED);
    PrintTextxy(250+1,160+1,tempold,YELLOW);
    PrintTextxy(270,160,"号票换为",RED);
    PrintTextxy(350,160,tempnew,RED);
    PrintTextxy(350+1,160+1,tempnew,YELLOW);
    PrintTextxy(370,160,"成功!",RED);

    Down_sbutton(290,200,100,25,2,"确定");
    while(1)
    {
        c=Contrkey();
        if ((c==ESC)||(c==ENTER))
        {
        Clr_scr(5+100+10+5,35+5,MaxX-115-5-15,MaxY-45-15);
        return;
        }
    }

}


int checktb(int billnum,int *bills)
{
    /*正常返回0*//*否则1*/
    if (bills[billnum-1]==0)return(1);
    if (bills[billnum-1]==1)return(0);
}

void scanbilla(int *bills,char *resbilla)
{
    int i;
    char temp[AB*3];
    for (i=0;i<=(AB/2-1);i++)
    {
        resbilla[i]=i+1+48;
        if (bills[i]==1)resbilla[i]='*';
    }

    for (i=0;i<=AB/2-1;i++)
    {
        if (resbilla[i]>=':')
            {
                sprintf(&temp[i*3],"%d  ",resbilla[i]-48);
                continue;
            }
        sprintf(&temp[i*3],"%c  ",resbilla[i]);

    }
    strcpy(resbilla,temp);
    return;
}

void  scanbillb(int *bills,char *resbillb)
{
    int i;
    char temp[AB*3];
    for (i=AB/2;i<=AB-1;i++)
    {
        resbillb[i-AB/2]=i+1+48;
        if (bills[i]==1)resbillb[i-AB/2]='*';
    }

    for (i=0;i<=AB/2-1;i++)
    {
        if (resbillb[i]>=':')
        {
            sprintf(&temp[i*3],"%d  ",resbillb[i]-48);
            continue;
        }
        sprintf(&temp[i*3],"%c  ",resbillb[i]);


    }
    strcpy(resbillb,temp);
    return;
}

main1()
{

    int bills[AB+2]={0};
    char resbilla[AB*3]={0},resbillb[AB*3]={0};
    char xiyan[3]={0},feixi[3]={0};
    int c,YN_val,movey=20,movex=0;
    Init_graph(); /* BGI初始化 */
    clrscr();
    setfillstyle(SOLID_FILL,LIGHTGRAY);
    bar(0,0,MaxX,MaxY);
    Main_window();/* 绘制主窗口 */
    loaddata("data",bills);

    while ((c=bioskey(1))!=238)
    {
        lable_wait:
        Clr_scr(5+100+10+5,35+5,MaxX-115-5-15,MaxY-45-15);

        c=Contrkey();/*接受选择菜单输入*/
        switch (c)
        {
          case UP:
            clrkey();
            Ctr_old=Ctr_val;
            Ctr_val--;
            if (Ctr_val==0)Ctr_val=5;
            Butt_Chg();
          break;
          case DOWN:
            clrkey();
            Ctr_old=Ctr_val;
            Ctr_val++;
            if (Ctr_val==6)Ctr_val=1;
            Butt_Chg();
          break;
          case LEFT:
            clrkey();

          break;
          case RIGHT:
            clrkey();

          break;
          case ESC:
          break;
          case QUIT:
          return;
          case ENTER:
            switch(Ctr_val)
            {
                case 1:/*第一项主菜单选择功能按钮*/
                    Draw_swindow(200,100,300,300,"机票查询即时查询");
                    scanbills(bills);
                    scanbilla(bills,resbilla);
                    scanbillb(bills,resbillb);
                    /*printf("%s",resbilla);*/
                    sprintf(xiyan,"%d",AB/2-bills[AB]);  /*查询模块入口*/
                    sprintf(feixi,"%d",AB/2-bills[AB+1]);
                    PrintTextxy(230,170,"  * ",RED);
                    PrintTextxy(230+1,170+1,"“*”号表示已经卖出的机票",YELLOW);     /*输出查询信息*/
                    PrintTextxy(230,200,"吸烟区剩余机票数量:",YELLOW); PrintTextxy(430,200,xiyan,RED);
                    PrintTextxy(230,220,resbilla,RED);
                    PrintTextxy(230+1,220+1,resbilla,YELLOW);
                    PrintTextxy(230,250,"非吸烟区剩余机票数量:",YELLOW);PrintTextxy(430,250,feixi,RED);
                    PrintTextxy(230,270,resbillb,RED);
                    PrintTextxy(230+1,270+1,resbillb,YELLOW);
                    Down_sbutton(280,350,120,25,2,"确定");
                    while((c=Contrkey())!=ENTER)
                    {
                    if(c==ESC)break;
                    }
                    Clr_scr(5+100+10+5,35+5,MaxX-115-5-15,MaxY-45-15);
                    clrkey();
                break;
                case 2: /*第二项主菜单选择功能按钮*/
                    Draw_swindow(200,100,300,300,"开始机票预定");
                    Down_sbutton(220,350,120,25,2,"确定");
                    Up_sbutton(360,350,120,25,2,"取消");
                    PrintTextxy(220,200,"确定后可开始购票,返回请按取消",YELLOW);
                    YN_val=1;
                    while(1)
                    {
                        c=Contrkey();
                        switch(c)
                        {
                            case ENTER:
                                movey=20;
                                movex=10;


                                switch(YN_val)
                                {
                                    case 1:/*一区订票*/
                                        clrkey();
                                        lable_xuanqu:
                                        Clr_scr(5+100+10+5,35+5,MaxX-115-5-15,MaxY-45-15);
                                        scanbills(bills);
                                        if(bills[AB]==AB/2&&bills[AB+1]==AB/2)
                                        {
                                            buyend(bills[AB],bills[AB+1]);
                                            goto lable_wait;
                                        }

                                        Draw_swindow(220-movex,90+movey,300,150,"选择吸烟区与非吸烟区");
                                        PrintTextxy(220-movex+40,130+movey,"取消请按ESC键。",RED);
                                        Down_sbutton(260-movex,190+movey,100,25,2,"一区");
                                        Up_sbutton(380-movex,190+movey,100,25,2,"二区");
                                        PrintTextxy(250-movex,165+movey," 吸烟区(1)",YELLOW);
                                        PrintTextxy(250+1-movex,165+1+movey," 吸烟区(1)",RED);
                                        PrintTextxy(360-movex,165+movey," 非吸烟区(2)",YELLOW);
                                        PrintTextxy(360+1-movex,165+1+movey," 非吸烟区(2)",RED);
                                        YN_val=1;
                                        while(1)
                                        {

                                            int buynum=0;
                                            c=Contrkey();
                                            switch(c)
                                            {
                                                case YI:
                                                goto lable_YI2;
                                                case ER:
                                                goto lable_ER2;
                                                case LEFT:
                                                    Down_sbutton(260-movex,190+movey,100,25,2,"一区");
                                                    Up_sbutton(380-movex,190+movey,100,25,2,"二区");
                                                    YN_val=1;
                                                break;
                                                case RIGHT:
                                                    Up_sbutton(260-movex,190+movey,100,25,2,"一区");
                                                    Down_sbutton(380-movex,190+movey,100,25,2,"二区");
                                                    YN_val=2;
                                                break;
                                                case ENTER:
                                                    switch(YN_val)
                                                    {
                                                        case 1:
                                                            lable_YI2:
                                                            scanbills(bills);
                                                            if(bills[AB]==AB/2&&bills[AB+1]==AB/2)
                                                            {
                                                                buyend(bills[AB],bills[AB+1]);
                                                                goto lable_wait;
                                                            }
                                                            if (bills[AB]>=AB/2&&bills[AB+1]<AB/2)
                                                            {

                                                                switch(buyfull("吸烟区","非吸烟区"))
                                                                {
                                                                    case 1:
                                                                        goto lable_reinbuy_b;

                                                                    case 2:
                                                                        buyend(bills[AB],bills[AB+1]);
                                                                    goto lable_wait;
                                                                }

                                                            }
                                                            else
                                                            {
                                                                lable_reinbuy_a:
                                                                scanbilla(bills,resbilla);scanbillb(bills,resbillb);
                                                                buynum=inputboxbuy(resbilla,"NO");
                                                                if (buynum==-1)
                                                                {
                                                                    goto lable_xuanqu;
                                                                }
                                                                if((buynum==0)||(buynum>AB/2))
                                                                {
                                                                    giveerr("本区无此票号!");
                                                                    goto lable_reinbuy_a;
                                                                }
                                                                if (bills[buynum-1]==1)
                                                                {
                                                                    giveerr("此票已售出,无法购得!");
                                                                    goto lable_reinbuy_a;
                                                                }


                                                                if (bills[buynum-1]==0)
                                                                {
                                                                    bills[buynum-1]=1;
                                                                    buysucc(buynum);
                                                                    goto lable_wait;
                            
                                                                }

                                                            }

⌨️ 快捷键说明

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