windows資源管理器(只能看,不能用)

2022-05-25 15:06:08 字數 4426 閱讀 3475

實現windows資源管理器

##問題描述

windows資源管理器是用來管理計算機資源的視窗,電腦裡所有的檔案都可以在資源管理器裡找到,可以在資源管理器裡檢視資料夾的分層結構,可以利用資源管理器快速進行檔案和資料夾的操作。例如,磁碟(根)、目錄、不同型別的檔案。 其中,檔案資訊包括檔名、型別、建立時間、檔案大小等;磁碟資訊包括磁碟名稱、總大小、可用空間等;目錄資訊包括目錄名稱、修改日期、大小、物件數等。(1)構造乙個空的資源管理器;

(2)新建/刪除磁碟;

(3)在當前選擇目錄下新建/刪除目錄;

(4)在當前選擇目錄下新建/刪除檔案;

(5)以目錄樹的形式輸出當前目錄下的檔案以及資料夾資訊,並統計目錄數和檔案數;

(6)回上一級:當前目錄為當前目錄的上一級目錄,並以目錄樹的形式輸出當前目錄下的檔案以及資料夾資訊,並統計目錄數和檔案數;

(7)模糊查詢目錄/檔案資訊,並顯示查詢結果;

(8)撤銷乙個資源管理器。

鍊錶煩死了,但是還只能用鍊錶寫(貌似其實正解是二叉樹),書上東西還沒有看完就開工了,最後實現了乙個看起來有點像二叉樹的樹形結構,樣式的話其實是模仿了命令列的設計,用一整行命令去實現操作,看起來比較美觀,但是有些隱藏bug可能還沒發現,但是目前為止是能用的,寫了400多行,腰痠背痛,要gg了,嗚嗚~

struct file 

file *insertafter(string name, string type, int zone)

};struct floder

floder(string name,int size,floder *nex=null):m_name(name),max_size(size),nex(nex)

floder *insrtafter(string name,int size)

void insertlink(string name,int size)

};

void print_time(floder *p);

void print_time(file *p);

class disk

floder*gethead()

string getpath()

void printpath()

floder* open_floder(floder *cur, string aim)

flag = true;

path += cur->m_name;

path += "\\";

return cur;

}else cur = cur->nex;

} if (flag == false)

return cur;

} floder *quit(floder *cur)

floder *ans = null;

query_dir(&user,cur,ans);

if (ans == null)

path = path.substr(0, path.length() - 1);

while (path[path.size() - 1] != '\\')

return ans;

} bool query_dir(floder *cur,floder *aim,floder*&ans)

else

} return false;

} int query_zone(floder *p)

file *q = p->f_first->nex;

while (q != null)

return ans;

} void find(string path, floder *src, string aim)

while (p != null)

if(path[path.size()-1]!='\\')

find(path + "\\" + p->m_name, p, aim);

else find(path + p->m_name, p, aim);

p = p->nex;

} file *q = src->f_first->nex;

while (q != null)

q = q->nex;

} }bool cmp(string a, string b)

if (flag == true)return true;

} return false;

} void display_dir(floder*cur)

int num_f = 0, num_d = 0;

long long all_zone = query_zone(cur);

floder *p = cur->link;

if(p!=null)

p = p->nex;

while (p != null)

file *q = cur->f_first->nex;

while (q != null)

cout << setw(40) << num_f << "個檔案,已用" << all_zone << "個位元組" << endl;

cout << setw(40) << num_d << "個目錄,剩餘可用空間" } void add_disk(string name,int size=0)

while (p->nex!= null)

p=p->insrtafter(name,size);

} void add_floder(string name, floder *src)

floder *p = src->link,*temp=src;

if (p == null)

while (p->nex != null)

p=p->insrtafter(name,0);

temp->date_hour = p->date_hour;

temp->date_min = p->date_min;

temp->date_sec = p->date_sec;

} void add_file(string name, string type, int size, floder *src)

if (size > cur_disk->max_size - query_zone(src))

file *p = src->f_first;

floder *temp = src;

while (p->nex != null)

p=p->insertafter(name, type, size);

temp->date_hour = p->date_hour;

temp->date_min = p->date_min;

temp->date_sec = p->date_sec;

} void delet_dir(floder *src)

floder *p = src->link,*tt;

if (p != null)

p = p->nex;

while (p != null)

} void delet_d(floder*src, string aim)

p = p->nex;

} if (flag)

else

} else

} void delet_file(file *src)

else

} void delet_f(floder*src, string aim)

p = p->nex;

} if (flag)

else

}};void print_time(floder *p)

void print_time(file *p)

#include"head.h"

#include#include#includeusing namespace std;

int main()

s.printpath();

} else if (strcmp(op, "dir") == 0)

else if (strcmp(op, "cd") == 0)

else

} else if (strcmp(op, "type") == 0)

else if (op[0] == '\0')

else if (strcmp(op, "del") == 0)

else if (strcmp(op, "rm") == 0)

else if (strcmp(op, "whereis") == 0)

else if (strcmp(op, "exit") == 0)

else

} return 0;

}

其實指標鍊錶蠻好玩的,噗~

2018/11/29 23:21:51

Windows資源管理器

在資源管理器中,選定多個非連續檔案的操作為 a 按住shift鍵,單擊每乙個要選定的檔案圖示 b 按住ctrl鍵,單擊每乙個要選定的檔案圖示 c 先選中第乙個檔案,按住shift鍵,再單擊最後乙個要選定的檔案圖示 d 先選中第乙個檔案,按住ctrl鍵,再單擊最後乙個要選定的檔案圖示 檔案abc.bm...

資源管理器

using system using system.collections.generic using system.linq using system.text using system.threading.tasks namespace day 09 小型資源管理器 檔案長度 public st...

Windows窗體資源管理器Treeview運用

using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text using system.window...