java 操作系统 模拟 daima_求C/C++或java写的比较简单的操作系统的模拟程序
展開全部
#include
#include
#include "Graphics.h"
#include
using namespace std;
const int FDF=-2;
const int FFF=-1;
const int N=100;//存儲空間
int fnum;//文件數量
struct FILEINFO{
char name[10];
int length;
int index[10];
};
FILEINFO file[10];
char DISK[N]; int blankspace;
void Graphindex(int last);
void printDISK()
{
int i;
cout<
for(i=0;i
cout<
cout<
cout<
cout<
cout<
}
}
void write(char *tmpname,int tmplength)
{
int i,j;
//復制文件名和文件塊個數
strcpy(file[fnum].name,tmpname);
file[fnum].length=tmplength;
//存文件
for(i=0;i
for(j=0;j
if(DISK[j]=='N'){
file[fnum].index[i]=j;//首個空e69da5e887aa3231313335323631343130323136353331333264626531閑塊為文件開始塊
DISK[j]='Y';
break;
}
}
}
blankspace-=tmplength;//改變空閑塊個數
fnum++;
cout<
}
void insert(char *tmpname,int insertpoint)
{
int i;
int last;
//尋找要執行插入操作的文件,將其數組下標存入last
for(i=0;i
if(strcmp(file[i].name,tmpname)==0){
last=i;
break;
}
}
for(i=0;i
file[last].index[file[last].length-i*1]=file[last].index[file[last].length-(i+1)*1];
}
for(i=0;i
if(DISK[i]=='N'){
file[last].index[insertpoint]=i;
DISK[i]='Y';
break;
}
}
//改變空閑塊個數與文件長度
file[last].length++;
blankspace--;
cout<
}
void printindex(char *tmpname)
{
int last,i;
for(i=0;i
if(strcmp(file[i].name,tmpname)==0){
last=i;
break;
}
}
cout<
cout<
for(i=0;i
cout<
}
Graphindex(last);
}
void itol(int i)
{
LPCTSTR yy;
char zz[10];
sprintf(zz, "%d", i);
//itoa(i,zz,10);
yy = LPCTSTR( zz );
//moveto(x+i*2,y+20);
moverel(25,9);
outtext(yy);
//return yy;
}
void ctol(char *c)
{
LPCTSTR yy;
yy = LPCTSTR( c );
moverel(0,0);
outtext(yy);
}
void Graphindex(int last)
{
int i,xx=100,yy=100,x=400,y=50;
initgraph(640, 480);
setfillstyle(SOLID_FILL,WHITE);
floodfill(5,5,WHITE);
setcolor(BLACK);
moveto(110,50); ctol(file[last].name);
outtextxy(150,50,"索引表");
outtextxy(115,80,"邏輯"); outtextxy(175,80,"物理");
rectangle(xx,yy-30,xx+60,yy); rectangle(xx+60,yy-30,xx+120,yy);
for(i=0;i
rectangle(xx,yy+i*30,xx+60,yy+(i+1)*30);
moveto(xx,yy+i*30); itol(i);
rectangle(xx+60,yy+i*30,xx+120,yy+(i+1)*30);
moveto(xx+60,yy+i*30); itol(file[last].index[i]);
moveto(xx+130,yy+i*30+15); lineto(x+(file[last].index[i]/20)*20+5,y+(file[last].index[i]%20)*20+5);
}
ellipse(x+45,25,0,360,60,15);
ellipse(x+45,440,180,360,60,15);
line(x-15,25,x-15,440);
line(x+105,25,x+105,440);
for(i=0;i
if(DISK[i]=='Y'){
setcolor(RED);
rectangle(x+(i/20)*20,y+(i%20)*20,x+(i/20)*20+10,y+(i%20)*20+10);
}else setcolor(GREEN);
rectangle(x+(i/20)*20,y+(i%20)*20,x+(i/20)*20+10,y+(i%20)*20+10);
}
getch();
closegraph();
}
void Graph()
{
int i,x=300,y=50;
initgraph(640, 480);
setfillstyle(SOLID_FILL,WHITE);
floodfill(5,5,WHITE);
setcolor(BLACK);
ellipse(x+45,25,0,360,60,15);
ellipse(x+45,440,180,360,60,15);
line(x-15,25,x-15,440);
line(x+105,25,x+105,440);
for(i=0;i
if(DISK[i]=='Y'){
setcolor(RED);
rectangle(x+(i/20)*20,y+(i%20)*20,x+(i/20)*20+10,y+(i%20)*20+10);
}else setcolor(GREEN);
rectangle(x+(i/20)*20,y+(i%20)*20,x+(i/20)*20+10,y+(i%20)*20+10);
}
getch();
closegraph();
}
void main()
{
int i;
char tmpname[10];
int tmplength;//要寫入文件長度
int o;//命令
fnum=0;
for(i=0;i
DISK[i]='N';
}
DISK[1]='Y';
blankspace=N;
while(1){
cout<
cin>>o;
switch(o){
case 1: cout<
cin>>tmpname;
cout<
cin>>tmplength;
write(tmpname,tmplength);
break;
case 2: cout<
cin>>tmpname;
int insertpoint;
cout<
cin>>insertpoint;
insert(tmpname,insertpoint);
break;
case 3: cout<
cin>>tmpname;
printindex(tmpname);break;
case 4: printDISK();Graph();break;
}
}
cin.get();
}
追問
我用的是vs2010,編譯結果:
1>c:\users\free\documents\visual studio 2010\projects\ostest\ostest\ostest.cpp(3): fatal error C1083: 無法打開包括文件:“Graphics.h”: No such file or directory
1>
1>生成失敗。
1>
1>已用時間 00:00:02.67
========== 生成: 成功 0 個,失敗 1 個,最新 0 個,跳過 0 個 ==========
已贊過
已踩過<
你對這個回答的評價是?
評論
收起
總結
以上是生活随笔為你收集整理的java 操作系统 模拟 daima_求C/C++或java写的比较简单的操作系统的模拟程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java web系统拆分_Java系统中
- 下一篇: java 版本兼容问题_3.5版本存在j