一个简单的购物&管理系统

大一课设

大一做了个课程设计,没用到什么高级算法或者比较难的语法,只是单纯的想发一发。(勿喷)
整个课设我分成了三个代码:一个是主程序,另外两个是生成原始数据(随机)
关于代码原创问题:

1、其中随机数生成我参考这篇文章

https://blog.csdn.net/Appppiiiiggg/article/details/134877444

2、原始数据也是找的百度百科和网上搜的网站生成,代码中这些仓库中的原始数据(即字符串数组)由我的同学整理,其余皆是我一人独立完成

// product_sport_data.txt运动仓库----2
// product_cloth_data.txt衣服仓库----3
// product_pens_data.txt文具仓库----4
// product_machine_data.txt家电仓库----5



此外,本人学艺不精,在文件生成和使用这部分有大量重复(勿喷)

第一段:主程序

#include<bits/stdc++.h>
using namespace std;

//   product_food_data.txt食品仓库----1
//   product_sport_data.txt运动仓库----2
//   product_cloth_data.txt衣服仓库----3
//   product_pens_data.txt文具仓库----4
//   product_machine_data.txt家电仓库----5


const int N=999;
// ifstream infile("custom_data.txt", ios::in);//读取文件   infile先赋值给元素再输出元素
// infile >> productname[j];
// ofstream outfile("custom_data.txt", ios::app);//追加写入文件          存入记得加入分隔" "
//outfile << productname[s] << "  ";
// ofstream back_outfile("custom_data.txt", ios::out);//清空后写入          只要加入这一行就会清空所有custom_data文件

int product_size[6]={0,114,53,51,50,50};//便于后续添加商品(更改代码)

struct product_infor
{
    int num;//编号
    string name;
    int stock;//库存
    int price;//单价
};

struct habit//方便用户和商品之间建立联系
{
    int elemt;//1-食品
    int num;//商品编号
    int times;//购买次数
};

struct custom_infor
{
    string name;
    string password;
    int shop_sum_x;//控制i的变化
    int shop_sum_elem[N];//在第[i]次买了对应elem 
    int shop_sum_num[N];//在第[i]次买了对应num
    int shop_sum_sum[N];//在第[i]次买了对应elem
    int times;//购买商品的数量或次数:便于后续循环
    habit product[999];//999指的是times,这边取一个比较大的数字
};

struct custom_infor custom[N];//用于存入整个用户文件信息,排序后在重新写入文件
struct product_infor product[N][N];
struct custom_infor all_custom;//全局变量,一次登录为一位消费者服务

//---------------------------------------------------------------

// int rand_int(int minn,int maxn)//网上查找https://blog.csdn.net/Appppiiiiggg/article/details/134877444
// {
// 	srand(time(NULL));
// 	int b = minn+rand()%(maxn-minn+1);
// 	return b;
// }

//------------------------------------------------------------

int string_to_int(string a)
{
    int num=0;
    int base=1;
    for(int i=a.size()-1;i>=0;i--)
    {
        int aa=int(a[i]-'0');
        num+=(aa*base);
        base*=10;
    }
    return num;
}

void product_find(int pnum)
{
    cout<<"商品编号-----商品名称-----商品单价-----商品库存"<<endl;
    string a[product_size[pnum]],b[product_size[pnum]],c[product_size[pnum]],d[product_size[pnum]];
    if(pnum==1)
    {
        ifstream infile("product_food_data.txt", ios::in);
        for(int i=0;i<product_size[pnum];i++)
        {
            infile>>a[i];
            cout<<a[i]<<"------";
            infile>>b[i];
            cout<<b[i]<<"------";
            infile>>c[i];
            cout<<c[i]<<"------";
            infile>>d[i];
            cout<<d[i]<<endl;
        }
        infile.close();
    }
    if(pnum==2)
    {
        ifstream infile("product_sport_data.txt", ios::in);
        for(int i=0;i<product_size[pnum];i++)
        {
            infile>>a[i];
            cout<<a[i]<<"------";
            infile>>b[i];
            cout<<b[i]<<"------";
            infile>>c[i];
            cout<<c[i]<<"------";
            infile>>d[i];
            cout<<d[i]<<endl;
        }
        infile.close();
    }
    if(pnum==3)
    {
        ifstream infile("product_cloth_data.txt", ios::in);
        for(int i=0;i<product_size[pnum];i++)
        {
            infile>>a[i];
            cout<<a[i]<<"------";
            infile>>b[i];
            cout<<b[i]<<"------";
            infile>>c[i];
            cout<<c[i]<<"------";
            infile>>d[i];
            cout<<d[i]<<endl;
        }
        infile.close();
    }
    if(pnum==4)
    {
        ifstream infile("product_pens_data.txt", ios::in);
        for(int i=0;i<product_size[pnum];i++)
        {
            infile>>a[i];
            cout<<a[i]<<"------";
            infile>>b[i];
            cout<<b[i]<<"------";
            infile>>c[i];
            cout<<c[i]<<"------";
            infile>>d[i];
            cout<<d[i]<<endl;
        }
        infile.close();
    }
    if(pnum==5)
    {
        ifstream infile("product_machine_data.txt", ios::in);
        for(int i=0;i<product_size[pnum];i++)
        {
            infile>>a[i];
            cout<<a[i]<<"------";
            infile>>b[i];
            cout<<b[i]<<"------";
            infile>>c[i];
            cout<<c[i]<<"------";
            infile>>d[i];
            cout<<d[i]<<endl;
        }
        infile.close();
    }
    //$$$$$$$$$$$$$$$$$$$$$$$    感谢阮江宇提醒 :D  
    //不能放在循环内,否则一直读取前四个字符
    // ifstream infile("product_food_data.txt", ios::in);//读取文件
    //$$$$$$$$$$$$$$$$$$$$$$$ 
    return ;
}

string custom_paasword_find(string name)//返回密码
{
    ifstream infile("custom_data.txt", ios::in);//读取文件
    while(1)
    {
        string a;
        infile>>a;
        if(a==name)
        {
            infile>>a;
            return a;
            break;
        }
    }
}

bool custom_name_find(string name)//判断用户名称是否存在
{
    bool flag=0;
    ifstream infile("custom_data.txt", ios::in);//读取文件
    for(int i=0;i<999;i++)//--------------------------------限制了用户最大数量---我不会写一个判空:判断是否读到了最后的用户
    {
        string a;
        infile>>a;
        if(a==name)
        {
            return true;
            flag=1;
            break;
        }
    }
    if(flag==0)
    {
        return false;
    }
}

void sum_up()
{
    long long sum_price=0;
    for(int i=0;i<all_custom.shop_sum_x;i++)
    {
        int sum=0;
        sum=product[all_custom.shop_sum_elem[i]][all_custom.shop_sum_num[i]].price*all_custom.shop_sum_sum[i];
        sum_price+=sum;
        product[all_custom.shop_sum_elem[i]][all_custom.shop_sum_num[i]].stock-=all_custom.shop_sum_sum[i];//在结算程序中改变库存,以减少后续的循环
    }
    cout<<"您在此次购物中共消费"<<sum_price<<"元,请选择支付......";//用户界面至此结束
    return ;
}

void product_up_to_date(int pnum)
{
    if(pnum==1)
    {
        ofstream aaoutfile("product_food_data.txt", ios::out);//清空原来仓库文件
        ofstream outfile("product_food_data.txt", ios::app);//追加写入文件
        for(int i=0;i<product_size[pnum];i++)
        {
            string name;
            int num,stock,price;
            name=product[pnum][i].name;
            num=product[pnum][i].num;
            price=product[pnum][i].price;
            stock=product[pnum][i].stock;
            outfile<<num<<" "<<name<<" "<<price<<" "<<stock<<" ";
        }
    }
    if(pnum==2)
    {
        ofstream aaoutfile("product_sport_data.txt", ios::out);
        ofstream outfile("product_sport_data.txt", ios::app);//追加写入文件
        for(int i=0;i<product_size[pnum];i++)
        {
            string name;
            int num,stock,price;
            name=product[pnum][i].name;
            num=product[pnum][i].num;
            price=product[pnum][i].price;
            stock=product[pnum][i].stock;
            outfile<<num<<" "<<name<<" "<<price<<" "<<stock<<" ";
        }
    }
    if(pnum==3)
    {
        ofstream aaoutfile("product_cloth_data.txt", ios::out);
        ofstream outfile("product_cloth_data.txt", ios::app);//追加写入文件
        for(int i=0;i<product_size[pnum];i++)
        {
            string name;
            int num,stock,price;
            name=product[pnum][i].name;
            num=product[pnum][i].num;
            price=product[pnum][i].price;
            stock=product[pnum][i].stock;
            outfile<<num<<" "<<name<<" "<<price<<" "<<stock<<" ";
        }
    }
    if(pnum==4)
    {
        ofstream aaoutfile("product_pens_data.txt", ios::out);
        ofstream outfile("product_pens_data.txt", ios::app);//追加写入文件
        for(int i=0;i<product_size[pnum];i++)
        {
            string name;
            int num,stock,price;
            name=product[pnum][i].name;
            num=product[pnum][i].num;
            price=product[pnum][i].price;
            stock=product[pnum][i].stock;
            outfile<<num<<" "<<name<<" "<<price<<" "<<stock<<" ";
        }
    }
    if(pnum==5)
    {
        ofstream aaoutfile("product_machine_data.txt", ios::out);
        ofstream outfile("product_machine_data.txt", ios::app);//追加写入文件
        for(int i=0;i<product_size[pnum];i++)
        {
            string name;
            int num,stock,price;
            name=product[pnum][i].name;
            num=product[pnum][i].num;
            price=product[pnum][i].price;
            stock=product[pnum][i].stock;
            outfile<<num<<" "<<name<<" "<<price<<" "<<stock<<" ";
        }
    }
    return ;
}
void process_shop();

void custom_history_up_to_date()
{
    string a="history_data.txt";
    ofstream aaaoutfile(a, ios::out);//清空文件
    ofstream outfile("history_data.txt", ios::app);//写入文件

    //期望存储结构  用户名--购买商品类型总数--商品类型--商品编号--购买次数    history文件
    //-------------------------------------商品类型--商品编号--购买次数    history文件
    for(long long i=0;i<200;i++)//将文件信息存储到代码数组中
    {
        int temp=custom[i].times;//原来的购买次数
        if(custom[i].name==all_custom.name)//更改信息---此次购物者
        {
            custom[i].times+=all_custom.shop_sum_x;
        }
        outfile<<custom[i].name<<" ";
        outfile<<custom[i].times<<" ";
        for(int j=0;j<temp;j++)
        {
            outfile<<custom[i].product[j].elemt<<" "<<custom[i].product[j].num<<" "<<custom[i].product[j].times<<" ";
        }
        //-------------------------------------商品类型--商品编号--购买次数    history文件
        if(custom[i].name==all_custom.name)//添加此次购买的信息
        {
            for(int j=0;j<all_custom.shop_sum_x;j++)
            {
                string name;
                int elem,num,sum;
                name=product[all_custom.shop_sum_elem[j]][all_custom.shop_sum_num[j]].name;
                elem=all_custom.shop_sum_elem[j];
                num=all_custom.shop_sum_num[j];
                sum=all_custom.shop_sum_sum[j];
                outfile<<elem<<" "<<num<<" "<<sum<<" ";
            }
        }
    }
    return ;
}

void process_shop()
{
    sum_up();
    for(int i=1;i<=5;i++)
    {
        product_up_to_date(i);
    }
    custom_history_up_to_date();
    return ;
}

void shop_car()
{
    int choice;
    cout<<endl<<"请选择想浏览的商品类型:"<<endl;
    cout<<endl<<"食品仓库----1"<<endl<<"运动仓库----2"<<endl<<"衣服仓库----3"<<endl<<"文具仓库----4"<<endl<<"家电仓库----5"<<endl;
    cout<<"请输入仓库代号:";
    cin>>choice;
    product_find(choice);
    cout<<endl<<endl<<"请输入需要产品的类型、编号、数量,以@结尾";
    cout<<endl<<"!!!!注意!!!!购买物品数量不得超过库存!";
    cout<<endl<<"如:1 2 3 4 5 6 @  代表1类的2号买3件;和4类的5号买6件"<<endl;
    string aa,bb,cc;
    while(1)
    {
        cin>>aa>>bb>>cc;
        if(aa=="@")
        {
            break;
        }
        all_custom.shop_sum_x++;
        int elem=string_to_int(aa);
        int num=string_to_int(bb);
        int sum=string_to_int(cc);
        all_custom.shop_sum_elem[all_custom.shop_sum_x]=elem;
        all_custom.shop_sum_num[all_custom.shop_sum_x]=num;
        all_custom.shop_sum_sum[all_custom.shop_sum_x]=sum;
    }

    // cin>>all_custom.shopping_car[all_custom.shop_sum];
    // cout<<"test---------------"<<all_custom.shopping_car[all_custom.shop_sum]<<endl;
    cout<<"是否继续购物?"<<endl;
    cout<<"1:继续购物"<<endl<<"2:结束购物"<<endl;
    int b;
    cin>>b;
    if(b==1)
    {
        shop_car();
    }
    else{
        process_shop() ;
    }
    return ;
}

void menu_custom()
{
    all_custom.shop_sum_x=0;
    cout<<"根据历史购物记录向您推荐如下商品:"<<endl;
    cout<<endl<<endl<<"商品类型--------商品编号-------购买次数"<<endl<<endl;
    ifstream infile("history_data.txt", ios::in);//读取文件


    //期望存储结构  用户名--购买商品类型总数--商品类型--商品编号--购买次数    history文件
    //-------------------------------------商品类型--商品编号--购买次数    history文件
    for(long long i=0;i<200;i++)//将文件信息存储到代码数组中
    {
        string a;
        infile>>custom[i].name;
        infile>>a;custom[i].times=string_to_int(a);//购买商品类型总数
        for(int j=0;j<custom[i].times;j++)
        {
            infile>>a;  custom[i].product[j].elemt=string_to_int(a);
            infile>>a;  custom[i].product[j].num=string_to_int(a);
            infile>>a;  custom[i].product[j].times=string_to_int(a);
        }
        if(custom[i].name==all_custom.name)//查找用户所在位置
        {
            all_custom.times=custom[i].times;
            for(int j=0;j<custom[i].times;j++)
            {
                all_custom.product[j].elemt=custom[i].product[j].elemt;
                all_custom.product[j].num=custom[i].product[j].num;
                all_custom.product[j].times=custom[i].product[j].times;
                cout<<all_custom.product[j].elemt<<"-------"<<all_custom.product[j].num<<"-------"<<all_custom.product[j].times<<endl;
            }
        }
    }
    cout<<endl<<endl<<"是否需要将下列物品添加至购物车?"<<endl;
    cout<<"若需要,请输入:“是”(不带引号);否则请输入:“否”(不带引号)"<<endl;
    string bbb;
    cin>>bbb;
    if(bbb=="是")
    {
        cout<<endl<<endl<<"请输入需要产品的类型、编号、数量,以@结尾";
        cout<<endl<<"!!!!注意!!!!购买物品数量不得超过库存!";
        cout<<endl<<"如:1 2 3 4 5 6 @  代表1类的2号买3件;和4类的5号买6件"<<endl;
        all_custom.shop_sum_x=0;
        string aa,bb,cc;
        while(1)
        {
            cin>>aa>>bb>>cc;
            if(aa=="@")
            {
                break;
            }
            int elem=string_to_int(aa);
            int num=string_to_int(bb);
            int sum=string_to_int(cc);
            all_custom.shop_sum_elem[all_custom.shop_sum_x]=elem;
            all_custom.shop_sum_num[all_custom.shop_sum_x]=num;
            all_custom.shop_sum_sum[all_custom.shop_sum_x]=sum;
        }
        // all_custom.shop_sum_x++;
        // cin>>all_custom.shopping_car[all_custom.shop_sum];
        cout<<endl<<"继续购物:"<<endl;
        shop_car();
    }
    else
    {
        cout<<"1:继续购物"<<endl<<"2:退出程序"<<endl;
        int b;
        cin>>b;
        if(b==1)
        {
            shop_car();
            
        }
        else{
            return ;
        }
    }
    return ;
}

void product_add(int pnum)
{
    product_size[pnum]++;
    cout<<"请输入货品名:";
    cin>>product[pnum][product_size[pnum]].name;
    cout<<endl<<"请输入货品单价:";
    cin>>product[pnum][product_size[pnum]].price;
    cout<<endl<<"请输入货品数量:";
    cin>>product[pnum][product_size[pnum]].stock;
    product[pnum][product_size[pnum]].num=product_size[pnum];

    if(pnum==1)
    {
        ofstream outfile("product_food_data.txt", ios::app);//追加写入文件
        outfile<<product[pnum][product_size[pnum]].num<<" "<<product[pnum][product_size[pnum]].name<<" ";
        outfile<<product[pnum][product_size[pnum]].price<<" "<<product[pnum][product_size[pnum]].stock<<" ";
    }
    if(pnum==2)
    {
        ofstream outfile("product_sport_data.txt", ios::app);//追加写入文件
        outfile<<product[pnum][product_size[pnum]].num<<" "<<product[pnum][product_size[pnum]].name<<" ";
        outfile<<product[pnum][product_size[pnum]].price<<" "<<product[pnum][product_size[pnum]].stock<<" ";
    }
    if(pnum==3)
    {
        ofstream outfile("product_cloth_data.txt", ios::app);//追加写入文件
        outfile<<product[pnum][product_size[pnum]].num<<" "<<product[pnum][product_size[pnum]].name<<" ";
        outfile<<product[pnum][product_size[pnum]].price<<" "<<product[pnum][product_size[pnum]].stock<<" ";
    }
    if(pnum==4)
    {
        ofstream outfile("product_pens_data.txt", ios::app);//追加写入文件
        outfile<<product[pnum][product_size[pnum]].num<<" "<<product[pnum][product_size[pnum]].name<<" ";
        outfile<<product[pnum][product_size[pnum]].price<<" "<<product[pnum][product_size[pnum]].stock<<" ";
    }
    if(pnum==5)
    {
        ofstream outfile("product_machine_data.txt", ios::app);//追加写入文件
        outfile<<product[pnum][product_size[pnum]].num<<" "<<product[pnum][product_size[pnum]].name<<" ";
        outfile<<product[pnum][product_size[pnum]].price<<" "<<product[pnum][product_size[pnum]].stock<<" ";
    }
    // admin_space();
    return ;
}

void admin_space()
{
    cout<<endl<<endl;
    cout<<"请输入仓库代码:"<<endl;
    cout<<"食品仓库----1"<<endl;
    cout<<"运动仓库----2"<<endl;
    cout<<"衣服仓库----3"<<endl;
    cout<<"文具仓库----4"<<endl;
    cout<<"家电仓库----5"<<endl;
    int choice;
    cin>>choice;
    cout<<"请选择功能:"<<endl;
    cout<<"1、添加货品信息"<<endl<<"2、查询货品信息"<<endl<<"3、输入任意键退出系统"<<endl<<endl;
    int choice_1;
    cin>>choice_1;
    if(choice_1==1)
    {
        product_add(choice);
    }
    else if(choice_1==2)
    {
        product_find(choice);
    }
    else
    {
        return ;
    }
    admin_space();
}

void login()
{
    string custom_name,custom_password;//文件中查找用户信息临时储存
    string password,name;//用户输入
    cout<<"-------------------请登录-------------------"<<endl;
    cout<<"请输入用户名:";
    cin>>name;
    cout<<"请输入密码:";
    cin>>password;
    custom_name=name;
    if(custom_name_find(name)==true)//先查找用户是否存在
    {
        custom_password=custom_paasword_find(name);
    }
    else//--------------------------不存在该用户,重新登录
    {
        cout<<"-----------登录失败!-----------"<<endl;
        cout<<"---------不存在该用户!---------"<<endl;
        return ;
    }
    if(password==custom_password)//判断用户密码是否正确
    {
        cout<<"-----------登陆成功!-----------"<<endl<<endl<<endl;
        all_custom.name=name;
        menu_custom();
    }
    else//-----------------------------密码错误,重新登录
    {
        cout<<"-----------登录失败!-----------"<<endl;
        cout<<"-----------密码错误!-----------"<<endl;
        return ;
    }
}

void initi_custom_file()//注册用户文件
{
    ofstream outfile("custom_data.txt", ios::app);//追加写入文件
    string name,password;
    cout<<"--------------请输入注册信息--------------"<<endl;
    cout<<"用户名:";
    cin>>name;

    if(custom_name_find(name)==true)//判断是否存在同样用户名以防止出错:登错账号
    {
        cout<<endl<<endl<<"已存在该用户!"<<endl<<"请更换用户名"<<endl<<"若是忘记密码请联系管理员"<<endl<<endl;//没招了,不会修改文件内容啊老师,只会添加信息
        cout<<endl<<"重新注册请输入:1"<<endl<<"登录请选择:2"<<endl;
        int a;
        cin>>a;
        if(a==1)
        {
            initi_custom_file(); 
        }
        else{
            login();
        }
    }
    else
    {
        outfile<<name<<" ";
        cout<<endl<<"密码:";
        cin>>password;
        outfile<<password<<" ";
    }
    outfile.close();
    for(int i=0;i<99;i++)//分割区域
    {
        cout<<endl;
    }
    login();
}

void custom_space()
{
    cout<<"########################欢迎使用project27智能购物系统########################"<<endl;
    cout<<endl<<"初次使用请选:1"<<endl<<"老用户请选择:2"<<endl<<"输入任意键退出"<<endl<<endl ;
    cout<<endl;
    int choice_1;
    cin>>choice_1;
    if(choice_1==1)
    {
        initi_custom_file();
	}
	else if(choice_1==2)
	{
        ofstream outfile("custom_data.txt", ios::app);//追加写入文件
        outfile<<"dsc 123456 ";//添加默认用户名:dsc 默认密码:123456
        outfile.close();
		login();
	}
	else
	{
		return ;
	}
}

void up_to_date_product(int pnum)//把所有文件的数据读入数组,方便后续排序,更改文件等;同时更新上一次操作导致的仓库余量不同
{
    int maxn=0;
    if(pnum==1)
    {
        ifstream infile("product_food_data.txt", ios::in);//读取文件
        for(int i=0;i<product_size[pnum];i++)
        {
            string a,b,c,d;
            infile>>a;
            infile>>b;
            infile>>c;
            infile>>d;
            int num=string_to_int(a);
            int price=string_to_int(c);
            int stock=string_to_int(d);
            product[pnum][product_size[pnum]].num=num;
            product[pnum][product_size[pnum]].name=b;
            product[pnum][product_size[pnum]].price=price;
            product[pnum][product_size[pnum]].stock=stock;
            if(maxn<num)
            {
                maxn=num;
            }
        }
    }
    if(pnum==2)
    {
        ifstream infile("product_sport_data.txt", ios::in);//读取文件
        for(int i=0;i<product_size[pnum];i++)
        {
            string a,b,c,d;
            infile>>a;
            infile>>b;
            infile>>c;
            infile>>d;
            int num=string_to_int(a);
            int price=string_to_int(c);
            int stock=string_to_int(d);
            product[pnum][product_size[pnum]].num=num;
            product[pnum][product_size[pnum]].name=b;
            product[pnum][product_size[pnum]].price=price;
            product[pnum][product_size[pnum]].stock=stock;
            if(maxn<num)
            {
                maxn=num;
            }
        }
    }
    if(pnum==3)
    {
        ifstream infile("product_cloth_data.txt", ios::in);//读取文件
        for(int i=0;i<product_size[pnum];i++)
        {
            string a,b,c,d;
            infile>>a;
            infile>>b;
            infile>>c;
            infile>>d;
            int num=string_to_int(a);
            int price=string_to_int(c);
            int stock=string_to_int(d);
            product[pnum][product_size[pnum]].num=num;
            product[pnum][product_size[pnum]].name=b;
            product[pnum][product_size[pnum]].price=price;
            product[pnum][product_size[pnum]].stock=stock;
            if(maxn<num)
            {
                maxn=num;
            }
        }
    }
    if(pnum==4)
    {
        ifstream infile("product_pens_data.txt", ios::in);//读取文件
        for(int i=0;i<product_size[pnum];i++)
        {
            string a,b,c,d;
            infile>>a;
            infile>>b;
            infile>>c;
            infile>>d;
            int num=string_to_int(a);
            int price=string_to_int(c);
            int stock=string_to_int(d);
            product[pnum][product_size[pnum]].num=num;
            product[pnum][product_size[pnum]].name=b;
            product[pnum][product_size[pnum]].price=price;
            product[pnum][product_size[pnum]].stock=stock;
            if(maxn<num)
            {
                maxn=num;
            }
        }
    }
    if(pnum==5)
    {
        ifstream infile("product_machine_data.txt", ios::in);//读取文件
        for(int i=0;i<product_size[pnum];i++)
        {
            string a,b,c,d;
            infile>>a;
            infile>>b;
            infile>>c;
            infile>>d;
            int num=string_to_int(a);
            int price=string_to_int(c);
            int stock=string_to_int(d);
            product[pnum][product_size[pnum]].num=num;
            product[pnum][product_size[pnum]].name=b;
            product[pnum][product_size[pnum]].price=price;
            product[pnum][product_size[pnum]].stock=stock;
            if(maxn<num)
            {
                maxn=num;
            }
        }
    }
    
    if(maxn>product_size[pnum])
    {
        product_size[pnum]=maxn;
    }
}

int main()
{
    up_to_date_product(1);//更新仓库货品数量
    up_to_date_product(2);
    up_to_date_product(3);
    up_to_date_product(4);
    up_to_date_product(5);
    cout<<"请选择角色:";
    cout<<endl<<"1、管理员"<<endl<<"2、消费者"<<endl<<"3、输入任意键退出程序"<<endl<<endl;
    int choice_1;
    cin>>choice_1;
    if(choice_1==1)
    {
        admin_space();
    }
    else if(choice_1==2)
    {
        custom_space();
    }
    else
    {
        return 0;
    }
    main();
}

第二段:生成随机用户购物历史

#include<bits/stdc++.h>
using namespace std;

string a[200]={"钱温瑜","王智志","龚坚成","方思淼","曹冬燕","曹光熙","邱和同","姚文栋","邵建义","孟俊明","常温瑜","龙飞光","谢嘉实","宋永寿","王涵畅","侯乐正","顾元忠","蒋丰茂","汤宏畅","曹宏深","丁文耀","阎嘉悦","范承福","贾和裕","段泰和","郭英奕","田阳华","马高卓","魏志勇","秦康胜","唐经义","岳定评","孟嘉誉","叶阳炎","沈信鸿","段文林","潘乐人","邱高峯","毛阳文","顾华茂","阎乐游","吴俊喆","崔心远","于鸿达","于雨泽","林高澹","赖昊英","董翰音","邓凯捷","邱泰宁","潘俊贤","史俊远","毛天空","赵刚豪","许阳旭","吕玉泉","张高原","梁学真","孟嘉许","高永思","卢康成","钟琪睿","江建木","常睿慈","钟成双","江俊能","石斌斌","夏向明","金嘉年","崔和畅","康宏盛","林朋义","龙良工","马乐生","漕博涛","秦鸿煊","董正浩","黄成双","蒋玉书","阎泰宁","石阳飇","漕宜民","侯睿明","萧绍钧","邓英才","侯英喆","田承颜","冯立人","黄嘉誉","许嘉誉","魏弘光","卢翰林","康欣德","彭光远","曾坚白","傅和歌","郭和璧","罗承教","黄翰翮","胡阳嘉","田睿诚","夏文斌","宋康复","梁鸿运","冯飞扬","于良骏","赖建木","卢信厚","孟承颜","潘浩初","龚浩渺","阎飞章","宋正志","万嘉树","高元嘉","潘弘大","黄绍钧","程弘量","龚睿诚","贺天和","陆绍祺","汤彬炳","陈朋义","赖乐邦","秦鹏池","袁鸿云","苏欣然","孔俊风","贾宏才","邱鸿宝","朱宏大","朱和光","冯元良","常高兴","谭阳文","熊永安","田雅惠","姜元龙","杨高芬","漕锐精","韩和悦","邓阳波","王玉成","阎建华","曹星光","郝烨烁","郑祺然","武星汉","戴成仁","乔阳荣","苏文耀","金安国","金文乐","蔡乐湛","冯苑博","罗晋鹏","丁鹏运","林修然","杨飞跃","马鸿才","郝德寿","丁弘伟","王敏达","叶元青","沈志泽","汪立果","卢弘大","徐经艺","谭翰池","许奇希","汤嘉誉","白恺歌","陆鸿禧","杜蕴藉","钱经赋","漕志专","蔡阳晖","金烨霖","彭子民","谢经略","邱子实","钟阳曦","陈翰采","方雨信","尹欣怡","钟成益","韩嘉誉","傅嘉颖","邹睿诚","胡俊力","周锐达","马文滨","方志诚","田逸春","杜昊空","黎玉轩","朱阳荣","谢成双","卢彭湃","吕飞翼"};
    
int rand_int(int Num)//随机数生成
{
	vector<int> temp;
	for (int i = 0; i < Num; i++)
	{
		temp.push_back(i + 1);
	}
	random_shuffle(temp.begin(), temp.end());
	return temp[3];//随手6
}

int main()
{
    ofstream aaaoutfile("history_data.txt", ios::out);//清空
    ofstream outfile("history_data.txt", ios::app);
    int timess[7];
    for(int i=0;i<7;i++)
    {
        timess[i]=i+1;
    }
    for(int i=0;i<200;i++)
    {
        int time=timess[rand_int(6)];//防止出现0
        outfile<<a[i]<<" ";
        outfile<<time<<" ";
        int elemts[5];
        for(int i=0;i<5;i++)
        {
            elemts[i]=i+1;
        }
        for(int i=0;i<time;i++)
        {
            outfile<<elemts[rand_int(10)%5]<<" ";//防止出现0
            outfile<<rand_int(49)+1<<" ";
            outfile<<rand_int(10)+1<<" ";
        }
    }
}

第三段:生成随机仓库,共五个

#include<bits/stdc++.h>
using namespace std;


string random_product1[114]={"鸡蛋","牛奶","苹果","面包","香蕉","蔬菜","橙子","猪肉","面粉","鱼肉","花生油","酱油","食醋","盐","糖","面条","大米","豆腐","鸡肉","红薯","土豆","胡萝卜","西红柿","洋葱","葱","姜","大蒜","花菜","西兰花","茄子","青椒","黄瓜","豆角","莲藕","香菇","蘑菇","银耳","黑木耳","鱼丸","肉丸","鸡精","鸡精","花椒粉","八角","桂皮","香叶","茴香","肉桂","酱料","调味酱","酸奶","奶酪","奶油","黄油","巧克力","糖果","饼干","薯片","果冻","苹果","蜂蜜","茶叶","咖啡","红茶","绿茶","花茶","果汁","矿泉水","碳酸饮料","茶饮料","功能饮料","方便面","香蕉","橙子","西瓜","葡萄","草莓","八宝粥","粥包","肉松","腊肠","火腿","熟食","蔬菜沙","拉水果沙拉","芒果","菠萝","柚子","柠檬","梨","肉类","熟食","食零食","花生","坚果","腰果","开心果","杏仁","核桃","红枣","葡萄干","酱菜","豆腐乳","豆酱","豆腐干","豆腐皮","桃","子李子","杏子","枣","丝粉","粥","钙片","米饭"};
string random_product2[53]={"跑步机","踏步机","鞍马","铅球","棒球棍","乒乓球拍","乒乓球","羽毛球","羽毛球拍","网球","网球拍","保龄球","冰球","冰球服","班迪球","台球杆","垒球","手球","排球","橄榄球","篮球","篮球鞋","足球","足球鞋","高尔夫球","高尔夫球杆","匹克球","匹克球拍","壁球","壁球拍","标枪","实心球","起跑器","发令枪","握力器","臂力器","滑雪镜","护腕护膝","防护眼镜","骑行镜","篮球眼镜","运动手套","运动帽","仰卧起坐器","杠铃","弓箭","跳板","功率自行车","拉力器","划船器","小蹦床","毽子","健步机"};
string random_product3[51]={"毛衣","衬衣","半袖","羽绒服","西服","马夹","T恤","背心","短裤","裤衩","内裤","胸罩","长裤","西裤","背带裤","牛仔裤","长袍","大衣","风衣","雨衣","披风","一步裙","圆台裙","裙裤","冲锋衣","马面裙","POLO衫","速干衣","衬衫","罩衫","开襟衫","露脐上衣","抹胸","挂脖背心","吊带","无袖衫","圆高领","喇叭裤","低腰裤","热裤","紧身裤","阔腿裤","铅笔裤","七分裤","工装裤","筒裙","斜裙","喇叭裙","百褶裙","节裙","迷你裙"};
string random_product4[50]={"笔袋","笔盒","铅笔","自动铅笔","水彩笔","白板笔","圆珠笔","中性笔","油画棒","油画棒","蜡笔","钢笔","书包","橡皮擦","削笔机","笔削","液体胶水","固体胶","尺类","圆规","美工刀","剪刀","书套","修正带","文件夹","本册","文件袋","画板","笔芯","有孔文件夹","无孔文件夹","板夹","档案盒","切纸刀","台历架","活页本","便利贴","便签纸","会议记录本","软笔","墨水笔芯","炭笔","POP笔","复写纸","财务计算器","电池","读卡器","传真机","打印机","绘图纸"};
string random_product5[50]={"家用冰箱","冷饮机","空调","电扇","换气扇","冷热风器","空气去湿器","加湿器","洗衣机","干衣机","电熨斗","吸尘器","地板打蜡机","扫地机器人","电灶","微波炉","电磁灶","电烤箱","电饭锅","洗碟机","电热水器","食物加工机","电热毯","电热被","水热毯","电热服","空间加热器","电动剃须刀","电吹风","超声波洗面器","电动按摩器","整发器","微型投影仪","电视机","收音机","录音机","录像机","摄像机","组合音响","台式电脑","笔记本电脑","平板电脑","抽油烟机","擦窗机","熨压机","电推剪","绞肉机","搅拌器","烟火报警器","电铃"};
//网上搜的随机生成网站https://namegentool.com/zh-hans#google_vignett

//string random_product[999]={"鸡蛋","牛奶","苹果","面包","香蕉","蔬菜","橙子","猪肉","面粉","鱼肉","花生油","酱油","食醋","盐","糖","面条","大米","豆腐","鸡肉","红薯","土豆","胡萝卜","西红柿","洋葱","葱","姜","大蒜","花菜","西兰花","茄子","青椒","黄瓜","豆角","莲藕","香菇","蘑菇","银耳","黑木耳","鱼丸","肉丸","鸡精","鸡精","花椒粉","八角","桂皮","香叶","茴香","肉桂","酱料","调味酱","酸奶","奶酪","奶油","黄油","巧克力","糖果","饼干","薯片","果冻","苹果","蜂蜜","茶叶","咖啡","红茶","绿茶","花茶","果汁","矿泉水","碳酸饮料","茶饮料","功能饮料","方便面","香蕉","橙子","西瓜","葡萄","草莓","八宝粥","粥包","肉松","腊肠","火腿","熟食","蔬菜沙","拉水果沙拉","芒果","菠萝","柚子","柠檬","梨","肉类","熟食","食零食","花生","坚果","腰果","开心果","杏仁","核桃","红枣","葡萄干","酱菜","豆腐乳","豆酱","豆腐干","豆腐皮","桃","子李子","杏子","枣","丝粉","粥","钙片","米饭"};
//网上搜的随机生成网站https://namegentool.com/zh-hans#google_vignette
int product_size[5]={114,53,51,50,50};//便于后续添加商品(更改代码)
struct product_infor
{
    int num;//编号
    string name;
    int stock;//库存
    int price;//单价
};





int rand_int(int Num)//随机数生成
{
	vector<int> temp;
	for (int i = 0; i < Num; i++)
	{
		temp.push_back(i + 1);
	}
	random_shuffle(temp.begin(), temp.end());
	return temp[6];//随手6
}

void initi_product_house()//建立商品库
{
    for(int i=0;i<product_size[0];i++)///1
    {struct product_infor product[999];
        ofstream outfile("product_food_data.txt", ios::app);//追加写入文件          存入记得加入分隔" "
        product[i].num=i+1;//-------------------------------注意
        outfile << product[i].num << "  ";
        product[i].name=random_product1[i];
        outfile << product[i].name << "  ";
        product[i].price=rand_int(20);
        outfile << product[i].price << "  ";
        product[i].stock=rand_int(100);
        outfile << product[i].stock << "  ";
    }
    for(int i=0;i<product_size[1];i++)///2
    {struct product_infor product[999];
        ofstream outfile("product_sport_data.txt", ios::app);//追加写入文件          存入记得加入分隔" "
        product[i].num=i+1;//-------------------------------注意
        outfile << product[i].num << "  ";
        product[i].name=random_product2[i];
        outfile << product[i].name << "  ";
        product[i].price=rand_int(20);
        outfile << product[i].price << "  ";
        product[i].stock=rand_int(100);
        outfile << product[i].stock << "  ";
    }
    for(int i=0;i<product_size[2];i++)///3
    {struct product_infor product[999];
        ofstream outfile("product_cloth_data.txt", ios::app);//追加写入文件          存入记得加入分隔" "
        product[i].num=i+1;//-------------------------------注意
        outfile << product[i].num << "  ";
        product[i].name=random_product3[i];
        outfile << product[i].name << "  ";
        product[i].price=rand_int(1000);
        outfile << product[i].price << "  ";
        product[i].stock=rand_int(100);
        outfile << product[i].stock << "  ";
    }
    for(int i=0;i<product_size[3];i++)///4
    {struct product_infor product[999];
        ofstream outfile("product_pens_data.txt", ios::app);//追加写入文件          存入记得加入分隔" "
        product[i].num=i+1;//-------------------------------注意
        outfile << product[i].num << "  ";
        product[i].name=random_product4[i];
        outfile << product[i].name << "  ";
        product[i].price=rand_int(20);
        outfile << product[i].price << "  ";
        product[i].stock=rand_int(100);
        outfile << product[i].stock << "  ";
    }
    for(int i=0;i<product_size[4];i++)///5
    {struct product_infor product[999];
        ofstream outfile("product_machine_data.txt", ios::app);//追加写入文件          存入记得加入分隔" "
        product[i].num=i+1;//-------------------------------注意
        outfile << product[i].num << "  ";
        product[i].name=random_product5[i];
        outfile << product[i].name << "  ";
        product[i].price=rand_int(2000);
        outfile << product[i].price << "  ";
        product[i].stock=rand_int(100);
        outfile << product[i].stock << "  ";
    }
}

int main()
{
    ofstream outfile("product_food_data.txt", ios::out);//在此程序中用于清空原来的“product_data.txt”文件
    ofstream aoutfile("product_sport_data.txt", ios::out);
    ofstream aaoutfile("product_cloth_data.txt", ios::out);
    ofstream aaaoutfile("product_pens_data.txt", ios::out);
    ofstream aaaaaoutfile("product_machine_data.txt", ios::out);
    initi_product_house();//初始化商品仓库
}

此外,这三个文件需要放在一个文件夹中,先运行后两个用于生成初始化文件,再运行主程序。




怎么说呢,看到别的同学有发的我也想发了,没什么技术,就是单纯记录大一生活。当然,要是一直这样写代码,我也就不用再上学了,一点技术含量都没有,迟早得被AI替代(指自己,不代表任何我认识或不认得的人)。得抓紧学些算法知识了,其他语言也得抓紧学学了。

注重原创

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值