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

📄 graph.h

📁 该模块包括作业调度的三个系统进程。P1、P2、P3进程功能的实现。 P1负责对用户作业预输入处理
💻 H
📖 第 1 页 / 共 4 页
字号:
/****************************************************************************
*****************************************************************************

文件名称:  GRAPH.H
模块名称:  用户界面输出模块(图形界面模块之二)
模块作用:
编写者一:  蔡晓跃(AP0106338)
编写者二:
编写日期:
完成日期:
程序行数:   1000

*****************************************************************************
*****************************************************************************/

/****************************************************************************
模块名称:  辅助模块
函 数 名:  M_G_DISPLAY_CHINESE_INSTRUTION
功    能:  在系统演示界面中显示所有汉字说明
入口参数:  无
出口参数:  无
调用关系:  被G_INIT_FACE函数调用
编    者:  蔡晓跃(AP0106338)
编写日期:  2003-10-17
*****************************************************************************/
M_G_DISPLAY_CHINESE_INSTRUTION()
{
    int i;
    /* 显示输入井 */
    for(i=0;i<3;i++)
        DRAWMAT(_in_+i*24,12,in_left+in_width+4,in_top+(in_height-36)/2+i*12,yellow_color);
    /* 显示输出井 */
    for(i=0;i<3;i++)
        DRAWMAT(_out_+i*24,12,out_left-4-12,out_top+(out_height-36)/2+i*12,yellow_color);
    /* 显示系统缓存 */
    for(i=0;i<2;i++)
        DRAWMAT(_system_buf_+i*24,12,sysbuf_left+(sysbuf_width-24)/2+i*12,sysbuf_top+(sysbuf_height-24)/2,yellow_color);
    for(i=2;i<4;i++)
        DRAWMAT(_system_buf_+i*24,12,sysbuf_left+(sysbuf_width-24)/2+(i-2)*12,sysbuf_top+(sysbuf_height-24)/2+12,yellow_color);
    /* 显示用户存储区 */
    for(i=0;i<5;i++)
        DRAWMAT(_user_buf_+i*24,12,userbuf_left+userbuf_width+4,userbuf_top+userbuf_height+12*(i-5),yellow_color);
    /* 显示键盘 */
    for(i=0;i<2;i++)
        DRAWMAT(_keyboard_+i*24,12,keyboard_left+(keyboard_width-36)/2+i*24,keyboard_top-16,yellow_color);
    /* 显示就绪队列 */
    for(i=0;i<4;i++)
        DRAWMAT(_ready_queue_+i*24,12,ready_left+(ready_width-48)/2-30+i*12,ready_top+ready_height+4,yellow_color);
    /* 显示系统进程 */
    for(i=0;i<4;i++)
        DRAWMAT(_system_process_+i*24,12,system_left+(system_width-48)/2+i*12,system_top-16,yellow_color);
    
}

/****************************************************************************
模块名称:  辅助模块
函 数 名:  M_DRAW_MAIN_MACHINE_BOX
功    能:  模拟显示电脑的主机
入口参数:  无
出口参数:  无
调用关系:  被G_INIT_FACE函数调用
编    者:  蔡晓跃(AP0106338)
编写日期:  2003-10-17
*****************************************************************************/
M_DRAW_MAIN_MACHINE_BOX()
{
    setcolor(machine_color);
    rectangle(box_left,box_top,box_left+box_width,box_top+box_height);
    /* 画左顶边 */
    line(box_left,box_top,box_left-box_left_off,box_top-box_top_off);
    /* 画右顶边 */
    line(box_left+box_width,box_top,box_left+box_width-box_left_off-3,box_top-box_top_off);
    /* 画后顶边 */
    line(box_left-box_left_off,box_top-box_top_off,box_left-box_left_off+box_width-3,box_top-box_top_off);
    /* 画左后边 */
    line(box_left-box_left_off,box_top-box_top_off,box_left-box_left_off,box_top-box_top_off+box_height-3);
    /* 画左下边 */
    line(box_left-box_left_off,box_top-box_top_off+box_height-3,box_left,box_top+box_height);
    /* 画关机按钮 */
    M_DRAW_BUTTON(0,white_color,red_color,0,0,0,0);
    /* 画重新启动按钮 */
    M_DRAW_BUTTON(1,white_color,red_color,0,0,0,0);
    M_DRAW_MACHINE_LIGHTS(0,red_color,3);
    M_DRAW_MACHINE_LIGHTS(1,green_color,2);
    setcolor(line_color);
}

/****************************************************************************
模块名称:  辅助模块
函 数 名:  M_DRAW_BUTTON
功    能:  画主机箱上的按钮
入口参数:  无
出口参数:  无
调用关系:  被M_DRAW_MAIN_MACHINE_BOX调用 
编    者:  蔡晓跃(AP0106338)
编写日期:  2003-10-17
*****************************************************************************/
M_DRAW_BUTTON(int index,int bcolor,int tcolor,int oldx_off,int oldy_off,int newx_off,int newy_off)
{
    setfillstyle(1,0);
    bar(box_left+(box_width-box_buttom_width)/2+oldx_off,box_top+box_height*2/3+(box_buttom_height+4)*index+oldy_off,box_left+(box_width-box_buttom_width)/2+box_buttom_width+oldx_off,box_top+box_height*2/3+box_buttom_height+(box_buttom_height+4)*index+oldy_off);
    setfillstyle(1,bcolor);
    bar(box_left+(box_width-box_buttom_width)/2+newx_off,box_top+box_height*2/3+(box_buttom_height+4)*index+newy_off,box_left+(box_width-box_buttom_width)/2+box_buttom_width+newx_off,box_top+box_height*2/3+box_buttom_height+(box_buttom_height+4)*index+newy_off);
    setcolor(tcolor);
    if(index == 0)
        outtextxy(box_left+(box_width-box_buttom_width)/2+(box_buttom_width-8)/2+1,box_top+box_height*2/3+(box_buttom_height-8)/2+1,"X");
    else
        outtextxy(box_left+(box_width-box_buttom_width)/2+(box_buttom_width-8)/2+1,box_top+box_height*2/3+box_buttom_height+4+(box_buttom_height-8)/2+1,"R");
}

/****************************************************************************
模块名称:  辅助模块
函 数 名:  M_DRAW_MACHINE_LIGHTS
功    能:  画主机箱上的工作灯
入口参数:  无
出口参数:  无
调用关系:  被M_DRAW_MAIN_MACHINE_BOX调用 
编    者:  蔡晓跃(AP0106338)
编写日期:  2003-10-17
*****************************************************************************/
M_DRAW_MACHINE_LIGHTS(int index,int color,int radius)
{
    M_G_SAVE_FILLSETTINGS_OR_LINESETTING();
    setcolor(color);
    setfillstyle(1,color);
    setlinestyle(0,0,1);
    if(DISPLAY_PICTURE_OK == TRUE)
    /* 表示有显示电脑了图片 */
    {
        circle(box_left+(box_width/3*(index*1.3+1))-15,box_top+box_height/2+30,radius);
        floodfill(box_left+(box_width/3*(index*1.3+1))-15,box_top+box_height/2+30,color);
    }
    else
    {
        circle(box_left+(box_width/3*(index*1.3+1)),box_top+box_height/2,radius);
        floodfill(box_left+(box_width/3*(index*1.3+1)),box_top+box_height/2,color);
    }

    M_G_RESTORE_FILLSETTING_OR_LINESETTING();
}

/****************************************************************************
模块名称:  辅助模块
函 数 名:  M_CHANGE_HARDDISK_LIGHT
功    能:  改变主机箱上灯的状态
入口参数:  无
出口参数:  无
调用关系:  被M_DRAW_MAIN_MACHINE_BOX调用 
编    者:  蔡晓跃(AP0106338)
编写日期:  2003-10-17
*****************************************************************************/
M_CHANGE_HARDDISK_LIGHT()
{
    int color,radius;
    if(DISPLAY_PICTURE_OK==TRUE)
        color = getpixel(box_left+(box_width/3*(1.3+1))-15,box_top+box_height/2+30);
    else
        color = getpixel(box_left+(box_width/3*(1.3+1)),box_top+box_height/2);
    if(color == green_color)
        color = 2;
    else
        color = green_color;

    if(color != green_color)
        radius = 1;
    else
        radius = 3;
    M_DRAW_MACHINE_LIGHTS(1,black_color,3);
    M_DRAW_MACHINE_LIGHTS(1,color,radius);
}
/****************************************************************************
模块名称:  辅助模块
函 数 名:  M_G_DRAW_KEYBOARD
功    能:  在系统演示界面中模拟显示键盘
入口参数:  无
出口参数:  无
调用关系:  被G_INIT_FACE函数调用
编    者:  蔡晓跃(AP0106338)
编写日期:  2003-10-17
*****************************************************************************/
M_G_DRAW_KEYBOARD()
{
    int i,j;
    /* 保存当前的线条和填充设置 */
    M_G_SAVE_FILLSETTINGS_OR_LINESETTING();
    /* 设置当前的新颜色值 */
    setcolor(line_color);
    /* 设置当前的新的填充模式 */
    setlinestyle(0,0,1);
    /* 下面采用循环的方法显示一小格一小格的小键盘 */
    for(i=1;i<=5;i++)
    {
        line(keyboard_left,keyboard_top+i*keyboard_height/5,keyboard_left+keyboard_width,keyboard_top+i*keyboard_height/5);
        for(j=0;j<9;j++)
        {
            line(keyboard_left+(i%2+j*2)*(keyboard_width/9)/2,keyboard_top+(i-1)*keyboard_height/5,keyboard_left+(i%2+j*2)*(keyboard_width/9)/2,keyboard_top+i*keyboard_height/5);
        }
    }
    /* 恢复当前的线条的填充设置 */
    M_G_RESTORE_FILLSETTING_OR_LINESETTING();
}

/****************************************************************************
模块名称:  辅助模块
函 数 名:  M_G_DRAW_PRINTER
功    能:  在系统演示界面中模拟显示打印机
入口参数:  无
出口参数:  无
调用关系:  被G_INIT_FACE函数调用
编    者:  蔡晓跃(AP0106338)
编写日期:  2003-10-17
*****************************************************************************/
M_G_DRAW_PRINTER()
{
    int i;
    M_G_SAVE_FILLSETTINGS_OR_LINESETTING();
    setlinestyle(0,0,1);
    setcolor(print_color);
    /* 显示“打印机”字样 */
    for(i=0;i<3;i++)
        DRAWMAT(prt+i*24,12,printer_left+printer_left_off/2+(printer_width - 36)/2+i*12,printer_mid_top+printer_top_off/2+(printer_height-12)/2,yellow_color);
    /* 画前顶边 */
    line(printer_left+printer_left_off/2,printer_mid_top+printer_top_off/2,printer_left+printer_width+printer_left_off/2,printer_mid_top+printer_top_off/2);
    /* 画前底边 */
    line(printer_left+printer_left_off/2,printer_mid_top+printer_top_off/2+printer_height,printer_left+printer_width+printer_left_off/2,printer_mid_top+printer_top_off/2+printer_height);
    /* 变小的底边 */
    line(printer_left+printer_left_off/2+3,printer_mid_top+printer_top_off/2+printer_height+3,printer_left+printer_width+printer_left_off/2-3,printer_mid_top+printer_top_off/2+printer_height+3);
    line(printer_left+printer_left_off/2+3,printer_mid_top+printer_top_off/2+printer_height+3,printer_left+printer_left_off/2,printer_mid_top+printer_top_off/2+printer_height);
    line(printer_left+printer_width+printer_left_off/2,printer_mid_top+printer_top_off/2+printer_height,printer_left+printer_width+printer_left_off/2-3,printer_mid_top+printer_top_off/2+printer_height+3);
    /* 画左边*/
    line(printer_left-printer_left_off/2,printer_mid_top-printer_top_off/2,printer_left+printer_left_off/2,printer_mid_top+printer_top_off/2);
    line(printer_left-printer_left_off/2,printer_mid_top-printer_top_off/2+printer_height,printer_left+printer_left_off/2,printer_mid_top+printer_top_off/2+printer_height);
    line(printer_left-printer_left_off/2,printer_mid_top-printer_top_off/2,printer_left-printer_left_off/2,printer_mid_top-printer_top_off/2+printer_height);
    line(printer_left+printer_left_off/2,printer_mid_top+printer_top_off/2,printer_left+printer_left_off/2,printer_mid_top+printer_top_off/2+printer_height);
    /* 画右边 */
    line(printer_left+printer_width+printer_left_off/2,printer_mid_top+printer_top_off/2,printer_left+printer_width+printer_left_off/2,printer_mid_top+printer_top_off/2+printer_height);
    /* 画右斜 */
    line(printer_left+printer_width-printer_left_off/2,printer_mid_top-printer_top_off/2,printer_left+printer_width+printer_left_off/2,printer_mid_top+printer_top_off/2);
    /* 画后边 */
    line(printer_left-printer_left_off/2,printer_mid_top-printer_top_off/2,printer_left-printer_left_off/2+printer_width,printer_mid_top-printer_top_off/2);
    /* 画纸张 */
    setfillstyle(1,paper_color);
    /* 下面的部分是显示纸张*/
    bar(print_left,print_top,print_left+print_width,print_top+print_height);
    setcolor(white_color);
    line(print_left,print_top,print_left+print_width,print_top);
    line(print_left,print_top,print_left,print_top+print_height);
    line(print_left+print_width,print_top,print_left+print_width,print_top+print_height);
    setcolor(line_color);
    M_G_RESTORE_FILLSETTING_OR_LINESETTING();
}

/****************************************************************************
模块名称:  辅助模块
函 数 名:  M_G_MALLOC_COLOR
功    能:  申请一种指定集合的颜色值,每一个颜色值代表一个作业显示在屏幕上
入口参数:  无
出口参数:  无(以全局变量作为出口参数 
调用关系:  被P1函数调用
编    者:  蔡晓跃(AP0106338)
编写日期:  2003-10-17
*****************************************************************************/
M_G_MALLOC_COLOR()
{
    if(blue_color==1)
    {
        JCBPCB_CURRENT_COLOR++;
        JCBPCB_CURRENT_COLOR %= 16;
        /* 每一个作业重新分配一种新的颜色 */
        while(JCBPCB_CURRENT_COLOR == BLACK || JCBPCB_CURRENT_COLOR == 4 || JCBPCB_CURRENT_COLOR == 9 || JCBPCB_CURRENT_COLOR == 16 || JCBPCB_CURRENT_COLOR == 8 || JCBPCB_CURRENT_COLOR == 1)
            JCBPCB_CURRENT_COLOR++;
    }
    else
    {
       JCBPCB_CURRENT_COLOR += 3;
        JCBPCB_CURRENT_COLOR %= 256;
        /* 每一个作业重新分配一种新的颜色 */
        while(JCBPCB_CURRENT_COLOR != 2 && 
            JCBPCB_CURRENT_COLOR != 3 &&
            JCBPCB_CURRENT_COLOR != 6 &&
            JCBPCB_CURRENT_COLOR != 7 &&
            JCBPCB_CURRENT_COLOR != 8 &&
            JCBPCB_CURRENT_COLOR != 9 &&
            JCBPCB_CURRENT_COLOR != 15 &&
            JCBPCB_CURRENT_COLOR != 23 &&
            JCBPCB_CURRENT_COLOR != 39 &&
            JCBPCB_CURRENT_COLOR != 48 &&
            JCBPCB_CURRENT_COLOR != 55 &&
            JCBPCB_CURRENT_COLOR != 56 &&
            JCBPCB_CURRENT_COLOR != 71 &&
            JCBPCB_CURRENT_COLOR != 87 &&
            JCBPCB_CURRENT_COLOR != 103 &&
            JCBPCB_CURRENT_COLOR != 119 &&
            JCBPCB_CURRENT_COLOR != 120 &&
            JCBPCB_CURRENT_COLOR != 135 &&
            JCBPCB_CURRENT_COLOR != 151 &&
            JCBPCB_CURRENT_COLOR != 167 &&
            JCBPCB_CURRENT_COLOR != 184 &&
            JCBPCB_CURRENT_COLOR != 199 &&
            JCBPCB_CURRENT_COLOR != 249 &&
            JCBPCB_CURRENT_COLOR != 250 &&
            JCBPCB_CURRENT_COLOR != 251 &&
            JCBPCB_CURRENT_COLOR != 253 &&
            JCBPCB_CURRENT_COLOR != 254 &&
            JCBPCB_CURRENT_COLOR != 255 ) 

            JCBPCB_CURRENT_COLOR+= 3;
    }
    return(JCBPCB_CURRENT_COLOR);
}
/****************************************************************************
模块名称:  辅助模块
函 数 名:  M_G_SAVE_FILLSETTINGS_OR_LINESETTING
功    能:  保存当前的线条的填充设置
入口参数:  无
出口参数:  无
调用关系:  被G_INIT_FACE函数调用
编    者:  蔡晓跃(AP0106338)
编写日期:  2003-10-17
*****************************************************************************/

⌨️ 快捷键说明

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