//为文件建立的类 fileInfomation.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace OSshiyan2 { class fileInfomation { public string fname; //文件名 public int fsize; //大小 public string ftype; public string ftime;//创建时间 public string flimit;//权限——只读、可读写 public int ID; //区分 public string store; //位视图标志 public string user; //所属用户 public fileInfomation() { this.fname = ""; this.fsize = 0; this.ftype = "文件夹"; this.ftime = DateTime.Now.ToString(); this.flimit = "可读写"; this.ID = 0; this.store = "0"; this.user = ""; } } } // Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; /******************静态创建3个用户USER1,USER2 *************/ namespace OSshiyan2 { public partial class Form1 : Form { public Form1() //初始化 { InitializeComponent(); loginFace.BringToFront(); loginFace.Location = new Point(0, 0); loginFace.Size = new Size(852, 526); USER1.Visible = false; USER2.Visible = false; USER3.Visible = false; operating.Visible = false; } //========================================================================== static int fileCount = 0; //数组记录创建的文件 fileInfomation[] fileInfo=new fileInfomation[36]; //============================================================================ public void addtoList(ListView L,int arr) //创建结点文件时,显示在listView中 { ListViewItem list = new ListViewItem(fileInfo[arr].fname); list.SubItems.Add(fileInfo[arr].ftype); list.SubItems.Add(fileInfo[arr].fsize.ToString()+"KB"); list.SubItems.Add(DateTime.Now.Date.ToString()); list.SubItems.Add(fileInfo[arr].flimit); list.SubItems.Add(fileInfo[arr].user); L.Items.Add(list); } //============================================================================== public void showInList(TreeNode selNode) //当选中某个结点时,在listView中显示 { if (USER1.Visible) { for (int i = 0; i < selNode.Nodes.Count; i++) { for (int j = 0; j < fileCount; j++) { if (fileInfo[j].ID.ToString() == selNode.Nodes[i].Name && fileInfo[j].store == "1") { addtoList(user1List, j); break; } } } } else { for (int i = 0; i < selNode.Nodes.Count; i++) { for (int j = 0; j < fileCount; j++) { if (fileInfo[j].ID.ToString() == selNode.Nodes[i].Name && fileInfo[j].store == "1") { addtoList(user2List, j); break; } } } } } //============================================================================= public void addFileNode() // 新建文件函数 { int countExistFile = 0; //输入的文件名已经存在? fileInfo[fileCount] = new fileInfomation(); try { fileInfo[fileCount].fname = inputName.Text; fileInfo[fileCount].fsize = int.Parse(inputSize.Text); } Catch { MessageBox.Show("输入有误,请重新输入", "提示"); } /*********************************USER1创建文件******************************/ if (USER1.Visible) { //当未选中任何结点时,默认建立在USER目录文件下 if (user1_tree.SelectedNode == null) { user1List.Items.Clear(); showInList(user1_tree.Nodes[0]); user1_tree.Nodes[0].Expand(); if (user1_tree.Nodes[0].Nodes.Count != 0) { for (int i = 0; i < user1_tree.Nodes.Count; i++) { if (user1_tree.Nodes[0].Nodes[i].Text == inputName.Text) countExistFile++; } if (countExistFile != 0) MessageBox.Show("该文件已存在,请重新输入文件名", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); else { //设置结点的name属性及对象的ID属性(匹配) user1_tree.Nodes[0].Nodes.Add(fileInfo[fileCount].fname); user1_tree.Nodes[0].Nodes[user1_tree.Nodes[0].Nodes.Count - 1].Name = fileCount.ToString(); fileInfo[fileCount].ID = fileCount; fileInfo[fileCount].user = "user1"; fileInfo[fileCount].store = "1"; addtoList(user1List, fileCount); fileCount++; } } else { user1_tree.Nodes[0].Nodes.Add(fileInfo[fileCount].fname); user1_tree.Nodes[0].Nodes[0].Name = fileCount.ToString(); fileInfo[fileCount].ID = fileCount; fileInfo[fileCount].user = "user1"; fileInfo[fileCount].store = "1"; //位视图中的显示 addtoList(user1List, fileCount); fileCount++; } } else//选中结点时,建立该目录下的子文件 { user1List.Items.Clear(); showInList(user1_tree.SelectedNode); user1_tree.SelectedNode.Expand(); if (user1_tree.SelectedNode.Nodes.Count != 0) { for (int i = 0; i < user1_tree.SelectedNode.Nodes.Count; i++) { if (user1_tree.SelectedNode.Nodes[i].Text == inputName.Text) countExistFile++; } if (countExistFile != 0) MessageBox.Show("该文件已存在,请重新输入文件名", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); else { user1_tree.SelectedNode.Nodes.Add(fileInfo[fileCount].fname); user1_tree.SelectedNode.Nodes[user1_tree.SelectedNode.Nodes.Count - 1].Name = fileCount.ToString(); fileInfo[fileCount].ID = fileCount; fileInfo[fileCount].user = "user1"; fileInfo[fileCount].store = "1"; addtoList(user1List, fileCount); fileCount++; } } else { user1_tree.SelectedNode.Nodes.Add(fileInfo[fileCount].fname); user1_tree.SelectedNode.Nodes[0].Name = fileCount.ToString(); fileInfo[fileCount].ID = fileCount; fileInfo[fileCount].user = "user1"; fileInfo[fileCount].store = "1"; addtoList(user1List, fileCount); fileCount++; } } } /***************************USER2创建文件*******************************/ else // (USER2.Visible) {//当未选中任何结点时,默认建立与USER同级目录文件 if (user2_tree.SelectedNode == null) { user2List.Items.Clear(); showInList(user2_tree.Nodes[0]); user2_tree.Nodes[0].Expand(); if (user2_tree.Nodes[0].Nodes.Count != 0) { for (int i = 0; i < user2_tree.Nodes.Count; i++) { if (user2_tree.Nodes[0].Nodes[i].Text == inputName.Text) countExistFile++; } if (countExistFile != 0) MessageBox.Show("该文件已存在,请重新输入文件名", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); else { user2_tree.Nodes[0].Nodes.Add(fileInfo[fileCount].fname); user2_tree.Nodes[0].Nodes[user2_tree.Nodes[0].Nodes.Count - 1].Name = fileCount.ToString(); fileInfo[fileCount].ID = fileCount; fileInfo[fileCount].user = "user2"; fileInfo[fileCount].store = "1"; addtoList(user2List, fileCount); fileCount++; } } else { user2_tree.Nodes[0].Nodes.Add(fileInfo[fileCount].fname); user2_tree.Nodes[0].Nodes[user2_tree.Nodes[0].Nodes.Count - 1].Name = fileCount.ToString(); fileInfo[fileCount].ID = fileCount; fileInfo[fileCount].user = "user2"; fileInfo[fileCount].store = "1"; addtoList(user2List, fileCount); fileCount++; } } //选中结点时,建立该目录下的子文件 else{ user2List.Items.Clear(); showInList(user2_tree.SelectedNode); user2_tree.SelectedNode.Expand(); if (user2_tree.SelectedNode.Nodes.Count != 0) { for (int i = 0; i < user2_tree.SelectedNode.Nodes.Count; i++) { if (user2_tree.SelectedNode.Nodes[i].Text == inputName.Text) countExistFile++; } if (countExistFile != 0) MessageBox.Show("该文件已存在,请重新输入文件名", "提示信息") else{ user2_tree.SelectedNode.Nodes.Add(fileInfo[fileCount].fname); user2_tree.SelectedNode.Nodes[user2_tree.SelectedNode.Nodes.Count - 1].Name = fileCount.ToString(); fileInfo[fileCount].ID = fileCount; fileInfo[fileCount].user = "user2"; fileInfo[fileCount].store = "1"; addtoList(user2List, fileCount); fileCount++; } } else { user2_tree.SelectedNode.Nodes.Add(fileInfo[fileCount].fname); user2_tree.SelectedNode.Nodes[0].Name = fileCount.ToString(); fileInfo[fileCount].ID = fileCount; fileInfo[fileCount].user = "user2"; fileInfo[fileCount].store = "1"; addtoList(user2List, fileCount); fileCount++; } } } } //====================================================================== private void login_Click(object sender, EventArgs e) //输入用户名,登陆button { if (textBox1.Text == "user1" && textBox2.Text == "user1") { loginFace.Visible = false; USER1.Visible = true; USER1.Location = new Point(2,66); USER1.Size = new Size(847, 523); } else if(textBox1.Text == "user2" && textBox2.Text == "user2") { loginFace.Visible = false; USER2.Visible = true; USER2.Location = new Point(2,66); USER2.Size = new Size(852, 526); } else if(textBox1.Text == "" && textBox2.Text == "") MessageBox.Show("请输入用户名及密码", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information); else MessageBox.Show("对不起,输入用户名或者密码有误", "消息", MessageBoxButtons.OK,MessageBoxIcon.Information); } //===================================================================== private void cancel_Click(object sender, EventArgs e) //取消登陆 { textBox1.Text = ""; textBox2.Text = ""; } //====================================================================== private void changeUser_Click(object sender, EventArgs e) //注销用户button { loginFace.Location = new Point(0, 0); loginFace.Size = new Size(852, 526); loginFace.Visible = true; USER1.Visible = false; USER2.Visible = false; operating.SendToBack(); textBox1.Text = ""; textBox2.Text = ""; } //====================================================================== private void exit_Click(object sender, EventArgs e)//退出 { Close(); } //==============文件夹按钮 ——文件夹,treeView和operating切换========== private void fileChange_Click(object sender, EventArgs e) { if (USER1.Visible || USER2.Visible || USER3.Visible) { if (!operating.Visible) { operating.Visible = true; operating.BringToFront(); } else operating.Visible = false; } } //======================================================================= private void newFile_Click(object sender, EventArgs e) // 新建button { try { if (inputName.Text != "" && int.Parse(inputSize.Text) > 0) addFileNode(); } catch { MessageBox.Show("输入有误,请重新输入", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } //============================================================================= private void delete_Click(object sender, EventArgs e) // 删除 { if (USER1.Visible) { if (user1_tree.SelectedNode != null && user1_tree.SelectedNode != user1_tree.Nodes[0]) { for (int m = 0; m < fileCount; m++) { if (user1_tree.SelectedNode.Name == fileInfo[m].ID.ToString()) { fileInfo[m] = new fileInfomation();} } user1_tree.SelectedNode.Remove(); } else if (user1_tree.SelectedNode == user1_tree.Nodes[0]) MessageBox.Show("== 不能删除根节点 ==", "警告"); else MessageBox.Show("==请选择要删除的文件==", "提示"); } else //USER2.visible { if (user2_tree.SelectedNode != null && user2_tree.SelectedNode != user2_tree.Nodes[0]) { for (int m = 0; m < fileCount; m++) { if (user2_tree.SelectedNode.Name == fileInfo[m].ID.ToString()) { fileInfo[m] = new fileInfomation();} } user2_tree.SelectedNode.Remove(); } else if (user2_tree.SelectedNode == user2_tree.Nodes[0]) MessageBox.Show("== 不能删除根节点 == ", "提示"); else MessageBox.Show("==请选择要删除的文件== ", "提示"); } } //============================================================================= private void help_Click(object sender, EventArgs e) { string s1 = "该系统有两个用户,/n分别为user1(密码user1)和user2(密码user2)"; string s2 = "如还有不懂,请仔细阅读源程序"; MessageBox.Show(s1+"/n"+s2,"帮助信息"); } private void button1_Click(object sender, EventArgs e) { string s1 = "该系统有两个用户::/n分别为user1(密码user1)和user2(密码user2)"; string s2 = "如还有不懂,请登录后仔细阅读源程序"; MessageBox.Show(s1 + "/n" + s2, "帮助信息"); } private void back_Click(object sender, EventArgs e) { if (USER1.Visible) { user1List.Items.Clear(); if (user1_tree.SelectedNode != null && user1_tree.SelectedNode != user1_tree.Nodes[0]) { showInList(user1_tree.SelectedNode.Parent);} } else { user2List.Items.Clear(); if (user2_tree.SelectedNode !=null&& user2_tree.SelectedNode!=user2_tree.Nodes[0]) showInList(user2_tree.SelectedNode.Parent); } } //============================================================================ static TreeNode tree1; private void copy_Click(object sender, EventArgs e) //复制 { if (USER1.Visible) { if (user1_tree.SelectedNode != null) { tree1 = user1_tree.SelectedNode; } else MessageBox.Show("==请选择要复制的文件==", "提示"); } } //============================================================================ private void cut_Click(object sender, EventArgs e) //剪切 { if (USER1.Visible) { if (user1_tree.SelectedNode != null) { tree1 = user1_tree.SelectedNode; user1_tree.SelectedNode.Remove(); } else MessageBox.Show("==请选择要剪切的文件==","提示"); } } //============================================================================== private void paste_Click(object sender, EventArgs e) { if (user1_tree.SelectedNode != null) { int c=0; //查找该目录下是否存在同名文件 for (int j = 0; j < user1_tree.SelectedNode.Nodes.Count; j++) { if (user1_tree.SelectedNode.Nodes[j].Text== fileInfo[fileCount-1].fname) c++; } if (c != 0) MessageBox.Show("该文件夹下已有改名的文件/n ","提示"); else { user1_tree.SelectedNode.Nodes.Add(fileInfo[fileCount-1].fname); user1_tree.SelectedNode.Nodes[user1_tree.SelectedNode.Nodes.Count - 1].Name = fileInfo[fileCount-1].ID.ToString(); fileInfo[fileCount] = new fileInfomation(); for (int i = 0; i < fileCount; i++) { //查找到被将要被复制的文件的对象 if(fileInfo[i].ID.ToString() == tree1.Name && fileInfo[i].store != "0") { fileInfo[fileCount].fname = fileInfo[i].fname; fileInfo[fileCount].fsize = fileInfo[i].fsize; fileInfo[fileCount].ftime = fileInfo[i].ftime; fileInfo[fileCount].ID = fileCount; fileInfo[fileCount].store = "1"; fileInfo[fileCount].user = fileInfo[i].user; break; } } } fileCount++; } else MessageBox.Show("==请选择需要复制到的目录==","提示"); } //============================================================================ private void store_info_Click(object sender, EventArgs e) //显示位视图信息 { string storeInfo = ""; for (int m = fileCount; m < 36; m++) { fileInfo[m] = new fileInfomation(); } for (int i = 0; i < 36; i++) { if (i % 6 == 0 && i != 0) { storeInfo = storeInfo + "/n" + "/n";} storeInfo = storeInfo + " " + fileInfo[i].store; } string aaa = "[采用位示图管理文件系统空间的分配回收]"; string bb = "位视图信息::"; MessageBox.Show(aaa + "/n/n" + bb + "/n" + storeInfo, "位视图"); } //============================================================================ private void find_Click(object sender, EventArgs e) { int b=0; if (textBox3.Text != "") { user1List.Items.Clear(); for (int i = 0; i < fileCount; i++) { if (fileInfo[i].fname == textBox3.Text) { addtoList(user1List, i); b++; } else continue; } if (b == 0) {MessageBox.Show("抱歉,没有您要找的文件/n","提示");} } } //============================================================================= private void share_Click(object sender, EventArgs e) //共享文件 { if (user1_tree.SelectedNode != null) { int r=0; for (int i = 0; i < fileCount; i++) { if (fileInfo[i].ID.ToString() == user1_tree.SelectedNode.Name) { r = i; break; } } fileInfo[fileCount] = new fileInfomation(); user2_tree.Nodes[0].Nodes.Add(user1_tree.SelectedNode.Text); fileInfo[fileCount].fname = user1_tree.SelectedNode.Text; fileInfo[fileCount].fsize = fileInfo[r].fsize; fileInfo[fileCount].ftime = fileInfo[r].ftime; fileInfo[fileCount].user = fileInfo[r].user; fileInfo[fileCount].ID = fileCount; fileInfo[fileCount].ftime=fileInfo[r].ftime; user2_tree.Nodes[0].Nodes[user2_tree.Nodes[0].Nodes.Count - 1].Name = fileCount.ToString(); fileInfo[fileCount].store = "1"; fileInfo[fileCount].flimit = "只读"; fileCount++; MessageBox.Show(" ^ u ^ 共享成功 ! ! !/n","恭喜"); } else MessageBox.Show("请选择要共享的文件/n","提示"); } //============================================================================ //treeView的结点单击后,在listVIew中显示其子节点 private void user1_tree_AfterSelect(object sender, TreeViewEventArgs e) { user1List.Items.Clear(); showInList(user1_tree.SelectedNode); } private void user2_tree_AfterSelect(object sender, TreeViewEventArgs e) { user2List.Items.Clear(); showInList(user2_tree.SelectedNode); } } }