m0_62509981 2022-06-14 12:00 采纳率: 83.3%

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

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

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来进行界面的搭建。像你提到的类似窗口，非常简单就可以实现

本回答被题主选为最佳回答 , 对您是否有帮助呢?
评论

#### 问题事件

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

#### 悬赏问题

• ¥15 有偿求做台风过境全过程模拟仿真
• ¥50 求！AutomationDesk 如何自动导入Variant数据
• ¥20 Next.JS 静态导出路由
• ¥15 我做一个对中文文本情感分析的项目 我用了CNN，和keras框架 报的错误我一直处理不好
• ¥15 unity使用bakery打光烘焙所遇到的问题。
• ¥99 二维有限元方法求解，泊松方程
• ¥15 我需要在PC端 开两个抖店工作台客户端.(语言-java)
• ¥15 有没有哪位厉害的人可以用C#可视化呀
• ¥15 可以帮我看看代码哪里错了吗
• ¥15 设计一个成绩管理系统