模拟一个简单二级文件管理系统Word格式.docx

上传人:b****5 文档编号:20326964 上传时间:2023-01-22 格式:DOCX 页数:24 大小:30.15KB
下载 相关 举报
模拟一个简单二级文件管理系统Word格式.docx_第1页
第1页 / 共24页
模拟一个简单二级文件管理系统Word格式.docx_第2页
第2页 / 共24页
模拟一个简单二级文件管理系统Word格式.docx_第3页
第3页 / 共24页
模拟一个简单二级文件管理系统Word格式.docx_第4页
第4页 / 共24页
模拟一个简单二级文件管理系统Word格式.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

模拟一个简单二级文件管理系统Word格式.docx

《模拟一个简单二级文件管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《模拟一个简单二级文件管理系统Word格式.docx(24页珍藏版)》请在冰豆网上搜索。

模拟一个简单二级文件管理系统Word格式.docx

5.#include<

string.h>

6.#defineMaxUser100//定义最大MDF主目录文件

7.#defineMaxDisk512*1024//模拟最大磁盘空间

8.#definecommandAmount12//对文件操作的指令数

9.//存储空间管理有关结构体和变量

10.chardisk[MaxDisk];

//模拟512K的磁盘存储空间

11.typedefstructdistTable//磁盘块结构体

12.{

13.intmaxlength;

14.intstart;

15.intuseFlag;

16.distTable*next;

17.}diskNode;

18.diskNode*diskHead;

19.struct//文件块结构体

20.{

21.char[10];

22.intstrat;

//文件在磁盘存储空间的起始地址

23.intlength;

//文件内容长度

24.intmaxlength;

//文件的最大长度

25.char[3];

//文件的属性——读写方式

26.structtm*timeinfo;

27.boolopenFlag;

//判断是否有进程打开了该文件

28.//*next;

29.};

30.

31.//两级目录结构体

32.typedefstructuser_//用户文件目录文件UFD

33.{

34.//char[10];

35.*file;

36.user_*next;

37.}UFD;

38.//UFD*headFile;

39.typedefstructmaster_//主文件目录MFD

40.{

41.charuserName[10];

42.charpassword[10];

43.UFD*user;

44.}MFD;

45.MFDuserTable[MaxUser];

46.intused=0;

//定义MFD目录中用已有的用户数

47.

48.//文件管理

49.void(char[],intlength,char[]);

//创建文件

50.void(char[]);

//写文件

51.void(char[]);

//读文件

52.void(char[],charrename[]);

//重命名文件

53.void(char[]);

//查询文件

54.void(charUserName[]);

//显示某一用户的所有文件

55.void(char[]);

//关闭已打开的文件

56.void(char[]);

//删除文件

57.voidchmod(char[],charkind[]);

//修改文件的读写方式

58.intrequestDist(int&

startPostion,intmaxLength);

//磁盘分配查询

59.voidinitDisk();

//初始化磁盘

60.voidfreeDisk(intstartPostion);

//磁盘空间释放

61.voiddiskShow();

//显示磁盘使用情况

62.

63.//用户管理

64.voiduserCreate();

65.intlogin();

66.intuserID=-1;

//用户登录的ID号,值为-1时表示没有用户登录

67.

68.intmain()

69.{

70.charorder[commandAmount][10];

71.strcpy(order[0],"

create"

);

72.strcpy(order[1],"

rm"

73.strcpy(order[2],"

cat"

74.strcpy(order[3],"

write"

75.strcpy(order[4],"

fine"

76.strcpy(order[5],"

chmod"

77.strcpy(order[6],"

ren"

78.strcpy(order[7],"

dir"

79.strcpy(order[8],"

close"

80.strcpy(order[9],"

return"

81.strcpy(order[10],"

exit"

82.strcpy(order[11],"

df"

83.charcommand[50],command_str1[10],command_str2[10],command_str3[5],command_str4[3];

84.inti,k,j;

85.intlength;

86.initDisk();

87.for(i=0;

i<

MaxUser;

i++)//初始化用户UFD目录文件的头指针

88.{

89.userTable[i].user=(UFD*)malloc(sizeof(UFD));

90.userTable[i].user->

next=NULL;

91.}

92.while

(1)

93.{

94.printf("

********************************************/n"

95.printf("

1、Creatuser/n"

96.printf("

2、login/n"

97.printf("

98.printf("

Pleasechoocethefunctionkey:

>

"

99.intchoice;

100.scanf("

%d"

&

choice);

101.if(choice==1)userCreate();

102.elseif(choice==2)userID=login();

103.elseprintf("

您的输入有误,请重新选择/n"

104.while(userID!

=-1)

105.{

106.fflush(stdin);

107.printf("

———————————————————————————————————————/n"

108.printf("

create-创建格式:

createa11000rw,将创建名为a1,长度为1000字节可读可写的文件/n"

109.printf("

rm-删除格式:

rma1,将删除名为a1的文件/n"

110.printf("

cat-查看文件内容格式:

cata1,显示a1的内容/n"

111.printf("

write-写入格式:

writea1/n"

112.printf("

fine-查询格式:

finea1,将显示文件a1的属性/n"

113.printf("

chmod-修改格式:

chmoda1r,将文件a1的权限改为只读方式/n"

114.printf("

ren-重命名格式:

rena1b1,将a1改名为b1/n"

115.printf("

dir-显示文件格式:

diraaa,将显示aaa用户的所有文件/n"

116.printf("

df-显示磁盘空间使用情况格式:

df/n"

117.printf("

close-关闭文件格式:

closea1,将关闭文件a1/n"

118.printf("

return-退出用户,返回登录界面/n"

119.printf("

exit-退出程序/n"

120.printf("

————————————————————————————————————————/n"

121.printf("

pleaseimputyourcommand:

122.gets(command);

123.intselect;

124.for(i=0;

command[i]!

='

'

&

/0'

;

i++)//command_str1字符串存储命令的操作类型

125.command_str1[i]=command[i];

126.k=i;

127.command_str1[k]='

128.for(i=0;

commandAmount;

i++)

129.{

130.if(!

strcmp(command_str1,order[i]))

131.{

132.select=i;

133.break;

134.}

135.}

136.if(i==commandAmount)

137.{

138.printf("

您输入的命令有误,请重新输入/n"

139.continue;

140.}

141.for(i=k+1,k=0;

i++,k++)//commmand_str2字符串存储文件名或用户名

142.command_str2[k]=command[i];

143.command_str2[k]='

144.k=i;

145.switch(select)

146.{

147.case0:

for(i=k+1,k=0;

i++,k++)

148.command_str3[k]=command[i];

149.command_str3[k]='

150.k=i;

151.j=1;

152.length=0;

//初始化文件长度

153.for(i=strlen(command_str3)-1;

i>

=0;

i--)//把字符串转换为十进制

154.{

155.length+=(command_str3[i]-48)*j;

156.j*=10;

157.}

158.for(i=k+1,k=0;

159.command_str4[k]=command[i];

160.command_str4[k]='

161.(command_str2,length,command_str4);

break;

162.case1:

(command_str2);

163.case2:

164.case3:

165.(command_str2);

166.case4:

167.case5:

168.command_str3[k]=command[i];

169.command_str3[k]='

170.chmod(command_str2,command_str3);

171.case6:

172.command_str3[k]=command[i];

173.command_str3[k]='

174.(command_str2,command_str3);

175.case7:

176.case8:

177.case9:

UFD*p;

178.for(p=userTable[userID].user->

next;

p!

=NULL;

p=p->

next)//退出用户之前关闭所有打的文件

179.if(p->

file->

openFlag)

180.p->

openFlag=false;

181.system("

cls"

182.userID=-1;

183.case10:

exit(0);

184.case11:

diskShow();

185.}

186.}

187.}

188.return0;

189.}

190.

191.voiduserCreate()

192.{

193.charc;

194.charuserName[10];

195.inti;

196.if(used<

MaxUser)

197.{

198.printf("

请输入用户名:

199.for(i=0;

c=getch();

200.{

201.if(c==13)break;

202.else

203.userName[i]=c;

204.printf("

%c"

c);

205.}

206.userName[i]='

207.for(i=0;

used;

208.{

209.if(!

strcmp(userTable[i].userName,userName))

210.{

211.printf("

/n"

212.printf("

该用户名已存在,创建用户失败/n"

213.system("

pause"

214.return;

215.}

216.}

217.strcpy(userTable[used].userName,userName);

218.printf("

219.printf("

请输入密码:

220.for(i=0;

221.{

222.if(c==13)break;

223.else

224.userTable[used].password[i]=c;

225.printf("

*"

226.}

227.userTable[userID].password[i]='

228.printf("

229.printf("

创建用户成功/n"

230.used++;

231.system("

232.}

233.else

234.{

235.printf("

创建用户失败,用户已达到上限/n"

236.system("

237.}

238.fflush(stdin);

239.}

240.

241.intlogin()

242.{

243.charname[10],psw[10];

244.charc;

245.inti,times;

246.printf("

请输入用户名:

247.for(i=0;

248.{

249.if(c==13)break;

250.else

251.name[i]=c;

252.printf("

253.}

254.name[i]='

255.for(i=0;

256.{

257.if(!

strcmp(userTable[i].userName,name))

258.break;

259.}

260.if(i==used)

261.{

262.printf("

/n您输入的用户名不存在/n"

263.system("

264.return-1;

265.}

266.for(times=0;

times<

3;

times++)

267.{

268.memset(psw,'

sizeof(psw));

269.printf("

/n请输入密码:

270.for(i=0;

271.{

272.if(c==13)break;

273.else

274.psw[i]=c;

275.printf("

276.}

277.printf("

278.for(i=0;

279.{

280.if(!

strcmp(psw,userTable[i].password))

281.{

282.printf("

用户登录成功/n"

283.system("

284.break;

285.}

286.}

287.if(i==used)

288.{

289.printf("

您输入的密码错误,您还有%d次输入机会/n"

2-times);

290.if(times==2)exit(0);

291.}

292.elsebreak;

293.}

294.fflush(stdin);

295.returni;

296.}

297.

298.voidinitDisk()

299.{

300.diskHead=(diskNode*)malloc(sizeof(diskNode));

301.diskHead->

maxlength=MaxDisk;

302.diskHead->

useFlag=0;

303.diskHead->

start=0;

304.diskHead->

305.}

306.intrequestDist(int&

startPostion,intmaxLength)

307.{

308.intflag=0;

//标记是否分配成功

309.diskNode*p,*q,*temp;

310.p=diskHead;

311.while(p)

312.{

313.if(p->

useFlag==0&

p->

maxlength>

maxLength)

314.{

315.startPostion=p->

start;

316.q=(diskNode*)malloc(sizeof(diskNode));

317.q->

start=p->

318.q->

maxlength=maxLength;

319.q->

useFlag=1;

320.q->

321.diskHead->

start+maxLength;

322.diskHead->

maxlength=p->

maxlength-maxLength;

323.flag=1;

324.temp=p;

325.if(diskHead->

next==NULL)diskHead->

next=q;

326.else

327.{

328.while(temp->

next)temp=temp->

329.temp->

330.}

331.break;

332.}

333.p=p->

334.}

335.returnflag;

336.}

337.

338.void(char[],intlength,char[])

339.{

340.//inti,j;

341.time_trawtime;

342.intstartPos;

343.UFD*,*p;

344.for(p=userTable[userID].user->

p=p-

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1