www.pudn.com > zyglcx.rar > zyglcx.cpp
#define n 10 #define m 10 #define area 1000 #define minisize 50 #include#include struct { float address; /*分区起始地址*/ float lenth; /*空闲长度,单位为块*/ int flag; /*空闲表登记栏标志,用"0"表示空栏目,"1"表示未分配*/ } table[n]; /*空闲表*/ void select() { system("cls"); /*输出功能提示*/ system("title 王琦的课程设计!"); system("color 5e"); printf("┏━━━━━━━━━━┓\n"); printf("┃请选择服务类型 ┃\n"); printf("┣━━━━━━━━━━┫\n"); printf("┃1 调入新的文件 ┃\n"); printf("┃2 收回文件磁盘空间 ┃\n"); printf("┃3 打印磁盘分配情况表┃\n"); printf("┃4 退出 ┃\n"); /*输出功能提示*/ printf("┗━━━━━━━━━━┛\n"); printf("请选择服务类型:"); } void main() {struct { float address; /* 已分分区起始块号*/ float length; /* 已分分区长度,单位为字节*/ int flag; /*已分配区表登记栏标志,用"0"表示空栏目,已分配用文件名表示*/ }used_table[n]; /*已分配区表*/ struct { float address; /*分区起始块号*/ float length; /*空闲区长度,单位为块*/ int flag; /*空闲表登记栏标志,用"0"表示空栏目,"1"表示未分配*/ }table[n]; /*空闲表*/ int i,a,name,j=0,flag=0,right=0,h; float length,head,tail; for(i=0;i =length) { break; }i++; } /*找到一个合适的空间,分配给文件*/ if(i>=n) printf("无足够磁盘空间\n"); /*若磁盘不足,则给于相应的提示*/ else {while(used_table[j].flag!=0) j++; used_table[j].address=table[i].address; used_table[j].length=length; /*对磁盘取表和已分配区表进行调整*/ used_table[j].flag=name; table[i].address=table[i].address+length; table[i].length-=length; } } else if(a==2) { system("color 4e"); printf("输入想删除的文件名: "); scanf("%d",&name); h=0; for(i=0;i