資源簡介
(1)多用戶 :usr1,usr2 (2個用戶)
(2)多級目錄:具有樹形目錄結構;
(3)具有login (用戶登錄)和用戶身份認證功能;
(4)文件的創建: create
(5)文件的打開:open
(6)文件的讀:read
(7)文件的寫:write
(8)文件關閉:close
(9)刪除文件:delete
(10)創建目錄(建立子目錄):mkdir
(11)改變當前目錄:cd
(12)列出文件目錄:dir(列目錄時要列出文件名、物理地址和文件長度)
(13)退出:logout
(14)有文件保護機制,如對文件設置訪問權限等(如用戶usr1不能對usr2創建的文件進行修改等)。

代碼片段和文件信息
/******************************************************
?*?作者:安佳?2006116236
?*?創建時間:2009-04-01
?*?最近修改時間:2009-04-10
?*
?*?題目:模擬UNIX文件系統
?*?實現功能:
?*????????????1.?多用戶的登陸
?*????????????2.?文件的創建、打開、讀、寫、關閉、刪除
?*????????????3.?創建子目錄、改變當前目錄、列出文件目錄
?*????????????5.?文件的部分保護機制
?*????????????4.?退出
?*
?******************************************************/
#include?
#include??????????????????????????//??清屏函數?system(“cls“)
#include?“unix.h“
void?main()
{
int?result?type;
char?input[50];
char?command[3][20];?????????????//?輸入的命令
????if(?readBitmapFile(“bitmap.txt“)?==?FAIL?)?????//?讀入位示圖信息
putError(“讀取位示圖文件失敗?!“);
????result?=?initial();??//?初始化:?在根目錄下分別創建兩個目錄?root?和?home
????if(?result?==?FAIL?)
{
putError(“根目錄創建失敗!沒有空閑盤塊?...“);
return;
}??
result?=?Login();???//?登錄系統
while(?result?==?FAIL?)?//?若密碼連續錯誤3次,則換另一用戶重新登
{
system(“cls“);
result?=?Login();?
}
printf(“登錄成功?!\n“);
while(1)
{
proAddr();
????fflush(stdin);
????gets(input);
????type?=?analyze(?input?command?);?
????switch(?type?)
{
????????case?0:???????????????????????????????????????//?adduser?user_name??
????????????result?=?addUser(command[1]?command[1]);?//默認密碼同用戶名一致?
????????if(?result?==?FAIL?)
???????putError(“用戶數已滿,添加失敗?!“);
????????????????????else?
???????printf(“添加用戶成功?!\n“);
????????break;
???????? case?1:???????????????????????????????????????//?password
????????????result?=?alterPasswd(command[1]);
????????if(?result?==?FAIL?)
???????putError(“無效用戶名?!?應為?:?password?uname“);
????????????????????else?
???????printf(“修改密碼成功?!\n“);
????????????break;
???????????case?2:???????????????????????????????????????//?su?user_name
????????????result?=?suUser(?command[1]?);
if(?result?==?FAIL?)
putError(“無效用戶名?!“);
else?if(?result?==?OCASE?)
putError(“密碼錯誤?切換失敗?!“);
else?
printf(?“用戶切換成功?!\n“?);
????????break;
???????case?3:???????????????????????????????????????//?create?file_name
????????????result?=?createFile(?command[1]?);
????????if(?result?==?FAIL?)
???????????putError(“文件創建失敗?!?該目錄下能建立的文件已滿?...“);
else?if(?result?==?OCASE?)
???????????putError(“文件創建失敗?!?沒空閑的磁盤i節點?...“);
else?if(?result?==?OCASE2?)
???????????putError(“文件創建失敗?!?內存不足?...“);
????????????????????else?
???????printf(“文件創建成功?!\n“);
????????????break;
???????case?4:??????????????????????????????????????//?open?file_name
????????????result?=?openFile(?command[1]?command[2]?);
????????if(?result?==?FAIL?)
???????putError(“文件打開失敗?!?用戶打開文件表已滿?...“);
else?if(?result?==?OCASE?)
???????putError(“文件打開失敗?!?無效文件名?...“);
????????????????????else?
???????printf(“文件打開成功?!\n“);
????????????break;
???????case?5:???????????????????????????????????????//?read?file_name
????????????result?=?readFile(?command[1]?);
if(?result?==?FAIL?)
???????????putError(“在
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????7959??2009-04-10?19:13??unix.h
?????文件?????????30??2009-04-02?18:21??bitmap.txt
?????文件???????5339??2009-04-10?18:37??main.cpp
?????文件??????22688??2009-04-21?00:26??unix.cpp
-----------?---------??----------?-----??----
????????????????36016????????????????????4
- 上一篇:實現三維坐標變換、投影變換,C++實現。
- 下一篇:純C語言寫的打字母游戲
評論
共有 條評論