问题标题: LOS3.2正式发布

0
0
已解决
李承耀
李承耀
新手光能
新手光能

此版本更新了8种开机画面,并且缩短代码,只有上一版本的55%!

也更新了小小记事本和小小计算器

#include<bits/stdc++.h>
#include<windows.h>
#define clear_cin() fflush(stdin)
#define KAIJI 1
#define INA 2
#define NTUSER 1
using namespace std;
int kjhm,usernum;
char *p;
string color;
char user[10005][2][105]={{"",""},{"admin",""}}; 
int desktop(int);
void clear();
string getver(bool =true);
void startup(int =0);
void s_d(int);
void setname();
void csh();
void ramtst(bool =false);
char _p(int);
int q(char);
int f(string,int);
string g(int,int);
void jzzh();
void ert();
void pro();
void puanduan();
int qspd();
void lowly(int);
namespace sm{
    string s,t;
    void output(){
        cout<<"小小记事本1.2\n";
        cout<<"开发日期:2022/12/28\n";
        cout<<"按Ctrl+Z停止输入\n";
        while(getline(cin,t)){
            s+=t+'\n';
        }
        cin.clear();
        cout<<"\n文件目录:";
        string a;
        getline(cin,a);
        cout<<"\n文件名(加后缀名):";
        string r;
        getline(cin,r);
        a+=r;
        FILE* fp=fopen(a.c_str(),"w");
        fprintf(fp,s.c_str());
        fclose(fp);
        cout<<"写入完成!\n按Enter继续";
        getchar();
    }
    void input(){
        cout<<"小小记事本1.2\n";
        cout<<"开发日期:2022/12/28\n";
        cout<<"输入地址和文件名(带后缀)";
        string s;
        getline(cin,s);
        ifstream fin(s.c_str());
        string t;
        bool flag=0;
        while(getline(fin,t)){
            cout<<t<<endl;
            flag=1;
        }
        if(!flag)cout<<"文件为空或无该文件\n";
        cout<<"按Enter继续";
        getchar();
    }
    int main(){
        SetConsoleTitle("LOS中的小小记事本  本作品为LOS开发团队原创,盗版必究!");
        while(1){
            clear();
            cout<<"小小记事本1.2\n";
            cout<<"开发日期:2022/12/28\n";
            cout<<"1.写入文件\n2.读取文件\n3.版本号\n4.退出\n";
            string s;
            getline(cin,s);
            clear();
            if(s=="1"||s=="1.写入文件"||s=="写入文件"){
                output();
            }
            else if(s=="2"||s=="2.读入文件"||s=="读入文件"){
                input();
            }
            else if(s=="3"||s=="3.版本号"||s=="版本号"){
                cout<<"小小记事本1.2 Build 1110\n";
                cout<<"开发日期:2022/12/28\n";
                cout<<"按Enter继续";
                getchar(); 
            }
            else if(s=="4"||s=="4.退出"||s=="退出")break;
            else{
                ert();
            }
        } 
        return 0;
    }
}
namespace calc{
    string s[100005],ans[100005];
    int n;
    string calc(string s){
        long double num[100005]={0.0l};
        char c[100005]={'\0'};
        int pos=1;
        stringstream sstream;
        sstream<<s;
        sstream>>num[1];
        while(sstream>>c[pos]>>num[pos+1])pos++;
        for(int i=1;i<=pos;){
            if(c[i]=='\0')break;
            if(c[i]=='*'||c[i]=='/'||c[i]=='%'){
                if(c[i]=='*'){
                    num[i]*=num[i+1];
                }
                if(c[i]=='/'){
                    if(num[i+1]==0)return "NAN";
                    num[i]/=num[i+1]; 
                }
                if(c[i]=='%'){
                    if(num[i+1]==0)return "NAN";
                    num[i]=fmod(num[i],num[i+1]); 
                }
                for(int j=i;j<pos;j++)c[j]=c[j+1];
                for(int j=i+1;j<pos;j++)num[j]=num[j+1]; 
                pos--; 
            }
            else i++;
        }
        long double ans=num[1]; 
        for(int i=2;i<=pos;i++){
            if(c[i-1]=='\0')break;
            if(c[i-1]=='+'||c[i-1]=='-'){
                if(c[i-1]=='+'){
                    ans+=num[i];
                }
                if(c[i-1]=='-'){
                    ans-=num[i];
                }
            }
            else if(c[i-1]!='*'&&c[i-1]!='/'&&c[i-1]!='%')return "NAN";
        }
        string retd;
        stringstream anss;
        anss<<ans;
        anss>>retd;
        return retd;
    }
    int main(){
        SetConsoleTitle("LOS中的小小计算器  本作品为LOS开发团队原创,盗版必究!");
        while(1){
            clear();
            cout<<"1.输入新算式\n2.查看历史记录\n3.清空历史记录\n4.版本号\n5.退出\n";
            string t;
            getline(cin,t);
            clear();
            if(t=="1"||t=="1.输入新算式"||t=="输入新算式"){
                cout<<"请输入算式(支持小数,+-*/%,不支持括号)";
                getline(cin,s[++n]);
                clear();
                ans[n]=calc(s[n]);
                if(ans[n]=="NAN"){
                    n--;
                    cout<<"输入错误";
                    ert();
                }
                else{
                    cout<<s[n]<<"="<<ans[n]<<endl<<"按Enter继续";
                }
                getchar();
            }
            else if(t=="2"||t=="查看历史记录"||t=="2.查看历史纪录"){
                for(int i=1;i<=n;i++){
                    cout<<s[i]<<'='<<ans[i]<<endl;
                }
                cout<<"按Enter继续";
                getchar();
            }
            else if(t=="3"||t=="清空历史记录"||t=="3.清空历史记录"){
                n=0;
                cout<<"已清空!按Enter继续";
                getchar();
            }
            else if(t=="4"||t=="版本号"||t=="4.版本号"){
                cout<<"小小计算器1.2 Build 1100\n开发日期2022/12/28\n本作品为LOS开发团队原创,盗版必究!\n按Enter继续";
                getchar();
            }
            else if(t=="5"||t=="5.退出"||t=="退出")break;
        }
        return 0;
    }
}
int main(){
    ramtst();
    setname();
    puanduan();
    csh();
    startup();
    clear();
    while(1){
        clear();
        int type=desktop(INA);
        if(type==0){
            startup(1);
            return 0;
        }
        else if(type==1){
            csh();
            clear();
            startup(2);
            clear();
            startup();
            type=desktop(KAIJI);
        }
        clear();
    }
    return 0;
}
int desktop(int cs){
    i9:
    clear(); 
    cout<<"1.应用\n2.电源\n3.设置\n";
    string s;
    getline(cin,s);
    clear();
    if(s=="1"||s=="应用"||s=="1.应用"){
        i4:
        cout<<"1.版本号\n2.小小记事本\n3.小小计算器\n4.检测环境\n5.返回\n";
        string s;
        getline(cin,s);
        clear();
        if(s=="1"||s=="版本号"||s=="1.版本号"){
            getver();
            clear(); 
        }
        else if(s=="2"||s=="小小记事本"||s=="2.小小记事本"){
            sm::main();
            setname();
        }
        else if(s=="3"||s=="数学工具"||s=="3.数学工具"){
            calc::main();
        }
        else if(s=="4"||s=="检测环境"||s=="4.检测环境"){
            i5:
            cout<<"1.内存测试\n2.返回\n";
            getline(cin,s);
            clear();
            if(s=="1"||s=="内存测试"||s=="1.内存测试"){
                ramtst(true);
            } 
            else if(s=="2"||s=="返回"||s=="2.返回"){
                goto i4;
            }
            else{
                ert();
                goto i5;
            }
        }
        else if(s=="5"||s=="返回"||s=="5.返回"){
            goto i9; 
        }
        else{
            ert();
            goto i4;
        }
    }
    else if(s=="2"||s=="电源"||s=="2.电源"){
        ir:
        system("cls");
        cout<<"1.关闭LOS\n2.重新启动LOS\n3.返回\n";
        getline(cin,s);
        if(s=="1"||s=="关闭"||s=="关闭LOS"||s=="1.关闭LOS"){
            return 0;
        }
        else if(s=="2"||s=="重启"||s=="重新启动"||s=="重新启动LOS"||s=="2.重新启动LOS"){
            return 1;
        }
        else if(s=="3"||s=="返回"||s=="3.返回"){
            goto i9;
        }
        else{
            ert();
            goto ir;
        }
    }
    else if(s=="3"||s=="设置"||s=="3.设置"){
        i2:
        cout<<"1.开关机/重启画面设置\n2.恢复出厂设置\n3.换颜色\n4.浅色模式\n5.返回\n";
        getline(cin,s);
        clear();
        if(s=="1"||s=="开关机/重启画面设置"||s=="1.开关机/重启画面设置"){
            ii:
            cout<<"0.动态L+正在启动/关闭/重新启动LOS\n1.不显示\n2.正在启动/关闭/重新启动LOS...(一行)\n3.静态L+正在启动/关闭/重新启动LOS...\n4.空位+正在启动/启动/关闭/重新启动LOS...\n5.空位+正在启动/启动/关闭/重新启动LOS\n6.正在启动/关闭/重新启动LOS\n7.静态L+正在启动/关闭/重新启动LOS\n";
            getline(cin,s);
            FILE *kj=fopen("kj","w");
            if(s=="0"||s=="0.动态L+正在启动/关闭/重新启动LOS"||s=="动态L+正在启动/关闭/重新启动LOS"){
                fprintf(kj,"%d",0); 
                kjhm=0;
            }
            else if(s=="1"||s=="1.不显示"||s=="不显示"){
                fprintf(kj,"%d",1); 
                kjhm=1;
            }
            else if(s=="2"||s=="正在启动/关闭/重新启动LOS...(一行)"||s=="2.正在启动/关闭/重新启动LOS...(一行)"){
                fprintf(kj,"%d",2);
                kjhm=2;
            }
            else if(s=="3"||s=="静态L+正在启动/关闭/重新启动LOS..."||s=="3.静态L+正在启动/关闭/重新启动LOS..."){
                fprintf(kj,"%d",3);
                kjhm=3;
            }
            else if(s=="4"||s=="空位+正在启动/启动/关闭/重新启动LOS..."||s=="4.空位+正在启动/启动/关闭/重新启动LOS..."){
                fprintf(kj,"%d",4);
                kjhm=4;
            }
            else if(s=="5"||s=="空位+正在启动/启动/关闭/重新启动LOS"||s=="5.空位+正在启动/启动/关闭/重新启动LOS"){
                fprintf(kj,"%d",5);
                kjhm=5;
            }
            else if(s=="6"||s=="6.正在启动/关闭/重新启动LOS"||s=="正在启动/关闭/重新启动LOS"){
                fprintf(kj,"%d",6);
                kjhm=6;
            }
            else if(s=="7"||s=="7.静态L+正在启动/关闭/重新启动LOS"||s=="静态L+正在启动/关闭/重新启动LOS"){
                fprintf(kj,"%d",7);
                kjhm=7;
            }
            else{
                ert();
                goto ii;
            }
            clear();
            fclose(kj);
        }
        else if(s=="2"||s=="恢复出厂设置"||s=="2.恢复出厂设置"){
            cout<<"确定请输入1";
            char c=getchar(); 
            if(c=='1'){
                FILE *kj=fopen("kj","w");
                fprintf(kj,"%d",0); 
                fclose(kj);
                pro();
                system("color 00");
                csh();
                return 1;
            }
        }
        else if(s=="3"||s=="换颜色"||s=="3.换颜色"){
            inae:
            cout<<"字符代表的颜色:\n"; 
            cout<<"0=黑色,1=蓝色,2=绿色,3=湖蓝色,4=红色,5=紫色,6=**,7=白色,8=灰色,9=淡蓝色,A=淡绿色,B=浅绿色,C=淡红色,D=淡紫色,E=淡**,F=亮白色。";
            cout<<"\n请输入背景颜色(上面给出的)";
            string s,y;
            cin>>s;
            if(!(s.size()==1&&(s[0]>='0'&&s[0]<='9'||s[0]>='A'&&s[0]<='F'||s[0]>='a'&&s[0]<='f'))){
                system("cls");
                ert();
                goto inae;
            }
            if(s[0]>='a'&&s[0]<='f')s[0]-=32;
            system("cls");
            inbe:
            cout<<"字符代表的颜色:\n"; 
            cout<<"0=黑色,1=蓝色,2=绿色,3=湖蓝色,4=红色,5=紫色,6=**,7=白色,8=灰色,9=淡蓝色,A=淡绿色,B=浅绿色,C=淡红色,D=淡紫色,E=淡**,F=亮白色。";
            cout<<"\n请输入文字颜色(上面给出的)";
            cin>>y;
            if(!(y.size()==1&&(y[0]>='0'&&y[0]<='9'||y[0]>='A'&&y[0]<='F'||y[0]>='a'&&y[0]<='f'))){ 
                system("cls");
                ert();
                goto inbe;
            }
            if(y[0]>='a'&&y[0]<='f')y[0]-=32;
            color=s+y;
            clear();
            string t="color "+s+y;
            system(t.c_str());
            FILE* cl=fopen("color","w");
            fprintf(cl,color.c_str());
            fclose(cl);
        }
        else if(s=="4"||s=="浅色模式"||s=="4.浅色模式"){
            i10:
            clear();
            cout<<"0.关闭\n1.开启\n";
            string y;
            getline(cin,y);
            FILE* qsmd=fopen("qs","w"); 
            if(y=="0"||y=="关闭"||y=="0.关闭"){
                fprintf(qsmd,"%d",0);
                FILE* cl=fopen("color","r");
                char x=getc(cl),y=getc(cl);
                string ans="color ";
                ans+=x;
                ans+=y;
                system(ans.c_str());
                fclose(cl);
            }
            else if(y=="1"||y=="1.开启"||y=="开启"){
                fprintf(qsmd,"%d",1);
                system("color 70"); 
            }
            else{
                ert();
                goto i10;
            }
            fclose(qsmd);
        }
        else if(s=="5"||s=="返回"||s=="5.返回"){
            goto i9;
        }
        else{
            ert();
            goto i2;
        }
    }
    else{
        ert();
        goto i9;
    }
    return 2;
}
void clear(){
    system("cls");
    clear_cin();
}
string getver(bool flag){
    string a="LOS 3.2(Build 3042)",b="开发日期2022/12/29\n",c="本作品为LOS开发团队原创,盗版必究!\n",d="按Enter继续",e="   ";
    if(flag){
        cout<<a<<endl<<b<<c<<d;
        getchar();
        clear();
    }
    return a+e+c;
}
void startup(int type){
    if(kjhm==0){
        string s="";
        for(int i=1;i<=6;i++){
            s+="        |\n";
            cout<<s;
            for(int j=9-i;j>=0;j--)cout<<endl;
            cout<<"\n        ";
            lowly(type); 
            Sleep(60);
            clear();
        }
        s+="        |"; 
        cout<<s<<endl<<endl<<endl<<endl<<endl<<"        ";
        lowly(type);
        Sleep(60);
        clear();
        for(int i=0;i<12;i++){
            s+="_";
            cout<<s<<endl<<endl<<endl<<endl<<endl<<"        ";
            lowly(type);
            Sleep(60);
            clear();
        }
        Sleep(106);
    }
    if(kjhm==1)return;
    if(kjhm==2){
        lowly(type);
        for(int i=1;i<=3;i++){
            Sleep(666);
            cout<<'.'; 
        } 
        Sleep(666);
    }
    if(kjhm==4){
        string s="\
        \n\
        \n\
        \n\
        \n\
        \n\
        \n\
        \n\n\n\n\n\n";
        cout<<s;
        cout<<"        ";
        lowly(type);
        for(int i=1;i<=3;i++){
            Sleep(666);
            cout<<'.'; 
        } 
        Sleep(666);
    }
    if(kjhm==3){
        string s="\
        |\n\
        |\n\
        |\n\
        |\n\
        |\n\
        |\n\
        |____________\n\n\n\n\n\n";
        cout<<s;
        cout<<"        ";
        lowly(type);
        for(int i=1;i<=3;i++){
            Sleep(666);
            cout<<'.'; 
        } 
        Sleep(666);
    }
    if(kjhm==5){
        string s="\
        \n\
        \n\
        \n\
        \n\
        \n\
        \n\
        \n\n\n\n\n\n";
        cout<<s;
        cout<<"        ";
        lowly(type); 
        Sleep(1666);
    }
    if(kjhm==6){
        lowly(type);
        Sleep(1666);
    }
    if(kjhm==7){
        string s="\
        |\n\
        |\n\
        |\n\
        |\n\
        |\n\
        |\n\
        |____________\n\n\n\n\n\n";
        cout<<s;
        cout<<"        ";
        lowly(type);
        Sleep(1666);
    }
    clear(); 
}
void s_d(int n){
    Sleep(n);
    cout<<".";
}
void setname(){
    SetConsoleTitle(getver(0).c_str()); 
}
void csh(){
    FILE* kj=fopen("kj","r");
    fscanf(kj,"%d",&kjhm);
    fclose(kj);
    if(!qspd()){
        FILE* ys=fopen("color","r");
        char s;
        s=getc(ys);
        color="";
        color+=s;
        s=getc(ys);
        color+=s;
        if(color[0]==' ')color="00";
        if(color=="")color="00";
        string t="color "+color;
        system(t.c_str()); 
        fclose(ys);
    }
    else system("color 70");
}
void ramtst(bool flag){
    p=(char*)malloc(157374182);
    for(int j=0;j<157374182;j++)p[j]=1;
    if(p!=NULL){
        if(flag){
            cout<<"测试成功,能够正常运行LOS!\n";
            Sleep(1000);
        }
    }
    else{
        cout<<"错误:剩余内存过少,可能无法正常运行LOS!";
        exit(1);
    }
    free(p);
    clear();
}
int q(char number){
    if(number<='9')return number-48;
    return number-55;
}
int f(string a,int k){
    int n=0;
    for(int i=0;i<a.size();i++){
        n=n*k+q(a[i]);
    }
    return n;
}
int n;
string s;
int jz;
char _p(int number){
    if(number<10)return number+48;
    return number+55;
}
string g(int n,int jz){
    string s="";
    while(n){
        s=_p(n%jz)+s;
        n/=jz;
    }
    return s;
}
void jzzh(){
    cout<<"请输入需要转换的数的进制n";
    cin>>n;
    cout<<"请输入需要转换的数s"; 
    cin>>s;
    cout<<"请输入要转换到的进制";
    cin>>jz;
    int ans=f(s,n);
    cout<<g(ans,jz);
}
void ert(){
    MessageBeep(MB_ICONERROR);
}
void pro(){
    FILE* cl=fopen("color","w");
    fprintf(cl,"07");
    fclose(cl);
    system("color 07");
}
void puanduan(){
    ifstream fout("nf");
    int n=0;
    fout>>n;
    if(!n){
        pro();
        ofstream fout("nf");
        fout<<1;
        FILE * yc=fopen("Type","w");
        fprintf(yc,"%d",0);
        fclose(yc); 
    }
}
int qspd(){
    ifstream qsmd("qs");
    int n=0;
    qsmd>>n;
    return n;
}
void lowly(int a){
    if(a==0)cout<<"正在启动LOS";
    if(a==1)cout<<"正在关闭LOS";
    if(a==2)cout<<"正在重新启动";
}

 


0
已采纳
沙宸安
沙宸安
高级启示者
高级启示者

嘘,悄悄问一句,看到代码尾部有进制转换,是不是还没有做出来?

开机动画能预览就好了

0
0
0
我要回答