C++超市管理系统
心得

写这个东西最重要环节不是上手去实现代码,而是再此之前的整体的系统分析,分析整个系统所需要定义的类,以及不同类实现的功能,以及类与类之间的消息的传递。最重要的还有模块之间的解耦,为后续的迭代,二次开发打好基础。

由于还有两天就开学了,所以本人直接就略过最重要的一步系统分析,直接开始敲了,边敲边考虑类的设计,这样导致的结果就是类所属功能的划分不够明确,部分代码冗余,以及为了实现老师作业中的几个继承组合的要求,导致整个系统有些地方并不是十分合理,本系统只是实现了最基本的功能模块,且进货功能和账单功能并未做出单独的类去进行统一管理,但思想都大差不差,想要在此基础之上进行改进,增加模块的小伙伴可以自行添加修改。

简介:环境 :codeblocks 20.03
我将会按照代码从上到下的顺序解析代码......

开始写了个getTime()方法,是卖货产生流水的获取本地时间的方法。一个员工类,继承出一个管理员,管理员可以创建新用户。商品基类,继承出食品类,饮品类,化妆品类,此处我认为着实牵强(老师要求),各自特有的实现方法我没有用,直接输出字符串了。紧接着就是管理商品的商品管理类(销售员),继承出商品管理类(管理员);销售员权限低,只能进行售货和查看,管理员除此之外还可以进行查看流水账单,进行商品补充进货,还可以创建新的账户。最后就是一个超市类,它持有一个员工类指针,还有一个商品管理类指针。大概一两天差不多OK!

注意

有些文件操作写在了超市类的析构函数中,若不是正常退出系统,会导致文件与内存数据之间存在差异(可以改但是我懒…),还有就是本系统涉及到三个txt文件,Users.txt(账户信息),Goods.txt(仓库商品),Bills.txt(流水账单),没有User.txt就登录不了了,自己建一个(同目录即可)每行中间三个空位\t,末尾位\n;
在这里插入图片描述

展示

在这里插入图片描述
在这里插入图片描述

#include <bits/stdc++.h>
#include <windows.h>
#include <time.h>
#include <conio.h>//包含getch();

using namespace std;


string getTime()
{
    time_t timep;
    time (&timep);
    char tmp[64];
    strftime(tmp, sizeof(tmp), "%Y-%m-%d %H:%M:%S",localtime(&timep) );
    return tmp;
}


//普通员工类
class LogUser
{
protected:
    string name;                            //员工姓名
    string userId;                          //员工唯一ID(账号)
    string userPassword;                    //登录密码
    string userLevel;                       //权限(管理员、售货员)
public:
    LogUser(string n,string ui,string up,string ul);
    friend ostream& operator<<(ostream& out,LogUser& obj);
    friend istream& operator>>(istream& in,LogUser& obj);
    // void readFile(istream & in);
    string getName();
    string getUserId();
    string getUserPassword();
    string getUserLevel();
};

LogUser::LogUser(string n,string ui,string up,string ul):name(n),userId(ui),userPassword(up),userLevel(ul)
{

}

ostream& operator<<(ostream& out,LogUser& obj)
{
    out<<obj.getName()<<obj.getUserId()<<obj.getUserPassword()<<obj.getUserLevel();
}

istream& operator>>(istream& in,LogUser& obj)
{
    in>>obj.name>>obj.userId>>obj.userPassword>>obj.userLevel;
}

//void LogUser::readFile(istream & in)
//{
//    in>>namename>>userId>>userPassword;
//}

//void LogUser::writeFile(ostream & out)
//{
//    out<<this->name<<"\t"<<this->userId<<"\t"<<this->userPassword<<'\n';
//}
string LogUser::getName()
{
    return name;
}

string LogUser::getUserId()
{
    return userId;
}

string LogUser::getUserPassword()
{
    return userPassword;
}

string LogUser::getUserLevel()
{
    return userLevel;
}

//管理员类
class LogAdministrator : public LogUser
{
protected:

public:
    LogAdministrator(string n,string ui,string up,string ul);
    void addUser();                                          //管理员特有的创建员工账号功能
};


LogAdministrator::LogAdministrator(string n,string ui,string up,string ul):LogUser( n, ui,up, ul)
{

}

void LogAdministrator::addUser()
{
    ofstream out("Users.txt",ios::app);
    if(!out)
    {
        cout<<"Users.txt error!"<<endl;
        abort();
    }
    else
    {
        system("cls");
        string name,userId,userPassword,userLevel;
        cout<<"输入员工信息:"<<endl;
        cout<<"姓名:";
        cin>>name;
        cout<<"ID:";
        cin>>userId;
        cout<<"密码:";
        cin>>userPassword;
        cout<<"权限:";
        cin>>userLevel;
        out<<name<<"\t"<<userId<<"\t"<<userPassword<<"\t"<<userLevel<<"\n";
        out.close();
    }
}

//商品基类
class Goods
{
protected:
    int id;                         //商品唯一编号
    string name;                    //商品名称
    double purchasingPrice;         //进货价格
    double price;                   //售价
    int repertory;                  //库存
    string producer;                //生厂商
    string brand;                   //品牌
    string type;                    //类型
public:
    Goods(int i,string n,double pP,double p,int r,string pr,string b,string t);
    virtual void introduce();       //产品说明
    void show();
    int getId();
    string getName();
    double getPurchasingPrice();
    double getPrice();
    int getRepertory();
    string getProducer();
    string getBrand();
    string getType();
    void setRepertory(int r);
};

Goods::Goods(int i,string n,double pP,double p,int r,string pr,string b,string t):name(n),producer(pr),brand(b),type(t)
{
    id=i;
    purchasingPrice = pP;
    price = p;
    repertory = r;
}

void Goods ::introduce()
{
    cout<<"商品基类!"<<endl;
}

void Goods :: show()
{
    cout<<"商品名称:"<<name<<endl<<"进货价格:"<<purchasingPrice<<"\t\t"<<"售价:"<<price<<endl<<"库存:"<<"\t"<<repertory<<"生厂商:"<<endl<<producer<<"品牌:"<<"\t"<<brand<<"类型:"<<type<<endl;
}

int Goods :: getId()
{
    return id;
}

string Goods :: getName()
{
    return name;
}

double Goods :: getPurchasingPrice()
{
    return purchasingPrice;
}

double Goods :: getPrice()
{
    return price;
}

int Goods :: getRepertory()
{
    return repertory;
}

string Goods :: getProducer()
{
    return producer;
}

string Goods :: getBrand()
{
    return brand;
}

string Goods :: getType()
{
    return type;
}


void Goods :: setRepertory(int r)
{
    repertory = r;
}

//食品类
class Food: public Goods
{
protected:
public:
    Food(int i,string n,double pP,double p,int r,string pr,string b,string t);
    void introduce();
};

Food::Food(int i,string n,double pP,double p,int r,string pr,string b,string t):Goods(i,n,pP,p,r,pr,b,t)
{

}

void Food::introduce()
{
    cout<<"食品类!"<<endl;
}

//饮料类
class Drink: public Goods
{
protected:
public:
    Drink(int i,string n,double pP,double p,int r,string pr,string b,string t);
    void introduce();
};

Drink::Drink(int i,string n,double pP,double p,int r,string pr,string b,string t):Goods(i,n,pP,p,r,pr,b,t)
{

}

void Drink::introduce()
{
    cout<<"饮料类!"<<endl;
}

//化妆品类
class Cosmetics: public Goods
{
protected:
public:
    Cosmetics(int i,string n,double pP,double p,int r,string pr,string b,string t);
    void introduce();
};

Cosmetics::Cosmetics(int i,string n,double pP,double p,int r,string pr,string b,string t):Goods(i,n,pP,p,r,pr,b,t)
{

}

void Cosmetics::introduce()
{
    cout<<"化妆品类!"<<endl;
}

//商品管理类(售货员)
class GoodsManage_Employee
{
protected:
    vector<Goods*> goods_Vector;
    vector<Goods*> shopping_Cart;
    vector<int> shopping_Cart_Sums;
public:
    GoodsManage_Employee();
    ~GoodsManage_Employee();
    void showAll();                                     //显示全部商品信息
    void showByIndex(int index);                        //显示单个产品信息
    void sell(LogUser* log);                            //出售
    virtual int showMenu(LogUser* log);                 //售货员视角菜单
};

GoodsManage_Employee::~GoodsManage_Employee()
{
    ofstream out("Goods.txt");
    if(!out)
    {
        cout<<"Goods.txt error!"<<endl;
        abort();
    }
    else
    {
        int n = goods_Vector.size();
        for(int i = 0; i<n; i++)
        {
            out<<goods_Vector[i]->getId()<<"\t"<<goods_Vector[i]->getName()<<"\t"<<goods_Vector[i]->getPurchasingPrice()<<"\t"<<goods_Vector[i]->getPrice()<<"\t"<<goods_Vector[i]->getRepertory()<<"\t"<<goods_Vector[i]->getProducer()<<"\t"<<goods_Vector[i]->getBrand()<<"\t"<<goods_Vector[i]->getType()<<"\n";
        }
        out.close();
    }
}
GoodsManage_Employee::GoodsManage_Employee()
{
    ifstream in("Goods.txt");
    if(!in)
    {
        cout<<"Goods.txt error!"<<endl;
        abort();
    }
    else
    {
        int id,repertory;
        string name, producer,brand,type;
        double purchasingPrice,price;

        while(!in.eof())
        {
            Goods *temp;
            in>>id>>name>>purchasingPrice>>price>>repertory>>producer>>brand>>type;
            if(type=="食品类")
            {
                temp= new Food(id,name,purchasingPrice,price,repertory,producer,brand,type);
            }
            else if(type=="饮料类")
            {
                temp = new Drink(id,name,purchasingPrice,price,repertory,producer,brand,type);
            }
            else if(type=="化妆品类")
            {
                temp = new Cosmetics(id,name,purchasingPrice,price,repertory,producer,brand,type);
            }
            goods_Vector.push_back(temp);
        }
        goods_Vector.pop_back();
        in.close();
    }
}

void GoodsManage_Employee :: showAll()
{
    int n = goods_Vector.size();
    system("cls");
    cout<<"ID\t"<<"商品名称\t"<<"进货价格\t"<<"售价\t"<<"库存\t"<<"生产商\t"<<"品牌\t"<<"类型"<<endl;
    for(int i = 0; i<n; i++)
    {
        cout<<goods_Vector[i]->getId()<<"\t"<<goods_Vector[i]->getName()<<"\t\t"<<goods_Vector[i]->getPurchasingPrice()<<"\t\t"<<goods_Vector[i]->getPrice()<<"\t"<<goods_Vector[i]->getRepertory()<<"\t"<<goods_Vector[i]->getProducer()<<"\t"<<goods_Vector[i]->getBrand()<<"\t"<<goods_Vector[i]->getType()<<endl;
    }
    cout<<"选择ID查看商品详细信息!输入0退出!"<<endl;
    int _p;
    cin>>_p;
    while(_p!=0)
    {
        showByIndex(_p);
        cin>>_p;
    }
}

void GoodsManage_Employee :: showByIndex(int index)
{
    int n = goods_Vector.size(),i;
    for(i = 0; i<n; i++)
    {
        if(goods_Vector[i]->getId()==index)
        {
            goods_Vector[i]->show();
            cout<<endl;
            break;
        }
    }
    if(i==n) cout<<"未查询到对应商品信息!请输入正确的ID!"<<endl;
}

void GoodsManage_Employee :: sell(LogUser* log)
{
    while(1)
    {
        system("cls");
        int n = goods_Vector.size();
        cout<<"ID\t"<<"商品名称\t"<<"进货价格\t"<<"售价\t"<<"库存\t"<<"生产商\t"<<"品牌\t"<<"类型"<<endl;
        for(int i = 0; i<n; i++)
        {
            cout<<goods_Vector[i]->getId()<<"\t"<<goods_Vector[i]->getName()<<"\t\t"<<goods_Vector[i]->getPurchasingPrice()<<"\t\t"<<goods_Vector[i]->getPrice()<<"\t"<<goods_Vector[i]->getRepertory()<<"\t"<<goods_Vector[i]->getProducer()<<"\t"<<goods_Vector[i]->getBrand()<<"\t"<<goods_Vector[i]->getType()<<endl;
        }


        double sum=0;
        cout<<"购物车:\t\t\t\t\t总金额:";
        if(shopping_Cart.size()==0)
        {

            cout<<sum<<endl<<"啥也没有啊!赶紧购物吧!"<<endl;
        }
        else
        {
            int m = shopping_Cart.size();
            for(int i = 0; i<m; i++)
            {
                sum += shopping_Cart[i]->getPrice()*shopping_Cart_Sums[i];
            }

            cout<<sum<<endl;
            cout<<"ID\t"<<"商品名称\t"<<"售价\t"<<"购买数量\t"<<"总价\t"<<endl;
            for(int i = 0; i<m; i++)
            {
                cout<<shopping_Cart[i]->getId()<<"\t"<<shopping_Cart[i]->getName()<<"\t\t"<<shopping_Cart[i]->getPrice()<<"\t"<<shopping_Cart_Sums[i]<<"\t\t"<<shopping_Cart_Sums[i]*shopping_Cart[i]->getPrice()<<endl;
            }
            cout<<endl;
        }


        int index,amount;
        cout<<"选择ID...(输入0退出)"<<endl;
        cin>>index;
        if(index==0) break;
        if(index<0||index>n)
        {
            cout<<"ID错误!"<<endl<<"退出中";
            for(int i=0; i<6; i++)
            {
                cout<<".";
                Sleep(250);
            }
            break;
        }
        cout<<endl<<"输入购买输入数量..."<<endl;
        cin>>amount;

        for(int i = 0; i<n; i++)
        {
            if(goods_Vector[i]->getId()==index)
            {
                if(amount>goods_Vector[i]->getRepertory())
                {
                    cout<<"库存不足!请输入正确数量";
                    for(int j=0; j<6; j++)
                    {
                        cout<<".";
                        Sleep(250);
                    }
                    break;
                }

                goods_Vector[i]->setRepertory(goods_Vector[i]->getRepertory() - amount);

                int m = shopping_Cart.size(),mm=0;
                for( mm = 0; mm<m; mm++)
                {
                    if(shopping_Cart[mm]->getId()==goods_Vector[i]->getId())
                    {
                        shopping_Cart_Sums[mm]+=amount;
                        break;
                    }
                }

                if(mm==m)
                {
                    shopping_Cart.push_back(goods_Vector[i]);
                    shopping_Cart_Sums.push_back(amount);
                }


                for(int i=0; i<6; i++)
                {
                    cout<<".";
                    Sleep(250);
                }
                cout<<endl<<"购买成功!";
                Sleep(1000);
                break;
            }
        }
    }
    ofstream out("Bills.txt",ios::app);
    if(!out)
    {
        cout<<"Bills.txt error!"<<endl;
        abort();
    }
    else
    {
        int m = shopping_Cart.size();
        for(int i = 0; i<m; i++)
        {
            out<<getTime()<<"\t"<<log->getName()<<"\t"<<shopping_Cart[i]->getId()<<"\t"<<shopping_Cart_Sums[i]<<"\n";
        }

    }

}

int GoodsManage_Employee :: showMenu(LogUser* log)
{
    for(int i=0; i<24; i++) cout<<"●";
    puts("");
    cout<<setw(46)<<left<<"●"<<"●"<<endl;
    cout<<setw(16)<<left<<"●"<<setw(16)<<"1.查看商品信息"<<setw(16)<<right<<"●"<<endl;
    cout<<setw(46)<<left<<"●"<<"●"<<endl;
    cout<<setw(16)<<left<<"●"<<setw(16)<<"2.购买商品"<<setw(16)<<right<<"●"<<endl;
    cout<<setw(46)<<left<<"●"<<"●"<<endl;
    cout<<setw(16)<<left<<"●"<<setw(16)<<"0.退出系统"<<setw(16)<<right<<"●"<<endl;
    cout<<setw(46)<<left<<"●"<<"●"<<endl;
    cout<<setw(46)<<left<<"●"<<"●"<<endl;
    for(int i=0; i<24; i++) cout<<"●";
    puts("");
    cout<<"请输入执行操作的编号:"<<endl;

    int choice;

    cin>>choice;
    if(choice==1)
    {
        showAll();
    }
    else if(choice==2)
    {
        sell(log);
    }
    else if(choice==0)
    {

    }
    else
    {
        cout<<"输入错误,请重新输入..."<<endl;
    }
    return choice;
}

//商品管理类(管理员)
class GoodsManage_Administrator : public GoodsManage_Employee
{
protected:
public:
    GoodsManage_Administrator();
    ~GoodsManage_Administrator();
    void showBills();                                       //显示账单
    void purchaseGoods();                                   //进货
    void addUser(LogAdministrator* log);                                         //增加账户
    int showMenu(LogUser* log);
};

GoodsManage_Administrator :: GoodsManage_Administrator()
{

}

GoodsManage_Administrator :: ~GoodsManage_Administrator()
{

}

void GoodsManage_Administrator :: showBills()
{
    ifstream in("Bills.txt");
    if(!in)
    {
        cout<<"Users.txt error!"<<endl;
        abort();
    }
    else
    {
        system("cls");
        cout<<"日期\t\t\t"<<"售货员\t"<<"商品ID\t"<<"数量\t"<<endl;
        while(!in.eof())
        {
            string time1,time2,name;
            int type,sum;
            in >>time1>>time2>>name>>type>>sum;
            if(time1=="") break;
            cout<<time1<<" "<<time2<<"\t"<<name<<"\t"<<type<<"\t"<<sum<<endl;
        }
        in.close();
    }
    cout<<"按任意键退出!";
    getch();
}

void GoodsManage_Administrator :: purchaseGoods()
{
    while(1)
    {
        system("cls");
        int n = goods_Vector.size();
        cout<<"ID\t"<<"商品名称\t"<<"进货价格\t"<<"售价\t"<<"库存\t"<<"生产商\t"<<"品牌\t"<<"类型"<<endl;
        for(int i = 0; i<n; i++)
        {
            cout<<goods_Vector[i]->getId()<<"\t"<<goods_Vector[i]->getName()<<"\t\t"<<goods_Vector[i]->getPurchasingPrice()<<"\t\t"<<goods_Vector[i]->getPrice()<<"\t"<<goods_Vector[i]->getRepertory()<<"\t"<<goods_Vector[i]->getProducer()<<"\t"<<goods_Vector[i]->getBrand()<<"\t"<<goods_Vector[i]->getType()<<endl;
        }

        cout<<"退出:0\t增加新产品:1\t\t增加已有产品数量:2\n";
        int _P;
        cin>>_P;
        if(_P==0)
        {
            cout<<"退出中";
            for(int i=0; i<6; i++)
            {
                cout<<".";
                Sleep(250);
            }
            break;
        }
        else if(_P==1)
        {
            int m = goods_Vector.size();
            cout<<"1.食品类\t2.饮料类\t3.化妆品类"<<endl;
            int c;
            cin>>c;
            string name,producer,brand,type;
            double purchasingPrice,price;
            int repertory;
            if(c==1)
            {
                cout<<"商品名称:";
                cin>>name;
                cout<<"进货价格:";
                cin>>purchasingPrice;
                cout<<"售价:";
                cin>>price;
                cout<<"库存:";
                cin>>repertory;
                cout<<"生厂商:";
                cin>>producer;
                cout<<"品牌:";
                cin>>brand;
                goods_Vector.push_back(new Food(m+1,name,purchasingPrice,price,repertory,producer,brand,"食品类"));
            }
            else if(c==2)
            {
                cout<<"商品名称:";
                cin>>name;
                cout<<"进货价格:";
                cin>>purchasingPrice;
                cout<<"售价:";
                cin>>price;
                cout<<"库存:";
                cin>>repertory;
                cout<<"生厂商:";
                cin>>producer;
                cout<<"品牌:";
                cin>>brand;
                goods_Vector.push_back(new Drink(m+1,name,purchasingPrice,price,repertory,producer,brand,"饮料类"));

            }
            else if(c==3)
            {
                cout<<"商品名称:";
                cin>>name;
                cout<<"进货价格:";
                cin>>purchasingPrice;
                cout<<"售价:";
                cin>>price;
                cout<<"库存:";
                cin>>repertory;
                cout<<"生厂商:";
                cin>>producer;
                cout<<"品牌:";
                cin>>brand;
                goods_Vector.push_back(new Cosmetics(m+1,name,purchasingPrice,price,repertory,producer,brand,"化妆品类"));

            }
            else
            {
                cout<<"输入错误";
                for(int i=0; i<6; i++)
                {
                    cout<<".";
                    Sleep(250);
                }
            }

        }
        else if(_P==2)
        {

            int ID;
            cout<<"商品ID:";
            cin>>ID;
            if(ID<=0||ID>goods_Vector.size())
            {
                cout<<"ID非法,退出中";
                for(int i=0; i<6; i++)
                {
                    cout<<".";
                    Sleep(250);
                }
            }
            cout<<"输入进货数量:";
            int sum;
            cin>>sum;
            goods_Vector[ID-1]->setRepertory(goods_Vector[ID-1]->getRepertory() + sum);
            cout<<"加入中";
            for(int i=0; i<6; i++)
            {
                cout<<".";
                Sleep(250);
            }
            cout<<endl<<"加入成功";
            Sleep(1000);
        }
        else
        {
            cout<<"输入错误...\n退出中";
            for(int i=0; i<6; i++)
            {
                cout<<".";
                Sleep(250);
            }
        }
    }
}

void GoodsManage_Administrator ::addUser(LogAdministrator* log)
{
    log->addUser();
}

int GoodsManage_Administrator :: showMenu(LogUser* log)
{
    for(int i=0; i<24; i++) cout<<"●";
    puts("");
    cout<<setw(46)<<left<<"●"<<"●"<<endl;
    cout<<setw(16)<<left<<"●"<<setw(16)<<"1.查看商品信息"<<setw(16)<<right<<"●"<<endl;
    cout<<setw(46)<<left<<"●"<<"●"<<endl;
    cout<<setw(16)<<left<<"●"<<setw(16)<<"2.购买商品"<<setw(16)<<right<<"●"<<endl;
    cout<<setw(46)<<left<<"●"<<"●"<<endl;
    cout<<setw(16)<<left<<"●"<<setw(16)<<"3.账单"<<setw(16)<<right<<"●"<<endl;
    cout<<setw(46)<<left<<"●"<<"●"<<endl;
    cout<<setw(16)<<left<<"●"<<setw(16)<<"4.进货"<<setw(16)<<right<<"●"<<endl;
    cout<<setw(46)<<left<<"●"<<"●"<<endl;
    cout<<setw(16)<<left<<"●"<<setw(16)<<"5.创建账户"<<setw(16)<<right<<"●"<<endl;
    cout<<setw(46)<<left<<"●"<<"●"<<endl;
    cout<<setw(16)<<left<<"●"<<setw(16)<<"0.退出系统"<<setw(16)<<right<<"●"<<endl;
    cout<<setw(46)<<left<<"●"<<"●"<<endl;
    cout<<setw(46)<<left<<"●"<<"●"<<endl;
    for(int i=0; i<24; i++) cout<<"●";
    puts("");
    cout<<"请输入执行操作的编号:"<<endl;

    int choice;

    cin>>choice;
    if(choice==1)
    {
        showAll();
    }
    else if(choice==2)
    {
        sell(log);
    }
    else if(choice==3)
    {
        showBills();
    }
    else if(choice==4)
    {
        purchaseGoods();
    }
    else if(choice==5)
    {
        addUser((LogAdministrator*)log);
    }
    else if(choice==0)
    {

    }
    else
    {
        cout<<"输入错误,请重新输入..."<<endl;
    }
    return choice;
}

//超市类
class Supermarket
{
private:
    LogUser *user = nullptr;
    GoodsManage_Employee *goodsManage = nullptr;
    GoodsManage_Employee* getGoodsManage();
    void login();
    void Welcome();
public:
    Supermarket();
    ~Supermarket();
    void showMenu();
};


GoodsManage_Employee* Supermarket::getGoodsManage()
{
    if(user->getUserLevel()=="售货员")
    {
        return new GoodsManage_Employee();
    }
    else if(user->getUserLevel()=="管理员")
    {
        return new GoodsManage_Administrator();
    }
}

void Supermarket::login()
{
    ifstream in;
    string Log_Id,Log_Password;
    string name,userId,userPassword,userLevel;

    while(user==nullptr)
    {
        in.open("Users.txt");

        system("cls");
        for(int i=0; i<24; i++) cout<<"●";
        puts("");
        cout<<setw(46)<<left<<"●"<<"●"<<endl;
        cout<<setw(16)<<left<<"●"<<setw(16)<<"欢迎来到超市管理系统"<<setw(12)<<right<<"●"<<endl;
        cout<<setw(46)<<left<<"●"<<"●"<<endl;
        cout<<setw(16)<<left<<"●"<<setw(16)<<"请登录......"<<setw(16)<<right<<"●"<<endl;
        cout<<setw(46)<<left<<"●"<<"●"<<endl;
        cout<<setw(46)<<left<<"●"<<"●"<<endl;
        for(int i=0; i<24; i++) cout<<"●";
        puts("");
        cout<<"账号:";
        cin>>Log_Id;
        cout<<"密码:";
        cin>>Log_Password;
        if(!in)
        {
            cout<<"Users.txt error!"<<endl;
            abort();
        }
        else
        {
            while(!in.eof())
            {
                in >>name>>userId>>userPassword>>userLevel;
                if(Log_Id==userId&&Log_Password==userPassword)
                {
                    if(userLevel=="管理员")
                    {
                        user = new LogAdministrator(name,userId,userPassword,userLevel);
                    }
                    else
                    {
                        user = new LogUser(name,userId,userPassword,userLevel);
                    }
                    break;
                }
            }
            in.close();
        }
        if(user==nullptr)
        {
            cout<<"账号或密码错误!重新登录";
            for(int i=0; i<6; i++)
            {
                cout<<".";
                Sleep(250);
            }
        }
    }
}

void Supermarket :: Welcome()
{
    system("cls");
    for(int i=0; i<24; i++) cout<<"●";
    puts("");
    cout<<setw(46)<<left<<"●"<<"●"<<endl;
    cout<<setw(10)<<left<<"●"<<setw(2)<<"欢迎"<<user->getName()<<"!"<<setw(27)<<right<<"●"<<endl;
    cout<<setw(46)<<left<<"●"<<"●"<<endl;
    cout<<setw(10)<<left<<"●"<<setw(2)<<"正在进入超市管理系统"<<"(权限:"<<user->getUserLevel()<<")"<<setw(5)<<right<<"●"<<endl;
    cout<<setw(46)<<left<<"●"<<"●"<<endl;
    cout<<setw(46)<<left<<"●"<<"●"<<endl;
    for(int i=0; i<24; i++) cout<<"●";
    puts("");
    cout<<"加载数据中";
    for(int i=0; i<6; i++)
    {
        cout<<".";
        Sleep(250);
    }
}

Supermarket::Supermarket()
{
    login();
    goodsManage = getGoodsManage();
    Welcome();
}

Supermarket::~Supermarket()
{
    delete user;
    delete goodsManage;
}

void Supermarket :: showMenu()
{
    while(1)
    {
        system("cls");
        cout<<"用户:"<<user->getName()<<"\t\t\t     "<<"权限:"<<user->getUserLevel()<<endl;
        if(goodsManage->showMenu(user)==0) break;
    }
}

int main()
{
    Supermarket s;
    s.showMenu();
    cout<<getTime();
    return 0;
}

Logo

快速构建 Web 应用程序

更多推荐