zoukankan      html  css  js  c++  java
  • 【文件管理系统】 Apaer_xzc

    文件管理系统

    #include <bits/stdc++.h>
    using namespace std;
    
    class MyFile; ///前向声明文件类 
    class FileUser; ///前向声明用户类 
    
    map<string,string> AdministList; ///用于记录所有管理员的用户名和密码 
    map<string,string> OrderUser; ///用于记录有用户的用户名和密码 
    map<MyFile,bool> AllFiles; ///用于记录所有已经创建文件的文件名 
    
    string getCurrentTime(); 
    ///获取当前的系统时间,以string的形式返回 
    
    class MyFile ///文件系统类 
    { 
    private:
    	static int AlltheFileNumber;
    	static int toAllotFileID; ///用于分配文件的唯一ID 
    	static string WR_Access_Permission[3];	
    	///用于描述文件读写权限的静态字符串	
    	enum prLevel ///枚举类型 
    	{
    		AllUser_WR = 0, ///所有的用户都可以读写 
    		Creater_WR_Other_ReadOnly = 1, ///所有用户都可以读取,只有创建者才能编辑 
    		OnlyCreater_WR=2, ///只有创建者才能查看文件内容和编辑,其它用户无法读写文件 
    	};
    	int FileID; ///文件的唯一标识,由类按顺序分配 
    	string FileName; ///文件名 
    	string FileContent; ///文件流内容 
    	string CreateUser; ///文件创建用户 
    	string CreateTime;  ///文件创建时间 
    	string LastAlertTime; ///文件最后修改时间 
    	string LastAlertUserName; ///最后修改文件的用户名 
    	enum prLevel ProtectLevel; ///文件读写权限 
    	int FileLength;  ///文件长度 
    public:
    	MyFile(){AlltheFileNumber++;} //无参构造函数
    	~MyFile(){AlltheFileNumber--;} //析构函数 
    	MyFile(string fileName,string fileContent,string createTime,string createUser,enum prLevel prl);
    	int getFileLength(); ///获取文件内容的长度 
    	void BuildFile(string creater,int WRflag); 
    	///已经通过无参构造函数生成对象,现在通过用户输入文件信息 
    	void AlertFile(string UserName); ///修改文件内容(重写or追加) 
    	void showFileMessage(); 
    	//显示文件信息(文件名,创建者,创建时间,最后修改时间,文件内容长度) 
    	void showFileContent(); ///显示文件内容 
    	bool operator < (const MyFile& rhs)const ///重载小于号,默认按照文件名的字典序从小到大排序 
    	{
    		return FileID < rhs.FileID;
    	}
    };
    
    
    //_______________________________用户类_______________________________________________________ 
    class FileUser  
    {///使用文件的用户类 
    private:
    	string Name; ///文件用户的用户名 
    	string Password; ///用户登录文件系统的密码 
    public:
    	vector<MyFile> FileList;  
    	int FileNumber; ///创建过的文件数量 
    	bool isAdministrator; ///是否是管理员,管理员可以读写和删除任何文件 
    	FileUser(){}
    	FileUser(string name,bool isAd); 
    	string getName();
    	string getPassWord();
    	void setName(string name);
    	void setPassword(string password); 
    	void UserCreateFile();
    };
    
    /*
    //_________FileSystem类_______________________________________________________________
    class FileSystem{
    public:
    	static FileUser theCurrentUser; //当前的用户 
    	vector<FileUser> theAdminist; ///文件系统管理员列表
    	vector<FileUser> theOrderUser; ///文件系统普通用户列表
    	void LoginUser();  ///用户登录(普通用户or系统管理员)
    	void ExitLog(); ///退出当前用户登录 
    	void showAlltheFile(); ///显示当前所有的文件
    	void showCurrentUserFileList(); ///显示当前登录用户创建的所有文件
    	void readOneFile(const MyFile& myfile); ///显示当前的文件
    	void writeOneFile(MyFile& myfile); ///写文件
    	void ReNameOneFile(MyFile & myfile); ///重命名文件  
    	
    	
    }; 
    */
    //________________________main函数____________________________________________________ 
    int main()
    {
    	
    	 
    	
    	return 0;	
    } 
    
    
    
    
    //________________________全局函数的实现_______________________________________ 
    string getCurrentTime()
    {
    	time_t t = time(0); 
        char tmp[64]; 
        strftime( tmp, sizeof(tmp), "%Y/%m/%d %X",localtime(&t) ); 
        return string(tmp); 
    }
    
    
    
    //______________MyFile类的成员变量和成员函数定义如下______________________________________________________ 
    int MyFile::AlltheFileNumber = 0;
    int MyFile::toAllotFileID = 0; 
    string MyFile::WR_Access_Permission[] = 
    {
    	string("所有用户可读写"),
    	string("创建者可读写,其它用户只读"),
    	string("创建者可读写,其它用户不可操作")
    };
    
    MyFile::MyFile(string fileName,string fileContent,string createTime,string createUser,enum prLevel prl)
    {
    	AlltheFileNumber++;
    	FileID = ++toAlloteFileID; 
    	FileName = fileName;
    	CreateTime = createTime;
    	FileContent = fileContent;
    	CreateUser = createUser;
    	ProtectLevel = prl;
    	LastAlertUserName = CreateUser;
    	FileLength = FileContent.length();	
    	LastAlertTime = CreateTime;
    } 
    
    void MyFile::AlertFile(string UserName)
    {
    	if(ProtectLevel>0 && UserName!=CreateUser)
    	{
    		cout<<"此文件只能创建者修改!
    ";
    		return;	
    	}		  
    	cout<<"请选择操作方式:
    ";
    	cout<<"1.重写文件
    ";
    	cout<<"2.在文件后面追加内容
    ";
    	int op,t=1;
    	while(t)
    	{
    		cout<<"请输入操作方式:_";
    		cin>>op;
    		if(op!=1||op!=2)
    		{
    			continue;	
    		}
    		t--;
    		string Ask;
    		switch (op)
    		{
    			case 1: 
    				Ask = "写入";
    				break;
    			case 2:
    				Ask = "追加"; 	
    		} 
    		cout<<"请输入要"<<Ask<<"的内容,每输入一行后按回车键,输入<END>结束输入
    ";
    		string Source,Line;
    		while(Line!="<END>")
    		{
    			cout<<">>>";
    			cin>>Line;
    			Source += Line; 
    		}
    		switch (op)
    		{
    			case 1:
    				FileContent = Source;
    				break;
    			case 2:
    				FileContent += Source;
    				break;
    		}
    		LastAlertUserName = UserName;
    		LastAlertTime = getCurrentTime();
    		FileLength = FileContent.length();
    		cout<<"读写文件成功!
    ";
    		t = 1;
    		string choose;
    		while(t--)
    		{
    			cout<<"是否显示文件信息?Y/N _";
    			cin>>choose;
    			switch(choose[0])
    			{
    				case 'Y':
    					showFileContent();
    					break;
    				case 'y':
    					showFileContent();
    					break;
    				case 'N':
    					break;
    				case 'n':
    					break;
    				default:
    					t++;
    			}
    		}
    	} 
    }
    	
    void MyFile::showFileMessage()
    {
    	cout<<"文件信息如下:
    ";
    	cout<<"---------------------------------------"<<endl;
    	cout<<"|文件名          :"<<FileName<<endl;
    	cout<<"|文件创建时间    :"<<CreateTime<<endl;
    	cout<<"|文件创建用户    :"<<CreateUser<<endl;
    	cout<<"|文件最后修改时间:"<<LastAlertTime<<endl;
    	cout<<"|文件最后修改用户:"<<LastAlertUserName<<endl;
    	cout<<"|文件长度        :"<<FileLength<<endl;
    	cout<<"|文件读写权限    :"<<WR_Access_Permission[(int)ProtectLevel]<<endl;
    	cout<<"---------------------------------------"<<endl;
    } 
    
    void MyFile::showFileContent()
    {
    	cout<<"文件"<<FileName<<"的内容如下:
    ";
    	cout<<FileContent<<endl; 
    }
    
    int MyFile::getFileLength()
    {
    	return FileLength; 
    }
    
    void MyFile::BuildFile(string creater,int WRflag=0)
    {
    	FileID = ++toAlloteFileID;
    	CreateUser = LastAlertUserName = creater;
    	cout<<"请输入文件名:______";
    	cin>>FileName;
    	cout<<"是否要输入文件内容?(Y/N)__";
    	string s,op;
    	int t = 1;
    	string Source,Line="";
    	while(t--)
    	{
    		cout<<"请输入Y或N:_";
    		cin>>op;
    		switch (op[0])
    		{
    			case 'Y':
    			case 'y':
    				cout<<"请输入要写入文件的内容,每输入一行后按回车键,输入<END>结束输入
    ";
    				Line = "";
    				while(Line!="<END>")
    				{
    					cout<<">>>";
    					cin>>Line;
    					Source += Line; 
    				}
    				FileContent = Source;
    				FileLength = Source.length(); 
    				break;
    			case 'N':
    				break;
    			case 'n':
    				break;
    			default:
    				t++;
    				break;
    		}
    	}
    	LastAlertTime = CreateTime = getCurrentTime(); 
    	if(WRflag>2) WRflag = 0;
    	WRflag = max(0,WRflag);
    	if(WRflag==0)
    	{
    		ProtectLevel = AllUser_WR;
    	} 
    	else if(WRflag==1)
    	{
    		ProtectLevel = Creater_WR_Other_ReadOnly;
    	}
    	else
    	{
    		ProtectLevel = OnlyCreater_WR;
    	}
    }
    
    
    
    //__________________FileUser类的成员函数定义如下___________________________________________________ 
    
    FileUser::FileUser(string name,bool isAd)
    {
    	Name = name, isAdministrator = isAd;
    	FileNumber = 0;
    }
    string FileUser::getName()
    {
    	return Name;	
    } 
    string FileUser::getPassWord()
    {
    	return Password;
    }
    void FileUser::setName(string name)
    {
    	this->Name = name;
    }
    void FileUser::setPassword(string password)
    {
    	this->Password = password;
    }
    void FileUser::UserCreateFile()
    {
    	int t = 1;
    	string op;
    	while(t)
    	{
    		cout<<"确定要创建文件吗?Y/N _";
    		cin>>op;
    		switch (op[0])
    		{
    			case 'N':
    				return;
    				
    			case 'n':
    				return;
    				
    			case 'Y':
    				t--;
    				break;
    				
    			case 'y':
    				t--;
    				break; 
    				
    			default:
    				cout<<"输入错误!请输入Y或N
    ";
    		}
    	}
    	MyFile CurrentFile = MyFile();
    	int RWflag=-1;
    	while(RWflag<0||RWflag>2)
    	{
    		cout<<"请输入要创建文件的读写权限(0,1,2):"<<endl;
    		cout<<"	1.所有用户均可读写"<<endl;
    		cout<<" 2.所有用户可读,只有创建者(您)才能修改文件内容"<<endl;
    		cout<<" 3.您的个人私有文件,只有创建者(您)才能对文件读写,其它用户不能读写该文件";
    		cout<<"请输入0或1或2:_"; 
    		cin>>op;
    		RWflag = op[0]-'0';
    	}
    	CurrentFile.BuildFile(this->Name,RWflag);
    	cout<<"文件创建成功!
    "; 
    	FileNumber = FileList.size();
    }
    
    
  • 相关阅读:
    Cookie和Session
    HTTP简介
    Python赋值与深浅拷贝
    Python装饰器探险
    Python操作MongoDB数据库
    MongoDB数据库基础
    python操作mysql数据库
    USACO2012 overplanting /// 矩阵切割 递归 oj21547
    USACO2007 The Bale Tower /// DFS oj21160
    USACO2012 Moo /// 模拟 oj21548
  • 原文地址:https://www.cnblogs.com/Apare-xzc/p/12243615.html
Copyright © 2011-2022 走看看