0


超市商品管理系统设计 C++实现

超市商品管理系统设计—C++实现


文章目录


一、内容要求

要求

新增要求:

  1. 将管理员和用户分别开。
  2. 管理员需要密码才能进入系统。
  3. 查询功能:两种查询功能。第一种是按商品类别、商品名称、生产厂家进行查询;第二种是按商品类别、商品名称进行查询。第一种偏向管理员,第二种偏向用户。
  4. 修改功能:可以修改所以的属性。
  5. 排序功能:两种排序功能(都包含升序和降序)。第一种按照价格排序;第二种按照库存量排序。两种排序都要包含升序和降序。
  6. 清空功能:将商品全部清空的要求。
  7. 读取文件数据功能:系统运行时,就需要读取文件商品数据。包含文件不存在、文件为空、文件不为空且有数据。
  8. 存储文件功能:将商品数据存放到文件中。
  9. 展示商品gongn:打印所有商品数据信息。
  10. 在增、删、修、排序、清空功能中,要实现文件数据的时时更新。

大纲图

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

在这里插入图片描述


二、源代码(包含大量注释)

在这里插入图片描述

7个文件,3个头文件,4个.cpp文件
main.cpp
supermarket.h
supermarket.cpp
administrator.h
administrator.cpp
user.h
user.cpp


1、main.cpp文件

#include<iostream>#include"supermarket.h"#include"administrator.h"#include"user.h"usingnamespace std;intmain(){//test01();
    administrator adm;//管理员
    supermarket market;//超市系统
    user us;//用户int input =0;do{
        market.supermarketMenu();
        cout <<"请输入对应的序号:";
        cin >> input;switch(input){case1:
            us.operate_user(market);break;case2://adm.login_administrator()if(adm.login_administrator()){system("cls");
                adm.operate_administrator(market);}else{
                input =0;}break;case0:
            cout <<"退出超市系统,欢迎下次光临"<< endl;break;default:
            cout <<"输入序号不存在,请重新输入"<< endl;break;}}while(input);//按任意键后,退出程序
    cout << endl;system("pause");return0;}

2、supermarket.h文件

#pragmaonce//防止头文件重复包含#include<iostream>usingnamespace std;#include<string>#include<fstream>#defineFILENAME"Goods.txt"#defineARRSIZE10//商品的抽象基类classgoods{public://显示商品信息virtualvoidshowGoodsInfo()=0;//获取商品类型virtual string goodsType()=0;int goodsClass;//记录商品类
    string name;//商品名称int price;//商品价格int inventory;//商品库存量
    string manufacturer;//商品生产厂家};//食物类classfood:publicgoods{public://构造函数food(string n,int p,int i, string m);//显示商品信息virtualvoidshowGoodsInfo();//获取商品类型virtual string goodsType();};//化妆品classcosmetics:publicgoods{public://构造函数cosmetics(string n,int p,int i, string m);//显示商品信息virtualvoidshowGoodsInfo();//获取商品类型virtual string goodsType();};//日用品classnecessities:publicgoods{public://构造函数necessities(string n,int p,int i, string m);//显示商品信息virtualvoidshowGoodsInfo();//获取商品类型virtual string goodsType();};//饮料classdrink:publicgoods{public://构造函数drink(string n,int p,int i, string m);//显示商品信息virtualvoidshowGoodsInfo();//获取商品类型virtual string goodsType();};//超市管理系统classsupermarket{public:supermarket();//构造函数voidsupermarketMenu();//超市管理系统菜单~supermarket();//析构函数//商品类型的数量int goodsTypeNum;//商品数组指针
    goods** goodsArray;//商品类的菜单voidgoodsClassMenu();//标志判断文件是否为空bool fileEmpty;//统计文件中的商品类型的数量intgetFile_goodsTypeNum();//用文件初始化商品voidinitGoods();//将商品保存到文件voidsave();//添加商品voidaddGoods();//展示商品voidshowGoods();//查询商品——按商品类别、名称、生产厂家查询intinquireGoods_1();//打印查询1的商品信息voidprintInquireGoods_1(int index);//查询商品——按商品类别、名称查询int*inquireGoods_2();//打印查询2的商品信息voidprintInquireGoods_2(int* p);//修改商品voidreviseGoods();//下架商品voiddelGoods();//排序1--按价格排序voidsortGoods_1();//排序2--按库存量排序voidsortGoods_2();//清空商品voidclearGoods();};

3、supermarket.cpp文件

#include"supermarket.h"//食物类构造函数
food::food(string n,int p,int i, string m){this->goodsClass =1;this->name = n;this->price = p;this->inventory = i;this->manufacturer = m;}//显示食物类商品信息void food::showGoodsInfo(){
    cout <<this->goodsType()<<"\t|";
    cout <<this->name <<"\t|";
    cout <<this->price <<"\t|";
    cout <<this->inventory <<"\t|";
    cout <<this->manufacturer << endl;}//获取商品类型
string food::goodsType(){returnstring("食物");}//化妆品类构造函数
cosmetics::cosmetics(string n,int p,int i, string m){this->goodsClass =2;this->name = n;this->price = p;this->inventory = i;this->manufacturer = m;}//显示化妆品类商品信息void cosmetics::showGoodsInfo(){
    cout <<this->goodsType()<<"\t|";
    cout <<this->name <<"\t|";
    cout <<this->price <<"\t|";
    cout <<this->inventory <<"\t|";
    cout <<this->manufacturer << endl;}//获取商品类型
string cosmetics::goodsType(){returnstring("化妆品");}//日用品类构造函数
necessities::necessities(string n,int p,int i, string m){this->goodsClass =3;this->name = n;this->price = p;this->inventory = i;this->manufacturer = m;}//显示日用品类商品信息void necessities::showGoodsInfo(){
    cout <<this->goodsType()<<"\t|";
    cout <<this->name <<"\t|";
    cout <<this->price <<"\t|";
    cout <<this->inventory <<"\t|";
    cout <<this->manufacturer << endl;}//获取商品类型
string necessities::goodsType(){returnstring("日用品");}//饮料类构造函数
drink::drink(string n,int p,int i, string m){this->goodsClass =4;this->name = n;this->price = p;this->inventory = i;this->manufacturer = m;}//显示饮料类商品信息void drink::showGoodsInfo(){
    cout <<this->goodsType()<<"\t|";
    cout <<this->name <<"\t|";
    cout <<this->price <<"\t|";
    cout <<this->inventory <<"\t|";
    cout <<this->manufacturer << endl;}//获取商品类型
string drink::goodsType(){returnstring("饮料");}//超市管理构造函数
supermarket::supermarket(){//读文件方式打开文件
    ifstream ifs;
    ifs.open(FILENAME, ios::in);//1、文件不存在if(!ifs.is_open()){
        cout <<"------------------------"<< endl;
        cout <<"-----  文件不存在!-----"<< endl;
        cout <<"------------------------"<< endl;
        cout << endl;//初始化商品类型的数量this->goodsTypeNum =0;//初始化商品数组指针this->goodsArray =NULL;//初始化文件是否为空this->fileEmpty =true;

        ifs.close();//关闭文件return;}//2、文件存在,数据为空char ch;
    ifs >> ch;//读取一个字符if(ifs.eof())//文件结尾EOF{//文件为空
        cout <<"------------------------"<< endl;
        cout <<"----  文件为空文件!----"<< endl;
        cout <<"------------------------"<< endl;
        cout << endl;//初始化商品类型的数量this->goodsTypeNum =0;//初始化商品数组指针this->goodsArray =NULL;//初始化文件是否为空this->fileEmpty =true;

        ifs.close();//关闭文件return;}//3、文件存在,并且有数据
    cout <<"------------------------"<< endl;
    cout <<"--  从文件中导入数据  --"<< endl;
    cout <<"------------------------"<< endl;
    cout << endl;int num =this->getFile_goodsTypeNum();
    cout <<"商品类型的数量为:"<< num << endl;//商品类型的数量this->goodsTypeNum = num;//初始化文件不为空this->fileEmpty =false;//开辟空间this->goodsArray =new goods *[this->goodsTypeNum];//将文件商品存放数组中this->initGoods();

    ifs.close();//关闭文件}//超市管理析造函数supermarket::~supermarket(){//释放空间if(NULL!=this->goodsArray){//清空堆区数据int i =0;//遍历删除每个数据for(i =0; i <this->goodsTypeNum; i++){deletethis->goodsArray[i];this->goodsArray[i]=NULL;}//删除指针delete[]this->goodsArray;this->goodsArray =NULL;}}//超市管理系统菜单void supermarket::supermarketMenu(){
    cout << endl;
    cout <<"***********************************"<< endl;
    cout <<"*****    1、用户购买商品      *****"<< endl;
    cout <<"*****    2、管理员管理超市    *****"<< endl;
    cout <<"*****    0、退出超市系统      *****"<< endl;
    cout <<"***********************************"<< endl;
    cout << endl;}//商品类的菜单void supermarket::goodsClassMenu(){
    cout <<"***********************"<< endl;
    cout <<"***  1、 食物类     ***"<< endl;
    cout <<"***  2、 化妆品类   ***"<< endl;
    cout <<"***  3、 日用品类   ***"<< endl;
    cout <<"***  4、 饮料类     ***"<< endl;
    cout <<"***********************"<< endl;}//统计文件中的商品类型的数量int supermarket::getFile_goodsTypeNum(){//读文件方式打开文件
    ifstream ifs;
    ifs.open(FILENAME, ios::in);int count =0;//统计商品数量int Class;//记录商品类
    string Name;//商品名称int Price;//商品价格int Inven;//商品库存量
    string Manu;//商品生产厂家while(ifs >> Class && ifs >> Name && ifs >> Price && ifs >> Inven && ifs >> Manu){
        count++;}

    ifs.close();//关闭文件return count;}//用文件初始化商品void supermarket::initGoods(){//读文件方式打开文件
    ifstream ifs;
    ifs.open(FILENAME, ios::in);int Class;//记录商品类
    string Name;//商品名称int Price;//商品价格int Inven;//商品库存量
    string Manu;//商品生产厂家

    goods* Goods =NULL;int index =0;while(ifs >> Class && ifs >> Name && ifs >> Price && ifs >> Inven && ifs >> Manu){if(1== Class)//食物类{
            Goods =newfood(Name, Price, Inven, Manu);}elseif(2== Class)//化妆品类{
            Goods =newcosmetics(Name, Price, Inven, Manu);}elseif(3== Class)//日用品类{
            Goods =newnecessities(Name, Price, Inven, Manu);}elseif(4== Class)//饮料类{
            Goods =newdrink(Name, Price, Inven, Manu);}//将文件数据存放在数组中this->goodsArray[index]= Goods;
        index++;}
    
    ifs.close();//关闭文件}//将商品保存到文件void supermarket::save(){//判断商品数据否是为空if(!this->goodsTypeNum){
        cout <<"无商品数据"<< endl;this->fileEmpty =true;return;}

    ofstream ofs;//用写文件打开文件
    ofs.open(FILENAME, ios::out);int i =0;for(i =0; i <this->goodsTypeNum; i++){
        ofs <<this->goodsArray[i]->goodsClass <<" ";
        ofs <<this->goodsArray[i]->name <<" ";
        ofs <<this->goodsArray[i]->price <<" ";
        ofs <<this->goodsArray[i]->inventory <<" ";
        ofs <<this->goodsArray[i]->manufacturer << endl;}//关闭文件
    ofs.close();}//添加商品void supermarket::addGoods(){
    cout <<"添加新商品开始"<< endl;int addNum;int i =0;
    cout <<"请输入要添加的商品的类型数量:";
    cin >> addNum;if(addNum >0){//计算添加后的总空间大小int newSize =this->goodsTypeNum + addNum;//开辟新空间
        goods** newSpace =new goods *[newSize];//将原来的空间数据,拷贝到新空间if(NULL!=this->goodsArray){for(i =0; i <this->goodsTypeNum; i++){
                newSpace[i]=this->goodsArray[i];}}//添加新商品int input;int Class;//记录商品类
        string Name;//商品名称int Price;//商品价格int Inven;//商品库存量
        string Manu;//商品生产厂家
        goods* newGoods =NULL;//商品的父类指针for(i =0; i < addNum; i++){
            cout << endl;
            cout <<"第"<< i +1<<"个新增商品样式"<< endl;
            cout <<"新商品的名称:";
            cin >> Name;
            cout <<"新商品的价格:";
            cin >> Price;
            cout <<"新商品的库存量:";
            cin >> Inven;
            cout <<"新商品的生产厂家:";
            cin >> Manu;//商品类的菜单this->goodsClassMenu();
            cout <<"请选择商品的类型:";
            cin >> input;switch(input){case1://开辟食物类的空间
                newGoods =newfood(Name, Price, Inven, Manu);break;case2://开辟化妆品类的空间
                newGoods =newcosmetics(Name, Price, Inven, Manu);break;case3://开辟日用品类的空间
                newGoods =newnecessities(Name, Price, Inven, Manu);break;case4://开辟饮料类的空间
                newGoods =newdrink(Name, Price, Inven, Manu);break;default:break;}//将创建好的新商品的地址,存放在数组中
            newSpace[this->goodsTypeNum + i]= newGoods;}//释放原有的空间delete[]this->goodsArray;//更新新的空间指向this->goodsArray = newSpace;//更新新的商品类型数量this->goodsTypeNum = newSize;//更新文件不为空this->fileEmpty =false;

        cout <<"----------添加新商品成功----------"<< endl;this->save();//将商品保存到文件}else{
        cout <<"输入数据有误"<< endl;}}//展示商品void supermarket::showGoods(){//判断商品数据否是为空if(!this->goodsTypeNum){
        cout <<"无商品,展示商品失败"<< endl;return;}

    cout <<"展示商品开始"<< endl << endl;int i =0;int count =0;
    cout <<"---------------------商品库---------------------"<< endl;
    cout <<"类型\t|名称\t|价格\t|库存量\t|生产厂家"<< endl;
    cout <<"--------|-------|-------|-------|---------------"<< endl;for(i =0; i <this->goodsTypeNum; i++){
        count +=this->goodsArray[i]->inventory;this->goodsArray[i]->showGoodsInfo();
        cout <<"--------|-------|-------|-------|---------------"<< endl;}
    cout << endl;
    cout <<"商品类型的数量:"<<this->goodsTypeNum << endl;
    cout <<"商品的总数:"<< count << endl;
    cout <<"----------展示商品完成----------"<< endl;}//查询商品——按商品类别、名称、生产厂家查询int supermarket::inquireGoods_1(){//判断商品数据否是为空if(!this->goodsTypeNum){
        cout <<"无商品,查询失败"<< endl;return-1;}int i =0;int Class;//记录商品类
    string Name;//商品名称
    string Manu;//商品生产厂家this->goodsClassMenu();//商品类的菜单
    cout <<"请输入要查询商品的类型序号:";
    cin >> Class;

    cout <<"请输入要查询商品的名称:";
    cin >> Name;

    cout <<"请输入要查询商品的生产厂家:";
    cin >> Manu;for(i =0; i <this->goodsTypeNum; i++){//先判断商品类型是否相同if(this->goodsArray[i]->goodsClass != Class){continue;}//在进行商品名称比较if(!this->goodsArray[i]->name.compare(Name)&&!this->goodsArray[i]->manufacturer.compare(Manu)){
            cout <<"----------查询成功----------"<< endl;return i;}}
    cout <<"查询失败,该商品不存在"<< endl;return-1;}//打印查询1的商品信息void supermarket::printInquireGoods_1(int index){//查询失败的情况if(-1== index){return;}
    cout <<"查询结果打印"<< endl << endl;
    cout <<"类型\t|名称\t|价格\t|库存量\t|生产厂家"<< endl;
    cout <<"--------|-------|-------|-------|---------------"<< endl;this->goodsArray[index]->showGoodsInfo();
    cout <<"--------|-------|-------|-------|---------------"<< endl;}//查询商品——按商品类别、名称查询int* supermarket::inquireGoods_2(){//判断商品数据否是为空if(!this->goodsTypeNum){
        cout <<"无商品,查询失败"<< endl;returnNULL;}int i =0;int arr[ARRSIZE]={0};//存放查询到商品的位置int count =0;//记录查询的个数int Class;//记录商品类
    string Name;//商品名称
    string Manu;//商品生产厂家this->goodsClassMenu();//商品类的菜单
    cout <<"请输入要查询商品的类型序号:";
    cin >> Class;

    cout <<"请输入要查询商品的名称:";
    cin >> Name;for(i =0; i <this->goodsTypeNum; i++){//先判断商品类型是否相同if(this->goodsArray[i]->goodsClass != Class){continue;}//在进行商品名称比较if(!this->goodsArray[i]->name.compare(Name)){
            arr[count]= i +1;
            count++;}}if(0== count){
        cout <<"查询失败,该商品不存在"<< endl;returnNULL;}else{
        cout <<"----------查询成功----------"<< endl;return arr;}}//打印查询2的商品信息void supermarket::printInquireGoods_2(int* p){//查询失败的情况if(NULL== p){return;}int count =0;int i =0;//记录总数int arr[ARRSIZE]={0};for(i =0; i < ARRSIZE; i++){//第一次是不需要判断的if(p[i]!=0){
            arr[i]= p[i];
            count++;}else{break;}}

    cout <<"查询结果打印"<< endl << endl;
    cout <<"序号\t|类型\t|名称\t|价格\t|库存量\t|生产厂家"<< endl;
    cout <<"--------|-------|-------|-------|-------|---------------"<< endl;for(i =0; i < count; i++){int j = arr[i]-1;//记录下标
        cout << i +1<<"\t|";this->goodsArray[j]->showGoodsInfo();
        cout <<"--------|-------|-------|-------|-------|---------------"<< endl;}}//修改商品void supermarket::reviseGoods(){//判断商品数据否是为空if(!this->goodsTypeNum){
        cout <<"无商品,修改商品失败"<< endl;return;}//查询功能1int index =this->inquireGoods_1();if(-1== index)//是否查找失败{
        cout <<"修改失败"<< endl;return;}//打印查询到的结果this->printInquireGoods_1(index);int input =0;
    goods* Goods =NULL;//记录原来商品类int Class =this->goodsArray[index]->goodsClass;//记录原来商品名称
    string Name =this->goodsArray[index]->name;//记录原来商品价格int Price =this->goodsArray[index]->price;//记录原来商品库存量int Inven =this->goodsArray[index]->inventory;//记录原来商品生产厂家
    string Manu =this->goodsArray[index]->manufacturer;do{
        cout << endl;
        cout <<"----------修改类型----------"<< endl;
        cout <<"--   1、修改商品类        --"<< endl;
        cout <<"--   2、修改商品名称      --"<< endl;
        cout <<"--   3、修改商品价格      --"<< endl;
        cout <<"--   4、修改商品库存量    --"<< endl;
        cout <<"--   5、修改商品生产厂家  --"<< endl;
        cout <<"--   0、退出修改          --"<< endl;
        cout <<"----------------------------"<< endl;
        cout <<"请输入要修改的类型:";
        cin >> input;switch(input){case1:this->goodsClassMenu();//商品类的菜单
            cout <<"请输入要修改商品类 :";
            cin >> Class;deletethis->goodsArray[index];if(1== Class)//开辟食物类的空间{
                Goods =newfood(Name, Price, Inven, Manu);}elseif(2== Class)//开辟化妆品类的空间{
                Goods =newcosmetics(Name, Price, Inven, Manu);}elseif(3== Class)//开辟日用品类的空间{
                Goods =newnecessities(Name, Price, Inven, Manu);}elseif(4== Class)//开辟饮料类的空间{
                Goods =newdrink(Name, Price, Inven, Manu);}//将数据重新放到类中this->goodsArray[index]= Goods;break;case2:
            cout <<"请输入要修改商品名称 :";
            cin >> Name;this->goodsArray[index]->name = Name;break;case3:
            cout <<"请输入要修改商品价格 :";
            cin >> Price;this->goodsArray[index]->price = Price;break;case4:
            cout <<"请输入要修改商品库存量 :";
            cin >> Inven;this->goodsArray[index]->inventory = Inven;break;case5:
            cout <<"请输入要修改商品生产厂家 :";
            cin >> Manu;this->goodsArray[index]->manufacturer = Manu;break;case0:
            cout <<"----------修改成功----------"<< endl;this->save();//更新文件数据break;default:
            cout <<"输入序号不存在,请重新输入"<< endl;break;}}while(input);}//下架商品void supermarket::delGoods(){//判断商品数据否是为空if(!this->goodsTypeNum){
        cout <<"无商品,下架商品失败"<< endl;return;}//查找要删除的数据int index =this->inquireGoods_1();if(-1== index)//是否查找失败{
        cout <<"删除失败"<< endl;return;}//打印查询的数据this->printInquireGoods_1(index);int i =0;//释放空间deletethis->goodsArray[index];//将商品数据前移for(i = index; i <this->goodsTypeNum -1; i++){this->goodsArray[i]=this->goodsArray[i +1];}//商品类型的数量更新this->goodsTypeNum--;//更新文件的数据this->save();

    cout <<"----------删除成功----------"<< endl;}//排序1--按价格排序void supermarket::sortGoods_1(){//判断商品数据否是为空if(!this->goodsTypeNum){
        cout <<"无商品,排序商品失败"<< endl;return;}

    cout <<"*****************************"<< endl;
    cout <<"***   1、按价格----升序   ***"<< endl;
    cout <<"***   2、按价格----降序   ***"<< endl;
    cout <<"*****************************"<< endl;
    cout <<"请输入要排序的方式对应的序号:";int input =0;
    cin >> input;int i =0;int j =0;
    goods* temp =NULL;bool flag =false;//每趟是否有交换的标志for(i =0; i <this->goodsTypeNum -1; i++){
        flag =false;//为交换时是falsefor(j =this->goodsTypeNum -1; j > i; j--){if(input ==1)//升序{if(this->goodsArray[j -1]->price >this->goodsArray[j]->price){
                    temp =this->goodsArray[j];this->goodsArray[j]=this->goodsArray[j -1];this->goodsArray[j -1]= temp;
                    flag =true;//交换}}else//降序{if(this->goodsArray[j -1]->price <this->goodsArray[j]->price){
                    temp =this->goodsArray[j];this->goodsArray[j]=this->goodsArray[j -1];this->goodsArray[j -1]= temp;
                    flag =true;//交换}}}if(false== flag)//判断是否有序{this->save();//更新文件数据return;}}this->save();//更新文件数据}//排序2--按库存量排序void supermarket::sortGoods_2(){//判断商品数据否是为空if(!this->goodsTypeNum){
        cout <<"无商品,排序失败"<< endl;return;}

    cout <<"*****************************"<< endl;
    cout <<"***   1、按价格----升序   ***"<< endl;
    cout <<"***   2、按价格----降序   ***"<< endl;
    cout <<"*****************************"<< endl;
    cout <<"请输入要排序的方式对应的序号:";int input =0;
    cin >> input;int i =0;int j =0;
    goods* temp =NULL;bool flag =false;//每趟是否有交换的标志for(i =0; i <this->goodsTypeNum -1; i++){
        flag =false;//为交换时是falsefor(j =this->goodsTypeNum -1; j > i; j--){if(1== input)//升序{if(this->goodsArray[j -1]->inventory >this->goodsArray[j]->inventory){
                    temp =this->goodsArray[j];this->goodsArray[j]=this->goodsArray[j -1];this->goodsArray[j -1]= temp;
                    flag =true;//交换}}else//降序{if(this->goodsArray[j -1]->inventory <this->goodsArray[j]->inventory){
                    temp =this->goodsArray[j];this->goodsArray[j]=this->goodsArray[j -1];this->goodsArray[j -1]= temp;
                    flag =true;//交换}}}if(false== flag)//判断是否有序{this->save();//更新文件数据return;}}this->save();//更新文件数据}//清空商品void  supermarket::clearGoods(){//判断商品数据否是为空if(!this->goodsTypeNum){
        cout <<"无商品,不需要清空"<< endl;return;}int input =0;
    cout << endl;
    cout <<"-----  确定要清空吗  -----"<< endl;
    cout <<"-----  1、确定       -----"<< endl;
    cout <<"-----  0、不要       -----"<< endl;
    cout <<"--------------------------"<< endl;
    cout <<"请输入序号:";
    cin >> input;
    cout << endl;if(0== input){
        cout <<"清空操作取消"<< endl;return;}//清空//trunc 如文件存在,将其长度截断为零并清除原有内容//      如果文件存在先删除,再创建
    ofstream ofs(FILENAME, ios::trunc);//清除文件数据
    ofs.close();//清空堆区数据int i =0;//遍历删除每个数据for(i =0; i <this->goodsTypeNum; i++){deletethis->goodsArray[i];this->goodsArray[i]=NULL;}//删除指针delete[]this->goodsArray;this->goodsArray =NULL;this->goodsTypeNum =0;this->fileEmpty =true;

    cout <<"----------清空成功----------"<< endl;}

4、administrator.h文件

#pragmaonce#include<iostream>#include<string>#include"supermarket.h"usingnamespace std;//管理员classadministrator{public://管理员操作菜单voidmenu_administrator();//管理员登录界面boollogin_administrator();//管理员操作超市系统voidoperate_administrator(supermarket& sup);//管理员添加商品voidaddGoods_administrator(supermarket& sup);//管理员展示商品voidshowGoods_administrator(supermarket& sup);//管理员查找商品voidinquireGoods_administrator(supermarket& sup);//管理员修改商品voidreviseGoods_administrator(supermarket& sup);//管理员删除商品voiddelGoods_administrator(supermarket& sup);//管理员排序商品voidsortGoods_administrator(supermarket& sup);//管理员清空商品voidclearGoods_administrator(supermarket& sup);};

5、administrator.cpp文件

#include"administrator.h"//管理员操作菜单void administrator::menu_administrator(){
    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;}//管理员登陆界面bool administrator::login_administrator(){
    string str;//密码为:helloworld
    string password ="helloworld";int i =0;//3次输入密码机会for(i =0; i <3; i++){
        cout <<"请输入登入密码:";
        cin >> str;if(!password.compare(str)){
            cout <<"密码正确,欢迎进入系统"<< endl;returntrue;}else{
            cout <<"密码错误"<< endl;}}
    cout <<"三次都输入错误,强制退出系统"<< endl;returnfalse;}//管理员操作超市系统void administrator::operate_administrator(supermarket& sup){system("cls");//清屏

    cout <<"欢迎管理员进入超市后台"<< endl;int input =0;do{this->menu_administrator();
        cout <<"请输入对应的序号:";
        cin >> input;switch(input){case1:this->addGoods_administrator(sup);break;case2:this->showGoods_administrator(sup);break;case3:this->inquireGoods_administrator(sup);break;case4:this->reviseGoods_administrator(sup);break;case5:this->delGoods_administrator(sup);break;case6:this->sortGoods_administrator(sup);break;case7:this->clearGoods_administrator(sup);break;case0:
            cout <<"退出超市系统后台"<< endl;break;default:
            cout <<"输入序号不存在,请重新输入"<< endl;break;}}while(input);//按任意键后,清屏回到上级目录
    cout << endl;system("pause");system("cls");}//添加商品void administrator::addGoods_administrator(supermarket& sup){
    sup.addGoods();//按任意键后,清屏回到上级目录
    cout << endl;system("pause");system("cls");}//管理员展示商品void administrator::showGoods_administrator(supermarket& sup){
    sup.showGoods();//按任意键后,清屏回到上级目录
    cout << endl;system("pause");system("cls");}//管理员查找商品void administrator::inquireGoods_administrator(supermarket& sup){
    cout <<"-----------------------------------------"<< endl;
    cout <<"--  1、按商品类别、名称、生产厂家查询  --"<< endl;
    cout <<"--  2、按商品类别、名称查询            --"<< endl;
    cout <<"-----------------------------------------"<< endl;
    cout <<"请输入要查询的方法序号:";int input;
    cin >> input;if(1== input){int i = sup.inquireGoods_1();
        sup.printInquireGoods_1(i);}elseif(2== input){int* p = sup.inquireGoods_2();
        sup.printInquireGoods_2(p);}//按任意键后,清屏回到上级目录
    cout << endl;system("pause");system("cls");}//管理员修改商品void administrator::reviseGoods_administrator(supermarket& sup){
    sup.reviseGoods();//按任意键后,清屏回到上级目录
    cout << endl;system("pause");system("cls");}//管理员删除商品void administrator::delGoods_administrator(supermarket& sup){
    sup.delGoods();//按任意键后,清屏回到上级目录
    cout << endl;system("pause");system("cls");}//管理员排序商品void administrator::sortGoods_administrator(supermarket& sup){
    cout <<"------------------------"<< endl;
    cout <<"--  1、按价格排序     --"<< endl;
    cout <<"--  2、按库存量排序   --"<< endl;
    cout <<"------------------------"<< endl;
    cout <<"请输入要排序方法序号:";int input;
    cin >> input;if(1== input){
        sup.sortGoods_1();
        sup.showGoods();}elseif(2== input){
        sup.sortGoods_2();
        sup.showGoods();}//按任意键后,清屏回到上级目录
    cout << endl;system("pause");system("cls");}//管理员清空商品void administrator::clearGoods_administrator(supermarket& sup){
    sup.clearGoods();//按任意键后,清屏回到上级目录
    cout << endl;system("pause");system("cls");}

6、user.h文件

#pragmaonce#include"supermarket.h"#include<iostream>usingnamespace std;//用户classuser{public://用户菜单voidmenu_user();//用户使用超市系统voidoperate_user(supermarket& sup);//用户销售功能voidsalesFeatures_user(supermarket& sup);//用户展示商品voidshowGoods_user(supermarket& sup);//用户查找商品voidinquireGoods_user(supermarket& sup);//用户排序商品voidsortGoods_user(supermarket& sup);};

7、user.cpp文件

#include"user.h"//用户菜单void user::menu_user(){
    cout <<"**************************"<< endl;
    cout <<"***----用户操作菜单----***"<< endl;
    cout <<"***    1、购买商品     ***"<< endl;
    cout <<"***    2、展示商品     ***"<< endl;
    cout <<"***    3、查找商品     ***"<< endl;
    cout <<"***    4、排序商品     ***"<< endl;
    cout <<"***    0、退出购买     ***"<< endl;
    cout <<"**************************"<< endl;
    cout << endl;}//用户使用超市系统void user::operate_user(supermarket& sup){system("cls");//清屏

    cout <<"欢迎光临本超市商城"<< endl;int input =0;do{this->menu_user();//用户菜单
        cout <<"请输入对应的序号:";
        cin >> input;switch(input){case1:this->salesFeatures_user(sup);break;case2:this->showGoods_user(sup);break;case3:this->inquireGoods_user(sup);break;case4:this->sortGoods_user(sup);break;case0:
            cout <<"退出超市,欢饮下次光临"<< endl;break;default:
            cout <<"输入序号不存在,请重新输入"<< endl;break;}}while(input);//按任意键后,清屏回到上级目录
    cout << endl;system("pause");system("cls");}//用户销售功能void user::salesFeatures_user(supermarket& sup){
    cout <<"欢迎您购买商品"<< endl;//用户查找商品的方式int* p = sup.inquireGoods_2();if(p ==NULL)//查找是否成功{
        cout <<"商品不存在,购买失败"<< endl;return;}//将商品数据位置,放到arr中int count =0;int i =0;//记录总数int arr[ARRSIZE]={0};for(i =0; i < ARRSIZE; i++){//第一次是不需要判断的if(p[i]!=0){
            arr[i]= p[i];
            count++;}else{break;}}//打印查询结果
    sup.printInquireGoods_2(p);
    cout << endl;//判断输入是否合法int input =0;while(true){
        cout <<"请输入要买商品的序号:";
        cin >> input;if(input > count || input <=0){
            cout <<"输入序号无效,请重新输入"<< endl;continue;}else{break;//输入合法退出死循环}}

    cout << endl;int temp =0;int number =0;//记录用户购买商品数//记录商品的库存量int inven = sup.goodsArray[arr[input -1]-1]->inventory;//输入的购买的商品数,是否合法,库存量while(true){
        cout <<"请输入要购买的商品数:";
        cin >> number;if(number <0)//输入buhef{
            cout <<"输入购买的商品数无效,请重新输入"<< endl;}elseif(number > inven)//输入大于库存量{
            cout <<"抱歉,您购买的商品数超出了本店的库存量"<< endl;
            cout <<"--------------------------------"<< endl;
            cout <<"-- 1、继续购买 -- 0、结束购买 --"<< endl;
            cout <<"--------------------------------"<< endl;
            cout <<"请输入您的选择:";
            cin >> temp;if(0== temp){
                cout <<"购买结束"<< endl;return;//退出购买}else{
                cout <<"购买继续"<< endl;continue;}}else{break;//输入合法退出死循环}}int money =0;//金钱
    money = sup.goodsArray[arr[input -1]-1]->price * number;

    cout << endl;
    cout <<"----------------------------------------"<< endl;
    cout <<"--------------- 电子发票 ---------------"<< endl;
    cout <<"---  购买的商品名称:"<< sup.goodsArray[arr[input -1]-1]->name << endl;
    cout <<"---  购买的商品数量:"<< number <<"  个"<< endl;
    cout <<"---  购买的商品单价:"<< sup.goodsArray[arr[input -1]-1]->price <<"  元"<< endl;
    cout <<"---  总价:"<< money <<"  元"<< endl;
    cout <<"----------------------------------------"<< endl;
    cout << endl;

    cout <<"................请支付.................."<< endl;
    cout << endl;//更新库存量
    sup.goodsArray[arr[input -1]-1]->inventory = inven - number;//更新文件的数据
    sup.save();
    cout <<"购买成功,欢迎您下次购买"<< endl;//按任意键后,清屏回到上级目录
    cout << endl;system("pause");system("cls");}//用户展示商品void user::showGoods_user(supermarket& sup){
    sup.showGoods();//按任意键后,清屏回到上级目录
    cout << endl;system("pause");system("cls");}//用户查找商品void user::inquireGoods_user(supermarket& sup){
    cout <<"-----------------------------------------"<< endl;
    cout <<"--  1、按商品类别、名称、生产厂家查询  --"<< endl;
    cout <<"--  2、按商品类别、名称查询            --"<< endl;
    cout <<"-----------------------------------------"<< endl;
    cout <<"请输入要查询的方法序号:";int input;
    cin >> input;if(1== input){int i = sup.inquireGoods_1();
        sup.printInquireGoods_1(i);}elseif(2== input){int* p = sup.inquireGoods_2();
        sup.printInquireGoods_2(p);}//按任意键后,清屏回到上级目录
    cout << endl;system("pause");system("cls");}//用户排序商品void user::sortGoods_user(supermarket& sup){
    cout <<"------------------------"<< endl;
    cout <<"--  1、按价格排序     --"<< endl;
    cout <<"--  2、按库存量排序   --"<< endl;
    cout <<"------------------------"<< endl;
    cout <<"请输入要排序方法序号:";int input;
    cin >> input;if(1== input){
        sup.sortGoods_1();
        sup.showGoods();}elseif(2== input){
        sup.sortGoods_2();
        sup.showGoods();}//按任意键后,清屏回到上级目录
    cout << endl;system("pause");system("cls");}

8、管理员密码:helloworld


总结(运行截图)

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

在这里插入图片描述
在这里插入图片描述
其他的远行截图省略,自行运行

标签: c++ 数据库

本文转载自: https://blog.csdn.net/weixin_74814064/article/details/135476191
版权归原作者 甘- 所有, 如有侵权,请联系我们删除。

“超市商品管理系统设计 C++实现”的评论:

还没有评论