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

📄 form1.cs

📁 用VS描述的 模拟操作系统中的消费者与生产者的关系
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace scyxf
{
    public partial class Form1 : Form
    {
        int fi_i1 = 0;//move1
        int fi_i2 = 0;//move2
        int fi_i3 = 0;//move5
        int fi_i4 = 0;//move4
        double b = 1, c = 0;
        Rectangle r1 = new Rectangle(0, 0, 50, 50);
        Rectangle r2 = new Rectangle(0, 50, 50, 50);
        Rectangle r3 = new Rectangle(0, 50, 50, 50);
        Rectangle r4 = new Rectangle(0, 0, 50, 50);
        bool f_type1 = false;
        bool f_type2 = false;

        public void shengchan1()//生产
        {

            SolidBrush sb = new SolidBrush(Color.Red);
            pictureBox1.CreateGraphics().FillRectangle(sb, r1);
            sb.Dispose();
        }

        public void xiaofei1()//消费
        {

            SolidBrush sb = new SolidBrush(Color.Red);
            pictureBox2.CreateGraphics().FillRectangle(sb, r4);
            sb.Dispose();
        }

        public void move1()//移动
        {
            if (f_type1 == true)
            {
                if (5 * (fi_i1) < 255)
                    pictureBox1.SetBounds(5 * (fi_i1++), 50, 50, 50);
                else
                {
                    fi_i1 = 0;
                    this.move2();
                    fi_i2++;

                }
            }
        }

        public void move2()//缓冲
        {
            if (fi_i2 - fi_i3 < 5)
            {
                double a = (double)fi_i2;
                b = Math.IEEERemainder(a, 5.0);
                if (b == 0)
                {
                    if (fi_i2 == 0)
                    {
                        SolidBrush s11 = new SolidBrush(Color.Red);
                        groupBox3.CreateGraphics().FillRectangle(s11, r2);
                        s11.Dispose();
                    }
                    else
                    {
                        r2.Offset(-240, 0);
                        SolidBrush s22 = new SolidBrush(Color.Red);
                        groupBox3.CreateGraphics().FillRectangle(s22, r2);
                        s22.Dispose();
                    }
                }
                else
                {
                    r2.Offset(60, 0);
                    SolidBrush s22 = new SolidBrush(Color.Red);
                    groupBox3.CreateGraphics().FillRectangle(s22, r2);
                    s22.Dispose();
                }
            }
        }

        public void move3()//填充
        {

            if (fi_i2 - fi_i3 > 0)
            {
                double a = (double)fi_i3;
                c = Math.IEEERemainder(a, 5.0);
                if (c == 0)
                {
                    if (fi_i3 == 0)
                    {
                        SolidBrush s11 = new SolidBrush(Color.White);
                        groupBox3.CreateGraphics().FillRectangle(s11, r3);
                        s11.Dispose();
                    }
                    else
                    {
                        r3.Offset(-240, 0);
                        SolidBrush s22 = new SolidBrush(Color.White);
                        groupBox3.CreateGraphics().FillRectangle(s22, r3);
                        s22.Dispose();
                    }
                }
                else
                {
                    r3.Offset(60, 0);
                    SolidBrush s22 = new SolidBrush(Color.White);
                    groupBox3.CreateGraphics().FillRectangle(s22, r3);
                    s22.Dispose();
                }
            }
        }

        public void move4()
        {
            if (f_type2 == true)
            {
                if (5 * (fi_i4) < 255)
                {

                    pictureBox2.SetBounds(5 * (fi_i4++), 50, 50, 50);
                }
                else
                {
                    fi_i4 = 0;
                    move3();
                    fi_i3++;
                }
            }

        }

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (fi_i2 - fi_i3 < 5)
                this.move1();
        }

        private void timer2_Tick(object sender, EventArgs e)
        {
            if (fi_i2 - fi_i3 > 0)
                this.move4();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            shengchan1();
            f_type1 = true;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            f_type1 = false;
        }

        private void button4_Click(object sender, EventArgs e)
        {
            if (fi_i2 - fi_i3 != 0)
            {
                xiaofei1();
                f_type2 = true;
            }
            else
                MessageBox.Show("缓冲区无产品!");
        }

        private void button5_Click(object sender, EventArgs e)
        {
            f_type2 = false;
        }
    }
}

⌨️ 快捷键说明

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