m0_62509981 2022-06-14 12:00 采纳率: 83.3%
浏览 54
已结题

操作系统实验与简单的界面设计

1.操作系统FCFS和SJF算法已经写好,想请教如何制作一个界面来选择使用这两种算法。类似于这种,需要一个简单的界面就行。

img


2.想知道代码和界面如何结合,如果会的话价格可谈,就一个简单界面就行

#include<stdio.h>
typedef struct PCB {
    int ID;    //进程
    double submit;     //提交时间 
    double run;    //运行时间 
    double start;  //开始时间 
    double end;    //结束时间 
    double TAT;  //周转时间
    
}PCB;
//先来先服务
void FCFS(PCB pcb[], int PCBNUM) {
    double n = 0, m;
    PCB temp;  
    //按提交时间排序 
    for (int i = 0; i < PCBNUM - 1; i++) {
        for (int j = i+1; j < PCBNUM ; j++) {
            if (pcb[i].submit > pcb[j ].submit) {
                temp = pcb[j];
                pcb[j] = pcb[i];
                pcb[i] = temp;
            }
        }
    }
    for (int i = 0; i < PCBNUM; i++) {
        if (i == 0) {
            pcb[i].start = pcb[i].submit;
        }
        else {
            pcb[i].start = pcb[i - 1].end;
        }
        pcb[i].end = pcb[i].start + pcb[i].run;
        pcb[i].TAT = pcb[i].end - pcb[i].submit;
        
    }
    printf("FCFS,先来先服务算法:\n");
    printf("名称    提交    运行    开始    结束    周转    \n");
    for (int i = 0; i < PCBNUM; i++) {        
        n += pcb[i].TAT;
        printf("%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", pcb[i].ID, pcb[i].submit, pcb[i].run, pcb[i].start, pcb[i].end, pcb[i].TAT);
    }
    printf("平均周转时间\n");
    m = n / PCBNUM;
    printf("%.2f", m);
    printf("\n");
}
//短进程优先 
void SJF(PCB pcb[], int PCBNUM) {
    PCB temp;  
    double n = 0, m;
    //选出第一个作业
    for (int i = 0; i < PCBNUM - 1; i++) {
        for (int j = i + 1; j < PCBNUM; j++) {        
            if (pcb[i].submit > pcb[j].submit) {
                temp = pcb[j];
                pcb[j] = pcb[i];
                pcb[i] = temp;
            }
        }
    }
    //按运行时间排序 
    for (int i = 1; i < PCBNUM - 1; i++) {
        for (int j = i+1; j < PCBNUM ; j++) {        
            if (pcb[i].run > pcb[j].run) {
                temp = pcb[j];
                pcb[j] = pcb[i];
                pcb[i] = temp;
            }
        }
    }
    for (int i = 0; i < PCBNUM; i++) {     
        if (i == 0) {
            pcb[i].start = pcb[i].submit;
        }
        else {
            pcb[i].start = pcb[i - 1].end;
        }
        pcb[i].end = pcb[i].start + pcb[i].run;
        pcb[i].TAT = pcb[i].end - pcb[i].submit;
        
    }
    printf("SPF,短进程优先算法:\n");
    printf("名称    提交    运行    开始    结束    周转    \n");
    for (int i = 0; i < PCBNUM; i++) {
        n += pcb[i].TAT;
        printf("%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", pcb[i].ID, pcb[i].submit, pcb[i].run, pcb[i].start, pcb[i].end, pcb[i].TAT);
    }
    printf("平均周转时间\n");
    m = n / PCBNUM;
    printf("%.2f", m);
    printf("\n");
}

int main() {
    printf("请输入进程数目:");
    int PCBNUM;
    scanf_s("%d", &PCBNUM);
    PCB pcb[100];  
    printf("请输入每个进程的进程名,提交时间,运行时长\n");
    for (int i = 0; i < PCBNUM; i++) {
        scanf_s("%d%lf%lf", &pcb[i].ID, &pcb[i].submit, &pcb[i].run);
    }
    FCFS(pcb, PCBNUM);
    SJF(pcb, PCBNUM);
}

  • 写回答

3条回答 默认 最新

  • 加油吧,小杜 2022-06-14 13:30
    关注

    你需要用到界面的,可以使用qt来进行界面的搭建。像你提到的类似窗口,非常简单就可以实现

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月15日
  • 已采纳回答 6月15日
  • 修改了问题 6月14日
  • 创建了问题 6月14日

悬赏问题

  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型