小型超市管理系统 C++面向对象

《C++面向对象程序设计》课程设计实习报告结构如下:

一、面向对象程序设计课程设计目的

随着科学技术的进步和社会经济的发展,计算机在现实生活中扮演着越来越重要的角色,与此同时我们也可以注意到,当今社会,越来越多的计算机进入各大超市中,成为他们工作中的一部分。那么关于超市的管理系统也进入了信息化时代,我们有能力让现在我们的生活变得更加便捷,对于超市货品整理人员的每日繁重工作可以通过计算机来缓解,以实现管理自动化。工作人员对于货品信息的管理,用电安全的控制,都是人工作业,运作效率较低。因此,建立一个自动化的超市管理系统是十分有必要的。信息化的管理可以为超市提高工作效率,省时省力。本系统主要提供货品信息的添加,删除,显示,修改,查询,排序,保存以及退出的功能,信息维护起来非常方便。大大减少了超市的人力和物力。本系统大致要做到以下几点:
(1)界面整洁有特点,简洁而不单调、操作方法简单,功能一目了然;
(2)可以以进行商品的增加、删除、显示、查询;
(3)可以对商品信息随时修改,排序,并输出文件;
(4)可以商品数据文件随时进行读取和保存。
通过实现小型超市的管理系统,我们可以更好的理解c++面向对象编程思想,最终,达到了提高本课程综合实践能力的目的。

二、设计过程及步骤

1、问题分析与功能定义

超市中各种商品的录入、商品信息的查找、商品的删除、商品的增加等操作。
功能:
(1)商品的录入
(2)商品的显示
(3)商品的排序(根据商品价格、根据商品库存量)
(4)商品的查找(根据名称查找、根据编号查找)
(5)商品的删除
(6)商品的修改
(7)商品信息的保存

2、对象(类)设计

本系统实现两个类: Goods类和Goodsmanage类,他们之间的关系是组合关系。Goods类定义商品的各种属性。而Goodsmanage类则是对商品的管理实现。组合关系如下图所示:

3、核心控制设计

在这里插入图片描述

4、编码实现
  1. 程序源代码
    (高能预警,一坨代码)
 
    void Display()//显示
    {
        system("cls");
        i=0;
        for(Goods * p=Head->Next; p!=End; p=p->Next)
        {
            p->Show();
            i++;
        }
        cout<<"共有"<<i<<"个商品"<<"\n"<<endl;
        cout<<"输入任意字符!继续……";
        getch();
    }

    void AddItem()//从键盘输入商品信息
    {
        system("cls");
        End->InputName();
        showMenu(1);
        End->InputKind();
        do
        {
            End->InputID();

        }
        while(FindID(End->Id));

        End->InputOther();

        End->Next = new Goods;
        End=End->Next;
        cout<<"添加成功!"<<endl;
        Save();
        cout<<"输入任意字符!继续……";
        getch();
    }

    Goods *FindItem(char * name)
    {
        for(Goods * p=Head; p->Next!=End; p=p->Next) //匹配成功则返回上一个指针,不成功就返回空
            if(!strcmp(p->Next->name,name))return p;
        return NULL;
    }

    Goods *FindID(char * Id)
    {
        for(Goods * p=Head; p->Next!=End; p=p->Next) //匹配成功则返回上一个指针,不成功就返回空
            if(!strcmp(p->Next->Id,Id))return p;
        return NULL;
    }
};
//交换两个商品的数据
{
    Goods *temp=new Goods;
    strcpy(temp->name,p1->name);
    temp->kind=p1->kind;
    strcpy(temp->Id,p1->Id);
    temp->price=p1->price;
    temp->amount=p1->amount;
    strcpy(temp->origin,p1->origin);


    strcpy(p1->name,p2->name);
    p1->kind=p2->kind;
    strcpy(p1->Id,p2->Id);
    p1->price=p2->price;
    p1->amount=p2->amount;
    strcpy(p1->origin,p2->origin);


    strcpy(p2->name,temp->name);
    p2->kind=temp->kind;
    strcpy(p2->Id,temp->Id);
    p2->price=temp->price;
    p2->amount=temp->amount;
    strcpy(p2->origin,temp->origin);

}

{
    Head=new Goods;
    Head->Next=new Goods;
    End=Head->Next;
    in.open("库存.txt");
    if(!in)
        cout<<"没有库存"<<endl;
    else
    {
        cout<<"读取成功..."<<endl;
        int ui=1;
        while(!in.eof())
        {
            End->ReadFile(in);
            //End->Show();
            //in>>name>>kind>>Id>>price>>amount>>origin;
            //cout<<"商品名: "<<End->name<<endl<<"种类:"<<End->kind<<endl<<"编号: "<<End->Id<<endl<<"价格 "<<End->price<<endl<<"商品库存: "<<End->amount<<endl<<"商品产地:"<<End->origin<<endl<<endl<<endl;
            End->Next=new Goods;
            mmp=End;
            End=End->Next;
            //End->Show();
            //cout<<ui++<<endl;
        }
        End=mmp;
        in.close();
    }
    int uio=200000000;
    while(uio>0)
        uio--;
}
菜单

{
    switch(n)
    {

    case 1:
    {
        cout<<"----------------------------------------------------------------------------------------------------------------------" << endl;
        cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*"<< endl;
        cout<<"            1. 食品饮料      2. 粮油副食      3. 美容洗护      4. 家居家电      5.家庭清洁      6.母婴用品      \n"<<endl;
        cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*"<< endl;
        cout<<"----------------------------------------------------------------------------------------------------------------------" << endl;

        break;
    }

    case 2:
    {
        system("cls");

        cout<<endl;
        cout<<"----------------------------------------------------------------------------------------------------------------------" << endl;
        cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*"<< endl;
        cout<<"---------------------------------------------   商 店 仓 库 管 理 系 统   --------------------------------------------"<<endl;
        cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*"<< endl;
        cout<<"----------------------------------------------------------------------------------------------------------------------" << endl;
        cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★☆★              1. 增加商品              ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*"<<endl;
        cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★☆★              2. 显示商品              ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*"<<endl;
        cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★☆★              3. 排序商品              ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*"<<endl;
        cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★☆★              4. 查找商品              ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*"<<endl;
        cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★☆★              5. 删除商品              ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*"<<endl;
        cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★☆★              6. 修改商品              ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*"<<endl;
        cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★☆★              7. 保存信息              ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*"<<endl;
        cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★☆★              0. 退出系统              ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*"<<endl;
        cout<<"----------------------------------------------------------------------------------------------------------------------" << endl;
        cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*"<< endl;
        cout<<"请选择:0-7"<<endl;

        break;
    }

    case 3:
    {
        system("cls");

        cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*"<< endl;
        cout<<"----------------------------------------------------------------------------------------------------------------------" << endl;
        cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★           1. 修改商品名      4. 修改价格       ☆★☆★☆★☆★☆★☆★☆★☆★☆*"
            <<"*★☆★☆★☆★☆★☆★☆★☆★☆★           2. 修改种类        5. 修改商品库存   ☆★☆★☆★☆★☆★☆★☆★☆★☆*"
            <<"*★☆★☆★☆★☆★☆★☆★☆★☆★           3. 修改编号        6. 修改全部       ☆★☆★☆★☆★☆★☆★☆★☆★☆*"
            <<"*★☆★☆★☆★☆★☆★☆★☆★☆★                  0.返回上级操作                ☆★☆★☆★☆★☆★☆★☆★☆★☆*"<<endl;
        cout<<"----------------------------------------------------------------------------------------------------------------------" << endl;
        cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*"<< endl;
        cout<<"请选择:0-6 (0返回上一级)"<<endl;

        break;
    }

    case 4:
    {
        system("cls");

        cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*"<< endl;
        cout<<"----------------------------------------------------------------------------------------------------------------------" << endl;
        cout<<"*★☆★☆★☆★☆★☆★☆★              1. 按商品价格排序        2. 按库存量排序          ☆★☆★☆★☆★☆★☆★☆*";
        cout<<"----------------------------------------------------------------------------------------------------------------------" << endl;
        cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*"<< endl;
        cout<<"  请选择:0-2 (0返回上一级)"<<endl;

        break;
    }

    case 5:
    {
        system("cls");
        cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*"<< endl;
        cout<<"----------------------------------------------------------------------------------------------------------------------" << endl;
        cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★☆★            1. 按商品名称查找            ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*"
            <<"*★☆★☆★☆★☆★☆★☆★☆★☆★☆★            2. 按商品编号查找            ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*"<<endl;
        cout<<"----------------------------------------------------------------------------------------------------------------------" << endl;
        cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*"<< endl;
        cout<<"请选择:0-2 (0返回上一级)"<<endl;
        break;
    }

    }
}



Goodsmanager::~Goodsmanager()
{
    //Save();
    for(Goods * temp; Head->Next!=End;)
    {
        temp=Head->Next;
        Head->Next=Head->Next->Next;
        delete temp;
    }
    delete Head,End;
}


void Goodsmanager::Find()
{
    system("cls");
    char name[20],Id[10];
    int x;
    Goods * p=NULL;
    showMenu(5);
    cin>>x;
    switch(x)
    {

    case 1:
    {
        cout<<"请输入要查找的商品的名称:";
        cin>>name;
        if(p=FindItem(name))
        {
            p->Next->Show();
            cout<<"输入任意字符!继续……";
            getch();
        }
        else
        {
            cout<<"没有找到该名称的商品!"<<endl;
            cout<<"输入任意字符!继续……";
            getch();
        }
    }
    break;

    case 2:
    {
        cout<<"请输入要查找的商品的编号:";
        cin>>Id;
        if(p=FindID(Id))
        {
            p->Next->Show();
            cout<<"输入任意字符!继续……";
            getch();
        }
        else
        {
            cout<<"没有找到该编号的商品!"<<endl;
            cout<<"输入任意字符!继续……";
            getch();
        }
    }
    break;
    }
}
//修改商品信息
{

    showMenu(3);
    int x;
    cin>>x;
    switch(x)
    {

    case 1:
    {
        char Id[20];
        Goods * p=NULL;
        cout<<"请输入要修改的商品的编号:";
        cin>>Id;
        if(p=FindID(Id))
        {
            cout<<"已找到商品的信息,请输入新的信息!"<<endl;

            p->Next->InputName();
            cout<<"修改成功!"<<endl;
            cout<<"输入任意字符!继续……";
            getch();
        }
        else
        {
            cout<<"没有找到您需要的商品!"<<endl;
            cout<<"输入任意字符!继续……";
            getch();
        }
        break;
    }

    case 2:
    {
        char Id[20];
        Goods * p=NULL;
        cout<<"请输入要修改的商品的编号:";
        cin>>Id;
        if(p=FindID(Id))
        {
            cout<<"已找到商品的信息,请输入新的信息!"<<endl;

            p->Next->InputKind();
            cout<<"修改成功!"<<endl;
            cout<<"输入任意字符!继续……";
            getch();
        }
        else
        {
            cout<<"没有找到您需要的商品!"<<endl;
            cout<<"输入任意字符!继续……";
            getch();
        }
        break;
    }

    case 3:
    {
        char Id[20];
        Goods * p=NULL;
        cout<<"请输入要修改的商品的编号:";
        cin>>Id;
        if(p=FindID(Id))
        {
            cout<<"已找到商品的信息,请输入新的信息!"<<endl;

            p->Next->InputID();
            cout<<"修改成功!"<<endl;
            cout<<"输入任意字符!继续……";
            getch();
        }
        else
        {
            cout<<"没有找到您需要的商品!"<<endl;
            cout<<"输入任意字符!继续……";
            getch();
        }
        break;
    }

    case 4:
    {
        char Id[20];
        Goods * p=NULL;
        cout<<"请输入要修改的商品的编号:";
        cin>>Id;
        if(p=FindID(Id))
        {
            cout<<"已找到商品的信息,请输入新的信息!"<<endl;

            p->Next->InputBuyprice();
            cout<<"修改成功!"<<endl;
            cout<<"输入任意字符!继续……";
            getch();
        }
        else
        {
            cout<<"没有找到您需要的商品!"<<endl;
            cout<<"输入任意字符!继续……";
            getch();
        }
        break;
    }

    case 5:
    {
        char Id[20];
        Goods * p=NULL;
        cout<<"请输入要修改的商品的编号:";
        cin>>Id;
        if(p=FindID(Id))
        {
            cout<<"已找到商品的信息,请输入新的信息!"<<endl;

            p->Next->InputAmount();
            cout<<"修改成功!"<<endl;
            cout<<"输入任意字符!继续……";
            getch();
        }
        else
        {
            cout<<"没有找到您需要的商品!"<<endl;
            cout<<"输入任意字符!继续……";
            getch();
        }
        break;
    }
    }
}


void Goodsmanager::RemoveItem()
{
    system("cls");
    char Id[20];
    Goods * p=NULL,*temp=NULL;
    cout<<"请输入要删除的商品的编号:"<<endl;
    cin>>Id;
    if(p=FindID(Id))
    {
        temp=p->Next;
        p->Next=p->Next->Next;
        delete temp;
        cout<<"删除成功!"<<endl;
        cout<<"输入任意字符!继续……";
        getch();
    }
    else
    {
        cout<<"没有找到您需要的商品!"<<endl;
        cout<<"输入任意字符!继续……";
        getch();
    }
}

//统计当前链表的记录总数,返回一个整数
{
    if(! Head)
        return 0;
    int n=0;
    for(Goods * p=Head->Next; p!=End; p=p->Next)
    {
        n++;
    }
    return n;
}


void Goodsmanager::Sort()
{
    showMenu(4);
    int x;
    cin>>x;
    switch(x)
    {

    case 1:
    {
        system("cls");
        cout <<"排序中..."<<endl;
        cout<<"\n";
        Goods *p=NULL,*p1=NULL,*k=NULL;
        int n=Goodsmanager::ListCount();
        if(n<2)
            return;
        for(p=Head->Next; p!=End; p=p->Next)
            for(k=p->Next; k!=End; k=k->Next)
            {
                if(p->price>k->price)
                {
                    Goodsmanager::Swap(p,k);
                }
            }
        Display();
        out.open("售价.txt");
        for(Goods *q=Head->Next; q!=End; q=q->Next)
            out<<q->name<<"\t"<<q->kind<<"\t"<<q->Id<<"\t"<<q->price<<"\t"<<q->amount<<"\t"<<q->origin<<endl;
        out.close();
        cout<<"保存信息成功"<<endl;
        cout <<"排序完成!"<<endl;
        getch();
        return;
    }

    case 2:
    {
        system("cls");
        cout <<"排序中..."<<endl;
        cout<<"\n";
        Goods *p=NULL,*p1=NULL,*k=NULL;
        int n=Goodsmanager::ListCount();
        if(n<2)
            return;
        for(p=Head->Next; p!=End; p=p->Next)
            for(k=p->Next; k!=End; k=k->Next)
            {
                if(p->amount>k->amount)
                {
                    Goodsmanager::Swap(p,k);
                }
            }
        Display();
        out.open("库存量.txt");
        for(Goods *q=Head->Next; q!=End; q=q->Next)
            out<<q->name<<"\t"<<q->kind<<"\t"<<q->Id<<"\t"<<q->price<<"\t"<<q->amount<<"\t"<<q->origin<<endl;
        out.close();
        cout<<"保存信息成功"<<endl;
        cout <<"排序完成!"<<endl;
        getch();
        return;
    }

    }
}


void Goodsmanager::Save()
{
    out.open("库存.txt");
    for(Goods *p=Head->Next; p!=End; p=p->Next)
        out<<p->name<<"\t"<<p->kind<<"\t"<<p->Id<<"\t"<<p->price<<"\t"<<p->amount<<"\t"<<p->origin<<endl;

    out.close();
    cout<<"保存信息成功"<<endl;
}

int main()       //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
{
    cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*"<< endl;
    cout<<"----------------------------------------------------------------------------------------------------------------------" << endl;
    cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★                                                ☆★☆★☆★☆★☆★☆★☆★☆★☆*"<<endl;
    cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★                                                ☆★☆★☆★☆★☆★☆★☆★☆★☆*"<<endl;
    cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★                                                ☆★☆★☆★☆★☆★☆★☆★☆★☆*"<<endl;
    cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★              欢迎进入超市管理系统              ☆★☆★☆★☆★☆★☆★☆★☆★☆*"<<endl;
    cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★                                                ☆★☆★☆★☆★☆★☆★☆★☆★☆*"<<endl;
    cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★                                                ☆★☆★☆★☆★☆★☆★☆★☆★☆*"<<endl;
    cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★                                                ☆★☆★☆★☆★☆★☆★☆★☆★☆*"<<endl;
    cout<<"----------------------------------------------------------------------------------------------------------------------" << endl;
    cout<<"*★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*"<< endl;

    Goodsmanager Meow;
    cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<"\t\t\t\t\t\t\t\t\t\t\t\tCreator: Meow"<<endl;

    cout<<"(按任意键开始……)";
    getch();
    int x;
    bool quit =false;

    while(!quit)
    {


        Meow.showMenu(2);
        cin>>x;
        switch(x)
        {

        case 0:
        {
            quit=true;
            break;
        }

        case 1:
        {
            Meow.AddItem();
            break;
        }

        case 2:
        {
            Meow.Display();
            break;
        }

        case 3:
        {
            Meow.Sort();
            break;
        }

        case 4:
        {
            Meow.Find();
            break;
        }

        case 5:
        {
            Meow.RemoveItem();
            break;
        }

        case 6:
        {
            Meow.ModifyItem();
            break;
        }

        case 7:
        {
            Meow.Save();
            break;
        }
        }
    }

    return 0;
}
5、测试与调试

图1 系统初始界面 图1 系统初始界面

图2 系统主界面
图2 系统主界面

添加商品
图3 添加商品

显示商品信息

图4 显示商品信息

按商品价格排序

图5 按商品价格排序
按商品库存量排序

图6 按商品库存量排序
按商品名称查找

图7按商品名称查找
在这里插入图片描述

图8 按商品编号查找
在这里插入图片描述

图9 删除商品
在这里插入图片描述

图10.1 修改商品信息主界面
在这里插入图片描述

图10.2 修改商品名
在这里插入图片描述

图10.3 修改商品种类
在这里插入图片描述

图10.4 修改商品编号
在这里插入图片描述

图10.5 修改商品价格
在这里插入图片描述

图10.6 修改商品库存
在这里插入图片描述

图11 退出系统
在这里插入图片描述

图12.1 本地保存的txt商品信息
在这里插入图片描述

图12.2 本地保存的txt商品信息
在这里插入图片描述

图12.3 本地保存的txt商品信息

未经作者同意请勿转载套用

  • 10
    点赞
  • 110
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值