ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:30.15KB ,
资源ID:20326964      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20326964.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(模拟一个简单二级文件管理系统Word格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、5. #include 6. #define MaxUser 100 /定义最大MDF主目录文件 7. #define MaxDisk 512*1024 /模拟最大磁盘空间 8. #define commandAmount 12 /对文件操作的指令数 9. /存储空间管理有关结构体和变量 10. char diskMaxDisk; /模拟512K的磁盘存储空间 11. typedef struct distTable /磁盘块结构体 12. 13. int maxlength;14. int start;15. int useFlag;16. distTable *next;17. diskN

2、ode;18. diskNode *diskHead;19. struct /文件块结构体 20. 21. char 10;22. int strat; /文件在磁盘存储空间的起始地址 23. int length; /文件内容长度 24. int maxlength; /文件的最大长度 25. char 3; /文件的属性读写方式 26. struct tm *timeinfo;27. bool openFlag; /判断是否有进程打开了该文件 28. / *next;29. ;30. 31. /两级目录结构体 32. typedef struct user_ /用户文件目录文件UFD 33

3、. 34. /char 10;35. *file;36. user_ *next;37. UFD;38. /UFD *headFile;39. typedef struct master_ /主文件目录MFD 40. 41. char userName10;42. char password10;43. UFD *user;44. MFD;45. MFD userTableMaxUser;46. int used=0; /定义MFD目录中用已有的用户数 47. 48. /文件管理 49. void (char ,int length,char ); /创建文件 50. void (char )

4、; /写文件 51. void (char ); /读文件 52. void (char ,char rename); /重命名文件 53. void (char ); /查询文件 54. void (char UserName); /显示某一用户的所有文件 55. void (char ); /关闭已打开的文件 56. void (char ); /删除文件 57. void chmod(char ,char kind); /修改文件的读写方式 58. int requestDist(int &startPostion,int maxLength); /磁盘分配查询 59. void ini

5、tDisk(); /初始化磁盘 60. void freeDisk(int startPostion); /磁盘空间释放 61. void diskShow(); /显示磁盘使用情况 62. 63. /用户管理 64. void userCreate();65. int login();66. int userID=-1; /用户登录的ID号,值为-1时表示没有用户登录 67. 68. int main() 69. 70. char ordercommandAmount10;71. strcpy(order0,create);72. strcpy(order1,rm73. strcpy(ord

6、er2,cat74. strcpy(order3,write75. strcpy(order4,fine76. strcpy(order5,chmod77. strcpy(order6,ren78. strcpy(order7,dir79. strcpy(order8,close80. strcpy(order9,return81. strcpy(order10,exit82. strcpy(order11,df83. char command50,command_str110,command_str210,command_str35,command_str43;84. int i,k,j;8

7、5. int length;86. initDisk();87. for(i=0;inext=NULL;91. 92. while(1) 93. 94. printf(*/n95. printf( 1、Creat user/n96. printf( 2、login/n97. printf(98. printf(Please chooce the function key:99. int choice;100. scanf(%d,&choice);101. if(choice=1) userCreate();102. else if(choice=2) userID=login();103. e

8、lse printf(您的输入有误,请重新选择/n104. while(userID!=-1) 105. 106. fflush(stdin);107. printf(/n108. printf( create-创建 格式:create a1 1000 rw,将创建名为a1,长度为1000字节可读可写的文件/n109. printf( rm-删除 格式:rm a1,将删除名为a1的文件/n110. printf( cat-查看文件内容 格式:cat a1,显示a1的内容/n111. printf( write-写入 格式:write a1/n112. printf( fine-查询 格式:fi

9、ne a1 ,将显示文件 a1的属性/n113. printf( chmod-修改 格式:chmod a1 r,将文件a1的权限改为只读方式/n114. printf( ren-重命名 格式:ren a1 b1 ,将a1改名为b1/n115. printf( dir-显示文件 格式:dir aaa,将显示aaa用户的所有文件/n116. printf( df-显示磁盘空间使用情况 格式:df/n117. printf( close-关闭文件 格式:close a1,将关闭文件a1/n118. printf( return-退出用户,返回登录界面/n119. printf( exit-退出程序/

10、n120. printf(/n121. printf(please imput your command:122. gets(command);123. int select;124. for(i=0;commandi!= &/0;i+) /command_str1字符串存储命令的操作类型 125. command_str1i=commandi;126. k=i;127. command_str1k=128. for(i=0;commandAmount;i+) 129. 130. if(!strcmp(command_str1,orderi) 131. 132. select=i;133. b

11、reak;134. 135. 136. if(i=commandAmount) 137. 138. printf(您输入的命令有误,请重新输入/n139. continue;140. 141. for(i=k+1,k=0;i+,k+) /commmand_str2字符串存储文件名或用户名 142. command_str2k=commandi;143. command_str2k=144. k=i;145. switch(select) 146. 147. case 0:for(i=k+1,k=0;i+,k+) 148. command_str3k=commandi;149. command_

12、str3k=150. k=i;151. j=1;152. length=0; /初始化文件长度 153. for(i=strlen(command_str3)-1;i=0;i-) /把字符串转换为十进制 154. 155. length+=(command_str3i-48)*j;156. j*=10;157. 158. for(i=k+1,k=0;159. command_str4k=commandi;160. command_str4k=161. (command_str2,length,command_str4);break;162. case 1:(command_str2);163.

13、 case 2:164. case 3:165. (command_str2);166. case 4:167. case 5:168. command_str3k=commandi;169. command_str3k=170. chmod(command_str2,command_str3);171. case 6:172. command_str3k=commandi;173. command_str3k=174. (command_str2,command_str3);175. case 7:176. case 8:177. case 9:UFD *p;178. for(p=userT

14、ableuserID.user-next;p!=NULL;p=p-next) /退出用户之前关闭所有打的文件 179. if(p-file-openFlag) 180. p-openFlag=false;181. system(cls182. userID=-1;183. case 10:exit(0);184. case 11:diskShow();185. 186. 187. 188. return 0;189. 190. 191. void userCreate() 192. 193. char c;194. char userName10;195. int i;196. if(used

15、MaxUser) 197. 198. printf(请输入用户名:199. for(i=0;c=getch();200. 201. if(c=13) break;202. else 203. userNamei=c;204. printf(%c,c);205. 206. userNamei=207. for(i=0;used;208. 209. if(!strcmp(userTablei.userName,userName) 210. 211. printf(/n212. printf(该用户名已存在,创建用户失败/n213. system(pause214. return;215. 216.

16、 217. strcpy(userTableused.userName,userName);218. printf(219. printf(请输入密码:220. for(i=0;221. 222. if(c=13) break;223. else 224. userTableused.passwordi=c;225. printf(*226. 227. userTableuserID.passwordi=228. printf(229. printf(创建用户成功/n230. used+;231. system(232. 233. else 234. 235. printf(创建用户失败,用户

17、已达到上限/n236. system(237. 238. fflush(stdin);239. 240. 241. int login() 242. 243. char name10,psw10;244. char c;245. int i,times;246. printf(请输入用户名:247. for(i=0;248. 249. if(c=13) break;250. else 251. namei=c;252. printf(253. 254. namei=255. for(i=0;256. 257. if(!strcmp(userTablei.userName,name) 258.

18、break;259. 260. if(i=used) 261. 262. printf(/n您输入的用户名不存在/n263. system(264. return -1;265. 266. for(times=0;timesmaxlength=MaxDisk;302. diskHead-useFlag=0;303. diskHead-start=0;304. diskHead-305. 306. int requestDist(int &startPostion,int maxLength) 307. 308. int flag=0; /标记是否分配成功 309. diskNode *p,*q

19、,*temp;310. p=diskHead;311. while(p) 312. 313. if(p-useFlag=0&p-maxlengthmaxLength) 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;

20、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. return flag;336. 337. 338. void (char ,int length,char ) 339. 340. /int i,j;341. time_t rawtime;342. int startPos;343. UFD *,*p;344. for(p=userTableuserID.user-p=p-

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

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