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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构项目设计

發布時間:2024/3/7 编程问答 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构项目设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

項目1:計算機設計大賽賽事統計

一、設計主要要求

【問題描述】

【基本要求】

【設計要求】

【測試數據】

【實現提示】

二.問題分析和任務定義

三.邏輯設計

【運行時存儲結構】

【文件中存儲格式】

【主要功能函數】

【調用關系圖】

【流程圖】

四、物理設計

(1)Team類結構

(2)School類結構?

(3)Contest類結構

(4)其他數據結構

(5)文件讀寫

(6)find函數

(7)print函數

(8)insert函數

(9)界面函數

五、測試數據

?補充

項目2:校園導游咨詢

一、設計主要要求

【問題描述】

【基本要求】

【測試數據】

【實現提示】

二、問題分析和任務定義

三、邏輯設計

【存儲結構】

【查詢景點信息模塊】

【查詢景點路徑模塊】

【調用關系圖】

【流程圖】

四、物理設計

【景點類】

【查詢景點信息】

?【查詢景點路徑】?

【Dijkstra算法】

五、預設數據

【景點地圖】

【拓撲圖】

項目3:算術表達式求解

一、設計主要要求

【問題描述】

【基本要求】

【測試數據】

【實現提示】

二、問題分析和任務定義

三、邏輯設計

【數據結構】

【主要功能函數】

【函數調用關系】

【流程圖】

四、物理設計

【核心算法段】

開發工具

結語


項目1:計算機設計大賽賽事統計

一、設計主要要求

【問題描述】

??參加計算機設計大賽的n個學校編號為1~n,賽事分成m個項目,項目的編號為1~m.比賽獲獎按照得分降序,取前三名,寫一個統計程序產生各種成績單和得分報表。

【基本要求】

1)每個比賽項目至少有10支參賽隊;每個學校最多有6支隊伍參賽;

2)能統計各學校的總分;

3)可以按照學校編號或名稱,學校的總分、各項目的總分排序輸出;

4)可以按學校編號查詢學校某個項目的獲獎情況;可以按項目編號查詢取得前三名的學校;

5)數據存入文件并能隨時查詢

【設計要求】

1)輸入數據形式和范圍:可以輸入學校的名稱,賽事項目的名稱。

2)輸出形式:有中文提示,各學校分數為整數

3)界面要求:交互設計要合理,每個功能可以設立菜單,根據提示,可以完成相關功能的要求。

4)存儲結構:學生自己根據系統功能要求自己設計,但是賽事相關數據要存儲在文件中。

【測試數據】

??要求使用全部合法數據,整體非法數據,局部非法數據。進行程序測試,以保證程序的穩定。

【實現提示】

??假設3<賽事項目數量<=10,學校名稱長度不超過20個字符。每個賽事結束時,將其編號、名稱輸入,并依次輸入參賽學校編號、學校名稱和成績。

二.問題分析和任務定義

本程序需要實現的功能有:合理的存儲、文件存取、用戶界面、增加數據功能、刪減修改數據功能、統計各個學校總分功能、可以按照學校總分輸出成績表、按照學校編號查詢項目獲獎情況。可以分解為以下小模塊:

1.學校信息管理
2.賽事信息管理
3.隊伍報名管理
4.查看獲獎信息
5.總分排行榜
6.獲獎排行榜
7.關于本程序
0.保存并退出

層次可以表示如下

void menu(); //一級界面(主界面) void manageSchool(); //二級界面1:學校信息管理 void manageContest(); //二級界面2:比賽信息管理 void teamRegistration(); //二級界面3:隊伍報名管理 void viewPrize(); //二級界面4:查詢學校獲獎信息 void printScoreRank(); //二級界面5:總分排行榜 void printPrizeRank(); //二級界面6:獲獎排行榜 void printInformation(); //二級界面7:程序信息

限制條件注意點:賽事項目數量限制、賽事參賽隊伍最少數量限制,非法輸入處理......

三.邏輯設計

【運行時存儲結構】

(1)Team類

ADT Team Data編號,屬于哪個學校,報名哪個比賽,成績OperationConstructor初始數據:編號,學校,競賽功能:初始化編號、隸屬學校、隸屬競賽,成績默認為0Constructor初始數據:編號,學校,競賽,成績功能:初始化編號、隸屬學校、隸屬競賽,成績getScore前提條件:無輸入:無功能:訪問并返回私有變量成績的數值輸出:成績后置條件:無getNoble前提條件:無輸入:無功能:訪問并返回私有變量編號的數值輸出:編號后置條件:無getSchool前提條件:無輸入:無功能:返回隸屬學校的數值輸出:隸屬學校的編號后置條件:無getContest前提條件:無輸入:無功能:返回隸屬競賽的數值輸出:隸屬競賽的編號后置條件:無setScore前提條件:無輸入:要設置的成績功能:設置私有變量成績輸出:無后置條件:無 endADT

(2)School

ADT School {Data編號,名稱,隊伍數量,隊伍編號數組,總成績OperationConstructor初始數據:編號,學校名稱功能:初始化編號、學校名稱addTeam前提條件:隊伍未滿輸入:隊伍編號功能:將該編號的隊伍加入學校的隊伍數組內,并將隊伍數量+1輸出:無后置條件:無getNoble前提條件:無輸入:無功能:訪問并返回私有變量編號的數值輸出:編號后置條件:無getName前提條件:無輸入:無功能:返回學校的名稱輸出:學校名字后置條件:無getNum前提條件:無輸入:無功能:返回下轄隊伍數量輸出:隊伍數量后置條件:無getNum前提條件:下標<隊伍數量輸入:下標功能:返回下標對應的隊伍編號輸出:下標的隊伍編號后置條件:無Sum前提條件:無輸入:無功能:計算隊伍的總分輸出:無后置條件:無getSum前提條件:已經調用過Sum計算總分輸入:無功能:返回計算好的隊伍總分輸出:總分后置條件:無 endADT

(3)Contest類

ADT School {Data編號,名稱,隊伍數量,參賽隊伍編號數組,是否結束標志OperationConstructor初始數據:編號,競賽名稱功能:初始化編號、競賽名稱addTeam前提條件:無輸入:隊伍編號功能:將該編號的隊伍加入競賽的隊伍數組內,并將隊伍數量+1輸出:無后置條件:無getNoble前提條件:無輸入:無功能:訪問并返回私有變量編號的數值輸出:編號后置條件:無getName前提條件:無輸入:無功能:返回競賽的名稱輸出:學校名字后置條件:無getNum前提條件:無輸入:無功能:返回報名參加的隊伍數量輸出:隊伍數量后置條件:無getNum前提條件:下標<隊伍數量輸入:下標功能:返回下標對應的隊伍編號輸出:下標的隊伍編號后置條件:無rank前提條件:已調用過finish函數輸入:無功能:將隊伍按照分數進行排序輸出:無后置條件:無finish前提條件:隊伍數>=10,并都已打分輸入:無功能:將比賽狀態設置為完成輸出:無后置條件:無isFinished前提條件:無輸入:無功能:返回比賽是否完成輸出:比賽完成與否后置條件:無 endADT

私有變量:賽事編號、賽事名稱、含有隊伍數、還有隊伍編號(數組)等。

公有函數:構造函數、增加隊伍函數、排序函數、輸出獲獎信息函數等。

(4)teams數組、schools數組、contest數組

用標準容器vector存儲,基本邏輯為按照學校編號保持有序(便于插入、查詢時減小時間復雜度)

【文件中存儲格式】

第一行三個數A,B,C分別表示:學校個數、賽事個數、隊伍數量。

接下來A行:編號、校名。

接下來B行:編號、賽事狀態(結束與否)、賽事名。

接下來C行:編號、參加賽事編號、隸屬學校編號、分數。

【主要功能函數】

int findSchool(int noble){ //功能函數1:尋找學校,返回下標 int findContest(int noble){ //功能函數2:尋找賽事,返回下標 int findTeam(int noble){ //功能函數3:找到編號為noble的隊伍在容器中的下標,找不到返回-1 void printContestList(){ //功能函數4:輸出比賽列表 int MaxOfTeamNoble(){ //功能函數5:返回隊伍編號最大值 void insertTeam(Team x){ //功能函數6:將新的Team對象按照編號大小順序加入teams void insertContest(Contest x){ //功能函數7:將新的Contest對象按照編號大小順序加入contests void insertSchool(School x){ //功能函數8:將新的School對象按照編號大小順序加入schools void writeToFile(){ //功能函數9:保存數據進入文檔 void readFromFile(){ //功能函數10:從文檔中讀取 void firstUse(){ //功能函數11:首次使用 void manageSchool(){ //二級界面1:學校信息管理 void manageContest(){ //二級界面2:比賽信息管理 ...

【調用關系圖】

注:在各個函數中都可按需調用功能函數,在圖不再列出

【流程圖】

四、物理設計

以下列出一些數據結構與功能函數。

(1)Team類結構

class Team { public:Team(int n, int school) {this->n = n;this->belongToSchool = school;}Team(int n, int school, int contest) {this->n = n;belongToContest = contest;belongToSchool = school;score = 0;}Team(int n, int school, int contest, int score) {this->n = n;belongToContest = contest;belongToSchool = school;this->score = score;}int getScore() { return score; }int getNoble() { return n; }int getSchool() { return belongToSchool; }int getContest() { return belongToContest; }void setScore(int score) {this->score = score;} private:int score;int n;int belongToContest;int belongToSchool; };

(2)School類結構?

class School { public:School() {}School(int n, char* name) {this->n = n;this->name = name;team = 0;for (int i = 0; i < 6; i++) teamNum[i] = 0;sumScore = 0;}void addTeam(int num) { //加入隊伍if (team >= 6) {cout << "隊伍數已滿\n";return;}teamNum[team++] = num;}void Sum(); //求和,可返回分數和,并且將結果儲存在sumScore中int getSum() {return sumScore;}int getNoble() { return n; }string getName() { return name; }int getNum() { return team; }int getNum(int i) {if (i < team) return teamNum[i];} private:int n;string name;int team;int teamNum[6];int sumScore; };

(3)Contest類結構

class Contest { public:Contest(int n, char* name) {team = 0;this->n = n;this->name = name;finished = false;}void addTeam(int num) {teamNum[team++] = num;}void finish() { finished = true; }bool isFinished() { return finished; }void rank() { //排序sort(teamNum, teamNum + team, cmpByScore);}int getNoble() { return n; }string getName() { return name; }int getNum() { return team; }int getNum(int i) { return teamNum[i]; } private:bool finished;int n;string name;int team;int teamNum[N]; //存放參賽隊伍 };

(4)其他數據結構

vector<Team> teams; vector<Contest> contests; vector<School> schools; int A,B,C; //A:學校數量 B:比賽數量 C:隊伍數量

(5)文件讀寫

void writeToFile() { //功能函數9:保存數據進入文檔fstream out;out.open("data.txt", ios::out | ios::ate);out << A << ' ' << B << ' ' << C << '\n';for (int i = 0; i < A; i++) {out << schools[i].getNoble() << schools[i].getName() << "\n";}for (int i = 0; i < B; i++) {out << contests[i].getNoble() << " " << (int)contests[i].isFinished() << contests[i].getName() << "\n";}for (int i = 0; i < C; i++) {out << teams[i].getNoble() << " " << teams[i].getSchool() << " " << teams[i].getContest() << " " << teams[i].getScore() << "\n";}out.close(); } void readFromFile() { //功能函數10:從文檔中讀取fstream in;in.open("data.txt", ios::in);in >> A >> B >> C;for (int i = 0; i < A; i++) {int noble;char s[20];in >> noble;in.getline(s, 20, '\n');School x(noble, s);insertSchool(x);}for (int i = 0; i < B; i++) {int noble;char s[20];in >> noble;int finished = 0;in >> finished;in.getline(s, 20, '\n');Contest x(noble, s);if (finished == 1) x.finish();insertContest(x);}for (int i = 0; i < C; i++) {int noble;int belongC;int belongS;int score;in >> noble >> belongS >> belongC >> score;Team x(noble, belongS, belongC, score);insertTeam(x);schools[findSchool(belongS)].addTeam(noble); //調用學校類函數addTeam,將本隊加入學校數據中contests[findContest(belongC)].addTeam(noble); //更新競賽隊伍數據}in.close();cout << "讀取存檔成功!"; }

(6)find函數

int findSchool(int noble) { //功能函數1:尋找學校,返回下標vector<School>::iterator i;int location = 0;for (i = schools.begin(); i != schools.end(); i++) {if (i->getNoble() == noble) return location;else if (i->getNoble() > noble) return -1;else location++;}return -1; } int findContest(int noble) { //功能函數2:尋找賽事,返回下標vector<Contest>::iterator i;int location = 0;for (i = contests.begin(); i != contests.end(); i++) {if (i->getNoble() == noble) return location;else if (i->getNoble() > noble) return -1;else location++;}return -1; } int findTeam(int noble) { //功能函數3:找到編號為noble的隊伍在容器中的下標,找不到返回-1vector<Team>::iterator i;int location = 0;for (i = teams.begin(); i != teams.end(); i++) {if (i->getNoble() == noble) return location;else if (i->getNoble() > noble) return -1;else location++;}return -1; }

(7)print函數

void printContestList() { //功能函數4:輸出比賽列表if (contests.empty()) cout << "當前賽事列表為空!\n";vector<Contest>::iterator it;for (it = contests.begin(); it != contests.end(); it++) {cout << "編號" << it->getNoble() << " " << it->getName() << "\t已報名隊伍數量:" << it->getNum() << "\t";if (it->isFinished()) cout << "已結束\n";else cout << "尚未結束\n";} } void printSchoolList() { //功能函數12:輸出學校列表cout << "當前已有學校:\n";vector<School>::iterator it;for (it = schools.begin(); it != schools.end(); it++)cout << "編號" << it->getNoble() << " " << it->getName() << "\t隊伍數量:" << it->getNum() << "\n"; } void printTeamList() { //功能函數13:輸出隊伍列表cout << "當前已有隊伍" << teams.size() << "支\n";vector<Team>::iterator it;for (it = teams.begin(); it != teams.end(); it++)cout << "編號" << it->getNoble() << " 隸屬于" << schools[findSchool(it->getSchool())].getName() << "參加了"<<contests[findContest(it->getContest())].getName()<< endl; }

(8)insert函數

void insertTeam(Team x) { //功能函數6:將新的Team對象按照編號大小順序加入teamsif (findTeam(x.getNoble()) != -1) {cout << "該編號的隊伍已經存在";return;}else {vector<Team>::iterator i;bool flag = false; //標記是否在中間插入過,如果沒有,說明應該插在尾部for (i = teams.begin(); i != teams.end(); i++) {if (i->getNoble() > x.getNoble()) { //第一個編號比x更大的,插入在此處之前flag = true; //標記更新teams.insert(i, x); //插入break; //找到了即退出} //中間沒有合適位置,直接push_back到尾部}if (!flag) teams.push_back(x);} } void insertContest(Contest x) { //功能函數7:將新的Contest對象按照編號大小順序加入contestsif (findContest(x.getNoble()) != -1) {cout << "該編號的競賽已經存在";return;}else {vector<Contest>::iterator i;bool flag = false; //標記是否在中間插入過,如果沒有,說明應該插在尾部for (i = contests.begin(); i != contests.end(); i++) {if (i->getNoble() > x.getNoble()) { //第一個編號比x更大的,插入在此處之前flag = true; //標記更新contests.insert(i, x); //插入break; //找到了即退出}}if (!flag) contests.push_back(x); //中間沒有合適位置,直接push_back到尾部} } void insertSchool(School x) { //功能函數8:將新的School對象按照編號大小順序加入schoolsif (findSchool(x.getNoble()) != -1) {cout << "該編號的學校已經存在";return;}else {vector<School>::iterator i;bool flag = false; //標記是否在中間插入過,如果沒有,說明應該插在尾部for (i = schools.begin(); i != schools.end(); i++) {if (i->getNoble() > x.getNoble()) { //第一個編號比x更大的,插入在此處之前flag = true; //標記更新schools.insert(i, x); //插入break; //找到了即退出}}if (!flag) schools.push_back(x); //中間沒有合適位置,直接push_back到尾部} }

(9)界面函數

void manageSchool() { //二級界面1:學校信息管理char choice;while (true) {cout << "***********學校信息編輯***********\n";cout << "1.輸出全部學校信息\n";cout << "2.新加入學校信息\n";cout << "3.刪除學校\n";cout << "0.返回\n";cin >> choice;if (choice == '1') {if (schools.empty()) cout << "當前學校列表為空!\n";vector<School>::iterator it;for (it = schools.begin(); it != schools.end(); it++)cout << "編號" << it->getNoble() << " " << it->getName() << " 含有隊伍數量:" << it->getNum() << "\n";}else if (choice == '2') {cout << "請輸入學校編號:";int noble;cin.clear();cin.ignore();cin >> noble;if (findSchool(noble) != -1) cout << "已有該編號的學校,錄入失敗!\n";else if (noble <= 0)cout << "必須輸入正整數!\n";else {cout << "請輸入學校名稱:";char s[50];cin >> s;School newAdd(noble, s);A++;insertSchool(newAdd);}}else if (choice == '3') {cout << "您要刪除的學校編號:";int noble;cin.clear();cin.ignore();cin >> noble;if (findSchool(noble) == -1) cout << "該學校編號不存在,請重新輸入\n";else {School& del = schools[findSchool(noble)];C -= del.getNum();for (int i = 0; i < del.getNum(); i++) {cout << "該學校編號為" << del.getNum(i) << "的隊伍已被刪除\n";teams.erase(teams.begin() + findTeam(del.getNum(i)));}cout << "編號為:" << noble << "的" << schools[findSchool(noble)].getName() << "已被成功刪除!\n";schools.erase(schools.begin() + findSchool(noble));A--;}}else if (choice == '0') { writeToFile(); break; }} } void manageContest() { //二級界面2:比賽信息管理char choice;while (true) {cout << "***********賽事信息編輯***********\n";cout << "1.輸出全部賽事信息\n";cout << "2.新加入賽事\n";cout << "3.隊伍打分\n";cout << "4.查看比賽結果\n";cout << "0.返回\n";cin >> choice;if (choice == '1') {printContestList();}else if (choice == '2') {cout << "請輸入賽事編號:";int noble;cin.clear();cin.ignore();cin >> noble;if (findContest(noble) != -1) cout << "已有該編號的比賽,錄入失敗!\n";else if (noble <= 0)cout << "必須輸入正整數!\n";else {cout << "請輸入賽事名稱:";char s[20];cin >> s;Contest newAdd(noble, s);B++;insertContest(newAdd);cout << "加入成功!\n";}}else if (choice == '3') {printContestList();cout << "輸入要進行打分的比賽編號:";int noble;cin.clear();cin.ignore();cin >> noble;if (findContest(noble) == -1) cout << "比賽不存在!\n";else {Contest& now = contests[findContest(noble)];if (now.getNum() < 10) {cout << "報名隊伍過少,比賽不能開始\n";continue;}else if (now.isFinished()) {cout << "該比賽已打分\n";continue;}for (int i = 0; i < now.getNum(); i++) {Team& nowTeam = teams[findTeam(now.getNum(i))];cout << "請給" << i + 1 << "號隊伍(編號" << now.getNum(i) << "," << schools[findSchool(nowTeam.getSchool())].getName() << ")打分:";int score;cin >> score;nowTeam.setScore(score);}now.finish();now.rank();}}else if (choice == '4') {printContestList();cout << "要查看那一場比賽結果:";int noble;cin.clear();cin.ignore();cin >> noble;if (findContest(noble) == -1) cout << "比賽不存在!\n";else {Contest& now = contests[findContest(noble)];if (!now.isFinished())cout << "尚未打分,無法查看結果!\n";else {now.rank();for (int i = 0; i < now.getNum(); i++) {Team& nowTeam = teams[findTeam(now.getNum(i))];cout << "No." << i + 1 << " " << schools[findSchool(nowTeam.getSchool())].getName() << " 分數:" << nowTeam.getScore() << "\n";}}}}else if (choice == '0') { writeToFile(); break; }} } void teamRegistration() { //二級界面3:隊伍報名管理char choice;while (true) {cout << "***********隊伍報名管理***********\n";cout << "1.學校批量報名\n";cout << "2.新建一支隊伍\n";cout << "3.查看所有隊伍狀態\n";cout << "0.返回\n";cin >> choice;if (choice == '1') {printSchoolList();cout << "請輸入學校編號:";int noble;cin.clear();cin.ignore();cin >> noble;if (findSchool(noble) == -1) cout << "該編號的學校不存在!\n";else {School& nowSchool = schools[findSchool(noble)];int left = 6 - nowSchool.getNum();cout << "要報名的隊伍數(剩余容量" << left << "):";int num;cin >> num;if (num > left) {cout << "名額不足!\n";continue;}else if (num < 0) {cout << "必須輸入正整數\n";continue;}else {printContestList();int i = 0;while (i < num) {cout << "隊伍" << i + 1 << "報名的比賽編號:";int test;cin.clear();cin.sync();cin >> test;if (findContest(test) == -1) {cout << "報名的比賽不存在,請重新輸入\n";continue;}Contest& nowContest = contests[findContest(test)];Team newTeam(MaxOfTeamNoble() + 1, noble, test);C++; i++;cout << "報名成功!\n";if (nowContest.isFinished()) {cout << "當前比賽已開始,請輸入該隊伍成績:";int score;cin.clear();cin.sync();cin >> score;newTeam.setScore(score);nowContest.rank();}insertTeam(newTeam);nowSchool.addTeam(newTeam.getNoble());nowContest.addTeam(newTeam.getNoble());}}}}else if (choice == '2') {printSchoolList();cout << "該隊隸屬學校:";int noble;cin.clear();cin.ignore();cin >> noble;if (findSchool(noble) == -1) cout << "該學校不存在!\n";else {School& nowSchool = schools[findSchool(noble)];int left = 6 - nowSchool.getNum();if (left == 0) {cout << "該學校隊伍已滿\n";continue;}printContestList();cout << "報名的比賽編號:";int test;cin.clear();cin.sync();cin >> test;if (findContest(test) == -1) {cout << "報名的比賽不存在\n";continue;}Contest& nowContest = contests[findContest(test)];Team newTeam(MaxOfTeamNoble() + 1, noble, test);C++;cout << "報名成功!\n";if (nowContest.isFinished()) {cout << "當前比賽已開始,請輸入該隊伍成績:";int score;cin.clear();cin.sync();cin >> score;newTeam.setScore(score);nowContest.rank();}insertTeam(newTeam);nowSchool.addTeam(newTeam.getNoble());nowContest.addTeam(newTeam.getNoble());}}else if (choice == '3') {if (teams.empty())cout << "當前隊伍為空\n";else printTeamList();}else if (choice == '0') {writeToFile();return;}} } void viewPrize() { //二級界面4:查詢學校獲獎信息char choice;while (true) {cout << "*************獲獎查詢*************\n";cout << "1.查詢學校獲獎信息\n";cout << "2.查詢競賽獲獎信息\n";cout << "0.退出\n";cin >> choice;if (choice == '1') {printSchoolList();cout << "請輸入學校編號:";int noble;cin.clear();cin.ignore();cin >> noble;if (findSchool(noble) == -1) {cout << "該學校不存在\n";}else {School& nowSchool = schools[findSchool(noble)];bool isFind = false;for (int i = 0; i < nowSchool.getNum(); i++) { //遍歷該學校的每一支隊伍Team& nowTeam = teams[findTeam(nowSchool.getNum(i))];Contest& nowContest = contests[findContest(nowTeam.getContest())];nowContest.rank();if (nowContest.isFinished()) { //查找前三中是否有該隊伍int prize=1;int i;for (i = 0; i < 3; i++) {if(i==0) prize=1;else if(teams[findTeam(nowContest.getNum(i))].getScore()!=teams[findTeam(nowContest.getNum(i-1))].getScore())prize=i+1;//考慮到分數一樣獎牌也應該一樣的情況if (nowContest.getNum(i) == nowTeam.getNoble()) {cout << nowSchool.getName() << "的隊伍在編號為" << nowContest.getNoble() << "的" << nowContest.getName() << "比賽中,獲得了" << prize << "等獎\n";isFind = true;}}//考慮后續還有分數相平的情況while(teams[findTeam(nowContest.getNum(i))].getScore()==teams[findTeam(nowContest.getNum(i-1))].getScore()&&i<nowContest.getNum()){if (nowContest.getNum(i) == nowTeam.getNoble()) {cout << nowSchool.getName() << "的隊伍在編號為" << nowContest.getNoble() << "的" << nowContest.getName() << "比賽中,獲得了" << prize << "等獎\n";isFind = true;}i++;}}}if (!isFind) cout << "無獲獎信息\n";}}else if (choice == '2') {printContestList();cout << "請輸入比賽編號:";int noble;cin.clear();cin.ignore();cin >> noble;if (findContest(noble) == -1) {cout << "該比賽不存在\n";}else {Contest& now = contests[findContest(noble)];now.rank();if (!now.isFinished())cout << "該比賽尚未結束\n";else {int prize=1;int i;for (i = 0; i < 3; i++) {if(i==0) prize=1;else if(teams[findTeam(now.getNum(i))].getScore()!=teams[findTeam(now.getNum(i-1))].getScore())prize=i+1;Team& nowTeam = teams[findTeam(now.getNum(i))];cout << prize << "等獎:" << schools[findSchool(nowTeam.getSchool())].getName() << "的隊伍(編號" << nowTeam.getNoble() << ") 分數為:" << nowTeam.getScore() << endl;}while(teams[findTeam(now.getNum(i))].getScore()==teams[findTeam(now.getNum(i-1))].getScore()&&i<now.getNum()){Team& nowTeam = teams[findTeam(now.getNum(i))];cout << prize << "等獎:" << schools[findSchool(nowTeam.getSchool())].getName() << "的隊伍(編號" << nowTeam.getNoble() << ") 分數為:" << nowTeam.getScore() << endl;i++;}}}}else if (choice == '0') {writeToFile();return;}} } void printScoreRank() { //二級界面5:總分排行榜cout << "************總分排行榜************\n";int m = schools.size();int* rankList = new int[m];for (int i = 0; i < m; i++) {rankList[i] = i;schools[i].Sum();}sort(rankList, rankList + m, cmpBySum);int prize;for (int i = 0; i < m; i++) {if(i==0) prize=1;else if(schools[rankList[i]].getSum()!=schools[rankList[i-1]].getSum())prize=i+1;cout << "No." << prize << "\t" << schools[rankList[i]].getName();//for (int j = 0; j < 20 - (schools[rankList[i]].getName()).length(); j++) cout <<" ";cout << "(" << schools[rankList[i]].getSum() << ")\n";}delete[] rankList; } void printPrizeRank() { //二級界面6:獲獎排行榜cout << "************獎牌排行榜************\n";cout << "名次\t金\t銀\t銅\t編號\t 學校名稱\t\n";int m = schools.size();int* gold = new int[m];int* silver = new int[m];int* bronze = new int[m];for (int i = 0; i < m; i++) gold[i] = silver[i] = bronze[i] = 0;int* rankList = new int[m];for(int i=0;i<B;i++){contests[i].rank();}for(int i=0;i<A;i++){schools[i].Sum();}for (int i = 0; i < m; i++) {School& nowSchool = schools[i];for (int j = 0; j < nowSchool.getNum(); j++) { //遍歷該學校的每一支隊伍Team& nowTeam = teams[findTeam(nowSchool.getNum(j))];Contest& nowContest = contests[findContest(nowTeam.getContest())];if (nowContest.isFinished()) { //查找前三中是否有該隊伍if (nowContest.getNum(0) == nowTeam.getNoble()){gold[i]++;}if (nowContest.getNum(1) == nowTeam.getNoble())silver[i]++;if (nowContest.getNum(2) == nowTeam.getNoble())bronze[i]++;}}rankList[i] = i;}for (int i = 0; i < m - 1; i++)for (int j = i + 1; j < m; j++) {bool swap = false;if (gold[rankList[i]] < gold[rankList[j]])swap = true;else if (gold[rankList[i]] == gold[rankList[j]])if (silver[rankList[i]] < silver[rankList[j]])swap = true;else if (silver[rankList[i]] == silver[rankList[j]])if (bronze[rankList[i]] < bronze[rankList[j]])swap = true;else if(bronze[rankList[i]] == bronze[rankList[j]])if(schools[rankList[i]].getSum()<schools[rankList[j]].getSum())swap=true;if (swap) {int t = rankList[i];rankList[i] = rankList[j];rankList[j] = t;}}for (int i = 0; i < m; i++) {cout << "No." << i + 1 << "\t"<<gold[rankList[i]] << "\t" << silver[rankList[i]] << "\t" << bronze[rankList[i]];cout << "\t" << schools[rankList[i]].getNoble() << "\t" << schools[rankList[i]].getName()<<"\n";}delete[] gold;delete[] silver;delete[] bronze;delete[] rankList; } void printInformation() { //二級界面7:程序信息cout << "************程序版本信息************\n";cout << "此程序為Jayden Wang 獨立自主設計\n";cout << "用作數據結構項目設計\n";cout << "更新日志:\n2022.5.17 程序框架搭建完成\n";cout << "2022.5.19 發布 Vision 1.0.0 Beta.\n";cout << "2022.5.19晚 v1.1.0 \n\t修復了mac端輸出成績表時出現死循環的問題;修復了每讀一次文檔,學校與比賽名稱前多一個空格的問題。\n ";cout << "2022.5.19晚 v1.1.1\n\t修復了模塊5輸出不正確的bug,輸出了模塊6輸出不正確的bug\n";cout << "2022.5.24 v1.1.2\n\t修復了在查詢學校獲獎信息時,因為未調用排序rank()算法而產生的錯誤\n";cout << "2022.5.25 v1.2.1\n\t界面美化、加入了新功能:并列學校相同獎項算法,例如:如果有兩個第一名,則獎項分別為1 1 3等獎,如果第三名與第四名分數相同,則獎項為1 2 3 3,以此類推\n"; } void menu() { //一級界面(主界面)cout << "*********歡迎使用管理系統*********\n";fstream file;file.open("data.txt", ios::in);if (!file.is_open()) {cout << "未找到數據文件,本次為首次使用,請根據提示錄入數據.\n";file.close();firstUse();}else {cout << "已找到存檔\n";file.close();readFromFile();}char choice = ' ';while (choice != 7) {cout << "\n**************操作****************\n";cout << "1.學校信息管理\n";cout << "2.賽事信息管理\n";cout << "3.隊伍報名管理\n";cout << "4.查看獲獎信息\n";cout << "5.總分排行榜\n";cout << "6.獲獎排行榜\n";cout << "7.關于本程序\n";cout << "0.保存并退出\n";cin >> choice;switch (choice) {case '1':manageSchool(); break;case '2':manageContest(); break;case '3':teamRegistration(); break;case '4':viewPrize(); break;case '5':printScoreRank(); break;case '6':printPrizeRank(); break;case '7':printInformation(); break;case '0':writeToFile(); return;default:break;}} }

五、測試數據

data.txt儲存示例(數據為隨意編造,與對應大學實際水平無關)

8 4 44 //A,B,C 1 江蘇科技大學 //參賽學校數據 2 蘇州科技大學 3 江蘇大學 4 浙江大學 5 北京大學 6 清華大學 7 中國科學技術大學 8 武漢大學 1 1 C++ //比賽項目數據 2 1 JAVA 3 1 PYTHON 4 0 C# 1 1 1 90 //隊伍數據 2 1 2 99 3 1 3 98 4 1 4 0 5 2 3 95 6 2 1 80 7 3 1 79 8 3 1 69 9 3 1 88 10 3 1 91 11 3 1 92 12 4 1 95 13 4 1 91 14 4 2 98 15 4 2 96 16 4 2 94 17 4 3 92 18 2 1 24 19 2 1 99 20 2 2 92 21 1 2 88 22 1 3 94 23 5 2 89 24 5 3 100 25 5 2 92 26 5 3 92 27 5 2 94 28 5 4 0 29 6 2 99 30 6 3 93 31 7 3 97 32 7 4 0 33 7 4 0 34 7 4 0 35 7 4 0 36 7 3 10 37 8 4 0 38 8 3 99 39 8 4 0 40 8 4 0 41 6 4 0 42 6 4 0 43 6 2 100 44 8 3 8

?補充

本程序得益于開始的精心數據結構設計,預留了很多升級空間:比如單個修改刪除隊伍數據、刪除學校包括其下轄隊伍(這個其實已經做了,做完了才發現沒有要求),刪除比賽以及內含隊伍,來達到更逼真地模仿一般的管理系統;本程序的尋址通過find函數實現,插入使用insert函數實現,與單純的數組下標尋址相比,對于編號的連續性其實沒有依賴,也不需要事先規定學校比賽數量

????????——但是筆者是在是太忙碌著對付期末考試(lan)了,所以......這樣也夠用了。


項目2:校園導游咨詢

一、設計主要要求

【問題描述】

設計一個校園導游程序,為來訪的客人提供各種信息查詢服務。

【基本要求】

(1)?設計你所在學校的校園平面圖,所含景點不少于10個.以圖中頂點表示校內各景點,存放景點名稱、代號、簡介?等信息;以邊表示路徑,存放路徑長度等相關信息。

??(2)??為來訪客人提供圖中任意景點相關信息的查詢。

(3)?為來訪客人提供圖中任意景點的問路查詢,即查詢任意兩個景點之間的一條最短的簡單路徑。

【測試數據】

以江蘇科技大學長山校區為例。

【實現提示】

一般情況下,校園的道路是雙向通行的,可設校園平面圖是一個無向網.頂點和邊均含有相關信息.

二、問題分析和任務定義

(1)設計地圖:地圖標點,并編寫景點相關信息,便于旅客查詢。

(2)設計存儲:用無向圖,將景點存放,并設計各個結點之間的拓撲圖。

(3)設計算法:使用Dijkstra算法計算最短路徑。

限制條件:景點數量>=10

三、邏輯設計

【存儲結構】

(1)無向圖存儲路徑信息(拓撲圖見預設數據)

#define M 999 int Map[N][N] = { {M,100,M,200,M,M,M,M,M,M}, {100,M,80,150,M,M,M,M,M,M}, {M,80,M,M,120,110,M,M,M,M}, {200,150,M,M,50,M,M,M,M,M}, {M,M,120,50,M,M,150,230,M}, {M,M,110,M,M,M,80,60,M,M}, {M,M,M,M,M,80,M,M,M,100}, {M,M,M,M,150,60,M,M,90,70}, {M,M,M,M,230,M,M,90,M,50}, {M,M,M,M,M,M,100,70,50,M} };

(2)景點類ScenicSpot

ADT ScenicSpot{Data編號景點名稱景點介紹OperationConstructor初始數值:編號、名稱、介紹功能:初始化對象的上述內容print前置條件:無輸入:無功能:表格狀輸出列表編號與名稱輸出:列表編號與名稱后置條件:無printIntroduce前置條件:無輸入:無功能:輸出景點介紹輸出:景點介紹后置條件:無 end ADT

(3)景點容器

vector<ScenicSpot> SpotList;

(4)路徑數組

int path[N];

【查詢景點信息模塊】

void query():簡單的詢問信息功能

【查詢景點路徑模塊】

void findPath():詢問功能,返回最短路徑功能,輸出路徑功能

int Dijkstra():Dijkstra最短路算法

【調用關系圖】

【流程圖】

四、物理設計

【景點類】

class ScenicSpot { public:ScenicSpot(int noble, string name, string introduce) { //構造函數this->noble = noble;this->name = name;this->introduce = introduce;}void print() { //用于表格狀輸出列表總體信息cout << noble << "\t" << name << "\n";}void printIntroduce() {//輸出景點介紹cout << introduce << endl;} private:int noble;string name;string introduce; };

【查詢景點信息】

void query() {cout << "你要查詢的景點編號(1-10):";int n;cin >> n;if (n < 1 || n>10) {cout << "輸入不合法!\n";return;}SpotList[n - 1].print();SpotList[n - 1].printIntroduce(); }

?【查詢景點路徑】?

void findPath() {cout << "你要查詢從哪個景點到哪個景點的最短路徑:";int a, b;cin >> a >> b;if (a >= 1 && a <= 10 && b >= 1 && b <= 10) {cout << "最短路徑長度為" << Dijkstra(a, b) << "\n";stack<int> way;int nowAt = b - 1;while (nowAt != -1) {way.push(nowAt + 1);nowAt = path[nowAt];}cout << "最優路徑為:";while (!way.empty()) {cout << way.top();if (way.top() != b) cout << "->";way.pop();}cout << '\n';}else {cout << "輸入不合法!\n";} }

【Dijkstra算法】

int Dijkstra(int A, int B) {int a, b;a = A - 1; b = B - 1;bool visited[N]; //用來記錄int dist[N];for (int i = 0; i < N; i++) {dist[i] = Map[i][a]; //visited[i] = false; //標記為未訪問if (i == a) path[i] = -1;else if (Map[i][a] == M) path[i] = -1;else path[i] = a;}dist[a] = 0; visited[a] = true; path[a] = -1; //初始化int hasVisited = 1;while (hasVisited < N) {int min, minLen = M;for (int i = 0; i < N; i++)if ((!visited[i]) && (dist[i] < minLen)) {min = i; minLen = dist[i];}visited[min] = true;hasVisited++;for (int i = 0; i < N; i++)if (dist[i] > dist[min] + Map[min][i]) {dist[i] = dist[min] + Map[min][i];path[i] = min;}}return dist[b]; }

五、預設數據

【景點地圖】

景點列表景點編號景點名稱
1三號組團
2西苑食堂
3明德園
4文體中心
5西操場
6文理大樓
7北苑
8求索園
9東苑食堂
10圖書館

【拓撲圖】

注:數據不與現實吻合


項目3:算術表達式求解

一、設計主要要求

【問題描述】

設計一個簡單的算術表達式計算器。

【基本要求】

?實現標準整數類型的四則運算表達式的求值(包含括號,可多層嵌入).

【測試數據】

(30+2*70)/3-12*3

?5+(9*(62-37)+15)*6

?要求自行設計非法表達式,進行程序測試,以保證程序的穩定運行。

【實現提示】

可以設計以下輔助函數

status isNumber(char ReadInChar);??//視ReadInchar?是否是數字而返回?TRUE或?FALSE?。

int TurnToInteger(char IntChar);???//?將字符’0’.’9’ 轉換為整數?9

二、問題分析和任務定義

可以實現合法算式的運算。

考慮優先級問題,()內優先,其次*/,最次+-。

采用符號棧存儲運算符,用數據棧存儲已運算的數據。

可以識別非法算是并給出提示。

注意點:謹慎考慮符號重復出現時的情況、處理結束符號問題、處理第一個元素加入棧時的判斷。

三、邏輯設計

【數據結構】

(1)優先級矩陣

//優先級矩陣 1表示優先級更高,0表示優先級更低,2表示括號相遇,-1表示不合法 //0~5 表示 (+-*/) int priority[6][6] = { {0,0,0,0,0,2}, {0,1,1,0,0,1}, {0,1,1,0,0,1}, {0,1,1,1,1,1}, {0,1,1,1,1,1}, {-1,1,1,1,1,1} };

(2)數據棧和符號棧

stack<double> values; //存放運算數 stack<char> operators; //存放運算符

【主要功能函數】

int turnToNum(char c):將符號轉變成對應的數字編號,非法符號返回-1

int compare(char a, char b):比較符號a和符號b的優先級

bool isNumber(char c):判斷是否為數字

double result(double a, char c, double b):產生運算結果

【函數調用關系】

【流程圖】

四、物理設計

【核心算法段】

for (int i = 0; i < (int)strlen(expression); i++) {char &c = expression[i]; //c為引用當前字符if (isNumber(c)) { num = num * 10 + c - '0'; }else if (c == ' ') continue;else if (turnToNum(c) != -1) {if (c != '(') {int pre = i - 1;while (expression[pre] == ' ') pre--;if (expression[pre] != ')') {values.push((double)num);if(show)cout << "壓入" << num << "\n";num = 0;}}if (c == '=') break;if (operators.empty()) {if (show) cout << "壓入" << c << "\n";operators.push(c);}else {bool goOn = true; //標記是否要繼續double a, b, r; //a,b分別存放數字棧最上面的兩個數字,c存放運算結果while (!operators.empty() && goOn) {char cTop = operators.top();switch (compare(cTop, c)) {case 1: //棧頂優先級比當前大,消耗棧頂操作符,并計算operators.pop();if (show) cout << "彈出" << cTop << "\n";b = values.top(); values.pop();if (show)cout << "彈出" << b << "\n";a = values.top(); values.pop();if (show)cout << "彈出" << a << "\n";r = result(a, cTop, b);values.push(r);if (show)cout << "壓入" << r << "\n";break;case 0: //棧頂優先級比當前小,將當前符號壓入operators.push(c);if (show)cout << "壓入" << c << "\n";goOn = false;break;case 2: //特殊的,當括號相遇,僅做彈出括號操作if (show)cout << "彈出" << cTop << "\n";operators.pop();goOn = false;break;}}if (operators.empty() && goOn) {operators.push(c);if (show)cout << "壓入" << c << "\n";}}}else {cout << "該算式非法\n";continue;}}while (!operators.empty()) {int a, b, c;char cTop = operators.top();operators.pop();b = values.top(); values.pop();a = values.top(); values.pop();c = result(a, cTop, b);values.push(c);}cout << "Answer is " << values.top() << endl;

?補充:這個算法很基礎......也找不到什么特別能體現水平的點......優化了一下報錯機制,處理了一下開頭負數(如-1*3這樣的算式)。如果有兩個符號中間沒有數字的情況,程序會認為中間的數字為0(如1+*2等價為1+0*2答案為1,而非報錯),姑且算是機制而不是bug吧^ ^

補充2:本程序設計了開發者模式(輸入&開啟),打開后將顯示棧中元素每一次的壓入和彈出情況,便于觀察內部運行的邏輯(筆者修改bug時就一直使用的是這個方法)。


開發工具

Windows端(筆者的臺式機):Microsoft Visual Studio 2019

Mac端(筆者的筆記本):Microsoft Visual Studio Code


結語

感謝觀看!

總結

以上是生活随笔為你收集整理的数据结构项目设计的全部內容,希望文章能夠幫你解決所遇到的問題。

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

日韩视频一区二区 | 久久久久成 | 久久99久久久久久 | 一级久久精品 | 中文字幕av影院 | 国产不卡免费 | 在线免费亚洲 | 成人在线播放av | 欧美极品少妇xxxx | 久久久久久久久久久久影院 | 国产亚洲精品无 | 精品女同一区二区三区在线观看 | 国产在线一区观看 | 手机成人免费视频 | 天天干.com| 国内精品久久久久影院一蜜桃 | 精品国产乱码一区二 | 亚洲欧美国产精品va在线观看 | 一区二区三区国产精品 | 中文字幕麻豆 | 中文字幕日韩免费视频 | av成人免费观看 | 亚洲欧美视频在线播放 | 美女免费视频黄 | 免费在线观看不卡av | 人人插人人做 | 国产日韩欧美在线 | 国产视频1区2区3区 久久夜视频 | 射久久 | 操操操综合 | 一级a性色生活片久久毛片波多野 | 国产 一区二区三区 在线 | 久久综合九色综合久99 | 青青射| 视频一区二区视频 | 亚洲精品乱码久久久久久蜜桃动漫 | 免费av成人在线 | 免费看的黄色网 | 婷婷精品国产欧美精品亚洲人人爽 | 波多野结衣电影一区二区 | 中文字幕日韩在线播放 | 欧美日韩在线观看一区 | 999视频在线播放 | 美女久久久久久 | 色综合婷婷 | 久久亚洲欧美 | 日韩成人邪恶影片 | 亚洲精品福利在线观看 | 国产91精品久久久久 | 亚洲日本激情 | 亚洲综合在线视频 | 久久福利小视频 | 最近高清中文字幕 | 精品国产一区二区三区久久久 | 亚洲国产手机在线 | 中文字幕文字幕一区二区 | 草在线 | 精品国产乱码久久久久久天美 | 91香蕉视频黄色 | 亚洲人天堂 | 国产精品久久电影观看 | 亚洲精品男人的天堂 | 久草在线最新视频 | 91在线播放国产 | 国产伦理精品一区二区 | 精品在线免费视频 | 伊人资源视频在线 | 中文字幕在线看人 | 免费看污在线观看 | 国产美女在线免费观看 | www天天干| 亚洲精品在线视频播放 | 在线观看91视频 | 美女视频一区二区 | 在线观看视频一区二区三区 | 国产精品午夜久久久久久99热 | 久久精品99国产精品酒店日本 | av韩国在线| 亚洲成人av免费 | 国产v在线| 人人草人人草 | av怡红院 | 99久久精品免费看国产 | 99免费在线视频观看 | 免费av片在线 | 免费视频91蜜桃 | 中文字幕电影一区 | 国产精品原创视频 | 欧美日韩精品二区第二页 | 精品国产视频一区 | 久久久国产一区二区三区 | 免费男女羞羞的视频网站中文字幕 | 久久久久成人精品 | 成人在线免费视频 | 国产成人高清 | 一区二区观看 | 日韩欧美视频在线播放 | 在线婷婷 | 亚洲高清激情 | 久久久久久久久久久福利 | 免费亚洲婷婷 | 天天夜夜操| 97碰在线视频 | 免费黄色a网站 | 欧美综合国产 | 热99在线 | av免费播放 | 97碰碰视频 | 超碰电影在线观看 | 日韩美女黄色片 | 国产色视频一区二区三区qq号 | 久久女教师 | 黄a网| 波多野结衣一区 | 色偷偷88欧美精品久久久 | 一级黄色片在线 | 九九九热精品免费视频观看 | 91视频-88av | 亚洲狠狠婷婷 | 日韩欧美在线影院 | 日韩高清在线一区二区 | 久久躁日日躁aaaaxxxx | 久久国产免费看 | av一区二区三区在线播放 | 亚洲国产99 | 日韩色视频在线观看 | 国产精品初高中精品久久 | 亚洲永久精品在线 | 美国三级黄色大片 | www.av小说 | 久久久久亚洲精品 | 国产高清在线 | 国产精品久久久久久婷婷天堂 | 国产96在线 | 欧美男同网站 | 五月婷婷中文 | 欧美色婷婷 | 久久夜色精品国产欧美一区麻豆 | 激情电影影院 | 精品一二三区视频 | 成人免费观看大片 | 国产精品美女久久久久久久久 | 视频一区在线播放 | 久久图 | 最新av网址大全 | 久久图 | 日本在线观看中文字幕无线观看 | 亚洲天堂社区 | 麻豆免费在线播放 | 欧美极品一区二区三区 | 国产探花视频在线播放 | 国产福利91精品一区 | 免费视频久久久久久久 | 美女网站在线免费观看 | 国产一级三级 | 亚洲天天综合 | 中文字幕免费在线 | 成人免费共享视频 | 日日夜夜综合 | 五月综合久久 | 欧美在线视频一区二区 | 在线观看视频免费播放 | 青青草国产成人99久久 | 国产偷国产偷亚洲清高 | 亚洲最大av| 亚洲最大免费成人网 | 亚洲国产理论片 | 九九热有精品 | av大片网站 | 国产手机在线观看视频 | 国产精品精品国产 | 中文字幕在线免费观看 | 国产免费叼嘿网站免费 | 亚洲激情婷婷 | 欧美一级片免费 | 久久avav| 欧美怡红院视频 | 91视频在线网址 | 亚洲精品视频在线观看免费视频 | 婷婷久久丁香 | 美女很黄免费网站 | 久产久精国产品 | 国产蜜臀av | 国产一级片在线播放 | 国产五月天婷婷 | 尤物九九久久国产精品的分类 | 激情婷婷六月 | 中文日韩在线视频 | 深爱五月激情网 | 国产露脸91国语对白 | 欧美激情视频一二区 | 91在线日韩 | 国产在线观看,日本 | 天天操 夜夜操 | 中文字幕精品久久 | 亚洲天天在线 | 天天搞天天 | 成人小视频在线免费观看 | av成人免费在线看 | 久久综合九色综合97_ 久久久 | 日韩在线观看av | 综合色伊人 | 日韩亚洲国产中文字幕 | 狠狠干中文字幕 | 婷婷去俺也去六月色 | 黄色成人免费电影 | 日韩免费观看视频 | 玖玖在线观看视频 | 中文字幕 91 | 美女精品国产 | 91丨porny丨九色| 欧美天天综合网 | 亚洲资源在线网 | 伊人天堂网 | 亚洲最大成人网4388xx | 国产精品久久艹 | 国产成人精品一区二区三区免费 | 中日韩三级视频 | 欧美美女一级片 | 日韩xxxbbb| 9999精品 | 天天摸天天操天天爽 | 亚洲 欧美 综合 在线 精品 | 国产91精品看黄网站在线观看动漫 | 色综合久久久久综合体 | 日本三级不卡视频 | 亚洲成人精品影院 | 欧亚日韩精品一区二区在线 | 日韩中文在线电影 | 伊人热 | 丁香六月国产 | 久久久久久久免费 | 国产1区2区3区精品美女 | 亚洲午夜精品在线观看 | 国产精品久久久av久久久 | 激情久久伊人 | 中文字幕欧美日韩va免费视频 | 亚洲理论影院 | 国产精品久久99 | 天天综合网在线观看 | 成人av片在线观看 | 成人资源站 | 麻豆免费在线视频 | 午夜婷婷网 | 免费看三级黄色片 | 日韩在线 一区二区 | 特级黄色视频毛片 | 国产区精品 | 日韩乱色精品一区二区 | 日韩中文字幕一区 | 精品一区电影 | 亚洲精品国产精品国自产 | a黄在线观看| 8090yy亚洲精品久久 | 亚洲精品婷婷 | 国产精久久久 | 国产我不卡 | 开心婷婷色| 四虎永久网站 | 欧美日韩高清一区二区 国产亚洲免费看 | 在线黄色免费 | 人人插人人舔 | 日本护士撒尿xxxx18 | 久久婷婷国产色一区二区三区 | 欧美日韩免费一区 | 久久久综合香蕉尹人综合网 | 国产成人精品一区二区三区在线观看 | 日韩电影在线观看中文字幕 | 久久综合精品一区 | 欧美极度另类 | 日本精品一区二区 | 99视频偷窥在线精品国自产拍 | 国产在线视频在线观看 | 美女久久99 | 午夜精品久久久久久久久久久 | 欧美精品免费在线 | 精品在线99| 五月开心六月伊人色婷婷 | 国语自产偷拍精品视频偷 | 久草久视频 | 不卡在线一区 | 亚洲区视频在线观看 | 国产一区二区在线免费观看 | 欧美一区二区三区激情视频 | 国产97色 | 久久久久久久久久久影视 | 狠狠色丁香婷婷综合 | 久久久国产一区二区三区四区小说 | 日韩字幕 | 99精品一区二区三区 | 亚洲视频在线观看网站 | av网站免费在线 | 午夜精品剧场 | 午夜精品一二区 | 国产精品久久久久久久久久三级 | 天天色视频 | 五月婷婷丁香在线观看 | www好男人 | 欧美成人精品欧美一级乱黄 | 九九九九免费视频 | 久久九九免费视频 | 激情在线五月天 | 久久新| 日韩免费观看视频 | 国产精品ssss在线亚洲 | 久久视频国产精品免费视频在线 | 97人人精品 | 久久人人爽av | 九九久久精品视频 | 日韩性久久 | 在线韩国电影免费观影完整版 | 国产精品无av码在线观看 | 美女视频黄是免费的 | 久久久婷| 国产在线精品视频 | 成年人免费电影在线观看 | 丝袜精品视频 | 亚洲精品国产欧美在线观看 | 亚洲资源在线观看 | 亚洲桃花综合 | 久久久久9999亚洲精品 | 91资源在线视频 | 在线观看视频免费播放 | 日韩黄色在线电影 | 亚洲一区二区三区毛片 | 午夜精品av在线 | 一色屋精品视频在线观看 | 五月天综合 | 韩国av免费观看 | 国产精品第2页 | 国产精品一区二区三区久久久 | www.com黄色 | 在线观看免费高清视频大全追剧 | 色婷婷导航| 久久免费视频在线观看6 | 国产精品密入口果冻 | 国产中文字幕在线观看 | 久草在线视频在线观看 | 国产v在线观看 | 久久久久久久网站 | 欧美日韩亚洲国产一区 | 日本精品二区 | 日本中文在线观看 | 欧美一区二区在线免费看 | 日本中文字幕在线一区 | 国产黄免费在线观看 | 国产女人18毛片水真多18精品 | 一区二区三区在线观看 | 岛国av在线不卡 | 亚洲最新视频在线 | 日韩午夜剧场 | 91视频久久久久 | a视频免费看 | 国产精品av在线免费观看 | 婷婷精品国产欧美精品亚洲人人爽 | 免费三级大片 | 国语精品免费视频 | 人人草在线观看 | 不卡视频在线 | 国产视频一区二区在线 | 日韩中文字幕在线 | 色香蕉视频 | 亚洲黄色软件 | 激情综合中文娱乐网 | 欧美另类v | 久久综合国产伦精品免费 | 亚洲视频2| 亚洲精品裸体 | 亚洲国产免费看 | 欧美一级视频在线观看 | 天天色婷婷| 亚洲精品成人 | 国产成人精品999 | 天天人人综合 | 中文字幕在线观看亚洲 | 久久精品视频在线 | 免费av观看网站 | 久久激情五月丁香伊人 | 欧美韩国日本在线 | 1024手机看片国产 | 99热精品国产 | 国产日韩欧美在线观看视频 | 欧美一级片免费观看 | 黄色av影院 | 国产精品久久久久久久久久免费 | 欧美激情在线网站 | 成人播放器 | 人人玩人人添人人 | 亚欧日韩av | 久久久精品一区二区 | 91精品在线播放 | 午夜美女视频 | 在线网站黄 | 国产美女免费 | 免费特级黄毛片 | 国产日韩在线看 | 精品99免费视频 | 九九热精 | www在线观看国产 | 69精品久久久 | 激情av网址 | 国产又黄又猛又粗 | 国产精品一区二区美女视频免费看 | 日韩免费在线观看视频 | 欧美日韩二区在线 | 黄色一级大片免费看 | 天天激情天天干 | 黄色99视频 | 久色网 | 日韩在线观看不卡 | 伊色综合久久之综合久久 | 国产最新视频在线观看 | 日韩三级在线观看 | 成人手机在线视频 | 97电影手机版 | 国产九九九视频 | 午夜精品中文字幕 | 最新国产精品视频 | 狠狠干中文字幕 | 精品视频久久久 | 日韩在线视频免费播放 | 日韩91在线 | 中文字幕在线影院 | 黄色网址国产 | 久久久久久国产精品久久 | 九九在线播放 | 色噜噜在线观看视频 | av片免费播放 | 亚洲精品免费播放 | 人人爽人人澡 | 午夜视频免费在线观看 | 国产日韩欧美在线播放 | 五月综合色 | 日韩在线视频不卡 | 色综合网在线 | 综合激情 | www.亚洲视频 | 精品在线播放视频 | 亚洲日本欧美在线 | 97色婷婷成人综合在线观看 | 成人精品视频久久久久 | 亚洲激情在线播放 | 欧美资源 | 午夜视频免费在线观看 | 黄色一级免费网站 | 一本一本久久a久久精品牛牛影视 | 天堂在线免费视频 | 国产91九色蝌蚪 | 久久久久久免费毛片精品 | 亚洲精品中文字幕在线观看 | 久久99久久久久久 | 色六月婷婷 | 中文字幕在 | 国产精品成人av在线 | 久久视频 | 成人a在线观看高清电影 | 国产成人精品免高潮在线观看 | 国产黑丝一区二区 | 日韩视频一区二区 | 久久神马影院 | 成人免费网视频 | 欧美福利网址 | 国产精品99久久99久久久二8 | 国产精品亚洲片在线播放 | 欧美黄网站 | 超碰电影在线观看 | 久久有精品 | 欧美视频日韩 | 九九久久精品视频 | 91色偷偷 | 一区二区三区电影 | 日韩在线激情 | 91色在线观看视频 | 久久在线免费观看 | 欧美日韩国产综合一区二区 | 天堂av在线免费观看 | 国产91全国探花系列在线播放 | 中文字幕在线观看网站 | 亚洲精品国产麻豆 | 香蕉视频在线播放 | 久久精品这里热有精品 | 美女久久久久久久久久 | 久久精品一区二区三区视频 | 欧美特一级片 | 在线成人短视频 | 亚洲乱码久久久 | 97夜夜澡人人双人人人喊 | 亚洲高清在线观看视频 | 国产色女 | 日本h在线播放 | 中文字幕av在线不卡 | 精品久久久免费视频 | 超碰人人射 | 91香蕉视频720p| 蜜臀久久99精品久久久酒店新书 | 国产黄色大片免费看 | 国产精品一区二区吃奶在线观看 | 国产美女无遮挡永久免费 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 91久久在线观看 | 狠狠艹夜夜干 | 亚洲国产色一区 | 国产男女爽爽爽免费视频 | 亚洲欧美国产精品va在线观看 | 成人在线视频免费观看 | www.888.av| 日韩资源视频 | 91在线免费视频 | 亚洲九九九在线观看 | 国产中文字幕三区 | 国产精品免费观看网站 | 久久综合综合久久综合 | 91九色成人蝌蚪首页 | 九九热只有这里有精品 | 午夜手机电影 | 五月婷婷一级片 | 热久久视久久精品18亚洲精品 | 日本精品视频一区 | 久久天天操 | 久久久久麻豆v国产 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 射射射综合网 | 色吊丝av中文字幕 | 国产午夜一级毛片 | 国产精品人人做人人爽人人添 | 亚洲精品一区二区精华 | 日韩免费专区 | 久久99久久99精品免视看婷婷 | 欧美精品乱码久久久久久按摩 | 五月激情丁香图片 | 91在线一区二区 | 欧美激情精品久久久久久免费 | 欧美国产亚洲精品久久久8v | 亚洲国产精品第一区二区 | 国内成人av | 91 在线视频播放 | 国产永久免费高清在线观看视频 | 美女精品 | 国产成人久久久久 | 亚洲综合色网站 | 91丨九色丨蝌蚪丨老版 | 最新免费中文字幕 | 亚洲精选久久 | 四虎在线影视 | 福利网址在线观看 | 欧美国产不卡 | 日本中文字幕免费观看 | 国产精品一区二区三区电影 | 91插插视频 | 国产亚洲精品v | 91福利影院在线观看 | 在线免费黄色毛片 | 久久新| 国产a网站 | 欧美一二三视频 | 婷婷亚洲综合 | 国产亚洲激情视频在线 | 中文字幕丰满人伦在线 | 狠狠干中文字幕 | 精品久久久久久久久久岛国gif | 99看视频在线观看 | 人人爱夜夜操 | 免费国产在线精品 | 成人h动漫精品一区二 | 四虎www. | 国产精品高潮久久av | 国产黄色一级片在线 | 四虎影视精品 | 久久成人精品 | 日韩精品免费一区二区在线观看 | 日韩欧美一区二区在线观看 | 麻豆视频国产精品 | 国产在线中文字幕 | 午夜 在线 | 国内揄拍国内精品 | 国产中文字幕视频在线 | 最近更新中文字幕 | 字幕网在线观看 | 中文字幕乱偷在线 | 天天操天天射天天操 | 久草精品视频在线播放 | 77国产精品 | 97成人超碰 | a级片网站| 视频一区二区在线观看 | 91系列在线观看 | 99 色| 国产精品黄色 | 天天操天天操天天操天天操天天操 | 日韩久久精品一区二区 | 超碰在线人人97 | 国产美女久久 | 久久伊人精品天天 | 亚洲成av人影片在线观看 | 国产经典 欧美精品 | 久久99深爱久久99精品 | 国产精品理论视频 | 国产精品久久久久9999 | 亚洲欧美视频在线播放 | 成人观看 | 黄色av免费 | 黄网站色视频 | 在线观看视频福利 | 亚洲中字幕 | 日韩大片免费观看 | 黄网站色 | 亚洲午夜电影网 | 青春草免费在线视频 | 欧美在线观看视频一区二区三区 | 欧美午夜精品久久久久 | 99久久精品国产毛片 | 免费观看完整版无人区 | 国产精品免费久久久 | 日韩在线一区二区免费 | 视频二区 | 91视频亚洲 | 亚洲精品国产精品国自产观看浪潮 | 91精品国自产在线偷拍蜜桃 | 密桃av在线| 久久久穴| 中文字幕在线播出 | 中文字幕成人av | 久久99视频免费 | 亚洲va欧美va国产va黑人 | 中文字幕日本在线 | 依人成人综合网 | 成片免费观看视频 | 黄色片免费看 | 9999在线观看 | 黄污视频大全 | av黄色亚洲 | 国产精品丝袜久久久久久久不卡 | 欧美亚洲精品一区 | 中文字幕乱码一区二区 | 免费av在线网站 | 成人av一区二区兰花在线播放 | 国产91欧美 | 日韩影视在线 | 日本久久综合网 | 成人9ⅰ免费影视网站 | 欧美日韩视频精品 | 中文字幕在线观看免费 | 亚洲精品乱码久久久久久蜜桃91 | 狠狠色香婷婷久久亚洲精品 | 亚洲人人av | 西西大胆啪啪 | 国产精品久久久久久久久久久久午 | 丁香花在线视频观看免费 | 天堂av观看 | 91新人在线观看 | 免费看黄色91 | 成人a级免费视频 | 久久99国产综合精品 | 人人看人人爱 | 91久久国产露脸精品国产闺蜜 | 午夜精品成人一区二区三区 | 麻豆传媒视频在线播放 | 欧美精品亚洲精品 | 欧美日性视频 | 天天干天天操天天射 | 日韩高清免费电影 | av中文在线| 成人在线播放免费观看 | 天天操天天谢 | 久久综合色一综合色88 | 日韩中文字幕免费在线播放 | 在线播放视频一区 | 久久乐九色婷婷综合色狠狠182 | 成人国产亚洲 | 欧美激情另类文学 | 久久久久在线视频 | 99久久精品国产系列 | 亚洲91视频 | 在线观看av小说 | 欧美精品久久久久 | 精品国产电影一区 | 久久久精品国产免费观看一区二区 | 一区二区亚洲精品 | 久久色视频 | 欧美一级激情 | 国产69精品久久久久9999apgf | 操操操影院 | 成人免费视频在线观看 | 九九热在线免费观看 | 黄色大片免费播放 | 黄色精品国产 | 久久久久久久久久久久久国产精品 | 国产在线日本 | 国产精品精品久久久久久 | 99色在线观看 | 国产 一区二区三区 在线 | 日韩欧美高清一区二区三区 | 亚洲国产中文字幕在线 | 手机av网站 | 国产成人61精品免费看片 | 亚洲乱码国产乱码精品天美传媒 | 在线视频18在线视频4k | 996久久国产精品线观看 | 香蕉视频在线播放 | 国产涩涩在线观看 | 久久国产精品免费看 | 97视频免费在线看 | 黄色成人av在线 | 亚洲伊人av | 国产999精品久久久久久麻豆 | 久久97久久97精品免视看 | www.xxxx变态.com | 婷婷色5月| 一区二区激情 | 玖玖爱在线观看 | 婷婷丁香激情五月 | 国产123区在线观看 国产精品麻豆91 | 一级黄色大片在线观看 | 香蕉视频啪啪 | 最新日本中文字幕 | 黄网站色成年免费观看 | 久久伊人五月天 | 国产麻豆视频网站 | 黄色片毛片 | 久久国产精品色婷婷 | 91香蕉视频 mp4 | 成人免费网视频 | 久久久久久久久黄色 | 四虎成人av | 亚洲精品1区2区3区 超碰成人网 | 日韩二区三区在线观看 | 亚洲国产操 | 成人免费视频在线观看 | 天天操夜夜拍 | 伊人春色电影网 | 久久久久久久久久久久久久免费看 | 在线亚洲欧美日韩 | 久草在线免费在线观看 | 一二区av | 中国美女一级看片 | av成人免费在线观看 | 精品亚洲一区二区 | 最新成人av| 91黄色影视 | 成人免费中文字幕 | 日本三级久久久 | www.色综合.com | 99九九视频 | 97超碰在| 国产午夜精品一区二区三区 | 色姑娘综合 | 亚洲精品国产日韩 | 国产欧美精品一区二区三区四区 | 精品av网站 | 色六月婷婷 | 摸阴视频 | 久久久99精品免费观看 | 91av电影网| 精品99在线视频 | 一区在线电影 | 久久乐九色婷婷综合色狠狠182 | 夜添久久精品亚洲国产精品 | 久久国内精品99久久6app | 99国产在线观看 | 中字幕视频在线永久在线观看免费 | 欧美污网站 | 欧美另类视频 | 制服丝袜天堂 | 久草在线免费电影 | 女人高潮一级片 | 亚洲国产精品电影在线观看 | 91精品国产乱码久久桃 | 狠狠色丁香婷婷综合基地 | 日韩电影一区二区三区在线观看 | 国产网红在线观看 | 国产在线精品二区 | 国产亚洲视频在线观看 | 久久久影院一区二区三区 | 亚洲一区美女视频在线观看免费 | 日韩在线观 | 欧美一级久久久久 | 少妇bbw撒尿| 久久蜜臀av | 又黄又刺激的视频 | 天天做日日爱夜夜爽 | 天天操夜夜操国产精品 | 中文字幕成人在线观看 | 久久最新网址 | 欧美在线视频日韩 | 国产高清不卡在线 | 国产一区 在线播放 | 婷婷新五月 | 久久人人97超碰精品888 | 亚洲精品资源在线观看 | 久久精品福利 | 日韩精品免费在线播放 | 国产小视频免费在线网址 | 成人播放器 | 国产色拍 | 国产免费作爱视频 | 亚洲精品在线视频播放 | www.玖玖玖| 伊人天天狠天天添日日拍 | 黄色在线观看污 | 麻豆av电影 | 人人看看人人 | 一本色道久久综合亚洲二区三区 | av专区在线 | 日韩中文幕 | 亚洲精品av中文字幕在线在线 | 日韩久久精品一区二区三区 | 欧美日韩aaaa | 免费看的黄色网 | 在线播放日韩av | 国产日产精品一区二区三区四区 | 探花在线观看 | 国产自产高清不卡 | 国产一区二区精品久久 | 久久这里只有精品首页 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产免费中文字幕 | 欧美一级xxxx| 国产亚洲成人精品 | 中文字幕高清免费日韩视频在线 | 久久与婷婷 | 91在线播放视频 | 亚洲三区在线 | 婷婷在线网站 | 美女黄频网站 | 91精品在线播放 | 久久精品一二三区白丝高潮 | 91在线视频播放 | 国产在线一区二区 | av在线中文 | 欧美日韩综合在线观看 | 欧美日本在线观看视频 | 黄色a级片在线观看 | www.伊人网.com| 超碰97人人干 | 日韩一区在线免费观看 | 欧美日韩调教 | 亚洲国产网站 | 92国产精品久久久久首页 | 免费在线观看av | 日韩欧美电影在线观看 | 欧美日韩精品区 | 天天射天天射天天射 | 精品在线二区 | 日韩久久精品一区二区 | 成人黄色大片在线观看 | 欧美日韩国产一区二区三区 | 国产激情免费 | 国产成人高清av | 超碰在线9 | 91精品国产乱码久久桃 | 日韩精品一区二区在线观看视频 | 最新黄色av网址 | 99久久精品费精品 | 日韩精品一区在线播放 | 天天干天天操av | 五月天免费网站 | 国产xxxx| 91视频电影 | 97超视频在线观看 | 这里有精品在线视频 | 一级黄毛片 | 99色视频在线 | 免费人成在线观看网站 | 91福利试看 | 91av在线国产| 黄色影院在线免费观看 | 久久国产精品99国产 | 婷婷综合导航 | 天天综合五月天 | 日韩在线观看中文字幕 | 国产小视频免费在线观看 | 国产一级精品视频 | 国产黄 | 五月天欧美精品 | 在线91精品| 国产麻豆果冻传媒在线观看 | 亚洲精品在线视频观看 | 欧美疯狂性受xxxxx另类 | 国产高清视频免费 | 久久久国产99久久国产一 | 97成人资源 | 四虎国产精品免费观看视频优播 | 免费网址在线播放 | 成人小视频在线观看免费 | 国产精品久久久久久影院 | 亚洲精品一区二区三区在线观看 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 日韩欧美在线不卡 | 欧美日韩免费在线观看视频 | 中文字幕色综合网 | 国产精品免费一区二区三区 | 视频一区二区免费 | 免费看成人a | 久草精品视频在线看网站免费 | 日本精品一区二区 | 亚洲1级片| 色婷婷国产精品一区在线观看 | 国产97色在线 | 成人 亚洲 欧美 | bayu135国产精品视频 | 中文字幕在线看视频 | 成人黄色大片在线免费观看 | 久草在线手机视频 | av中文天堂| 99在线国产| 美女黄频在线观看 | 精品亚洲免费 | av丝袜在线 | 丁香视频五月 | 久久精品国产99 | 国产精品久久精品国产 | 日韩欧美一区二区在线播放 | 五月天久久久 | 日韩电影一区二区在线 | 精品久久久久久国产 | 在线免费黄色av | 91亚洲狠狠婷婷综合久久久 | 免费观看第二部31集 | 午夜精品在线看 | 亚洲第一av在线播放 | 日韩欧美在线不卡 | 深爱激情亚洲 | 久艹在线播放 | 91视频-88av| 男女激情免费网站 | 香蕉视频在线观看免费 | 在线黄频| 99精品小视频 | 最近中文字幕国语免费av | 国产一级片免费播放 | 亚洲精选在线 | 91视频麻豆 | 在线一二三区 | 福利电影久久 | 99视频免费 | 久久久国产精品久久久 | 九九导航 | 五月天婷婷在线视频 | 99在线精品免费视频九九视 | 中文字幕在线看片 | 国产午夜在线观看 | 中文字幕日韩av | 天天操狠狠操 | av片中文字幕 | 久久99精品国产麻豆婷婷 | 看国产黄色片 | av网站免费在线 | 久久精品中文 | 黄色av电影 | 国产欧美日韩视频 | 欧美一区二区三区在线 | jizzjizzjizz亚洲 | 日韩成人在线一区二区 | 在线一区av | 午夜精品久久久久久久久久 | 日本中文一级片 | 99久久精品国产一区二区成人 | 97看片 | 中文字幕免费播放 | 丝袜美腿亚洲 | 国产香蕉久久精品综合网 | 美国三级黄色大片 | 国产一级h | 久久久久久久久久久黄色 | 久久精品免费播放 | 超碰在线国产 | 福利视频一二区 | 国产精品久久久久久久久久久久午夜片 | 丁香综合av| 欧美整片sss | 91九色porny蝌蚪视频 | 狂野欧美激情性xxxx | 亚洲精品乱码久久久久久 | 国产成人中文字幕 | 热re99久久精品国产66热 | 日韩视频图片 | 久久伦理网 | 韩日视频在线 | 热热热热热色 | 麻豆系列在线观看 | 免费久久99精品国产婷婷六月 | 人人爽网站 | 久久第四色| 日本中文一级片 | 久久久久亚洲精品国产 | 欧美黑人巨大xxxxx | av7777777 | 天天干天天操天天拍 | 国产精品一区二区久久精品 | 91麻豆操 | 天天天干| 一级黄网 | 久久极品| 精品久久久久免费极品大片 | 亚洲精品免费视频 | 色99久久 | 天堂黄色片 | 午夜视频在线瓜伦 |