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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

VS+MYSQL考试管理系统(白piao速成版)

發布時間:2023/12/29 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VS+MYSQL考试管理系统(白piao速成版) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

考試管理系統總共分為兩個部分,包含客戶端和服務端。

客戶端主要實現教師或學生的基本操作,服務端主要實現對客戶端的監聽和實時同步。

一、前期準備工作

1,新建兩個VS項目,命名為server和client;

2,分別在兩個項目內各個新建一個cpp文件,命名也可以同步server和client;

3,對兩個項目分別進行詳細的環境配置以對自己的mysql連接成功最準備,參考實訓第一天(VS連接數據庫)_擇啟的博客-CSDN博客

4,開始cv代碼(長篇警告)

服務器(server)?

#include "stdafx.h" #include <stdio.h> #include <iostream> #include <string> #include <cstring> #include <ctime> #include <math.h> #include <WinSock2.h> // 進行網絡編程需要winsock2.h #include <mysql.h> #include <winsock.h> #include <wincrypt.h> #pragma comment(lib,"libmysql.lib") #pragma comment(lib,"wsock32.lib") #pragma comment(lib, "ws2_32.lib") #pragma warning(disable:4996)using namespace std; MYSQL mysql; MYSQL_RES* res; MYSQL_ROW pp; MYSQL_FIELD* fd; string Sans[100], Nans[100], SigScore[100]; char recvBuff[200]; char sendBuff[200]; int TotalScore; char field[32][32]; bool ConnectDatabase(); bool CreatUser(const char* user); string LogIn(string lonname, string logpsw); bool ModifyQue(); bool CreatQue(const char* user); bool DelectUser(const char* user); bool ModifyUser(const char* user); bool SelectUser(const char* ss); bool CreatTest(int flag); double round(double r); int add = 0; string logname, logpsd; SOCKET serverSocket; HANDLE hMutex; SOCKET connectSocket; int flag_connect = 1; DWORD WINAPI Fun_Recv(LPVOID); DWORD WINAPI Fun_Send(LPVOID); int main(int argc, char* argv[]) {ConnectDatabase();/*使用socket()創建TCP套接字(socket)。TCP的套接字就是IP號加端口號。其中,IP號是網絡層用來尋找主機的;端口號是運輸層用來找進程的;在網絡層找到主機后就依據端口號找到相應進程從而實現用戶與服務器的通信。*///加載套接字WSADATA wsaData;int iRet = WSAStartup(MAKEWORD(2, 2), &wsaData);if (iRet != 0){WSACleanup();cout << "套接字庫加載失敗" << endl;return -1;}//第一步:創建套接字serverSocket = socket(AF_INET, SOCK_STREAM, 0);if (serverSocket == INVALID_SOCKET){cout << "套接字創建失敗" << endl;return -1;}else{cout << "套接字創建成功" << endl;}//第二步:初始化服務器地址族變量SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");addrSrv.sin_family = AF_INET;addrSrv.sin_port = htons(8000);//第三步:綁定iRet = bind(serverSocket, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));if (iRet == SOCKET_ERROR){cout << "綁定失敗" << endl;return -1;}else{cout << "綁定成功" << endl;}//第四步:監聽,將套接字設為監聽模式,準備接收客戶端請求(listen)iRet = listen(serverSocket, 10);if (iRet == SOCKET_ERROR){cout << "開啟監聽失敗" << endl;return -1;}else{cout << "開啟監聽成功" << endl;}//第五步:接收連接,等待客戶請求到來: 當請求到來后,接受連接請求,返回一個對應于此次連接的新的套接字(accept)SOCKADDR_IN addrClient;int len = sizeof(SOCKADDR);connectSocket = accept(serverSocket, (SOCKADDR*)&addrClient, &len);if (INVALID_SOCKET == connectSocket){cout << "接受連接失敗" << endl;return -1;}else{cout << "接受連接成功" << endl;}//句柄使能準確地訪問到對象//HANDLE Send_Thread = CreateThread(NULL,0,Fun_Send,0,0,NULL);HANDLE Recv_Thread = CreateThread(NULL, 0, Fun_Recv, 0, 0, NULL);//CloseHandle(Send_Thread);//關閉句柄CloseHandle(Recv_Thread);//關閉句柄hMutex = CreateMutex(NULL, FALSE, L"mutex");//創建互斥量while (flag_connect){Sleep(100);}system("pause");return 0; } bool SelectQue(const char* ss); bool ConnectDatabase() {mysql_init(&mysql);if (mysql_real_connect(&mysql, "localhost", "root", "123456", "test", 3306, NULL, 0)){cout << "Connect OK" << endl;return true;}else{cout << "Connect Fail" << mysql_error(&mysql) << endl;return false;}} bool CreatUser(const char* user) {if (!(mysql_query(&mysql, user))){cout << "Connect OK" << endl;return true;}else{cout << "Connect Fail" << endl;return false;} } string LogIn(string logname, string logpsw) {string s = "select * from user where name= '" + logname + "' and pwd='" + logpsw + "'";const char* ss = s.c_str();mysql_query(&mysql, ss);res = mysql_store_result(&mysql);int num = mysql_num_rows(res);if (num == 0){logname = "用戶不存在";return logname;}while (pp = mysql_fetch_row(res)){if (pp[1] == logname && pp[2] == logpsw){cout << "登陸成功" << endl;cout << "登錄角色為:" << pp[3] << endl;}return pp[3];}} bool CreatQue(const char* user) {if (!(mysql_query(&mysql, user))){cout << "Connect OK" << endl;return true;}else{cout << "Connect Fail" << endl;return false;} } bool ModifyUser(const char* user) {if (mysql_query(&mysql, user)){cout << "修改失敗" << mysql_error(&mysql) << endl;return false;}else{cout << "修改成功" << endl;return true;} } bool DelectUser(const char* user) {if (mysql_query(&mysql, user)){cout << "Delect Fail" << mysql_error(&mysql) << endl;return false;}else{cout << "Delect OK" << endl;return true;} } bool SelectUser(const char* ss) {mysql_query(&mysql, "set names gbk");mysql_query(&mysql, ss);res = mysql_store_result(&mysql);add = mysql_num_rows(res);send(serverSocket, sendBuff, sizeof(sendBuff), 0);for (int i = 0; fd = mysql_fetch_field(res); i++)strcpy_s(field[i], fd->name);int j = mysql_num_fields(res);for (int i = 0; i < j; i++) {printf("%10s\t", field[i]);send(serverSocket, field[i], sizeof(field[i]), 0);}cout << endl;while (pp = mysql_fetch_row(res)){for (int i = 0; i < j; i++) {send(serverSocket, pp[i], sizeof(pp[i]), 0);printf("%10s\t", pp[i]);}cout << endl;}return true; } bool CreatTest(int flag) {string r, qs;int* number = new int[flag + 1];getchar();string s = "select * from que";const char* ss = s.c_str();mysql_query(&mysql, "set names gabk");mysql_query(&mysql, ss);res = mysql_store_result(&mysql);int num = (int)mysql_num_rows(res);unsigned seed;seed = (int)time(0);srand(seed);for (int i = 0; i < flag; i++){number[i] = (int)round(rand() % num + 1);for (int j = 0; j < i; j++){if (number[j] == number[i])i--;}}for (int i = 0; i < flag; i++){string number1 = to_string(number[i]);r = "select * from que where id='" + number1 + "'";const char* rr = r.c_str();mysql_query(&mysql, rr);res = mysql_store_result(&mysql);pp = mysql_fetch_row(res);std::string aque, aA, aB, aC, aD;aque = pp[1];aA = pp[2];aB = pp[3];aC = pp[4];aD = pp[5];Sans[i] = pp[6];SigScore[i] = pp[7];qs = to_string(i + 1) + ")" + aque + "( )";strcpy_s(sendBuff, qs.c_str());send(connectSocket, sendBuff, 200, 0);qs = "A:" + aA + " " + "B:" + aB + " " + "C:" + aC + " " + "D:" + aD;strcpy_s(sendBuff, qs.c_str());send(connectSocket, sendBuff, 200, 0);qs = "請輸入答案:";strcpy_s(sendBuff, qs.c_str());send(connectSocket, sendBuff, 200, 0);recv(connectSocket, recvBuff, 200, 0);Nans[i] = recvBuff[0];}TotalScore = 0;for (int i = 0; i < flag; i++){qs = (i + 1) + ":" + Sans[i];strcpy_s(sendBuff, qs.c_str());send(connectSocket, sendBuff, 200, 0);if (Nans[i] == Sans[i]){int x = atoi(SigScore[i].c_str());TotalScore += x;}}qs = to_string(TotalScore);strcpy_s(sendBuff, qs.c_str());send(connectSocket, sendBuff, 200, 0);delete number;return true; } double round(double r) {return(r > 0.0) ? floor(r + 0.5) : ceil(r - 0.5); } bool SelectQue(const char* ss) {mysql_query(&mysql, "set names gbk");mysql_query(&mysql, ss);res = mysql_store_result(&mysql);mysql_query(&mysql, ss);MYSQL_RES* result;result = mysql_store_result(&mysql);int nfd = mysql_num_fields(result);//返回結果集中的行數int nrw = mysql_num_rows(result);//返回結果集中的行數MYSQL_ROW ro;MYSQL_FIELD* fd;ro = mysql_fetch_row(result);//獲取行數fd = mysql_fetch_field(result);//獲取字段信息if (mysql_affected_rows(&mysql) == 0) {cout << "查詢錯誤" << endl;return false;}else {for (int i = 0; i < nfd; i++){printf("%-8s\t", fd[i].name);//獲取字段名字}cout << endl;if (ro) {for (int i = 0; i < nfd; i++){printf("%-8s\t", ro[i]);}cout << endl;}while (ro = mysql_fetch_row(result)) {for (int i = 0; i < nfd; i++){printf("%-8s\t", ro[i]);}cout << endl;}}mysql_free_result(result);return true; } DWORD WINAPI Fun_Recv(LPVOID) {string logname1, logpsw1, s;while (1){int iRet = recv(connectSocket, recvBuff, 200, 0);logname1 = recvBuff;cout << recvBuff << endl;recv(connectSocket, recvBuff, 200, 0);logpsw1 = recvBuff;cout << recvBuff << endl;if (LogIn(logname1, logpsw1) == "t" || LogIn(logname1, logpsw1) == "T"){s = "登錄成功,角色為教師";strcpy_s(sendBuff, s.c_str());send(connectSocket, sendBuff, sizeof(sendBuff), 0);s = "1";strcpy_s(sendBuff, s.c_str());send(connectSocket, sendBuff, sizeof(sendBuff), 0);break;}else if (LogIn(logname1, logpsw1) == "s" || LogIn(logname1, logpsw1) == "S"){s = "登錄成功,角色為學生";strcpy_s(sendBuff, s.c_str());send(connectSocket, sendBuff, sizeof(sendBuff), 0);s = "2";strcpy_s(sendBuff, s.c_str());send(connectSocket, sendBuff, sizeof(sendBuff), 0);break;}else{s = "shibai";strcpy_s(sendBuff, s.c_str());send(connectSocket, sendBuff, sizeof(sendBuff), 0);}if (iRet <= 0){cout << "接受線程關閉鏈接" << endl;closesocket(serverSocket);WSACleanup();flag_connect = 0;return -1;}}while (true){recv(connectSocket, recvBuff, 200, 0);if (recvBuff[0] == '1'){while (true){recv(connectSocket, recvBuff, 200, 0);string s = recvBuff;const char* sss = s.c_str();SelectUser(sss);break;}}else if (recvBuff[0] == '2'){while (true){recv(connectSocket, recvBuff, 200, 0);string s = recvBuff;const char* ss = s.c_str();if (CreatUser(ss) == true){strcpy_s(sendBuff, "1");send(connectSocket, sendBuff, 200, 0);break;}else{strcpy_s(sendBuff, "2");send(connectSocket, sendBuff, 200, 0);break;}}}else if (recvBuff[0] == '3'){int flag, sscore[100], tscore = 0;string sans[100], nans[100];string r, qs, s;while (true){recv(connectSocket, recvBuff, 200, 0);sscanf_s(recvBuff, "%d", &flag);int* number = new int[flag + 1];string s = "select * from que";const char* ss = s.c_str();mysql_query(&mysql, "set names gabk");mysql_query(&mysql, ss);res = mysql_store_result(&mysql);int num = (int)mysql_num_rows(res);unsigned seed;seed = (int)time(NULL);srand(seed);for (int i = 0; i < flag; i++){number[i] = rand() % num;for (int j = 0; j < i; j++){if (number[j] == number[i])i--;}}for (int i = 0; i < flag; i++){string number1 = to_string(number[i]);cout << number1 << endl;r = "select * from que limit " + number1 + ",1;";const char* rr = r.c_str();mysql_query(&mysql, rr);res = mysql_store_result(&mysql);pp = mysql_fetch_row(res);string aque, aA, aB, aC, aD;aque = pp[1];aA = pp[2];aB = pp[3];aC = pp[4];aD = pp[5];sans[i] = pp[6];sscore[i] = atoi(pp[7]);qs = to_string(i + 1) + ")" + aque + "( )";strcpy_s(sendBuff, qs.c_str());send(connectSocket, sendBuff, 200, 0);qs = "A:" + aA + " " + "B:" + aB + " " + "C:" + aC + " " + "D:" + aD;strcpy_s(sendBuff, qs.c_str());send(connectSocket, sendBuff, 200, 0);}recv(connectSocket, recvBuff, 200, 0);for (int i = 0; i < flag; i++){nans[i] = recvBuff[i];if (nans[i] == sans[i]){tscore += sscore[i];}}qs = to_string(tscore);strcpy_s(sendBuff, qs.c_str());send(connectSocket, sendBuff, 200, 0);delete number;break;}}else if (recvBuff[0] == '4'){while (true){recv(connectSocket, recvBuff, 200, 0);string s = recvBuff;const char* ss = s.c_str();if (CreatQue(ss) == true){strcpy_s(sendBuff, "1");send(connectSocket, sendBuff, 200, 0);break;}else{strcpy_s(sendBuff, "2");send(connectSocket, sendBuff, 200, 0);break;}}}else if (recvBuff[0] == '5'){while (true){recv(connectSocket, recvBuff, 200, 0);string s = recvBuff;const char* ss = s.c_str();if (DelectUser(ss) == true){strcpy_s(sendBuff, "1");send(connectSocket, sendBuff, 200, 0);break;}else{strcpy_s(sendBuff, "2");send(connectSocket, sendBuff, 200, 0);break;}}}else if (recvBuff[0] == '6'){while (true){recv(connectSocket, recvBuff, 200, 0);string s = recvBuff;const char* ss = s.c_str();if (CreatQue(ss) == true){strcpy_s(sendBuff, "1");send(connectSocket, sendBuff, 200, 0);break;}else{strcpy_s(sendBuff, "2");send(connectSocket, sendBuff, 200, 0);break;}}}else if (recvBuff[0] == '7') {while (true){recv(connectSocket, recvBuff, 200, 0);string s = recvBuff;const char* ss = s.c_str();if (CreatQue(ss) == true){strcpy_s(sendBuff, "1");send(connectSocket, sendBuff, 200, 0);break;}else{strcpy_s(sendBuff, "2");send(connectSocket, sendBuff, 200, 0);break;}break;}}else if (recvBuff[0] == '8') {continue;}else if (recvBuff[0] == '9') {string nqid, nqname, nqa, nqb, nqc, nqd, nqans, nqscore, oldqname;/*cout << "請輸入需要修改的題目:" << endl;cin >> oldqname;*/recv(connectSocket, recvBuff, sizeof(recvBuff), 0);oldqname = recvBuff;/*cout << "請輸入新的題號:" << endl;cin >> nqid;*/recv(connectSocket, recvBuff, sizeof(recvBuff), 0);nqid = recvBuff;/*cout << "請輸入新的題目:" << endl;cin >> nqname;*/recv(connectSocket, recvBuff, sizeof(recvBuff), 0);nqname = recvBuff;/*cout << "請輸入新的A選項:" << endl;cin >> nqa;*/recv(connectSocket, recvBuff, sizeof(recvBuff), 0);nqa = recvBuff;/*cout << "請輸入新的B選項:" << endl;cin >> nqb;*/recv(connectSocket, recvBuff, sizeof(recvBuff), 0);nqb = recvBuff;/*cout << "請輸入新的C選項:" << endl;cin >> nqc;*/recv(connectSocket, recvBuff, sizeof(recvBuff), 0);nqc = recvBuff;/*cout << "請輸入新的D選項:" << endl;cin >> nqd;*/recv(connectSocket, recvBuff, sizeof(recvBuff), 0);nqd = recvBuff;/*cout << "請輸入新題目的答案:" << endl;cin >> nqans;*/recv(connectSocket, recvBuff, sizeof(recvBuff), 0);nqans = recvBuff;/*cout << "請輸入新題目的分值:" << endl;cin >> nqscore;*/recv(connectSocket, recvBuff, sizeof(recvBuff), 0);nqscore = recvBuff;string Mque = "select * from que where name = \"" + nqname + "\"";const char* ss = Mque.c_str();mysql_query(&mysql, "set names gbk");mysql_query(&mysql, ss);res = mysql_store_result(&mysql);if (mysql_num_rows(res) > 0){strcpy_s(sendBuff, "新題目的名字有重復,修改不成功");send(connectSocket, sendBuff, sizeof(sendBuff), 0);}Mque = "update que set id = \"" + nqid + "\"," + "name=\"" + nqname + "\"," + "a=\"" + nqa + "\"," + "b=\"" + nqb + "\"," + "c=\"" + nqc + "\"," + "d=\"" + nqd + "\"," + "ans=\"" + nqans + "\"," + "score=\"" + nqscore + "\"where name=\"" + oldqname + "\"";ss = Mque.c_str();if (mysql_query(&mysql, ss)){strcpy_s(sendBuff, "修改題目失敗");send(connectSocket, sendBuff, sizeof(sendBuff), 0);//cout << "修改題目失敗!!" << endl;}else if (mysql_affected_rows(&mysql) == 0){strcpy_s(sendBuff, "需要修改的題目不存在!!");send(connectSocket, sendBuff, sizeof(sendBuff), 0);//cout << "需要修改的題目不存在!!" << endl;return false;}else if (mysql_affected_rows(&mysql) > 0){strcpy_s(sendBuff, "題目修改成功");send(connectSocket, sendBuff, sizeof(sendBuff), 0);}break;}else if (recvBuff[0] == 'A') {string s, sqid, sqname, sqscore;int flag;recv(connectSocket, recvBuff, sizeof(recvBuff), 0);flag = atoi(recvBuff);switch (flag){case 0:s = "select *from que";break;case 1:/*cout << "請輸入題號:" << endl;cin >> sqid;*/recv(connectSocket, recvBuff, sizeof(recvBuff), 0);sqid = recvBuff;s = "select * from que where id ='" + sqid + "'";break;case 2:/*cout << "請輸入題目:" << endl;cin >> sqname;*/recv(connectSocket, recvBuff, sizeof(recvBuff), 0);sqname = recvBuff;s = "select * from que where name = '" + sqname + "'";break;case 3:/*cout << "請輸入分值:" << endl;cin >> sqscore;*/recv(connectSocket, recvBuff, sizeof(recvBuff), 0);sqscore = recvBuff;s = "select * from que where score = '" + sqscore + "'";break;default:break;}const char* ss = s.c_str();mysql_query(&mysql, "set names gbk");mysql_query(&mysql, ss);res = mysql_store_result(&mysql);char field[32][32];for (int i = 0; fd = mysql_fetch_field(res); i++){strcpy_s(field[i], fd->name);}int j = mysql_num_fields(res); //獲取列數strcpy_s(sendBuff, to_string(j).c_str()); //int型轉換成char*型send(connectSocket, sendBuff, sizeof(sendBuff), 0);for (int i = 0; i < j; i++){strcpy_s(sendBuff, field[i]);send(connectSocket, sendBuff, sizeof(sendBuff), 0);//printf("%10s\t", field[i]);}//cout << endl;int k = mysql_num_rows(res);itoa(k, sendBuff, 10);send(connectSocket, sendBuff, sizeof(sendBuff), 0);MYSQL_ROW column;while (column = mysql_fetch_row(res)){for (int i = 0; i < j; i++){strcpy_s(sendBuff, column[i]);send(connectSocket, sendBuff, sizeof(sendBuff), 0);}}break;}elsecontinue;}return 0; } bool ModifyQue() {string nqid, nqname, nqa, nqb, nqc, nqd, nqans, nqscore, oldqname;/*cout << "請輸入需要修改的題目:" << endl;cin >> oldqname;*/recv(connectSocket, recvBuff, sizeof(recvBuff), 0);oldqname = recvBuff;/*cout << "請輸入新的題號:" << endl;cin >> nqid;*/recv(connectSocket, recvBuff, sizeof(recvBuff), 0);nqid = recvBuff;/*cout << "請輸入新的題目:" << endl;cin >> nqname;*/recv(connectSocket, recvBuff, sizeof(recvBuff), 0);nqname = recvBuff;/*cout << "請輸入新的A選項:" << endl;cin >> nqa;*/recv(connectSocket, recvBuff, sizeof(recvBuff), 0);nqa = recvBuff;/*cout << "請輸入新的B選項:" << endl;cin >> nqb;*/recv(connectSocket, recvBuff, sizeof(recvBuff), 0);nqb = recvBuff;/*cout << "請輸入新的C選項:" << endl;cin >> nqc;*/recv(connectSocket, recvBuff, sizeof(recvBuff), 0);nqc = recvBuff;/*cout << "請輸入新的D選項:" << endl;cin >> nqd;*/recv(connectSocket, recvBuff, sizeof(recvBuff), 0);nqd = recvBuff;/*cout << "請輸入新題目的答案:" << endl;cin >> nqans;*/recv(connectSocket, recvBuff, sizeof(recvBuff), 0);nqans = recvBuff;/*cout << "請輸入新題目的分值:" << endl;cin >> nqscore;*/recv(connectSocket, recvBuff, sizeof(recvBuff), 0);nqscore = recvBuff;string Mque = "select *from que where name = \"" + nqname + "\"";const char* ss = Mque.c_str();mysql_query(&mysql, "set names gbk");mysql_query(&mysql, ss);res = mysql_store_result(&mysql);if (mysql_num_rows(res) > 0){strcpy_s(sendBuff, "新題目的名字和表中已存在的題目有重復,修改不成功!");send(connectSocket, sendBuff, sizeof(sendBuff), 0);//cout << "新題目的名字和表中已存在的題目有重復,修改不成功!" << endl;return false;}Mque = "update que set id = \"" + nqid + "\"," + "name=\"" + nqname + "\"," + "a=\"" + nqa + "\"," + "b=\"" + nqb + "\"," + "c=\"" + nqc + "\"," + "d=\"" + nqd + "\"," + "ans=\"" + nqans + "\"," + "score=\"" + nqscore + "\"where name=\"" + oldqname + "\"";ss = Mque.c_str();if (mysql_query(&mysql, ss)){strcpy_s(sendBuff, "修改題目失敗!!");send(connectSocket, sendBuff, sizeof(sendBuff), 0);//cout << "修改題目失敗!!" << endl;return false;}else if (mysql_affected_rows(&mysql) == 0){strcpy_s(sendBuff, "需要修改的題目不存在!!");send(connectSocket, sendBuff, sizeof(sendBuff), 0);//cout << "需要修改的題目不存在!!" << endl;return false;}else if (mysql_affected_rows(&mysql) > 0){strcpy_s(sendBuff, "題目修改成功");send(connectSocket, sendBuff, sizeof(sendBuff), 0);//cout << "題目修改成功" << endl;return true;} }

?客戶端(client)

#include "stdafx.h" #include<WinSock2.h> #include<iostream> #include<string> #include<cstring> #pragma comment(lib, "ws2_32.lib") #pragma warning(disable:4996) using namespace std; string logname, logpwd, logall, resmess, rmess; char sendmess[200]; string s, sid, sname, srole, dname; string cid, cname, cpassword, crole; string ssid, sque, sqa, sqb, sqc, sqd, sscore, sanswer; string mname, nid, nname, npassword, nrole; int character = 0;//默認為老師 char recvBuff[200] = { '0' }; char sendBuff[200] = { '0' }; SOCKET clientsocket; HANDLE hMutex; int flag_connect = 1; int j = 0, k = 0; DWORD WINAPI Fun_Recv(LPVOID); DWORD WINAPI Fun_Send(LPVOID); int main(int argc, char* argv[]) { //加載套接字庫WSADATA wsadata;int iRet = WSAStartup(MAKEWORD(2, 2), &wsadata);if (iRet != 0){cout << "套接字庫加載失敗" << endl;return -1;}else{cout << "套接字庫加載成功" << endl;}//創建套接字clientsocket = socket(AF_INET, SOCK_STREAM, 0);if (clientsocket == INVALID_SOCKET){cout << "套接字創建失敗" << endl;return -1;}else{cout << "套接字創建成功" << endl;}//初始化客戶端地址變量SOCKADDR_IN addrSrv;addrSrv.sin_family = AF_INET;addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");addrSrv.sin_port = htons(8000);//連接/綁定iRet = connect(clientsocket, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));if (SOCKET_ERROR == iRet){cout << "連接失敗" << endl;return -1;}else{cout << "連接成功" << endl;}//句柄使能準確地訪問到對象HANDLE Send_Thread = CreateThread(NULL, 0, Fun_Send, 0, 0, NULL);//發送線程//HANDLE Recv_Thread = CreateThread(NULL,0,Fun_Recv,0,0,NULL);//接受線程CloseHandle(Send_Thread);//關閉句柄//CloseHandle(Recv_Thread);//關閉句柄hMutex = CreateMutex(NULL, FALSE, L"mutex");//創建互斥量while (flag_connect){Sleep(100);}return 0; } DWORD WINAPI Fun_Send(LPVOID) {string s;while (1) {cout << "************歡迎登錄考試系統*************" << endl;cout << "請輸入賬號:" << endl;cin >> s;logname = s;strcpy_s(sendBuff, logname.c_str());int iRet = send(clientsocket, sendBuff, 200, 0);cout << "請輸入密碼:" << endl;cin >> s;logpwd = s;strcpy_s(sendBuff, logpwd.c_str());send(clientsocket, sendBuff, 200, 0);//向套接字中發送數據ssize_t send(int sockfd, const void *buf, size_t len, int flags); // sockfd:,buf:要發送的數據的首地址len:要發送的數據的字節int flags:設置為MSG_DONTWAITMSG 時 表示非阻塞設置為0時 功能和write一樣recv(clientsocket, recvBuff, 200, 0);//向套接字中發送數據ssize_t recv(int sockfd, const void *buf, size_t len, int flags); cout << recvBuff << endl;if (strcmp(recvBuff, "shibai")){break;}elsecout << "登錄失敗" << endl;}recv(clientsocket, recvBuff, 200, 0);string c = recvBuff;if (c == "2") {character = 1;cout << "你好" << endl;cout << character << endl;}while (true){string s;char flag_out;int flag;cout << "******請輸入接下來的操作*****" << endl;cout << "******1-自定義查詢賬戶*******" << endl;cout << "******2-創建新的賬戶*********" << endl;cout << "******3-創建試卷*************" << endl;cout << "******4-添加試題*************" << endl;cout << "******5-刪除賬號*************" << endl;cout << "******6-修改賬號*************" << endl;cout << "******7-刪除試題*************" << endl;cout << "******8-清除內容*************" << endl;cout << "******9-修改試題*************" << endl;cout << "******A-查看試題*************" << endl;cout << "******0-退出程序*************" << endl;flag_connect = 1;while (flag_connect){cin >> flag_out;flag_connect = 0;}int iRet;sendBuff[0] = flag_out;iRet = send(clientsocket, sendBuff, 200, 0);s = "/0";switch (flag_out){case'1':cout << "請輸入查詢條件" << endl;cout << "0:全部查找" << endl;cout << "1:按學號查找" << endl;cout << "2:按賬號查找" << endl;cout << "3:按身份查找" << endl;flag_connect = 1;while (flag_connect){cin >> flag;flag_connect = 0;}switch (flag){case 0:s = "select * from user";break;case 1:cout << "請輸入您要查找的學號:" << endl;flag_connect = 1;while (flag_connect){cin >> sid;flag_connect = 0;}s = "select * from user where id='" + sid + "'";;break;case 2:cout << "請輸入您要查找的賬號" << endl;flag_connect = 1;while (flag_connect){cin >> sname;flag_connect = 0;}s = "select * from user where role = '" + sname + "'";break;case 3:cout << "請輸入您要查找的身份" << endl;flag_connect = 1;while (flag_connect){cin >> srole;flag_connect = 0;}s = "select * from user where role = '" + srole + "'";;break;}strcpy_s(sendBuff, s.c_str());iRet = send(clientsocket, sendBuff, 200, 0);break;case '2':if (character) {cout << "沒有權限創建學號,請聯系老師" << endl;break;}cout << "請輸入學號:" << endl;flag_connect = 1;while (flag_connect){cin >> cid;flag_connect = 0;}cout << "請輸入要創建的賬號:" << endl;flag_connect = 1;while (flag_connect){cin >> cname;flag_connect = 0;}cout << "請輸入要創建的密碼:" << endl;flag_connect = 1;while (flag_connect){cin >> cpassword;flag_connect = 0;}cout << "請輸入要創建的角色:" << endl;flag_connect = 1;while (flag_connect){cin >> crole;flag_connect = 0;}s = "insert into user VALUES('" + cid + "','" + cname + "','" + cpassword + "','" + crole + "')";strcpy_s(sendBuff, s.c_str());iRet = send(clientsocket, sendBuff, 200, 0);recv(clientsocket, recvBuff, 200, 0);if (recvBuff[0] == '1')cout << "創建成功" << endl;elsecout << "創建失敗" << endl;break;case '3':cout << "請輸入題目數量:" << endl;flag_connect = 1;while (flag_connect){cin >> s;flag_connect = 0;}strcpy_s(sendBuff, s.c_str());iRet = send(clientsocket, sendBuff, 200, 0);for (int i = 0; i < atoi(s.c_str()); i++){recv(clientsocket, recvBuff, 200, 0);cout << recvBuff << endl;recv(clientsocket, recvBuff, 200, 0);cout << recvBuff << endl;}cout << "標準答案:" << endl;flag_connect = 1;while (flag_connect){cin >> s;flag_connect = 0;}strcpy_s(sendBuff, s.c_str());iRet = send(clientsocket, sendBuff, 200, 0);recv(clientsocket, recvBuff, 200, 0);cout << "你的成績是:" << recvBuff << endl;break;case '4':if (character) {cout << "無權利創建試題,請聯系老師" << endl;break;}cout << "請輸入題號:" << endl;flag_connect = 1;while (flag_connect){cin >> ssid;flag_connect = 0;}cout << "請輸入題目:" << endl;flag_connect = 1;while (flag_connect){cin >> sque;flag_connect = 0;}cout << "請輸入A選項:" << endl;flag_connect = 1;while (flag_connect){cin >> sqa;flag_connect = 0;}cout << "請輸入B選項:" << endl;flag_connect = 1;while (flag_connect){cin >> sqb;flag_connect = 0;}cout << "請輸入C選項:" << endl;flag_connect = 1;while (flag_connect){cin >> sqc;flag_connect = 0;}cout << "請輸入D選項:" << endl;flag_connect = 1;while (flag_connect){cin >> sqd;flag_connect = 0;}cout << "請輸入該題答案:" << endl;flag_connect = 1;while (flag_connect){cin >> sanswer;flag_connect = 0;}cout << "請輸入分數:" << endl;flag_connect = 1;while (flag_connect){cin >> sscore;flag_connect = 0;}s = "insert into que VALUES('" + ssid + "','" + sque + "','" + sqa + "','" + sqb + "','" + sqc + "','" + sqd + "','" + sanswer + "','" + sscore + "')";strcpy_s(sendBuff, s.c_str());iRet = send(clientsocket, sendBuff, 200, 0);recv(clientsocket, recvBuff, 200, 0);if (recvBuff[0] == '1')cout << "創建成功" << endl;elsecout << "創建失敗" << endl;break;case '5':if (character) {cout << "無權利刪除用戶,請聯系老師" << endl;break;}cout << "請輸入要刪除的用戶名:" << endl;flag_connect = 1;while (flag_connect){cin >> dname;flag_connect = 0;}s = "delete from user where name='" + dname + "'";strcpy_s(sendBuff, s.c_str());iRet = send(clientsocket, sendBuff, 200, 0);recv(clientsocket, recvBuff, 200, 0);if (recvBuff[0] == '1')cout << "刪除成功" << endl;elsecout << "刪除失敗" << endl;break;case '6':cout << "請輸入要修改的賬號:" << endl;flag_connect = 1;while (flag_connect){cin >> mname;flag_connect = 0;}cout << "請輸入新的ID:" << endl;flag_connect = 1;while (flag_connect){cin >> nid;flag_connect = 0;}cout << "請輸入新的賬號:" << endl;flag_connect = 1;while (flag_connect){cin >> nname;flag_connect = 0;}cout << "請輸入新的密碼:" << endl;flag_connect = 1;while (flag_connect){cin >> npassword;flag_connect = 0;}cout << "請輸入新的角色:" << endl;flag_connect = 1;while (flag_connect){cin >> nrole;flag_connect = 0;}s = "update user set id='" + nid + "'," + " name='" + nname + "'," + " pwd='" + npassword + "'," + " role='" + nrole + "' where name='" + mname + "'";strcpy_s(sendBuff, s.c_str());iRet = send(clientsocket, sendBuff, 200, 0);recv(clientsocket, recvBuff, 200, 0);if (recvBuff[0] == '1')cout << "修改成功" << endl;elsecout << "修改失敗" << endl;break;case '7':if (character) {cout << "無權利刪除試題,請聯系老師" << endl;break;}cout << "請輸入要刪除的試題id:" << endl;flag_connect = 1;while (flag_connect){cin >> dname;flag_connect = 0;}s = "delete from que where id='" + dname + "'";strcpy_s(sendBuff, s.c_str());iRet = send(clientsocket, sendBuff, 200, 0);recv(clientsocket, recvBuff, 200, 0);if (recvBuff[0] == '1')cout << "刪除成功" << endl;elsecout << "刪除失敗" << endl;break;case '8':system("cls");break;case '9':cout << "請輸入需要修改的題目:" << endl;flag_connect = 1;while (flag_connect){cin >> sendBuff;flag_connect = 0;}send(clientsocket, sendBuff, sizeof(sendBuff), 0);cout << "請輸入新的題號:" << endl;flag_connect = 1;while (flag_connect){cin >> sendBuff;flag_connect = 0;}send(clientsocket, sendBuff, sizeof(sendBuff), 0);cout << "請輸入新的題目:" << endl;flag_connect = 1;while (flag_connect){cin >> sendBuff;flag_connect = 0;}send(clientsocket, sendBuff, sizeof(sendBuff), 0);cout << "請輸入新的A選項:" << endl;flag_connect = 1;while (flag_connect){cin >> sendBuff;flag_connect = 0;}send(clientsocket, sendBuff, sizeof(sendBuff), 0);cout << "請輸入新的B選項:" << endl;flag_connect = 1;while (flag_connect){cin >> sendBuff;flag_connect = 0;}send(clientsocket, sendBuff, sizeof(sendBuff), 0);cout << "請輸入新的C選項:" << endl;flag_connect = 1;while (flag_connect){cin >> sendBuff;flag_connect = 0;}send(clientsocket, sendBuff, sizeof(sendBuff), 0);cout << "請輸入新的D選項:" << endl;flag_connect = 1;while (flag_connect){cin >> sendBuff;flag_connect = 0;}send(clientsocket, sendBuff, sizeof(sendBuff), 0);cout << "請輸入新題目的答案:" << endl;flag_connect = 1;while (flag_connect){cin >> sendBuff;flag_connect = 0;}send(clientsocket, sendBuff, sizeof(sendBuff), 0);cout << "請輸入新題目的分值:" << endl;flag_connect = 1;while (flag_connect){cin >> sendBuff;flag_connect = 0;}send(clientsocket, sendBuff, sizeof(sendBuff), 0);recv(clientsocket, recvBuff, sizeof(recvBuff), 0);cout << recvBuff << endl;cout << endl;break;break;case '0':return 0;case 'A':cout << "全部查詢,請輸入0" << endl;cout << "按題號查詢,請輸入1" << endl;cout << "按題目查詢,請輸入2" << endl;cout << "按分值查詢,請輸入3\n" << endl;cout << "請輸入查詢條件:" << endl;flag_connect = 1;while (flag_connect){cin >> sendBuff;flag_connect = 0;}send(clientsocket, sendBuff, sizeof(sendBuff), 0);cout << endl;int flag;flag = atoi(sendBuff);switch (flag){case 0://s = "select *from user";break;case 1:cout << "請輸入題號:" << endl;flag_connect = 1;while (flag_connect){cin >> sendBuff;flag_connect = 0;}send(clientsocket, sendBuff, sizeof(sendBuff), 0);//s = "select * from user where id ='" + sid + "'";break;case 2:cout << "請輸入題目:" << endl;flag_connect = 1;while (flag_connect){cin >> sendBuff;flag_connect = 0;}send(clientsocket, sendBuff, sizeof(sendBuff), 0);/*sname = recvBuff;s = "select * from user where name = '" + sname + "'";*/break;case 3:cout << "請輸入分值:" << endl;flag_connect = 1;while (flag_connect){cin >> sendBuff;flag_connect = 0;}send(clientsocket, sendBuff, sizeof(sendBuff), 0);/*srole = recvBuff;s = "select * from user where rol = '" + srole + "'";*/break;default:break;}recv(clientsocket, recvBuff, sizeof(recvBuff), 0);j = 0;k = 0;j = atoi(recvBuff); //將char*型轉換成int型for (int i = 0; i < j; i++) //打印字段{recv(clientsocket, recvBuff, sizeof(recvBuff), 0);printf("%10s\t", recvBuff);}cout << endl;recv(clientsocket, recvBuff, sizeof(recvBuff), 0);k = atoi(recvBuff);for (int n = 0; n < k; n++){for (int i = 0; i < j; i++) //打印字段{recv(clientsocket, recvBuff, sizeof(recvBuff), 0);printf("%10s\t", recvBuff);}cout << endl;cout << endl;}default:cout << "請輸入正確指令:" << endl;break;}}return 0; }

5,分別放入cpp文件之后,你會遇到這樣的報錯,關于預編譯頭文件“stdafx.h”的錯誤

?這時候需要手動配置一下頭文件

6,新建stdafx.h頭文件,內容如下(如果不成功,推薦百度下載)

// stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, but // are changed infrequently //#if !defined(AFX_STDAFX_H__4607A810_33E2_483D_80D8_BE41F0D473D5__INCLUDED_) #define AFX_STDAFX_H__4607A810_33E2_483D_80D8_BE41F0D473D5__INCLUDED_#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000// Insert your headers here #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #define DLLEXPORT __declspec(dllexport) #define DLLIMPORT __declspec(dllimport)#include "stdio.h" #include <windows.h> #include <winsock2.h> #include <ws2tcpip.h>#pragma comment(lib,"ws2_32.lib")// TODO: reference additional headers your program requires here void Msg(char* szFormat, ...); void dbMsg(char* szFormat, ...); //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_STDAFX_H__4607A810_33E2_483D_80D8_BE41F0D473D5__INCLUDED_)

7,全部完成之后,需要注意幾點

(1)server文件里面你和我的mysql密碼賬號不同,需要自行修改。

(2)表頭不一樣,這個很重要,我的表頭是,但你的可能是passward等不同的名稱,需要對mysql里面的內容進行修改,試題的表頭我是que,你們可能是question,這個需要注意。

?

(3)還是mysql的問題,需要對身份role進行修改,教師改為“t”,學生改為“s”;這里建議直接刪掉全部重新改。

8,所有的全部進行完,基本就沒有問題了,可以開始運行,這里切記,先運行server文件,再運行client文件,這個順序一亂就會出錯。

顯示結果

服務器:

客戶端:

9,接下來的操作自己對照著自己的mysql里面的user和que進行操作就好了。

10,最后,這個代碼和老師的有出入,僅供學習操作使用!

?

?

?

總結

以上是生活随笔為你收集整理的VS+MYSQL考试管理系统(白piao速成版)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

黄色aa久久| 色久网 | 精品久久在线 | 国产精品区在线观看 | 在线观看视频一区二区三区 | 久久久久久久久影视 | 日韩欧美一区二区三区在线观看 | 精品国产一区二区三区久久影院 | 久久久国产精品成人免费 | 久久av不卡 | 成人午夜影院在线观看 | 精精国产xxxx视频在线播放 | 99久久婷婷国产一区二区三区 | 六月丁香婷| 国产视频中文字幕在线观看 | 婷婷六月综合亚洲 | 天天综合天天综合 | 成年人电影毛片 | 午夜精品一区二区三区在线视频 | 亚洲综合激情小说 | 久久久精华网 | 日本黄色大片儿 | 91免费观看视频在线 | 亚洲精品黄| 欧美a在线看| 伊人视频 | 欧美不卡视频在线 | 天天射天| 亚洲精品乱码久久久久久蜜桃91 | 四虎在线观看 | 久久影视中文字幕 | 中文字幕久久久精品 | 天天色天天 | 国内视频在线观看 | 国产电影黄色av | 江苏妇搡bbbb搡bbbb | 二区三区毛片 | 超碰在97 | 国产精品一区二区62 | 国产一区二区在线免费观看 | 香蕉色综合 | 国产在线观看h | 精品日韩中文字幕 | 又长又大又黑又粗欧美 | 日韩三级视频在线看 | 97超碰站 | 久av电影 | 五月天堂色 | 免费观看的黄色片 | 成人在线播放免费观看 | 五月在线视频 | 婷婷伊人综合亚洲综合网 | 香蕉视频4aa| 一级电影免费在线观看 | 91桃色国产在线播放 | 欧美精品被 | 色婷婷综合久久久久中文字幕1 | 国产亚洲观看 | 国产字幕在线观看 | 欧美一级日韩三级 | 在线观看中文字幕视频 | 成年人免费av | 青青河边草免费直播 | 制服丝袜成人在线 | 成人小视频免费在线观看 | 草久视频在线观看 | 2021国产精品视频 | 99免在线观看免费视频高清 | 日本99精品 | 久久精品一区二区三区国产主播 | 三级黄色欧美 | 国产无套精品久久久久久 | 最近最新最好看中文视频 | 国产一区二区三区免费视频 | 欧美精品久久久久久久久久久 | 国产视 | 丁香六月色 | 日韩中文在线电影 | 久操综合| www中文在线 | 久草精品在线观看 | 在线免费视频 你懂得 | 久久夜色精品国产欧美一区麻豆 | 欧美黑人xxxx猛性大交 | 91少妇精拍在线播放 | 欧美日韩国产一二三区 | 一本一本久久aa综合精品 | 久久亚洲专区 | 日日夜夜爱 | 日日夜夜人人天天 | 久久久久国产成人免费精品免费 | 国产午夜一区 | 丁香影院在线 | 美女网站黄在线观看 | 国产 日韩 欧美 自拍 | 国产一区二区综合 | 国产精品久久久久永久免费观看 | 日韩精品欧美精品 | 99久久久久久久 | 成年人黄色免费网站 | 国产青春久久久国产毛片 | 国内外激情视频 | 国偷自产视频一区二区久 | 国产精品久久久久aaaa九色 | 国内精品久久久久久久影视麻豆 | 草久视频在线 | 国产 欧美 日韩 | 在线观看国产亚洲 | 九九久久婷婷 | www.com久久久| 69国产盗摄一区二区三区五区 | 在线播放国产一区二区三区 | 一区二区精品久久 | 亚洲精品影视在线观看 | 免费日韩av电影 | 在线看片一区 | 国产一区二区不卡视频 | 人人舔人人干 | 国产精品一区二区久久精品爱微奶 | 午夜.dj高清免费观看视频 | 国产一及片 | 97超碰精品 | 亚洲v欧美v国产v在线观看 | 中日韩三级视频 | 色狠狠狠 | 欧美激情视频一区二区三区 | 99精品热| 国产精品99爱 | 99综合电影在线视频 | 国产精品 中文字幕 亚洲 欧美 | 精品极品在线 | 在线v片 | 五月天综合色 | av在线a| 亚洲国产av精品毛片鲁大师 | 国产精品视频最多的网站 | 免费激情在线电影 | www.国产在线观看 | 久久精品一二三区 | 香蕉视频久久久 | 亚洲精品啊啊啊 | 四虎国产精品免费观看视频优播 | 麻豆国产视频下载 | 337p日本大胆噜噜噜噜 | 91精品视频一区二区三区 | 亚州精品视频 | 国产精品美女免费 | 国产又黄又硬又爽 | 国色天香在线 | 国产精品久久久久一区 | 97香蕉久久国产在线观看 | 中文字幕在线观看一区二区 | 日韩视频免费看 | 免费男女羞羞的视频网站中文字幕 | 亚洲精品黄网站 | av电影不卡 | 在线a亚洲视频播放在线观看 | 国产一区精品在线观看 | 日韩精品黄 | 久草精品视频在线看网站免费 | 国产视频精品在线 | 91三级视频 | 人人狠狠综合久久亚洲 | 精品视频在线看 | 天天爽天天射 | 久久这里只有精品久久 | ,午夜性刺激免费看视频 | 日韩在线观看电影 | 久久99热精品 | 欧美精品在线观看 | 啪啪肉肉污av国网站 | 婷婷在线看 | 成人97视频 | 国产色婷婷精品综合在线手机播放 | 亚洲综合成人婷婷小说 | 玖玖视频免费在线 | 在线观看黄色的网站 | 伊人影院得得 | 97成人精品 | 国产黄色片免费观看 | 天天色天天射综合网 | 一区二区av| 久久久久免费精品 | 久久久久久久久影院 | 香蕉成人在线视频 | 婷婷丁香色综合狠狠色 | 午夜91视频| 98精品国产自产在线观看 | 久久精品一二三区 | 天天插天天 | 九色琪琪久久综合网天天 | 国产原创在线视频 | 久久天天躁夜夜躁狠狠85麻豆 | 在线看v片| 中文字幕视频免费观看 | 国产一区二区三精品久久久无广告 | 久久久久在线 | 色婷婷视频在线 | 美女福利视频网 | 亚洲午夜久久久久久久久电影网 | 奇米网777 | 久久福利综合 | 国产专区免费 | 亚洲高清在线观看视频 | 国产精品视频地址 | 丁香婷婷深情五月亚洲 | 9热精品 | 日本在线中文在线 | 久久国产精品区 | 亚洲精品视频在线观看视频 | 国产一区二区免费看 | 91中文字幕在线视频 | 中文字幕亚洲精品在线观看 | 一级免费片 | 91视频在线播放视频 | 欧美黑人巨大xxxxx | 六月丁香在线观看 | 欧美日韩久久久 | 福利久久久 | 五月天婷婷丁香花 | 在线观看亚洲电影 | 久久人人爽人人 | 在线观看中文字幕av | 亚洲成人软件 | 国产 欧美 日韩 | 久草综合视频 | 91精品国产欧美一区二区成人 | 精品国产aⅴ麻豆 | 久久一本综合 | 国产最新视频在线观看 | 欧美嫩草影院 | 九九免费观看全部免费视频 | 在线免费观看一区二区三区 | 91精品国产自产在线观看永久 | 337p日本欧洲亚洲大胆裸体艺术 | 成 人 a v天堂 | 激情av在线资源 | а天堂中文最新一区二区三区 | 欧美另类sm图片 | 丁香激情综合久久伊人久久 | 黄色小说网站在线 | 国产理论一区二区三区 | 日日夜夜天天久久 | 中文字幕a∨在线乱码免费看 | 成人精品999| 丁香六月婷婷开心 | 欧美精品日韩 | 激情 婷婷 | 久久久久久久久毛片精品 | 欧美日韩国产一区二区三区 | 欧美夫妻生活视频 | 国产色 在线 | 国产一区免费看 | 久久视影 | 91麻豆精品国产自产 | 国产精品亚州 | 日韩两性视频 | 国产精品毛片一区视频播 | 国产一线二线三线性视频 | 久久老司机精品视频 | 射久久 | 最新成人在线 | 91欧美在线 | 久久免费视频在线观看6 | 欧美日韩精品在线播放 | 日韩在线视频播放 | 在线观看韩日电影免费 | 91私密视频| 九九九九九九精品 | 欧美福利视频一区 | 国产精品精品久久久久久 | 日本视频高清 | a黄色一级 | 婷婷综合久久 | 久久国产视频网 | 人人澡人人草 | 美女黄久久 | 色婷婷在线视频 | 午夜视频在线观看网站 | 亚洲激情在线观看 | 成人福利在线播放 | 久久99精品久久久久久清纯直播 | 久久一区二区三区超碰国产精品 | 四虎在线观看精品视频 | 国产夫妻性生活自拍 | 日韩免费一级a毛片在线播放一级 | 成人欧美一区二区三区在线观看 | 一性一交视频 | 香蕉视频久久久 | 亚洲黄色av | 99久久电影 | 尤物九九久久国产精品的分类 | 在线观看免费 | 波多野结衣电影一区二区三区 | 欧美 激情 国产 91 在线 | 国产视频在线观看一区二区 | 亚洲特级片 | 免费看网站在线 | 久久精品国产亚洲aⅴ | 国产婷婷精品av在线 | 超碰人人在线观看 | 在线黄色av| 欧美少妇18p | 久久久久成人精品免费播放动漫 | 日本久热 | 五月婷婷另类国产 | 成人av中文字幕 | 久久久午夜精品理论片中文字幕 | 色综合久久精品 | 91网页版在线观看 | 在线免费观看麻豆视频 | 久草资源在线观看 | 成人一级黄色片 | 亚洲涩涩网站 | 五月天伊人| 免费中文字幕视频 | 黄色av免费 | 99久久视频 | 国产精品h在线观看 | 亚洲黄污 | 日本久久久久久科技有限公司 | 欧美一区二区三区免费看 | 欧美另类色图 | 人人玩人人添人人 | 国产区免费在线 | 日韩在线视频网站 | 又黄又刺激视频 | 草久视频在线 | 2021av在线 | 日韩精品一区在线播放 | 日韩一二三 | 免费在线播放黄色 | 天天爽天天爽夜夜爽 | 欧美日韩国产网站 | 久久久久久久久久久久久国产精品 | 国产国产人免费人成免费视频 | 看毛片网站| 久久久999免费视频 日韩网站在线 | 久久久久免费精品国产小说色大师 | 日日爽 | 久久在现 | 国产高清福利在线 | 少妇高潮流白浆在线观看 | 亚洲成人中文在线 | 97夜夜澡人人爽人人免费 | 干天天 | 天天玩夜夜操 | 久久亚洲视频 | 国产无限资源在线观看 | 国内揄拍国内精品 | 日韩电影中文字幕 | 久久er99热精品一区二区三区 | 国产精品毛片一区二区在线看 | 久久天天操 | 欧美污网站 | 日韩久久久久久久久久 | 一区二区三区免费播放 | 麻豆久久久久久久 | 欧美另类成人 | 久久 精品一区 | 日本精品一区二区三区在线观看 | 日本中文不卡 | 成人h动漫在线看 | 国产自制av | 国产高清在线 | 欧美极品少妇xbxb性爽爽视频 | 国产成人av在线影院 | 欧美另类sm图片 | 欧美一级日韩三级 | 在线精品一区二区 | 在线a人v观看视频 | 麻豆视频免费入口 | 婷婷婷国产在线视频 | 免费观看一级成人毛片 | 欧美日韩国产综合网 | 国产精品99久久久久久人免费 | 日韩中文字幕在线看 | 亚洲精品h | 久久人人干| 久久精品美女视频 | 亚洲视频在线视频 | 亚洲国产美女久久久久 | 日韩免费播放 | av观看久久久 | 成人午夜av电影 | 久久久久久激情 | 涩av在线| 9797在线看片亚洲精品 | 久久久久久久久爱 | 亚洲mv大片欧洲mv大片免费 | 高清免费在线视频 | 天天射射天天 | 久草国产在线 | 亚洲一二三区精品 | 国产亚洲视频在线观看 | 日本精品一区二区 | 久久不卡日韩美女 | 91丨九色丨国产在线 | 91成人精品国产刺激国语对白 | 天天操天天添 | 亚洲人成人天堂h久久 | 国产一区二区精品91 | 国产精品视频 | 国产麻豆精品一区 | 亚洲电影一区二区 | 超碰在线观看av | 欧美亚洲xxx | 五月婷婷香蕉 | 五月婷婷播播 | 激情视频在线观看网址 | 中文字幕高清av | 麻豆视频在线免费 | 五月天久久激情 | 99精品一区二区三区 | 日韩电影一区二区在线观看 | 夜夜操综合网 | 四虎亚洲精品 | 午夜视频导航 | 国产盗摄精品一区二区 | 欧洲精品码一区二区三区免费看 | 成人久久精品视频 | 丁香在线观看完整电影视频 | 国产99精品 | 久久精品欧美一区 | 欧美精品999| 丁香婷婷综合激情五月色 | 97视频总站 | 亚洲欧美在线综合 | 久久视频免费在线观看 | 亚洲成免费 | 天天操天天干天天爱 | 国产成人在线免费观看 | 九九在线播放 | 国产免费叼嘿网站免费 | 天天综合网久久综合网 | 精品一区精品二区高清 | 日韩亚洲国产中文字幕 | 久草在线资源观看 | 在线观看视频一区二区三区 | 色婷婷午夜| 亚洲精品小区久久久久久 | 久久精品一区 | 在线中文字幕播放 | 黄色一级网 | 色射色 | 热re99久久精品国产66热 | 欧美午夜a| 久久涩视频 | 91在线影视| 精品国产一区二区三区久久久蜜臀 | 高清美女视频 | 人人网人人爽 | av电影免费在线看 | 国产日韩一区在线 | 蜜桃av久久久亚洲精品 | 中国黄色一级大片 | 免费视频在线观看网站 | 99视频一区 | 日韩视频在线一区 | 欧美精品视 | 国内视频在线 | 日韩中文字 | 亚洲最大av网 | 五月婷婷在线观看视频 | 国产伦理久久精品久久久久_ | 九月婷婷人人澡人人添人人爽 | 国产精品99久久久久久久久 | 久久国产一区二区三区 | 中文字幕频道 | 97精品国产91久久久久久久 | 日韩成人免费在线 | 亚洲精品视频在线观看免费视频 | 免费观看mv大片高清 | 黄色电影在线免费观看 | 久久超级碰视频 | 久久人人爽人人爽人人片 | 成人国产亚洲 | 日日天天狠狠 | 国产99在线免费 | 久久免费视频播放 | 99精品欧美一区二区三区黑人哦 | 久久久资源 | 国产日产精品一区二区三区四区的观看方式 | 日韩女同一区二区三区在线观看 | 欧美久久久久久久 | 天天操网址| 99久久精品国产毛片 | 中文在线免费观看 | 91精品国产综合久久福利 | 久久久久久高潮国产精品视 | 天天综合导航 | 久久久久久久久艹 | 天天操天天干天天爽 | 成人影视免费看 | 日韩网页 | 天堂网中文在线 | 色综合久久久久 | 欧美日韩二区在线 | 99热在线免费观看 | 丁香六月中文字幕 | 久久亚洲综合国产精品99麻豆的功能介绍 | 国产亚洲无| 日韩大片在线免费观看 | 六月婷色 | 日韩伦理一区二区三区av在线 | 亚洲欧美乱综合图片区小说区 | 欧美国产大片 | 男女拍拍免费视频 | 玖玖精品在线 | 91在线一区 | 人人草在线视频 | 日韩av免费一区 | www.91成人 | 国产精品av免费在线观看 | 青青草国产精品视频 | 欧美另类v| 欧美 高跟鞋交 xxxxhd | 久久久久免费看 | 久久美女免费视频 | 日韩电影一区二区在线 | 国产 欧美 日产久久 | 国产成人99久久亚洲综合精品 | 欧美精品二区 | 日本h视频在线观看 | 中文字幕成人 | 伊人天天色 | 国产精品永久久久久久久久久 | 日韩国产欧美在线播放 | 日韩精品首页 | av短片在线观看 | 在线中文日韩 | 88av网站| 黄色成人91| 91资源在线视频 | 日韩av免费在线看 | 美女免费黄网站 | 91免费视频网站在线观看 | 欧美综合在线观看 | 91人网站 | 丁香免费视频 | 欧美激情综合色 | 亚洲综合导航 | 日韩1页 | 日韩一级理论片 | 一区二区三区日韩在线 | 精油按摩av | 成人久久久久久久久久 | 国产亚洲精品女人久久久久久 | 狠狠操综合 | 青青草国产在线 | 97在线公开视频 | 国产亚洲视频系列 | 国产精品 视频 | 夜夜躁狠狠躁日日躁视频黑人 | 久久综合狠狠综合久久狠狠色综合 | 免费看黄在线观看 | 日韩精品免费一线在线观看 | 91亚洲精品国产 | 精品国产一区二区久久 | 国产精品一区二区在线观看免费 | 精品国产123 | 久久精品国产亚洲a | 一区二区精品在线 | av 一区二区三区 | 在线看欧美 | 黄色大片日本 | 亚洲国内精品在线 | www.色就是色 | 超碰人人射 | 最近中文字幕在线中文高清版 | av在线免费播放网站 | 久久久久久久久久毛片 | 97超级碰碰碰视频在线观看 | 欧美激情精品久久久久久免费印度 | 久久久2o19精品 | 特黄特色特刺激视频免费播放 | 黄色大片网 | 人人干人人上 | 亚洲天堂视频在线 | 激情欧美国产 | 国产精品video爽爽爽爽 | 久久人网 | 国产高清在线a视频大全 | 91精品推荐 | av一本久道久久波多野结衣 | 99久久er热在这里只有精品15 | 免费日韩三级 | 97超碰在线播放 | 婷婷网站天天婷婷网站 | 中文字幕色在线视频 | 国产精品久久久久久久久久久免费 | 天天天色 | 亚洲欧美日韩国产精品一区午夜 | av高清一区二区三区 | 日韩电影久久 | 天天射综合 | 好看av在线 | 97av影院| 亚洲欧美婷婷六月色综合 | 国产黄色观看 | 国产看片免费 | 日韩免费精品 | 欧美日韩不卡一区二区三区 | 日本在线视频一区二区三区 | 在线激情小视频 | 色免费在线 | 中文国产在线观看 | 最新国产在线观看 | 婷婷综合导航 | 久久 一区 | 中文字幕视频一区二区 | 一色屋精品视频在线观看 | 国产精品久久久久永久免费看 | 蜜桃av人人夜夜澡人人爽 | 一区二区三区日韩在线观看 | 免费成人在线网站 | 久草久热| 国产精品无av码在线观看 | 美女网站色| 深夜国产在线 | 亚洲黄色免费 | 欧美男男激情videos | 国产尤物在线观看 | 精品久久久久国产免费第一页 | 成人sm另类专区 | 国内精品久久久久久久久久久久 | 国产成人精品一二三区 | 欧美国产日韩在线视频 | 精品亚洲在线 | 精品久久久成人 | av一二三区| 在线观看一| 国产一级片网站 | 日韩资源在线观看 | av资源免费在线观看 | 久草亚洲视频 | 丁香五香天综合情 | 最新av在线免费观看 | 国产精品久久久久久999 | 色5月婷婷| 亚洲午夜精品在线观看 | 热久久国产 | 91成人免费视频 | 奇米网网址 | 国产精品永久免费观看 | 国产精品成人一区二区三区吃奶 | 亚洲劲爆av| 日本精品中文字幕在线观看 | 欧美另类视频 | 麻豆免费视频网站 | 久久精品视频在线看 | 99久久精品国产亚洲 | 久久激情小视频 | 青青久视频 | 91丨九色丨高潮 | 91亚洲精品在线观看 | 97精品国产aⅴ | 国产精品video | 免费视频在线观看网站 | av在线播放亚洲 | 免费黄色看片 | 97av视频| h视频在线看 | 91精品国自产在线观看 | 久久久久久亚洲精品 | 日本不卡123 | 樱空桃av| 在线韩国电影免费观影完整版 | 久久视频精品在线 | 国产高清视频在线免费观看 | 国产日韩欧美在线 | 亚洲成人黄色网址 | 亚洲精品动漫久久久久 | 久久国产亚洲 | 黄色91在线| 日日操网站 | 国产精品自在线 | 天天天天天天干 | 免费在线看v | 国产99久久久精品视频 | 亚洲精品视频www | 69国产精品成人在线播放 | av观看网站 | 日批在线看 | 欧美一区二区三区在线观看 | 中午字幕在线 | 96精品视频 | 天天插狠狠干 | 草久草久 | 国内视频1区 | 日韩免费在线一区 | 99热在线免费观看 | 免费a级黄色毛片 | 黄色的视频网站 | 在线午夜电影神马影院 | 激情久久久久 | 99在线精品视频观看 | 伊人看片 | 精品久久久久久电影 | 丁香婷婷深情五月亚洲 | 国产精品免费视频久久久 | 成人在线免费观看网站 | 99视频在线精品国自产拍免费观看 | 久久久久久久久久影视 | 天堂av在线网 | 九九精品久久久 | 亚洲第一区在线播放 | 99精品视频一区 | 久草在线免费播放 | 国产a视频免费观看 | 黄色精品久久久 | 国产精品色婷婷视频 | 欧美在线free | 国产在线一区二区三区播放 | 国产精品网站一区二区三区 | 久久久久久国产精品999 | 亚洲dvd| av在线亚洲天堂 | 91免费版成人 | 亚洲精品99久久久久久 | 欧美日韩国产免费视频 | 伊人在线视频 | 在线观看av中文字幕 | 操一草 | 国产精品大尺度 | 国产色女人 | 久久五月天色综合 | 国产蜜臀av | 欧美精品一区二区在线观看 | 久久激情五月婷婷 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 国产一区二区精品91 | 久久网站免费 | 视频国产一区二区三区 | 久操视频在线播放 | 亚洲另类在线视频 | 色就色,综合激情 | 超碰免费av | 视频二区在线视频 | 国产精品久久久久久妇 | 天天操天天射天天爽 | 免费黄色网止 | 日韩免费高清在线观看 | 成人国产在线 | 日韩av男人的天堂 | 久久久久久久影院 | 欧美黑人xxxx猛性大交 | 久久久免费av | 久久久亚洲网站 | 黄色com| 久视频在线| 免费av福利 | 97成人超碰| 亚洲涩涩涩涩涩涩 | 欧美孕妇与黑人孕交 | 97热在线观看 | 三级在线视频播放 | 一级黄色视屏 | 日本视频精品 | 午夜视频免费 | 天天透天天插 | 国产又粗又硬又长又爽的视频 | 中文字幕在线观看不卡 | 久久久久综合精品福利啪啪 | 日日草视频 | 精品黄色在线 | 中文字幕韩在线第一页 | 亚洲另类视频在线 | 在线观看911视频 | 91精品国自产在线 | 日日夜夜草 | 中文字幕在线观看完整版电影 | 精品久久久影院 | 亚洲欧美视频网站 | 一区二区三区精品久久久 | 在线观看韩国av | 欧美激情xxxx性bbbb | 五月婷婷六月丁香激情 | 婷婷午夜 | 精品少妇一区二区三区在线 | 免费在线激情电影 | 色视频成人在线观看免 | 男女免费视频观看 | 丝袜足交在线 | 国产成人免费在线观看 | 日韩免费b| 成人免费影院 | 精品国产一区二区三区蜜臀 | 久久综合国产伦精品免费 | 五月天综合色激情 | 亚洲欧美日韩中文在线 | 亚洲精品综合在线观看 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 亚洲精品在线看 | 久久理论影院 | 男女精品久久 | 一区二区三区在线看 | 亚洲欧美日韩国产一区二区 | 国产亚洲精品久久久久久网站 | 欧美一级高清片 | 亚洲视频一区二区三区在线观看 | 免费99| 亚洲欧美视频在线播放 | 美女黄频免费 | 天天插狠狠插 | 中文字幕在线观看的网站 | 国内一级片在线观看 | 处女av在线 | 99精品国产一区二区三区不卡 | 久久色在线观看 | 国产最新在线 | 欧美性天天| 久久久久久美女 | 日韩av免费在线电影 | 91mv.cool在线观看 | 日韩中文字幕视频在线 | 久久久久久久久久免费视频 | 日韩有码欧美 | 久久久久久久影视 | 成人av电影在线播放 | 91在线视频一区 | 欧美性精品 | 三级黄色在线 | 久久久久久久久久久网 | 欧美一级裸体视频 | 日本韩国精品一区二区在线观看 | 99热精品在线观看 | 一本色道久久综合亚洲二区三区 | 成人免费观看视频网站 | 国产色道 | 成人久久久精品国产乱码一区二区 | 成人午夜电影在线播放 | 91在线区 | 毛片网站在线看 | 国产中文字幕一区 | 欧美大片在线看免费观看 | 四虎成人免费影院 | 午夜av在线免费 | 精品久久精品 | 九九热国产视频 | 中文字幕九九 | 久久爱综合 | 特级a毛片| 亚洲精品国产精品乱码不99热 | 综合网在线视频 | 精品欧美在线视频 | 在线观看视频你懂 | 亚洲日本欧美在线 | 天天色天天操综合 | 欧美精品视 | 国产日韩精品在线观看 | 免费在线成人av | 少妇资源站 | 麻豆视频免费在线观看 | 色人久久| 婷婷色中文字幕 | 久久久久久久久久网 | 国产99久久久国产精品免费二区 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 国产精品高 | 中文字幕在线观看免费观看 | 国产片免费在线观看视频 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 午夜丁香视频在线观看 | 伊人伊成久久人综合网站 | 深夜福利视频在线观看 | 国产一线天在线观看 | 久久夜色网 | 久久精品国产v日韩v亚洲 | 三级黄色片在线观看 | 日韩专区在线 | 久久国产精品免费一区 | 亚洲成人免费在线 | 偷拍区另类综合在线 | 最近免费在线观看 | 欧美一级久久久 | 成年人网站免费在线观看 | 丁香婷婷激情五月 | 玖玖精品在线 | 久久久亚洲精品 | 国产亚洲一区二区在线观看 | 亚州性色| 人人射人人澡 | 中文在线最新版天堂 | 2019免费中文字幕 | 午夜精品久久久久久久99婷婷 | 96久久欧美麻豆网站 | 又黄又爽又湿又无遮挡的在线视频 | 狠狠干综合网 | av网站免费在线 | 亚洲乱码精品久久久 | 天天插日日射 | 天堂va在线高清一区 | 91视频免费网站 | 久久久久久影视 | 少妇bbb搡bbbb搡bbbb′ | 涩涩资源网 | 欧美一级片在线免费观看 | 国色综合 | 国产视频91在线 | 欧美一级片在线播放 | 日韩午夜小视频 | 成 人 黄 色 片 在线播放 | 奇米777777| 在线观看视频99 | 最近2019好看的中文字幕免费 | 国产高清视频免费观看 | 免费h在线观看 | 亚洲高清国产视频 | 97超级碰碰碰视频在线观看 | 亚洲午夜精品一区二区三区电影院 | 久久精品最新 | 亚洲v欧美v国产v在线观看 | 成人小视频免费在线观看 | 超碰官网 | 亚洲国产精品影院 | 国产精品美女久久久久久2018 | 天天操网址| 日本中文字幕网 | 亚洲一区欧美激情 | 美女黄久久 | 成人a级黄色片 | 国产中文字幕国产 | 欧美亚洲免费在线一区 | 人人涩| 91精品视频导航 | 精品久久久99 | 狠狠躁日日躁夜夜躁av | 国产专区视频在线 | www.夜色.com | 国产精品二区三区 | 狠狠干电影 | 五月婷网站 | 91亚州| 不卡的av在线 | 福利电影一区二区 | 亚洲午夜精品一区二区三区电影院 | 久久久久久久久久久久影院 | 久久久精华网 | 精品理论片 | 国产成人av网址 | 中文字幕在线观看国产 | 一级黄色片在线 | 97av视频在线观看 | 欧美日韩国内在线 | 97精品国产一二三产区 | 日韩一区二区三区在线观看 | 日韩av二区 | 天天在线免费视频 | 欧美999| 在线观看黄网 | 久久高清毛片 | 亚洲国产无 | 国产福利小视频在线 | 国产精品中文字幕在线观看 | 伊在线视频 | 色婷婷福利视频 | 色天天天 | 国产成人免费精品 | 深夜免费福利视频 | 国产精品国产精品 | 天堂入口网站 | 久久久久久久久免费视频 | 国产精品完整版 | 国产在线91精品 | 97成人精品区在线播放 | 欧美久久久久久久久久久久久 | 狠狠干狠狠久久 | 四虎国产视频 | 亚州人成在线播放 | 黄色www在线观看 | 色就干| 国产成人在线免费观看 | 国产一区二区三区四区在线 | 91成人免费在线视频 | 激情视频免费在线 | 99视频国产精品免费观看 | 国产精品理论片在线播放 | 一本一本久久a久久精品综合妖精 | 午夜视频一区二区 | 97超碰人人爱 | 日韩一区在线播放 | 91成人观看| 99热九九这里只有精品10 | 91免费在线播放 | av福利网址导航大全 | 在线视频 一区二区 | 久久久久久久国产精品视频 | 色综合久久综合网 | 日韩最新av | 国产一级在线 | 日韩性久久 | 成人va天堂| 日韩精品中文字幕在线 | 欧美性超爽 | 欧美日韩国产区 | 国产婷婷视频在线 | 日韩视频中文字幕在线观看 |