AcWing
  • 首页
  • 活动
  • 题库
  • 竞赛
  • 应用
  • 更多
    • 题解
    • 分享
    • 商店
    • 问答
    • 吐槽
  • App
  • 登录/注册

oios——一跨适用于oier的操作系统V1.0

作者: 作者的头像   luhaoren ,  2023-03-18 21:34:35 ,  所有人可见 ,  阅读 51


2


1

命令帮助

命令名称 说明
ls 列出工作路径中所有目录或文件
del 删除文件
rd 删除文件夹
cd 切换文件夹
md 创建文件夹
time 显示当前时间(本地时间)
exit 退出oios
help 获取帮助
cls 清屏

代码

#include <bits/stdc++.h>
#include <windows.h>
using  namespace std;
void setColor(int num=0){
    HANDLE consolehwnd;//创建句柄
    consolehwnd = GetStdHandle(STD_OUTPUT_HANDLE);//实例化句柄
    SetConsoleTextAttribute(consolehwnd,num);//设置字体颜色
}
string getTime(){
    SYSTEMTIME st;
    GetLocalTime(&st);
    char c[110];
    sprintf(c,"%d-%d-%d %d:%d:%d",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);
    return c; 
}
class file{
    public:
        string fileName;//文件名 
        bool isDir;//是否为目录 
        bool isDel;//是否被删除 
        int fa;//所在目录 
        string dateTime;//创建时间  
        int grade;//权限:0普通用户1管理员2系统管理员 
        //若是文件 
        vector<string>text;
        //若是文件夹 
        vector<int>son;//该目录下的文件 
        void operator()(string filename,bool isdir,int father,int Grade=0){
            dateTime=getTime();
            fileName=filename,isDir=isdir,fa=father,grade=Grade;
            isDel=false;
        }
        void clear(){
            isDel=true;
            fileName=" ",dateTime=" ";
            text.clear();
            fa=-1,isDir=false;
            son.clear();
        }   
        file(){
            isDel=true;
            fileName=" ",dateTime=" ";
            text.clear(),son.clear();
            fa=-1,isDir=false;          
        }   
};
file fs[100010];//文件系统
int nowMenu,fileNum=0;
void init(){
    fs[0]("oios",true,0);
    SetConsoleTitle("OIOS"); 
    nowMenu=0; 
} 
auto handle(){
    char c[1024];
    fgets(c,1024,stdin);
    int l=strlen(c);
    vector<string>orders;
    for(int i=0;i<l;i++){
        string s;
        while(c[i]!=' '&&i<l) s.push_back(c[i++]);
        while(c[i]==' '&&i<l) i++;
        orders.push_back(s);
    }
    return orders;
} 
void clearFile(int i){
    if(!fs[i].son.empty()){
        for(auto it:fs[i].son) clearFile(it);
    }
    fs[i].clear();
}
void pwd(int i){
    if(i!=0) pwd(fs[i].fa);
    cout<<fs[i].fileName<<"/";
}
void help(){
    ifstream in("help.txt");
    while(!in.eof()){
        char c[1024];
        in.getline(c,1024);
        cout<<c<<endl;
    }
} 
int main(){
    init();
    while(true){
        setColor(2);
        pwd(nowMenu);
        setColor(7);
        string order;
        cin>>order;
        if(order=="time") cout<<getTime()<<endl;
        if(order=="ls"){
            if(fs[nowMenu].son.empty()) cout<<"no file!\n";
            for(auto it:fs[nowMenu].son){
                if(!fs[it].isDel) cout<<fs[it].fileName<<" "<<fs[it].dateTime<<endl;
            }
        }
        if(order=="exit") exit(-1);
        if(order=="help") help();
        if(order=="cls") system("cls");
        if(order=="del"){           
            //删除文件 
            string s;
            cin>>s;
            for(auto it:fs[nowMenu].son){
                if(fs[it].fileName==s) fs[it].clear();
            }
        }
        if(order=="md"){
            //创建文件夹 
            string s;
            cin>>s;
            fs[++fileNum](s,true,nowMenu);
            fs[nowMenu].son.push_back(fileNum);
        }
        if(order=="cd"){ 
            //切换文件夹 
            string s;
            cin>>s;         
            if(s=="up") nowMenu=fs[nowMenu].fa;
            else{
                for(auto it:fs[nowMenu].son){
                    if(fs[it].fileName==s){
                        nowMenu=it;
                        break;
                    }
                } 
            }
        }
        if(order=="rd"){
            //删除文件夹 
            string s;
            cin>>s;
            for(auto it:fs[nowMenu].son){
                if(fs[it].fileName==s) clearFile(it);
            }           
        }
    }
    return 0;
}

github地址

2 评论


用户头像
luhaoren   9天前         踩      回复

原题:UVA10966


用户头像
星河依旧长明   9天前         踩      回复

tql


你确定删除吗?
1024
x

© 2018-2023 AcWing 版权所有  |  京ICP备17053197号-1
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息