日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

【项目源码分享】基于C++实现的网店购物管理系统(VS2019控制台)

發布時間:2024/4/11 c/c++ 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【项目源码分享】基于C++实现的网店购物管理系统(VS2019控制台) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

前言

一、程序運行展示

二、數據結構分析

三、代碼開源

1.主函數

2.頭文件

3.函數文件

后記


前言

? ? ? ?程序設計基礎實驗課項目二:模擬一個網店購物過程(可以說是和雙十一緊密結合了),經過一周的不懈努力(摸魚),終于實現了第一個千行代碼的項目🤯🤯🤯






一、程序運行展示

? ? ? ? 廢話不多說,直接上程序運行截圖:


主要功能有兩大部分,第一部分是用戶界面,每個用戶都有屬于自己的購物車,可以查詢和搜索店鋪中現有的商品,并且增刪改查自己的購物車,當然最主要的功能當然是付款結賬(剁手黨狂喜🥰);第二部分是管理員界面,可以增刪改查店鋪的商品信息和商品數量,同時維護了一個售貨清單,用來記錄所有用戶的購買記錄,并且自動合并同類商品的售貨信息。

除此之外功能(bug)還有很多,歡迎大家自己嘗試~


二、數據結構分析

本項目中采用面向對象式設計,所有變量和函數封裝在一個類shopping中,將問題看作可以嵌套的對象,再一個一個解決。主函數、頭文件、函數實現分別放在三個任務中。這樣做的好處是便于解決購物系統中遇到的繁多而瑣碎的問題,也方便函數之間的調用,讓整體框架更清晰,函數之間的關系更加清晰,主函數簡短。接下來具體展示代碼實現(其中函數主要有四部分:界面實現、管理員功能函數、用戶功能函數和文件操作相關函數)。


三、代碼開源

1.主函數

//main.cpp#include<iostream> #include<fstream> #include<cstring> #include"Shopping.h" using namespace std;int main() //短小精悍的main函數(bushi {Shopping sp;sp.show();system("pause");return 0; }

2.頭文件

//Shopping.h#pragma once #include<cstring> using namespace std; const int Max_num = 105;//單個商品結構體,包括兩段ID、名稱、品牌、價格、數量 struct item {char ID_1;int ID_2;string name;string brand;float price;int amount; };//用戶結構體,包括用戶名稱,用戶密碼,收貨地址,用戶購物車 struct user {string name;string password;string address="none";item shopping_car[Max_num];//購物車由商品結構體數組實現int shopping_car_num = 0; //購物車中商品數量 };//已售商品結構體,包括兩段ID、名稱、品牌、價格、已售數量、購買用戶 struct sale_item {char ID_1;int ID_2;string name;string brand;float price;int amount;string my_user; };//新建一個購物系統的類 class Shopping { private:const string admin_ID ="nju_shopping"; //管理員IDconst string admin_passwd = "201830210"; //管理員密碼const char all_items_address[20] = "D:\\庫存.txt"; //庫存文件地址const char sales_list_address[20] = "D:\\已售清單.txt" ; //售貨清單文件地址const char all_users_address[20] = "D:\\用戶.txt"; //用戶列表文件地址const char users_shopping_address[20] = "D:\\收貨地址.txt"; //用戶收貨地址文件地址public:item all_items[Max_num]; //店鋪庫存,由商品結構體數組實現user all_users[Max_num]; //用戶列表,由用戶結構體數組實現sale_item all_sales[Max_num]; //售貨清單,由已售商品結構體數組實現int item_num = 0; //當前庫存商品種類數int user_num = 0; //用戶列表數量int sale_item_num = 0; //售貨清單數量//友好的UI界面void show(); //顯示主界面void users_enter(); //用戶登錄界面void users_register(); //用戶注冊界面void administrator_enter(); //管理員登錄界面void admin_operate(); //管理員操作界面void user_operate(int index,user* this_user); //用戶操作界面,需要的參數為:該用戶在用戶列表中的下標以及該結構體//文件相關操作void read_all_the_items(); //讀取庫存文件void write_all_the_items(); //寫入庫存文件void read_the_sales_list(); //讀取售貨清單void write_the_sales_list(); //寫入售貨清單void read_all_the_users(); //讀取用戶列表void write_all_the_users(); //寫入用戶列表void read_shopping_address(); //讀取收貨地址void write_shopping_address(); //寫入收貨地址void read_shopping_car(user* this_user); //讀取用戶購物車文件void write_shopping_car(user* this_user); //寫入用戶購物車文件//管理員相關操作void show_items(); //查詢商品void add_item(); //增加商品void delete_item(); //刪除商品void change_item(); //修改商品數量void show_sales_list(); //售貨清單//用戶相關操作void visit_items(); //查看商品void search_item(); //商品搜索void add_shopping_car(int index, user* this_user); //添加商品至購物車void delete_shopping_car(int index, user* this_user); //刪除購物車商品void visit_shopping_car(int index, user* this_user); //查看購物車void check_out(int index, user* this_user); //結賬void change_password(int index, user* this_user); //拓展功能:用戶修改密碼void change_address(int index, user* this_user); //拓展功能:管理收貨地址};

3.函數文件

#include<iostream> #include<cstring> #include<fstream> #include"Shopping.h" using namespace std;//顯示主界面 void Shopping::show() {cout <<"====================================================================================================" << endl;cout << " ";cout<<"\033[34;1m歡迎使用\033[0m"<<"\033[35;1mNJU_SHOPPING\033[0m"<<"\033[36;1m購物系統,\033[0m"<<"\033[33;1m請輸入對應操作\033[0m" << endl;cout << "====================================================================================================" << endl;cout << "\033[33;1m1.用戶登錄 2.用戶注冊 3.管理員登錄 4.退出系統\033[0m" << endl;int n;cout << "輸入操作:" << endl;cin >> n;while (n != 4){switch (n){case 1:users_enter();break;case 2:users_register();break;case 3:administrator_enter();break;case 8:admin_operate(); //直接登入管理員界面便于debugbreak;case 9:user_operate(0, &all_users[0]);break;default:cout << "\033[31;1m錯誤的操作指令!\033[0m" << endl;break;}cout << "===========================================================" << endl;cout << "\033[33;1m1.用戶登錄 2.用戶注冊 3.管理員登錄 4.退出系統\033[0m" << endl;cout << "輸入操作:" << endl;cin >> n;}cout << "\033[33;1m歡迎下次使用!\033[0m" << endl; }//用戶登錄界面 附加功能:密碼錯誤提示及次數上限 void Shopping::users_enter() {read_all_the_users(); //讀取用戶列表int cnt = 0;while (cnt < 3){string name, passwd;cout << "輸入用戶名:";cin >> name;cout << "輸入密碼:";cin >> passwd;int i;for (i = 0; i < user_num; i++){if (name == all_users[i].name && passwd == all_users[i].password){cout << "*******" << endl;cout << "登錄成功!" << endl;cout << "*******" << endl;user_operate(i,&all_users[i]); //傳入用戶在用戶列表中的下標和結構體指針break;}}if (i < user_num)break;else if(i==user_num){cnt++;cout << "用戶名或密碼錯誤,請再次輸入用戶名與密碼,";cout << "你還有" << 3 - cnt << "次機會" << endl;}}if (cnt == 3)cout << "錯誤次數已達上限,系統關閉!" << endl; }//用戶注冊界面 附加功能:已存在的用戶名或過短的密碼都不符合要求,需要重新輸入 void Shopping::users_register() {read_all_the_users(); //讀取用戶列表string name, passwd;cout << "輸入用戶名:";cin >> name;while (true){int i;for (i = 0; i < user_num; i++){if (all_users[i].name == name){cout << "用戶名已存在,請重新輸入!" << endl;break;}}if (i == user_num) //合法的用戶名break;else if (i < user_num){cout << "輸入用戶名:";cin >> name;}}cout << "輸入密碼:";cin >> passwd;while (passwd.size() <= 3){cout << "密碼長度太短,請重新輸入!" << endl;cout << "輸入密碼:";cin >> passwd;}//新建一個用戶user_num++;all_users[user_num-1].name = name;all_users[user_num-1].password = passwd;all_users[user_num-1].shopping_car_num = 0;write_shopping_car(&all_users[user_num - 1]); //創建購物車文件write_all_the_users(); //寫入用戶列表//注冊成功并登錄cout << "***************" << endl;cout << "注冊成功!登錄成功!" << endl;cout << "***************" << endl;user_operate(user_num-1, &all_users[user_num-1]);//傳入用戶在用戶列表中的下標和結構體指針}//管理員登錄界面 附加功能:密碼錯誤提示及次數上限 void Shopping::administrator_enter() {int cnt = 0;while (cnt < 3){cout << "輸入管理員ID:";string id, passwd;cin >> id;cout << "輸入管理員密碼:";cin >> passwd;if (id == admin_ID && passwd == admin_passwd){cout << "*******" << endl;cout << "登錄成功!" << endl;cout << "*******" << endl;admin_operate();break;}else{cnt++;cout << "ID或密碼錯誤,請再次輸入管理員ID與密碼,";cout << "你還有" << 3 - cnt << "次機會" << endl;}}if (cnt == 3)cout << "錯誤次數已達上限,系統關閉!" << endl; }//文件相關操作 //讀取庫存文件 void Shopping::read_all_the_items() {item_num = 0;//先將庫存貨物種類置為0ifstream in_file(all_items_address, ios::in);if (in_file.is_open() == 0)cout << "打開文件錯誤!" << endl;string a, b, c, d, e;in_file >> a >> b >> c >> d >> e;//讀入文件表頭while (in_file.peek()!=EOF)//讀入庫存數據{in_file >> all_items[item_num].ID_1;in_file >> all_items[item_num].ID_2;in_file >> all_items[item_num].name; in_file >> all_items[item_num].brand;in_file >> all_items[item_num].price; in_file >> all_items[item_num].amount;if(all_items[item_num].ID_1=='F') //用于規避文件結尾的空白行item_num++;} }//寫入庫存文件 void Shopping::write_all_the_items() {//更新的商品信息寫入庫存文件ofstream out_file(all_items_address, ios::out);out_file << "ID" << " " << "名稱" << " " << "品牌" << " " << "價格" << " " << "數量" << endl;for (int i = 0; i < item_num; i++){out_file << all_items[i].ID_1 << "00";if (all_items[i].ID_2 < 10)out_file << "0";out_file << all_items[i].ID_2 << "\t";out_file.width(10);out_file.setf(ios::left);out_file << all_items[i].name << "\t";out_file.width(10);out_file.setf(ios::left);out_file << all_items[i].brand << "\t";out_file.width(10);out_file.setf(ios::left);out_file << all_items[i].price << "\t";out_file.width(10);out_file.setf(ios::left);out_file << all_items[i].amount << "\t";out_file << endl;} }//讀取售貨清單 void Shopping::read_the_sales_list() {sale_item_num = 0;//先將售貨清單數量置為0ifstream in_file(sales_list_address, ios::in);if (in_file.is_open() == 0)cout << "打開文件錯誤!" << endl;string a, b, c, d, e,f;in_file >> a >> b >> c >> d >> e>>f; //讀入文件表頭while (in_file.peek() != EOF) {in_file >> all_sales[sale_item_num].ID_1; in_file >> all_sales[sale_item_num].ID_2;in_file >> all_sales[sale_item_num].name;in_file >> all_sales[sale_item_num].brand;in_file >> all_sales[sale_item_num].price;in_file >> all_sales[sale_item_num].amount;in_file >> all_sales[sale_item_num].my_user;if (all_sales[sale_item_num].ID_1 == 'F') //用于規避文件結尾的空白行sale_item_num++;} }//寫入售貨清單 void Shopping::write_the_sales_list() {//更新的售貨清單寫入文件ofstream out_file(sales_list_address, ios::out);out_file << "ID" << " " << "名稱" << " " << "品牌" << " " << "價格" << " " << "數量" <<" "<<"用戶名"<< endl;for (int i = 0; i < sale_item_num; i++){out_file << all_sales[i].ID_1 << "00";if (all_sales[i].ID_2 < 10)out_file << "0";out_file << all_sales[i].ID_2 << "\t";out_file.width(10);out_file.setf(ios::left);out_file << all_sales[i].name << "\t";out_file.width(10);out_file.setf(ios::left);out_file << all_sales[i].brand << "\t";out_file.width(10);out_file.setf(ios::left);out_file << all_sales[i].price << "\t";out_file.width(10);out_file.setf(ios::left);out_file << all_sales[i].amount << "\t";out_file.width(10);out_file.setf(ios::left);out_file << all_sales[i].my_user << "\t";out_file << endl;} }//讀取用戶列表 void Shopping::read_all_the_users() {user_num = 0;//先將用戶數量置為0ifstream in_file(all_users_address, ios::in);if (in_file.is_open() == 0)cout << "打開文件錯誤!" << endl;string a, b;in_file >> a >> b ; //讀入文件表頭while (in_file.peek() != EOF) {in_file >> all_users[user_num].name;in_file >> all_users[user_num].password;if (all_users[user_num].name[0]>='a'&& all_users[user_num].name[0]<='z') //用于規避文件結尾的空白行user_num++;} }//寫入用戶列表 void Shopping::write_all_the_users() {//更新的用戶列表寫入庫存文件ofstream out_file(all_users_address, ios::out);out_file << "用戶名\t"<< "密碼\t\t" <<endl;for (int i = 0; i < user_num; i++){out_file.width(10);out_file.setf(ios::left);out_file << all_users[i].name << "\t";out_file.width(10);out_file.setf(ios::left);out_file << all_users[i].password << "\t";out_file << endl;} }//讀取收貨地址 void Shopping::read_shopping_address() {read_all_the_users(); //先讀取用戶列表ifstream in_file(users_shopping_address, ios::in);if (in_file.is_open() == 0)cout << "打開文件錯誤!" << endl;string a, b;in_file >> a >> b; //讀入文件表頭while (in_file.peek() != EOF) {string name,address;in_file >> name >> address;for (int i = 0; i < user_num; i++)if (name == all_users[i].name) //找到該用戶all_users[i].address = address; //修改該用戶地址} }//寫入收貨地址 void Shopping::write_shopping_address() {read_all_the_users(); //先讀取用戶列表//更新的收貨地址寫入文件ofstream out_file(users_shopping_address, ios::out);out_file << "用戶名\t" << "收貨地址\t\t" << endl;for (int i = 0; i < user_num; i++){out_file.width(10);out_file.setf(ios::left);out_file << all_users[i].name << "\t";out_file.width(10);out_file.setf(ios::left);out_file << all_users[i].address << "\t";out_file << endl;} }//讀取用戶購物車 void Shopping::read_shopping_car(user* this_user) {this_user->shopping_car_num = 0;//先將購物車商品種類置為0string shopping_car_address = "D:\\" + this_user->name + ".txt";//設置購物車文件地址ifstream in_file(shopping_car_address, ios::in);if (in_file.is_open() == 0)cout << "打開文件錯誤!" << endl;string a, b, c, d, e;in_file >> a >> b >> c >> d >> e; //讀入文件表頭while (!in_file.eof()) //讀入庫存數據{in_file >> this_user->shopping_car[this_user->shopping_car_num].ID_1;in_file >> this_user->shopping_car[this_user->shopping_car_num].ID_2;in_file >> this_user->shopping_car[this_user->shopping_car_num].name;in_file >> this_user->shopping_car[this_user->shopping_car_num].brand;in_file >> this_user->shopping_car[this_user->shopping_car_num].price;in_file >> this_user->shopping_car[this_user->shopping_car_num].amount;if (this_user->shopping_car[this_user->shopping_car_num].ID_1 == 'F') //用于規避文件結尾的空白行this_user->shopping_car_num++;} }//寫入用戶購物車 void Shopping::write_shopping_car(user* this_user) {//更新的用戶購物車寫入庫存文件string shopping_car_address = "D:\\" + this_user->name + ".txt";//設置購物車文件地址ofstream out_file(shopping_car_address, ios::out);if (this_user->shopping_car_num != 0){out_file << "ID" << " " << "名稱" << " " << "品牌" << " " << "價格" << " " << "數量" << endl;for (int i = 0; i < this_user->shopping_car_num; i++){out_file << this_user->shopping_car[i].ID_1 << "00";if (this_user->shopping_car[i].ID_2 < 10)out_file << "0";out_file << this_user->shopping_car[i].ID_2 << "\t";out_file.width(10);out_file.setf(ios::left);out_file << this_user->shopping_car[i].name << "\t";out_file.width(10);out_file.setf(ios::left);out_file << this_user->shopping_car[i].brand << "\t";out_file.width(10);out_file.setf(ios::left);out_file << this_user->shopping_car[i].price << "\t";out_file.width(10);out_file.setf(ios::left);out_file << this_user->shopping_car[i].amount << "\t";out_file << endl;}} }//管理員相關操作 //管理員操作界面 void Shopping::admin_operate() {cout << "=========================================================================================" << endl;cout << "\033[33;1m0.注銷登錄 1.查詢商品 2.增加商品 3.刪除商品 4.修改產品數量 5.查詢售貨清單\033[0m" << endl;cout << "輸入操作:";int n;cin >> n;while (n != 0){switch (n){case 1:show_items();break;case 2:add_item();break;case 3:delete_item();break;case 4:change_item();break;case 5:show_sales_list();break;default:cout << "\033[31;1m錯誤的操作指令!\033[0m" << endl;break;}cout << "=========================================================================================" << endl;cout << "\033[33;1m0.注銷登錄 1.查詢商品 2.增加商品 3.刪除商品 4.修改產品數量 5.售貨清單\033[0m" << endl;cout << "輸入操作:" << endl;cin >> n;}cout << "退出登錄!" << endl; }//管理員查詢商品,先讀入庫存文件,再進行輸出 void Shopping::show_items() {read_all_the_items(); //讀入庫存文件//輸出庫存商品數據,數量為0的商品也要輸出if (item_num == 0)cout << "當前庫存為空!" << endl;else {cout << "********************************************************************************" << endl;cout << "ID" << " " << "名稱" << " " << "品牌" << " " << "價格" << " " << "數量" << endl;for (int i = 0; i < item_num; i++){//輸出庫存商品信息,通過控制位寬和制表符實現整齊的順序if (all_items[i].amount >= 0||all_items[i].amount==-1){cout << all_items[i].ID_1 << "00";if (all_items[i].ID_2 < 10)cout << "0";cout<< all_items[i].ID_2 << "\t\t";cout.width(10);cout.setf(ios::left);cout << all_items[i].name<<"\t";cout.width(10);cout.setf(ios::left);cout << all_items[i].brand << "\t";cout.width(10);cout.setf(ios::left);cout << all_items[i].price << "\t";cout.width(10);cout.setf(ios::left);cout << all_items[i].amount << "\t";cout << endl;}}cout << "********************************************************************************" << endl;} }//管理員添加商品,先讀入庫存文件,再添加商品,最后寫入庫存文件 void Shopping::add_item() {read_all_the_items();cout << "請輸入要進貨的商品ID:";string s;cin >> s;//獲取新增商品的ID,存入number變量int number;if (s[3] == '0')number = s[4] - '0';elsenumber = (s[4] - '0') + (s[3] - '0') * 10;int i = 0;for(i=0;i<item_num;i++){if (all_items[i].ID_2 == number){int n;cout << "新增該商品的數量為:";cin >> n;all_items[i].amount += n;cout << "新增成功!該商品現在的數量為" << all_items[i].amount << endl;break;}}if (i == item_num&&item_num<Max_num) //沒有找到對應的ID,新建一種商品{item_num++; //商品種類數+1all_items[item_num-1].ID_1 = all_items[item_num - 2].ID_1; //開頭序號相同all_items[item_num-1].ID_2 = all_items[item_num - 2].ID_2+1; //序號編碼+1cout << "庫存中沒有找到對應ID,將自動新建一種商品,請輸入該商品的名稱:";cin >> all_items[item_num-1].name;cout << "請輸入該商品的品牌:";cin >> all_items[item_num-1].brand;cout << "請輸入該商品的價格:";cin >> all_items[item_num-1].price;cout << "請輸入該商品的數量:";cin >> all_items[item_num-1].amount;cout << "添加成功!" << endl;}//更新的商品信息寫入庫存文件write_all_the_items(); }//管理員刪除商品,先讀入庫存文件,再刪除商品,最后寫入庫存文件 void Shopping::delete_item() {read_all_the_items();cout << "請輸入要刪除的商品ID:";string s;cin >> s;//獲取刪除商品的ID,存入number變量int number;if (s[3] == '0')number = s[4] - '0';elsenumber = (s[4] - '0') + (s[3] - '0') * 10;int i = 0;for (i = 0; i < item_num; i++){if (all_items[i].ID_2 == number){all_items[i].amount = -1;cout << "刪除成功!" << endl;break;}}if (i == item_num) //沒有找到對應的IDcout << "沒有找到對應的商品!" << endl;//更新的商品信息寫入庫存文件write_all_the_items(); }//管理員修改商品,先讀入庫存文件,再修改商品信息,最后寫入庫存文件 void Shopping::change_item() {read_all_the_items();cout << "請輸入要修改的商品ID:";string s;cin >> s;//獲取修改商品的ID,存入number變量int number;if (s[3] == '0')number = s[4] - '0';elsenumber = (s[4] - '0') + (s[3] - '0') * 10;int i = 0;for (i = 0; i < item_num; i++){if (all_items[i].ID_2 == number){cout << "請輸入要修改的商品信息:1.名稱 2.品牌 3.價格 4.數量" << endl;cout << "請輸入操作:";int n;cin >> n;string str;switch (n){case 1:cout << "請輸入修改后的名稱:";cin >> str;all_items[i].name = str;cout << "修改成功!" << endl;break;case 2:cout << "請輸入修改后的品牌:";cin >> str;all_items[i].brand = str;cout << "修改成功!" << endl;break;case 3:cout << "請輸入修改后的價格:";float x;cin >> x;all_items[i].price = x;if (x < 0)cout << "修改失敗!價格不能為負!" << endl;elsecout << "修改成功!" << endl;break;case 4:cout << "請輸入修改后的數量:";int amt;cin >> amt;all_items[i].amount = amt;cout << "修改成功!" << endl;break;default:cout << "錯誤的操作數!" << endl;break;}break;}}if (i == item_num) //沒有找到對應的IDcout << "沒有找到對應的商品!" << endl;//更新的商品信息寫入庫存文件write_all_the_items(); }//管理員查詢售出清單,先讀文件,再合并同類項,最后按照ID升序輸出 void Shopping::show_sales_list() {read_the_sales_list(); //讀取售貨清單//根據ID冒泡排序for(int i=0; i<sale_item_num-1; i++)for (int j = 0; j < sale_item_num - i - 1; j++){//若前者ID大于后者,結構體內容交換if (all_sales[j].ID_2 > all_sales[j + 1].ID_2){int temp1 = all_sales[j].ID_2;all_sales[j].ID_2 = all_sales[j + 1].ID_2;all_sales[j + 1].ID_2 = temp1;char temp2 = all_sales[j].ID_1;all_sales[j].ID_1 = all_sales[j + 1].ID_1;all_sales[j + 1].ID_1 = temp2;string temp3 = all_sales[j].name;all_sales[j].name = all_sales[j + 1].name;all_sales[j + 1].name = temp3;string temp4 = all_sales[j].brand;all_sales[j].brand = all_sales[j + 1].brand;all_sales[j + 1].brand = temp4;float temp5 = all_sales[j].price;all_sales[j].price = all_sales[j + 1].price;all_sales[j + 1].price = temp5;int temp6 = all_sales[j].amount;all_sales[j].amount = all_sales[j + 1].amount;all_sales[j + 1].amount = temp6;string temp7 = all_sales[j].my_user;all_sales[j].my_user = all_sales[j + 1].my_user;all_sales[j + 1].my_user = temp7;}}//合并同類項,對于相同的商品將已售數量累加到第一條記錄中,其余置為-1for (int i = 0; i < sale_item_num - 1; i++){if (all_sales[i].amount == -1)continue;for (int j = i + 1; j < sale_item_num ; j++){if (all_sales[j].amount == -1)continue;if (all_sales[i].ID_2 == all_sales[j].ID_2 && all_sales[i].name == all_sales[j].name && all_sales[i].brand == all_sales[j].brand && all_sales[i].price == all_sales[j].price){all_sales[i].amount += all_sales[j].amount;all_sales[j].amount = -1;}}}if (sale_item_num == 0)cout << "當前售貨清單為空!" << endl;else{cout << "********************************************************************************" << endl;cout << "ID" << " " << "名稱" << " " << "品牌" << " " << "價格" << " " << "已售數量" << endl;for (int i = 0; i < sale_item_num; i++){//輸出庫存商品信息,通過控制位寬和制表符實現整齊的順序if (all_sales[i].amount > 0){cout << all_sales[i].ID_1 << "00";if (all_sales[i].ID_2 < 10)cout << "0";cout << all_sales[i].ID_2 << "\t\t";cout.width(10);cout.setf(ios::left);cout << all_sales[i].name << "\t";cout.width(10);cout.setf(ios::left);cout << all_sales[i].brand << "\t";cout.width(10);cout.setf(ios::left);cout << all_sales[i].price << "\t";cout.width(10);cout.setf(ios::left);cout << all_sales[i].amount << "\t";cout << endl;}}cout << "********************************************************************************" << endl;} }//用戶相關操作 //用戶操作界面 void Shopping::user_operate(int index, user* this_user) {cout << "=========================================================================================" << endl;cout << "\033[33;1m1.注銷登錄 2.查看商品 3.商品搜索 4.添加商品至購物車\033[0m" << endl;cout << "\033[33;1m5.刪除購物車商品 6.查看購物車 7.結賬 8.修改密碼 9.管理收貨地址\033[0m" << endl;cout << "輸入操作:";int n;cin >> n;write_shopping_address();while (n != 1){switch (n){case 2:visit_items();break;case 3:search_item();break;case 4:add_shopping_car(index, this_user);break;case 5:delete_shopping_car(index, this_user);break;case 6:visit_shopping_car(index, this_user);break;case 7:check_out(index, this_user);break;case 8:change_password(index, this_user);break;case 9:change_address(index, this_user);break;default:cout << "\033[31;1m錯誤的操作指令!\033[0m" << endl;break;}cout << "=========================================================================================" << endl;cout << "\033[33;1m1.注銷登錄 2.查看商品 3.商品搜索 4.添加商品至購物車\033[0m" << endl;cout << "\033[33;1m5.刪除購物車商品 6.查看購物車 7.結賬 8.修改密碼 9.管理收貨地址\033[0m" << endl;cout << "輸入操作:" << endl;cin >> n;}cout << "退出登錄!" << endl; }//用戶查看商品,讀入庫存文件,再按要求輸出 void Shopping::visit_items() {read_all_the_items(); //讀入庫存文件//輸出庫存商品數據,數量為0的商品不需要輸出if (item_num == 0)cout << "當前庫存為空!" << endl;else{cout << "********************************************************************************" << endl;cout << "ID" << " " << "名稱" << " " << "品牌" << " " << "價格" << " " << "數量" << endl;for (int i = 0; i < item_num; i++){//輸出庫存商品信息,通過控制位寬和制表符實現整齊的順序if (all_items[i].amount > 0){cout << all_items[i].ID_1 << "00";if (all_items[i].ID_2 < 10)cout << "0";cout << all_items[i].ID_2 << "\t\t";cout.width(10);cout.setf(ios::left);cout << all_items[i].name << "\t";cout.width(10);cout.setf(ios::left);cout << all_items[i].brand << "\t";cout.width(10);cout.setf(ios::left);cout << all_items[i].price << "\t";cout.width(10);cout.setf(ios::left);cout << all_items[i].amount << "\t";cout << endl;}}cout << "********************************************************************************" << endl;} }//用戶搜索商品 擴展功能:可選擇名稱+品牌的搜索方式 void Shopping::search_item() {read_all_the_items(); //讀取庫存string choice; //選擇搜索方式cout << "請選擇商品搜索方式:1.名稱搜索 2.名稱+品牌搜索" << endl;cout << "請輸入商品搜索方式:";cin >> choice;//第一種搜索方式if (choice == "1"){int flag = 0; //表示搜索是否成功cout << "請輸入商品名稱:";string name;cin >> name;for (int i = 0; i < item_num; i++){if (all_items[i].amount > 0&&all_items[i].name == name) //搜索成功{if (flag == 0) //如果是搜索到的第一個商品,輸出表頭{cout << "********************************************************************************" << endl;cout << "ID" << " " << "名稱" << " " << "品牌" << " " << "價格" << " " << "數量" << endl;flag = 1;}//輸出搜索結果cout << all_items[i].ID_1 << "00";if (all_items[i].ID_2 < 10)cout << "0";cout << all_items[i].ID_2 << "\t\t";cout.width(10);cout.setf(ios::left);cout << all_items[i].name << "\t";cout.width(10);cout.setf(ios::left);cout << all_items[i].brand << "\t";cout.width(10);cout.setf(ios::left);cout << all_items[i].price << "\t";cout.width(10);cout.setf(ios::left);cout << all_items[i].amount << "\t";cout << endl;}}if (flag == 1) //搜索成功,輸出表尾cout << "********************************************************************************" << endl;else //搜索失敗,輸出提示語cout << "未找到該商品,試試換一個詞搜索吧!" << endl;}//第二種搜索方式else if(choice=="2"){int flag = 0; //表示搜索是否成功cout << "請輸入商品名稱:";string name;cin >> name;cout << "請輸入商品品牌:";string brand;cin >> brand;for (int i = 0; i < item_num; i++){if (all_items[i].amount > 0&&all_items[i].name == name&& all_items[i].brand == brand) //搜索成功{if (flag == 0) //如果是搜索到的第一個商品,輸出表頭{cout << "********************************************************************************" << endl;cout << "ID" << " " << "名稱" << " " << "品牌" << " " << "價格" << " " << "數量" << endl;flag = 1;}//輸出搜索結果cout << all_items[i].ID_1 << "00";if (all_items[i].ID_2 < 10)cout << "0";cout << all_items[i].ID_2 << "\t\t";cout.width(10);cout.setf(ios::left);cout << all_items[i].name << "\t";cout.width(10);cout.setf(ios::left);cout << all_items[i].brand << "\t";cout.width(10);cout.setf(ios::left);cout << all_items[i].price << "\t";cout.width(10);cout.setf(ios::left);cout << all_items[i].amount << "\t";cout << endl;}}if (flag == 1) //搜索成功,輸出表尾cout << "********************************************************************************" << endl;else //搜索不成功,輸出提示語cout << "未找到該商品,試試換一個詞搜索吧!" << endl;}elsecout << "\033[31;1m錯誤的操作指令!\033[0m" << endl; }//用戶添加商品至購物車 void Shopping::add_shopping_car(int index, user* this_user) {read_all_the_items(); //讀取庫存read_shopping_car(this_user); //讀取該用戶購物車cout << "輸入添加至購物車的商品ID:";string id;cin >> id;//獲取新增商品的ID編號,存入number變量int number;if (id[3] == '0')number = id[4] - '0';elsenumber = (id[4] - '0') + (id[3] - '0') * 10;cout << "輸入添加至購物車的商品數量:";int amount;cin >> amount;int i;for (i = 0; i < this_user->shopping_car_num; i++){if (this_user->shopping_car[i].ID_2 == number){int index = 0; //用來記錄該商品在購物車中的下標for(int j=0;j<item_num;j++)if (all_items[j].ID_2 = number)index = j;if (amount > all_items[index].amount)//添加數量超過庫存,添加失敗{cout << "添加失敗!添加數量超過商品庫存,請修改!" << endl;break;}else //添加成功 {this_user->shopping_car[i].amount += amount;cout << "***************" << endl;cout << "加入購物車成功!" << endl;cout << "***************" << endl;write_shopping_car(this_user);break;} }}if (i == this_user->shopping_car_num) //購物車中未找到對應ID{int j;for(j=0;j<item_num;j++)if (all_items[j].ID_2 == number) //在庫存中找到了對應ID{if (number > all_items[i].amount) //添加數量超過庫存,添加失敗{cout << "添加失敗!添加數量超過商品庫存,請修改!" << endl;break;}else //添加成功,購物車種類加一{this_user->shopping_car_num++;this_user->shopping_car[this_user->shopping_car_num - 1].ID_1 = all_items[j].ID_1;this_user->shopping_car[this_user->shopping_car_num - 1].ID_2 = number;this_user->shopping_car[this_user->shopping_car_num - 1].name = all_items[j].name;this_user->shopping_car[this_user->shopping_car_num - 1].brand = all_items[j].brand;this_user->shopping_car[this_user->shopping_car_num - 1].price = all_items[j].price;this_user->shopping_car[this_user->shopping_car_num - 1].amount = amount;write_shopping_car(this_user);cout << "***************" << endl;cout << "加入購物車成功!" << endl;cout << "***************" << endl;break;}}if(j==item_num){cout << "店鋪中沒找到該ID對應的商品,請檢查是否輸入正確!" << endl;}}//展示購物車cout << "購物車中現在有:" << endl;visit_shopping_car(index, this_user); }//用戶刪除購物車商品 void Shopping::delete_shopping_car(int index, user* this_user) {read_shopping_car(this_user); //讀取該用戶購物車cout << "輸入待刪除的商品ID:";string id;cin >> id;//獲取待刪除商品的ID編號,存入number變量int number;if (id[3] == '0')number = id[4] - '0';elsenumber = (id[4] - '0') + (id[3] - '0') * 10;cout << "輸入待刪除商品的數量:";int amount;cin >> amount;int i;for (i = 0; i < this_user->shopping_car_num; i++){if (this_user->shopping_car[i].ID_2 == number){this_user->shopping_car[i].amount -=amount;write_shopping_car(this_user);cout << "**********" << endl;cout << "刪除成功!" << endl;cout << "**********" << endl;break;}}if(i== this_user->shopping_car_num)cout<<"購物車中沒有該ID對應的商品,請檢查是否輸入錯誤!"<<endl;//展示購物車cout << "購物車中現在有:" << endl;visit_shopping_car(index, this_user);}//用戶查看購物車,先讀取對應的購物車文件再輸出 void Shopping::visit_shopping_car(int index, user* this_user) {read_shopping_car(this_user); //讀入庫存文件//輸出庫存商品數據,數量為0的商品也要輸出if (this_user->shopping_car_num == 0)cout << "當前購物車為空!去別處逛逛吧!" << endl;else{cout << "********************************************************************************" << endl;cout << "ID" << " " << "名稱" << " " << "品牌" << " " << "價格" << " " << "數量" << endl;for (int i = 0; i < this_user->shopping_car_num; i++){//輸出庫存商品信息,通過控制位寬和制表符實現整齊的順序if (this_user->shopping_car[i].amount > 0){cout << this_user->shopping_car[i].ID_1 << "00";if (this_user->shopping_car[i].ID_2 < 10)cout << "0";cout << this_user->shopping_car[i].ID_2 << "\t\t";cout.width(10);cout.setf(ios::left);cout << this_user->shopping_car[i].name << "\t";cout.width(10);cout.setf(ios::left);cout << this_user->shopping_car[i].brand << "\t";cout.width(10);cout.setf(ios::left);cout << this_user->shopping_car[i].price << "\t";cout.width(10);cout.setf(ios::left);cout << this_user->shopping_car[i].amount << "\t";cout << endl;}}cout << "********************************************************************************" << endl;} }//用戶結賬,需要修改用戶購物車、庫存和售貨清單 void Shopping::check_out(int index, user* this_user) {//讀取庫存,購物車,收貨地址和售貨清單read_all_the_items();read_shopping_car(this_user);read_the_sales_list();read_shopping_address();visit_shopping_car(index, this_user);if (this_user->shopping_car_num > 0){if (this_user->address == "none"){string address;cout << "當前收貨地址為空,請設置一個收貨地址:";cin >> address;this_user->address = address;write_shopping_address();cout << "設置成功!" << endl;}cout << "當前收貨地址為:" << this_user->address << endl;float money = 0; //待付金額=sum(單價*數量)for (int i = 0; i < this_user->shopping_car_num; i++)money += this_user->shopping_car[i].price * this_user->shopping_car[i].amount;cout << ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << endl;cout << "\033[31;1m一共需要付款\033[0m" << money << "\033[31;1m元!\033[0m";cout << "\033[31;1m確認付款請按1,取消付款請按0,請輸入操作:\033[0m";int choice;cin >> choice;cout << ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << endl;if (choice == 0)cout << "已取消付款!" << endl;else if (choice == 1){//修改庫存for (int i = 0; i < this_user->shopping_car_num; i++){int num = this_user->shopping_car[i].ID_2;for (int j = 0; j < item_num; j++)if (all_items[j].ID_2 == num)all_items[j].amount -= this_user->shopping_car[i].amount;}write_all_the_items();//修改售貨清單for (int i = 0; i < this_user->shopping_car_num; i++){sale_item_num++;all_sales[sale_item_num - 1].ID_1 = this_user->shopping_car[i].ID_1;all_sales[sale_item_num - 1].ID_2 = this_user->shopping_car[i].ID_2;all_sales[sale_item_num - 1].name = this_user->shopping_car[i].name;all_sales[sale_item_num - 1].brand = this_user->shopping_car[i].brand;all_sales[sale_item_num - 1].price = this_user->shopping_car[i].price;all_sales[sale_item_num - 1].amount = this_user->shopping_car[i].amount;all_sales[sale_item_num - 1].my_user = this_user->name;}write_the_sales_list();//清空用戶購物車for (int i = 0; i < this_user->shopping_car_num; i++)this_user->shopping_car[i].amount = 0;write_shopping_car(this_user);//輸出提示語cout << "**********" << endl;cout << "付款成功!" << endl;cout << "**********" << endl;}}}//拓展功能:用戶修改密碼 void Shopping::change_password(int index, user* this_user) {cout << "請輸入原密碼:";string old_pass;cin >> old_pass;if (old_pass == this_user->password){string new_pass;cout << "請輸入新密碼:";cin >> new_pass;//設置新密碼長度大于三位while (new_pass.size() <= 3){cout << "密碼長度太短,請重新輸入!" << endl;cout << "輸入密碼:";cin >> new_pass;}this_user->password = new_pass;write_all_the_users();cout << "**********" << endl;cout << "修改成功!" << endl;cout << "**********" << endl;}elsecout << "密碼輸入錯誤,修改失敗!" << endl; }//拓展功能:管理收貨地址 void Shopping::change_address(int index, user* this_user) {read_shopping_address(); //讀取收貨地址if (this_user->address != "none") //當前地址不為空{string address;cout << "當前的收貨地址為:" << this_user->address << endl;cout << "修改后的收貨地址為:";cin >> address;this_user->address = address;cout << "**********" << endl;cout << "修改成功!" << endl;cout << "**********" << endl;}else{cout << "當前地址為空,請輸入你的收貨地址:";string address;cin >> address;this_user->address = address;cout << "**********" << endl;cout << "修改成功!" << endl;cout << "**********" << endl;}write_shopping_address(); //寫入文件中 }//完結撒花?





后記

該項目是基于VS2019控制臺和文件實現的,所以想要自己嘗試的同學可以下載我分享在個人空間里的項目文件。另外課程PPT以及用戶手冊PPT我也會上傳在個人空間里,能力有限,程序代碼難免有許多不足,歡迎聯系我交流討論:201830210@smail.nju.edu.cn

本項目所有代碼均為純手打,版權所有,嚴禁抄襲,轉載請注明出處。

總結

以上是生活随笔為你收集整理的【项目源码分享】基于C++实现的网店购物管理系统(VS2019控制台)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

成人电影毛片 | a黄色 | 亚洲免费在线播放视频 | 国产福利一区在线观看 | 中日韩欧美精彩视频 | 亚洲欧美激情插 | 国产精品自产拍在线观看 | 久久国产精品免费视频 | 国产区在线 | 又黄又爽又色无遮挡免费 | 亚洲成人精品 | 日韩理论片 | 久草在线费播放视频 | 国产成人一区二区三区电影 | 天天色天天综合 | 超碰在线免费97 | 国产精品久久久久久电影 | 99精品视频在线看 | 欧美做受高潮电影o | 国产精品一区二区在线播放 | 日批视频在线播放 | 色99网| 91在线观看黄 | 在线播放第一页 | 免费亚洲成人 | ww亚洲ww亚在线观看 | 国产99久久久国产精品成人免费 | 麻豆果冻剧传媒在线播放 | 国产精选在线 | 中文字幕一区二区三区精华液 | 久99精品| 国产精品午夜在线 | 99久久9 | 最近乱久中文字幕 | 成人av在线网址 | 五月婷在线 | 99视频国产精品免费观看 | 精品在线不卡 | 九九九在线 | 超碰在线公开 | 国产一二三区在线观看 | 久久久国产精品人人片99精片欧美一 | 国产高清不卡 | 99久久久国产精品免费99 | www色,com | 日韩欧美在线视频一区二区 | 97电影网手机版 | 国内久久视频 | 欧美在线视频第一页 | 欧美日韩国产亚洲乱码字幕 | 91视频在线观看大全 | 精品久久久久免费极品大片 | 久草青青在线观看 | 国产精品入口麻豆www | 免费高清无人区完整版 | 色综合久久网 | 国产区在线 | 日本精品在线看 | 亚洲一区二区三区在线看 | 亚洲 中文 在线 精品 | 91麻豆精品国产91久久久久 | 日本久久不卡视频 | 偷拍福利视频一区二区三区 | 91正在播放| 成人综合日日夜夜 | 手机av在线网站 | 天天干夜夜爽 | 摸阴视频 | 成人a大片 | 天天插伊人 | 国产在线一线 | 国产精品免费一区二区 | 一级免费av | 中文字幕在线免费97 | 成年人国产视频 | 91一区啪爱嗯打偷拍欧美 | 500部大龄熟乱视频使用方法 | 国产91欧美 | 天天干夜夜操视频 | 综合色影院 | 亚州国产视频 | 亚洲人人爱 | av大全免费在线观看 | 27xxoo无遮挡动态视频 | 日韩精品久久久久久久电影竹菊 | 丁香激情综合 | 一区二区三区中文字幕在线 | 亚洲国产欧美一区二区三区丁香婷 | 婷婷伊人五月天 | 99爱在线 | 人人澡澡人人 | 国产高清在线精品 | 亚洲精品国产精品国自 | 伊人婷婷在线 | 黄色91免费观看 | av高清一区二区三区 | 久久久免费精品 | 最新日韩视频 | 日韩精品中字 | www.av免费观看 | 亚洲国产精品成人精品 | 在线观看蜜桃视频 | 国产香蕉在线 | 久久国产精品二国产精品中国洋人 | 午夜精品视频在线 | 黄色avwww | 成人一级免费电影 | 国产精品v a免费视频 | 91热这里只有精品 | 成人黄视频| 天天插夜夜操 | 四虎成人免费影院 | 国产免费小视频 | 欧美污网站 | 色爽网站| 蜜臀av在线一区二区三区 | 97香蕉超级碰碰久久免费软件 | 日韩精品一区二区三区视频播放 | 免费能看的av | 久久久久久久久久久成人 | 免费激情在线电影 | 亚洲最大av在线播放 | 免费美女久久99 | 91精品999 | 日韩一二三区不卡 | 天天干天天射天天爽 | 国产在线观看 | 亚洲在线网址 | 在线免费观看黄色小说 | 狠狠干,狠狠操 | 超碰在线97免费 | 国产经典av| 四虎5151久久欧美毛片 | 高清国产在线一区 | 视频一区二区在线观看 | 国产中文字幕视频 | 精品国产视频在线观看 | 久久免费电影网 | 欧美最猛性xxxx | 激情影音先锋 | 精品国产一区二区三区四 | 中文字字幕在线 | 亚洲免费观看在线视频 | 97福利在线观看 | 日韩av不卡在线观看 | 久久久久久久久久久电影 | 国产视频1区2区 | 中文字幕在线日本 | 成年人网站免费观看 | 99在线免费观看 | 日本在线观看中文字幕无线观看 | 97视频免费在线看 | 精品极品在线 | 亚洲国产免费av | 国产精品影音先锋 | 98精品国产自产在线观看 | 欧美日本国产在线观看 | 天天射一射 | 在线观看v片 | 久久99久久久久久 | 国产精品久久久久久久久久三级 | 97成人资源站 | 中文字幕欧美三区 | 久久中文字幕视频 | 丝袜一区在线 | 99久久久国产精品免费99 | 久久99久久99精品免视看婷婷 | 日韩电影在线观看一区二区三区 | 久久久久久欧美二区电影网 | 激情综合五月婷婷 | 免费在线精品视频 | 欧美久草网 | a√天堂资源 | 狠狠干免费 | 99视频| 久久xxxx| 午夜美女福利直播 | 97视频亚洲 | 国产色综合 | 五月天婷婷综合 | 国产色一区 | 日韩av片无码一区二区不卡电影 | 久久久国产一区二区三区四区小说 | 久草免费在线视频观看 | 国产精品久久久久久久毛片 | 亚洲精品日韩在线观看 | 婷婷在线观看视频 | 欧美另类交人妖 | 久久免费视频99 | 亚洲国产成人在线观看 | 四虎国产精| 国产高清av免费在线观看 | 国产91精品一区二区麻豆网站 | 国产小视频在线观看 | 久久久久亚洲精品 | 国产中文字幕久久 | 亚洲综合射 | 在线观看视频中文字幕 | 公开超碰在线 | 美女网站免费福利视频 | 激情中文字幕 | 日本性xxxxx 亚洲精品午夜久久久 | 27xxoo无遮挡动态视频 | 日日干天天插 | 免费观看一级特黄欧美大片 | 在线免费三级 | 午夜神马福利 | 国产精品一区二区久久精品爱微奶 | 娇妻呻吟一区二区三区 | 综合亚洲视频 | 亚洲精品久久久蜜桃直播 | 亚洲伊人av| 色综合天天视频在线观看 | 久久久久成人精品免费播放动漫 | 在线播放日韩av | 特级毛片在线观看 | 日韩另类在线 | 最近日本中文字幕 | 日韩在线视频观看 | 久久综合成人网 | 国产在线1区 | 欧美片一区二区三区 | 五月婷婷丁香色 | 久精品在线观看 | 久久免费精品一区二区三区 | 日韩黄色在线观看 | 亚洲永久字幕 | 色欲综合视频天天天 | 久久草在线精品 | 国产精品男女视频 | 伊人狠狠色丁香婷婷综合 | 久久嗨 | 国产一级在线观看 | www亚洲一区 | av片中文 | 黄色特级片 | 久久精品视频在线观看免费 | 日韩精品一区在线播放 | 日韩一级黄色大片 | 色噜噜在线观看视频 | 国产成人精品999在线观看 | 韩国在线视频一区 | 国产精品免费高清 | 日韩在线高清视频 | 97在线观看免费视频 | 激情视频一区二区三区 | 99久久婷婷国产 | 久久综合久久88 | 91丨九色丨国产丨porny精品 | 91丨九色丨国产在线观看 | 亚洲日日日 | 成人av午夜 | 国产精品欧美一区二区 | 久久激情精品 | 日韩a级黄色片 | 日本成人免费在线观看 | 国产成人精品一区二区在线观看 | 久久综合色8888 | 中文字幕国产一区二区 | 久久久久亚洲最大xxxx | 中文字幕a在线 | 色婷婷av一区二 | 日日操夜夜操狠狠操 | av中文字幕网址 | 成年人在线视频观看 | 五月天堂网 | 天天色天天综合网 | 91在线色 | 久久免费中文视频 | 亚洲日本va午夜在线影院 | 日韩精品一区二区三区免费观看视频 | 国产一区二区三区在线 | 国产又粗又猛又黄又爽 | 日韩精品中文字幕久久臀 | 狠狠地操| 在线岛国av | 手机看片中文字幕 | 99久久国产免费,99久久国产免费大片 | 91视频免费国产 | 69精品| 国产精品女同一区二区三区久久夜 | 中日韩在线视频 | 中文永久免费观看 | 五月天婷亚洲天综合网精品偷 | 人人爽人人爱 | 国产在线播放一区二区三区 | 又黄又爽的视频在线观看网站 | 久久精品视频在线观看 | 在线国产激情视频 | 91精品伦理| 久草国产在线 | 日韩精品免费在线观看 | 99国产精品久久久久老师 | 日本成人a | 狠狠色丁香久久综合网 | 亚洲国产精品久久久久 | 久久综合九色综合97婷婷女人 | 亚州精品视频 | www日韩视频 | 精品一区二区三区四区在线 | 国产1级视频 | 免费一级片在线观看 | 久久99精品久久久久久秒播蜜臀 | 亚洲乱码在线观看 | 亚洲精品网址在线观看 | 中文av免费 | 美女免费视频一区二区 | 久久天堂网站 | 国产一级片免费视频 | 国产成人a v电影 | 区一区二区三区中文字幕 | 国产精品一区二区久久精品爱涩 | 99re在线视频观看 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 黄色午夜网站 | 国产色综合天天综合网 | 一区二区精品在线观看 | 欧美激情综合网 | 狠狠色婷婷丁香六月 | 日本精品久久 | www五月婷婷| 91天堂在线观看 | 国产一区不卡在线 | 欧美淫aaa免费观看 日韩激情免费视频 | 国产精品一区二区久久久 | 免费在线91 | 人人干网站 | 欧美日韩一级久久久久久免费看 | 日本高清中文字幕有码在线 | 最新色站 | 中文字幕av有码 | 在线中文字幕播放 | 中文字幕日韩电影 | 久热免费 | 日韩欧美高清免费 | 又污又黄网站 | 天天色成人网 | 午夜国产福利在线观看 | 伊人资源站 | 亚洲精品高清视频在线观看 | av在线a| 亚洲精品中文字幕视频 | 亚洲精品视频在线观看免费视频 | 天天操天天干天天爱 | 亚洲精品中文字幕视频 | 欧美日本一二三 | 午夜久久影视 | 日日操日日| 91视频啊啊啊 | 激情综合色综合久久 | 亚洲精品国产精品久久99 | 黄色大片国产 | 久久三级毛片 | 久久精品视频2 | 99国产视频在线 | 波多野结衣一区 | 日韩免费一区 | 在线观看中文字幕一区 | 丝袜美腿在线 | 深夜免费福利网站 | 在线精品观看国产 | 欧美做受高潮 | 国产在线 一区二区三区 | 激情五月六月婷婷 | 亚洲精品字幕在线 | 91精品啪在线观看国产81旧版 | 亚洲午夜久久久久 | 国产区精品区 | 国产伦精品一区二区三区无广告 | av中文字幕av | 肉色欧美久久久久久久免费看 | 亚洲成人av在线电影 | 成人国产精品久久久久久亚洲 | 欧美日韩中 | 91麻豆产精品久久久久久 | 婷婷在线免费视频 | 国产精品99精品久久免费 | 99精品美女| 国产在线视频资源 | 欧美国产日韩一区 | 国产一级久久 | 亚洲国产成人精品电影在线观看 | 午夜在线免费观看 | 黄色大片视频网站 | 亚洲国产精品500在线观看 | 欧美日韩高清一区二区 | 久久久久综合精品福利啪啪 | 国产片免费在线观看视频 | 久久久久久久久影院 | 天天色欧美 | 久热色超碰 | 91传媒在线播放 | 日韩免费视频观看 | 天堂av在线7 | 天天天天综合 | 九九免费在线观看 | 美女黄视频免费看 | 国产一级二级视频 | 在线亚洲成人 | 在线高清av | 中国美女一级看片 | 亚洲日本在线一区 | 狠狠躁夜夜躁人人爽超碰91 | 日韩一区精品 | 精品嫩模福利一区二区蜜臀 | 欧美日韩久久久 | 久久国产精品久久w女人spa | 中文一区二区三区在线观看 | 免费日韩三级 | 亚洲国产小视频在线观看 | 日韩一区二区三免费高清在线观看 | 欧美在线91 | 伊人超碰在线 | 欧美性极品xxxx娇小 | 日韩天天操 | 久黄色 | 在线国产日韩 | 97在线视频网站 | 97成人精品视频在线观看 | 欧美韩国日本在线 | 91人人澡人人爽人人精品 | 国产福利91精品一区 | 国产白浆视频 | 亚洲日本成人网 | 91大片成人网 | 亚洲在线免费视频 | 在线免费黄色片 | 国产精品久久久久久一区二区三区 | 在线观看亚洲视频 | 九色91在线视频 | 亚洲欧美日韩精品一区二区 | 久久五月婷婷丁香 | 91在线免费看片 | 日韩黄色免费 | 国产精品爽爽爽 | 在线观看91精品视频 | 久久香蕉电影网 | 六月婷婷久香在线视频 | 国产在线视频资源 | 欧美大码xxxx | 亚洲 欧美日韩 国产 中文 | 国产精品亚洲成人 | 久久一区二区三区四区 | 中文字幕日本电影 | 国产成人久久精品77777 | av性网站| 国产一级电影网 | av一级在线观看 | 在线三级av | 久久久国产电影 | 91九色porny蝌蚪主页 | 亚洲精品午夜久久久久久久久久久 | 久久综合网色—综合色88 | 一区二区三区四区精品 | 99精品视频在线观看免费 | 成人在线观看资源 | 在线国产99| 黄色网址中文字幕 | 亚洲国产片色 | 最近日本韩国中文字幕 | 国产精品自产拍在线观看网站 | 国产亚洲片 | 国内精品在线看 | 亚洲激情视频在线 | 天天操夜夜叫 | 欧美久久久久 | 正在播放国产一区 | 久久精品99久久久久久2456 | 亚洲视频999 | 国产高清日韩欧美 | 精品免费在线视频 | av在线播放中文字幕 | 国产精品99精品久久免费 | 在线观看久草 | 日韩午夜三级 | 天天亚洲综合 | 69久久99精品久久久久婷婷 | 九月婷婷综合网 | 日韩精品1区2区 | 国产精品国产三级国产不产一地 | 免费精品在线观看 | 91av在线不卡 | 欧美色就是色 | 爱爱av网 | 亚洲国产手机在线 | 免费在线成人av | 九九热免费视频在线观看 | 成人一区二区在线观看 | 91精品影视 | 久久久久久综合网天天 | 国产在线视频一区二区三区 | 国产成人一区二区三区 | 欧美国产精品一区二区 | 亚州国产视频 | 四虎在线观看 | 欧美激情综合五月色丁香 | 久久国产精品免费一区二区三区 | av黄色av| 久久伊人八月婷婷综合激情 | 中文字幕在线久一本久 | 亚洲精品字幕 | 波多野结衣电影一区二区三区 | 国产精品自在欧美一区 | 中文字幕高清免费日韩视频在线 | 五月天色中色 | 欧美日韩在线免费观看视频 | 国产精品日韩欧美 | 免费在线观看91 | 特级a毛片 | 在线观看国产区 | 激情网五月天 | 国内一级片在线观看 | 91成人精品一区在线播放69 | 欧美美女一级片 | 亚洲精区二区三区四区麻豆 | 日韩精品视频在线观看免费 | 中文字幕久久久精品 | 日韩理论片在线观看 | 成人免费观看完整版电影 | 久久高清av | 午夜10000| 69国产盗摄一区二区三区五区 | 韩国在线一区 | 午夜美女av| 高清色免费 | 樱空桃av | 天天操天天射天天爱 | 久久黄网站 | 玖玖在线精品 | 久久伊人热 | 天天干天天天 | 亚洲三级在线免费观看 | 免费午夜在线视频 | 欧美精品一区在线 | 成人黄色在线 | 国产91学生粉嫩喷水 | 成人在线免费观看网站 | 国产手机视频在线 | 蜜桃视频精品 | 色av资源网 | 国产伦理久久 | 日本三级全黄少妇三2023 | 黄色毛片视频 | 日躁夜躁狠狠躁2001 | 在线观看视频日韩 | 在线免费观看视频一区 | 婷婷视频 | 日韩av播放在线 | 日韩免费在线观看视频 | www.久久久com | 成人在线观看免费视频 | 日韩网页 | 久久精品人人做人人综合老师 | 亚洲理论片在线观看 | 中文字幕欧美三区 | 13日本xxxxxⅹxxx20 | 91视频免费看网站 | 国产精品视频免费看 | 成年人天堂com | 天天天色综合 | 热精品| 国内精品久久久久久久久久清纯 | 狠狠狠狠狠狠狠狠干 | 日本激情中文字幕 | 97在线影视 | 天天玩天天干 | mm1313亚洲精品国产 | 亚洲精品国产精品国自产观看浪潮 | 国产精品久久久久久久久久尿 | 日韩黄色软件 | 亚洲欧美日韩精品久久久 | 免费av看片 | 国产高清视频色在线www | 男女激情片在线观看 | 国产一级黄色片免费看 | 免费在线成人av电影 | 国产又粗又猛又爽又黄的视频免费 | 国产欧美高清 | 欧美一级片免费播放 | 日韩r级电影在线观看 | 蜜桃视频精品 | 欧美性精品 | 超碰97免费观看 | 精品国产成人 | 欧美精品被 | 国产成人99久久亚洲综合精品 | 国产精品一区二区免费看 | 国产乱视频 | 成人片在线播放 | 久久在线观看 | 久久久久色 | 久久九九影视 | 成人av片免费看 | 日韩中文字幕视频在线 | 中文字幕免费国产精品 | 99视频网址| 99热官网| 久草视频99 | 手机av在线网站 | 久久免费视频这里只有精品 | 日韩综合一区二区 | 欧美 日韩 国产 成人 在线 | 国产超碰97 | 伊人狠狠干 | 天天草天天摸 | 久久久婷 | 97国产精品久久 | av网站有哪些 | 黄色成品视频 | 国产激情久久久 | 97色资源 | 国内成人精品2018免费看 | 天天干,天天射,天天操,天天摸 | 黄色片免费在线 | 香蕉视频在线网站 | 国产精品毛片久久久久久 | 激情av一区二区 | 日韩网站视频 | 不卡精品视频 | 91xav| 久久国产剧场电影 | 91av综合 | 欧美三级高清 | 婷婷久久五月天 | 久久久久久久国产精品视频 | 免费中文字幕在线观看 | 夜夜爽www | 在线视频91 | 91九色蝌蚪国产 | 久久免费国产精品1 | 日韩高清观看 | 国产又粗又猛又爽又黄的视频先 | 99精品免费视频 | 国产婷婷在线观看 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 日韩一级黄色大片 | 一区二区精品在线 | 国色天香第二季 | 日韩在线三区 | 黄在线免费观看 | 午夜精品一区二区三区在线视频 | 久久亚洲国产精品 | 丁香色婷 | 中文视频在线播放 | 婷婷在线色 | 日韩欧美一区二区在线观看 | 国产国产人免费人成免费视频 | 久久久99精品免费观看乱色 | 久久久国产精品人人片99精片欧美一 | 国产高清亚洲 | 久久精品欧美一区二区三区麻豆 | 欧美黄网站| 综合网天天色 | 狠狠色伊人亚洲综合网站野外 | 日韩欧美国产精品 | 色婷婷免费视频 | 久久国产精品免费观看 | 九色视频网址 | 在线国产福利 | 久久久亚洲麻豆日韩精品一区三区 | 久草a视频| av三级av | 在线免费91 | 五月天婷婷丁香花 | 亚洲精品国产精品国自 | 欧美日韩中文字幕视频 | 久久艹久久 | a久久免费视频 | 91精品国产综合久久婷婷香蕉 | 成人小视频在线观看免费 | www亚洲国产| 久久狠狠婷婷 | 亚洲夜夜网 | 免费观看91视频大全 | 五月婷婷六月丁香 | 日韩欧美xxx | 久久国产一区二区三区 | 免费在线观看亚洲视频 | 五月天电影免费在线观看一区 | 怡春院av| 欧美日韩国语 | 国产男男gay做爰 | 伊人首页 | 久久国产精品一二三区 | 婷婷在线五月 | 久久a免费视频 | 日韩欧美在线中文字幕 | 成人久久18免费网站 | 国产精品一区二区免费视频 | 夜夜操天天干, | 国产精品一区久久久久 | 免费的国产精品 | www.夜夜草| 日日插日日干 | 日本特黄一级片 | 国产精品国内免费一区二区三区 | 免费看国产黄色 | 成人免费一级 | 日韩最新理论电影 | 日韩电影精品一区 | 欧美色精品天天在线观看视频 | 福利久久 | 婷婷国产在线观看 | 亚洲特级片 | 美女免费视频一区 | 久久久久久久影视 | 黄污在线看 | 成人sm另类专区 | 色www免费视频 | 精品国产综合区久久久久久 | 国产日韩中文字幕 | 成人免费一区二区三区在线观看 | 久久久久久久电影 | 亚洲二级片| 国产不卡在线观看视频 | 欧美va天堂va视频va在线 | 亚洲区另类春色综合小说校园片 | 亚洲精品一区二区三区新线路 | 欧美大片www| 韩国精品一区二区三区六区色诱 | 久久久久久久久久久影视 | 黄污视频网站 | 人人舔人人爽 | 免费观看的av网站 | 亚洲乱亚洲乱亚洲 | 在线99| 91精品免费视频 | 成人久久久电影 | 日韩高清在线一区二区 | 亚洲精品福利在线观看 | 亚洲人成网站精品片在线观看 | 在线精品视频免费播放 | 国产三级精品在线 | 亚洲四虎| 日韩精品极品视频 | 日韩电影在线观看一区二区 | 欧美国产不卡 | 精品国产乱码久久久久 | 国产精品久久久久亚洲影视 | 97精品超碰一区二区三区 | 99精品免费视频 | 九九热精品视频在线播放 | 日本狠狠色 | 青春草视频 | 99这里只有久久精品视频 | 麻豆一级视频 | 久久久久99精品国产片 | 久久久亚洲成人 | 日韩久久精品一区二区 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 中文字幕色综合网 | 伊人久久婷婷 | 国产亚州精品视频 | 欧美一区在线观看视频 | 爱射综合 | 超碰免费97 | 在线日韩中文字幕 | 欧美先锋影音 | 国产精品久久久久久久久久妇女 | 亚洲精品h | 中文字幕在线播放一区 | 色吊丝av中文字幕 | 免费日韩一区二区三区 | 精品国产色 | www.国产高清 | 国产高清亚洲 | 欧美日韩国产欧美 | 日本久久91 | 99视 | 日韩电影中文,亚洲精品乱码 | 狠狠色噜噜狠狠狠狠2021天天 | 国产精品第二页 | 国内精品久久久久影院日本资源 | 欧美福利久久 | 9999激情 | 婷婷国产视频 | 日韩av网页 | av三级在线免费观看 | 欧美三级在线播放 | 高清视频一区 | 日本在线观看中文字幕无线观看 | 视频二区在线视频 | 亚洲v欧美v国产v在线观看 | 欧美日韩精品在线播放 | 午夜精品电影一区二区在线 | av在线电影免费观看 | 黄色成人在线 | 四虎国产精品成人免费4hu | 色综合久久悠悠 | 久久综合狠狠综合久久狠狠色综合 | 日韩高清在线看 | 狠狠操夜夜 | 日韩高清观看 | 一区二区三区精品久久久 | 中文字幕国产精品一区二区 | 五月婷婷视频 | 色婷婷电影 | 国产二区免费视频 | 韩日av一区二区 | 蜜桃视频在线观看一区 | 狠狠躁夜夜躁人人爽视频 | 欧美大荫蒂xxx | av免费观看高清 | 91最新视频 | 97超碰人 | 在线观看亚洲电影 | 国产片免费在线观看视频 | 亚洲精品乱码白浆高清久久久久久 | 日韩视频中文字幕在线观看 | 日韩动态视频 | 久久av免费 | 超碰com| 一区二区三区日韩在线观看 | 亚洲欧美视频 | 久久久久观看 | 国产96视频| 国产一区网址 | 国产精品99久久久精品免费观看 | 蜜臀av性久久久久av蜜臀妖精 | bayu135国产精品视频 | 久久综合免费视频影院 | 黄色综合 | 欧美一级电影片 | 国产黄av| 五月色综合 | 免费看av在线 | 六月丁香伊人 | 久久久免费精品国产一区二区 | 久久只精品99品免费久23小说 | 97在线精品| 在线成人国产 | 国产美女主播精品一区二区三区 | 99亚洲国产 | 天天操天天干天天操天天干 | 国产91探花| 热99在线视频 | 狠狠操综合 | av超碰在线| 国产精品久久久久久久久久东京 | 国产一级视屏 | 亚洲美女精品区人人人人 | 在线观看国产中文字幕 | 精品中文字幕在线观看 | 最新av网址在线观看 | 国产精品久久久久一区二区国产 | 中文字幕一区二区三区四区在线视频 | 天天干天天玩天天操 | 日韩高清在线不卡 | 热久久精品在线 | 91av网址| 日本最新高清不卡中文字幕 | 日韩电影一区二区三区在线观看 | 国产中文a | 黄色精品久久 | 91中文字幕在线观看 | 成人av片免费观看app下载 | 国产一区自拍视频 | 久久久www成人免费精品 | 久久高清国产 | 亚洲蜜桃在线 | 干干干操操操 | 亚洲在线网址 | 日韩免费观看高清 | 久艹视频在线免费观看 | 国产中文字幕网 | 亚洲在线成人精品 | 香蕉视频在线视频 | 精品国产自在精品国产精野外直播 | 亚洲国产免费看 | 日韩一区二区三免费高清在线观看 | 欧美一级片 | 色多视频在线观看 | 久一久久| av在线播放不卡 | 国产成人一区在线 | 国产区高清在线 | 久久成人亚洲欧美电影 | 美女黄频在线观看 | 一级黄色av| 高清av影院 | 99精品欧美一区二区三区黑人哦 | 深爱婷婷久久综合 | 国产色婷婷精品综合在线手机播放 | 久久久一本精品99久久精品 | 亚洲一级片 | 国产99久久99热这里精品5 | 精品欧美一区二区在线观看 | se视频网址 | 丁香六月综合网 | 日韩成人邪恶影片 | 黄色成人91 | 麻豆视频91 | 亚洲草视频 | 久久精品超碰 | 日韩大片免费观看 | 黄污网站在线 | 又爽又黄又无遮挡网站动态图 | 国产成人一二片 | 日韩电影在线观看一区二区 | 国语黄色片 | 精品99免费 | 国产精品白丝jk白祙 | 97手机电影网 | 国产精品成人一区二区三区吃奶 | 日批在线观看 | 国产精品亚洲人在线观看 | 亚洲第一中文网 | 精品一区二区三区在线播放 | 国产精品久久久久永久免费 | 国产视频在线免费 | 国产美女久久久 | 日韩欧美在线免费观看 | av在线免费观看网站 | 黄网在线免费观看 | 精品久久免费看 | 天天射色综合 | 久久国产精品影视 | 欧美亚洲一级片 | 伊人五月婷 | 黄色毛片观看 | 少妇做爰k8经典 | 国产香蕉97碰碰碰视频在线观看 | 激情电影影院 | 中文字幕第一 | 亚洲 中文 在线 精品 | 免费在线黄网 | 成人a免费 | 天天鲁天天干天天射 | 国内精品久久久久影院日本资源 | av国产在线观看 | 国产一区二区日本 | 日韩欧美专区 | 日韩在线国产 | 国产v欧美| 亚洲午夜精 | 网站在线观看日韩 | 国产女教师精品久久av | 91视频a| 97综合视频 | 亚洲国产美女久久久久 | 久久久免费网站 | 日韩精品免费一区二区 | 一区二区三区四区在线 | 美女视频一区 | 欧美一级看片 | 人人射人人 | 91女神的呻吟细腰翘臀美女 | 精品视频在线视频 | 久久久久久蜜av免费网站 | 亚洲激情视频在线观看 | 精品久久久久久亚洲综合网 | 亚洲精品综合久久 | 444av| 久草视频在线免费看 | 久久久官网| 欧美黄在线| 久久九九久久 | 亚洲精品国产精品国 | 久久久精华网 | 久久久污| 黄色在线视频网址 | www.国产在线 | 成人影片在线免费观看 | 97电影网手机版 | 中文字幕av影院 | 天天操综合 | 狠狠操狠狠插 | 久草热久草视频 | 国产精品久久久久久麻豆一区 | 99性视频 | 国产精品视频免费观看 | 亚洲精品字幕在线 | 日日夜夜精品网站 | 日韩av电影国产 | www.天天射.com| 亚洲不卡在线 | 久久免费高清视频 | 97视频亚洲| 日本中文字幕在线观看 | 99热9| 免费看一及片 | 一区二区影视 | 婷婷5月激情5月 | 伊人伊成久久人综合网站 | 精品一区二区免费在线观看 | 激情偷乱人伦小说视频在线观看 | 激情欧美一区二区免费视频 | 夜夜操天天干 | 91精品综合在线观看 | 999久久久精品视频 日韩高清www | 91视频电影 | 99精品视频在线播放免费 | 69xx视频| 国内久久久 | 精壮的侍卫呻吟h | 亚洲午夜久久久久久久久 | 欧美a免费 | 久久久久久久久久久黄色 |