#include#include #include struct jcb{ char name[10]; char status; int arrtime;//到达时间 int id; int reqtime;//作业运行所需时间 int startime;//开始时间 int finitime;//完成时间 int ti;//周转时间 float TAtime,TAWtime;//等待时间,带权周转时间 float prio;}job[24],jcb[24],jobarr[24];int systime=0;int m=0;int intarr,intfin,intjob;//到达的作业个数,完成作业个数、未到达作业个数int ReadFile(){ int i=0; FILE *fp; //定义文件指针 fp=fopen("F:/3.txt","r"); //打开文件 if(fp==NULL) { printf("File open error !\n"); exit(0); } printf("\n id 作业到达时间 作业运行所需要时间\n"); while(!feof(fp)) { fscanf(fp,"%d%d%d",&jcb[i].id,&jcb[i].arrtime,&jcb[i].reqtime); //fscanf()函数将数据读入 printf("\n%3d%12d%15d\n",jcb[i].id,jcb[i].arrtime,jcb[i].reqtime); //输出到屏幕 i++; } if(fclose(fp)) //关闭文件 { printf("Can not close the file !\n"); exit(0); } m=i; return m;}//调用伪随机数的产生数据int Pseudo_random_number(){ int i; srand((unsigned)time(0)); //参数seed是rand()的种子,用来初始化rand()的起始值。 //输入作业数 m=rand()%23+5; for(i=1; i<=m; i++) { jcb[i].id=i; //作业到达时间 jcb[i].arrtime=rand()%29+1; //作业运行时间 jcb[i].reqtime=rand()%7+1; } printf("\n id 作业到达时间 作业运行所需要时间\n"); for(i=1; i<=m; i++) { printf("\n%3d%12d%15d\n",jcb[i].id,jcb[i].arrtime,jcb[i].reqtime); } return m;}//先到先服务void TheFCFS(){ int i,j; float sum=0.0,acount=0.0; struct jcb temp; printf("**********先来先服务算法FCFS*************\n"); //ReadFile(); for(i=0;i jcb[j].arrtime) { temp=jcb[i]; jcb[i]=jcb[j]; jcb[j]=temp; } } } printf("\n id 作业到达时间 作业运行所需要时间\n"); for(i=0;i jcb[j].arrtime) { temp=jcb[i]; jcb[i]=jcb[j]; jcb[j]=temp; } } } printf("\n id 作业到达时间 作业运行所需要时间\n"); for(i=0;i jcb[j].reqtime){ temp=jcb[i]; jcb[i]=jcb[j]; jcb[j]=temp; } } } jisuan(i,j);}//HRRF(最高响应比)算法调度 void TheHRRF(){ int i,j;float sum=0.0,acount=0.0; struct jcb temp; printf("**********最高响应比算法HRRF*************\n"); //ReadFile(); for(i=0;i jcb[j].arrtime) { temp=jcb[i]; jcb[i]=jcb[j]; jcb[j]=temp; } } } for(i=1;i jcb[j].reqtime){ temp=jcb[i]; jcb[i]=jcb[j]; jcb[j]=temp; } } } printf("\n id 作业到达时间 作业运行所需要时间\n"); for(i=0;i :");}void insert(int n){ int i,j; char name[10]; int arrtime1; int reqtime1; printf("what?\n"); printf("输入作业名:"); scanf("%s",name); printf("到达时间:"); scanf("%d",&arrtime1); printf("要求服务时间:"); scanf("%d",&reqtime1); printf("\n"); for(i=0;i<=n;i++) { if(arrtime1 =i;j--) { job[j+1].arrtime=job[j].arrtime; strcpy(job[j+1].name,job[j].name); job[j+1].reqtime=job[j].reqtime; } job[i].arrtime=arrtime1; strcpy(job[i].name,name); job[i].reqtime=reqtime1; //n=n+1; break; } if((i=n)&&(arrtime1>=job[i].arrtime)) { job[i].arrtime=arrtime1; job[i].reqtime=reqtime1; strcpy(job[i].name,name); } } for(i=0;i<=n;i++) { printf("N %d\t%s\t%d\t%d\n",i+1,job[i].name,job[i].arrtime,job[i].reqtime); }}void Delete(int n){ int i,j; int arrtime1; printf("what?\n"); printf("input the data to delete:"); scanf("%d",&arrtime1); for(i=0;i job[j].arrtime){ temp=job[i]; job[i]=job[j]; job[j]=temp; } } } printf("经按到达时间排序后,未达到队列是\n"); printf("\tname\tartime\trqtime\n"); for(i=0;i