數(shù)據(jù)結(jié)構(gòu)課程設計-舞伴問題_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設計-舞伴問題_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設計-舞伴問題_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設計-舞伴問題_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設計-舞伴問題_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上分類號 編 號 華北水利水電大學 North China Institute of Water Conservancy and Hydroelectric Power 課 程 設 計題目 舞伴問題 院 系 信息工程學院 專 業(yè) 計算機科學與技術(shù) 姓 名 賈 寧 指 導 教 師 楊 彬 第一章 需求分析1.1 問題描述一班有m個女生、n個男生(m不等于n), 舉辦一場舞會. 男女生分別編號坐在舞池兩邊的椅子上,每曲開始時, 依次從男生和女生中各出一人配對跳舞, 本曲沒成功配對者坐著等待下一曲找舞伴,設計一個程序模擬舞伴配對過程。 1.2 基本要求1.2.1 輸入及輸出格

2、式輸入男、女學生的姓名、性別,由程序自動為男女生編號,可以順序編號,也可以隨機編號,輸出每曲配對情況(包括男、女生的姓名、性別和編號)。原始數(shù)據(jù)和結(jié)果數(shù)據(jù)要保存到文件中。在讀入男女生信息時,可以從文件中直接讀取學生的姓名和性別信息。輸出顯示時顯示每首歌的配對情況,包括對應配對學生的姓名、性別以及編號??梢暂敵稣麄€舞池配對過程的所有配對情況。將輸出顯示的內(nèi)容對應寫入到指定的文件中。1.2.2 程序所完成的功能從文件或者手動輸入班級的學生信息,包括姓名和性別基本信息,根據(jù)性別使男女生分別坐在舞池兩邊的座位上,學生的座位編號順序生成,且一旦編號確定,將不再發(fā)生變化。每一首歌曲播放時,依次從男女生隊列

3、中出來學生進行配對,由于男女生人數(shù)不一致,會使某個隊列中剩下若干學生配對不成功,配對不成功者等待下首歌時再進行配對。該首歌結(jié)束時,配對成功的學生再回到座位上。然后再依次進行配對,未成功者等待下首歌再進行配對。配對成功時,會顯示本首歌的詳細配對情況,以及整個過程的配對情況,并且可以將配對情況寫入到文件。根據(jù)男女生的姓名或者某首歌曲的名字可以查詢到對應的配對情況。第二章 概要設計 2.1 數(shù)據(jù)結(jié)構(gòu)學生座位隊列:ADT StuQueue 數(shù)據(jù)對象:D= ai|aiElemSet,i=1,2.n;n0 數(shù)據(jù)關(guān)系:R= <ai-1,ai > aiD ,i=1,2.nvoid InitQueu

4、e(StuQueue &Q) 操作結(jié)果:初始化一個空的循環(huán)隊列void EnQueue(StuQueue &Q,FinalStu stu) 初始條件:循環(huán)隊列Q已經(jīng)存在,并且無信息 操作結(jié)果:向Q中循環(huán)加入信息void EnQueue2(StuQueue &Q,FinalStu stu) 初始條件:循環(huán)隊列已存在,非首次進循環(huán)隊列 操作結(jié)果:向Q中添加信息FinalStu DeQueue(StuQueue &Q) 初始條件:循環(huán)隊列已存在 操作結(jié)果:使隊列頭的元素出隊列,且返回FinalStu類型值ADT StuQueue /學生座位隊列音樂隊列:ADT Mus

5、icList數(shù)據(jù)對象:D= ai|aiElemSet,i=1,2.n;n0 數(shù)據(jù)關(guān)系:R= <ai-1,ai > aiD ,i=1,2.nvoid InitMusic(MusicList & MList)操作結(jié)果:創(chuàng)建循環(huán)鏈表void InsertMusic(MusicList &MList,char* name)初始條件:該鏈表已存在 操作結(jié)果:向鏈表中添加數(shù)據(jù)ADT MusicList;臨時隊列:ADT TempQList數(shù)據(jù)對象:D= ai|aiElemSet,i=1,2.n;n0 數(shù)據(jù)關(guān)系:R= <ai-1,ai > aiD ,i=1,2.nvo

6、id InitQList(TempQList &TQL) 操作結(jié)果:初始化臨時隊列void EnTempQueue(TempQList & TQL,FinalStu stu) 初始條件:隊列TQL已存在 操作結(jié)果:向TQL中添加信息FinalStu DeTempQueue(TempQList &TQL) 初始條件:隊列TQL存在 操作結(jié)果:取出隊列的對頭元素,返回FinalStu類型ADT TempQList;2.2 程序模塊本系統(tǒng)主要包括登陸模塊、學生入座、自動配對、顯示配對過程以及查詢配對信息模塊。登陸:輸入正確的用戶名以及密碼,方可進入系統(tǒng),連續(xù)輸入錯誤三次則禁止

7、進入系統(tǒng)。學生入座:以不同的方式獲取學生信息后,根據(jù)學生性別依次進入兩個循環(huán)隊列,并為每個學生唯一編號。自動配對:每首歌開始時,男女生依次從坐席中出來進行本首歌的配對,配對不成功者等待下首歌繼續(xù)配對,下首歌時,上首歌未配對成功者本首歌先進行配對。顯示配對過程:在播放歌曲的過程中,顯示播放的歌曲信息,以及本首歌的配對信息。查詢配對:根據(jù)男女生的姓名查出兩人的在哪一首歌進行過配對,根據(jù)歌曲名稱查詢出本首歌的配對信息。文件操作:將配對情況及學生的座位信息寫入文件根據(jù)系統(tǒng)模塊的劃分,本系統(tǒng)的功能模塊圖如圖2-1所示圖 2-1 功能模塊2.3 模塊調(diào)用及算法登陸成功后進入主界面,進入主界面后,需要先運行

8、學生入座模塊,方能進行下邊的操作。學生入座后會得到相關(guān)的基本信息。之后調(diào)用配對模塊函數(shù),進行學生的配對。學生配對成功后,才能利用顯示配對過程進行顯示配對的情況,后續(xù)的查詢配對模塊也必須在配對成功的基礎上進行。模塊間的調(diào)用流程如圖2-2所示圖 2-2 模塊調(diào)用 在進行配對過程中用到算法,在每首歌配對時,依次從男女生隊列中出來一個學生,進入到臨時隊列,從臨時隊列中獲取配對的情況。在本首歌結(jié)束,下首歌開始之前,讓臨時隊列中的男女在分別根據(jù)性別入隊,依次循環(huán),每次調(diào)用配對函數(shù),實現(xiàn)學生的循環(huán)配對。第三章 詳細設計3.1 操作實現(xiàn)本系統(tǒng)包含七個文件。設計分有歡迎界面,登陸系統(tǒng),入隊函數(shù),配對函數(shù),顯示函

9、數(shù),查詢函數(shù)等。登陸界面是整個系統(tǒng)的入口,其主要是讓合法人員進入系統(tǒng),入隊函數(shù)主要讓學生進入男女隊列,配對函數(shù)主要是根據(jù)每首歌曲把男女生進行配對,顯示函數(shù)主要是顯示男女生的配對情況,查詢函數(shù)主要是根據(jù)男女生姓名和歌曲名查找配對情況。系統(tǒng)首先通過程序調(diào)用void main()進入歡迎界面和系統(tǒng)登陸界面,根據(jù)用戶的帳號和密碼登陸成功后進入主菜單。根據(jù)用戶的選擇可分別進入:1.學生就坐;2.每曲配對;3.顯示結(jié)果;4.查詢配對;5.退出。選擇“1.學生就坐”項,會顯示學生信息來源,包括“1.按班級獲取(推薦)”“2.手動輸入.”兩項可供選擇。其中,1是從文件中獲取學生信息,2是用戶手動輸入學生信息。

10、選擇“2.每曲配對”項,會顯示播放歌曲的類型,有“1.流行”“2.復古”兩個音樂風格可供選擇,當用戶選擇其中一個風格并確定播放后,會顯示出當前播放的歌曲名字和所配對的男女生。選擇“3.顯示結(jié)果”項,會有“1.學生座位信息”和“2.學生配對信息”兩項操作可供選擇。當選擇1,會把學生就坐后的信息顯示出來,選擇2,會把每首歌學生的配對情況顯示出來。選擇“4.查詢配對”項,也有兩個操作可供選擇,分別是“1.按學生姓名”“按歌曲名”兩項。選擇1,會根據(jù)用戶輸入的男女生姓名查看他們的配對情況,選擇2,會根據(jù)用戶輸入的歌曲名稱顯示每首歌曲學生的配對情況。選擇“5.退出”項,會出現(xiàn)感謝使用系統(tǒng)界面,并按任意鍵

11、退出系統(tǒng)。本系統(tǒng)的主流程圖如圖3-1 所示圖 3-1 主流程3.2 算法實現(xiàn)定義學生結(jié)構(gòu)體FinalStu ,將學生的信息放到本結(jié)構(gòu)體中,定義兩個循環(huán)隊列Boys和Girls隊列,分別存儲男女生的座位信息。定義MusicList循環(huán)鏈表,用于存放音樂信息。定義TempQueue隊列,用于臨時存放從男女生隊列中出來的學生信息。創(chuàng)建一個存放每首歌配對情況的數(shù)組stuTable,用來存放播放該首歌曲時男女生的信息。每一首歌開始時,男女生依次用Boys和Girls隊列中出對,依次進入臨時隊列TempQueue,從TempQueue中讀取男女生的信息,放到stuTable數(shù)組中,表示該首歌的配對情況。下

12、首歌開始時,讓臨時隊列中的學生再根據(jù)性別依次進入男女循環(huán)隊列。同時將存放歌曲的MusicList循環(huán)鏈表指針后移,播放下首歌曲,再執(zhí)行上述操作,便可實現(xiàn)循環(huán)配對。第四章 編碼調(diào)試4.1 調(diào)試環(huán)境硬件環(huán)境:Intel 1GHZ處理器(或AMD同類處理器),512M或以上內(nèi)存容量,10G或以上硬盤容量,可連接互聯(lián)網(wǎng)的相關(guān)設備。軟件環(huán)境(軟件、操作系統(tǒng)):Windows XP(或Windows 2003或Windows vista或Windows 7)操作系統(tǒng),Microsoft Visual Studio 2008。4.2 調(diào)試方法為了提高測試效率,降低測試成本,本測試方案采用黑盒法設計基本的測試

13、方案,再用白盒法補充一些方案。在黑盒法測試方案中,采用等價劃分技術(shù),把所有可能的數(shù)據(jù)劃分成幾個等價類。4.3 調(diào)試項目及調(diào)試結(jié)果4.3.1 登陸測試用戶根據(jù)用戶名及密碼登陸系統(tǒng),內(nèi)置用戶為Admin,密碼為。登陸成功如圖4-1所示,登陸失敗如圖4-2所示圖 4-1 登陸成功 圖 4-2 登陸失敗4.3.2 加載學生信息 可以從文件或者手動輸入學生信息,從文件中選擇時,可以選擇不同的文件,其運行結(jié)果如圖4-2 及圖4-3 所示圖 4-3 選擇信息來源圖 4-4 顯示獲取信息4.3.3 學生配對調(diào)試 在進行配對之前,需要先將音樂信息加載到系統(tǒng)中,其加載過程如圖4-5所示圖 4-5 加載音樂 學生就

14、位及音樂加載成功后,開始播放音樂,并進行配對,其音樂播放情況及每首歌曲的配對情況如圖4-6、圖4-7及圖4-8所示圖 4-6 配對開始圖 4-7 播放下一首圖 4-8 循環(huán)配對4.3.4 顯示總配對 在整個過程結(jié)束后,停止播放音樂,可以顯示整個過程的配對情況,其結(jié)果如圖4-9所示圖 4-9 顯示配對結(jié)果4.3.5 查詢配對 可以根據(jù)男女生的姓名查詢兩人的配對情況,當輸入兩個學生姓名時,顯示在整個過程中的配對情況,其結(jié)果如圖 4-10所示圖4-10 姓名查詢配對 根據(jù)每一首歌曲情況查詢在本首歌曲中的配對情況,其結(jié)果如圖4-11 所示圖 4-11 按歌名查找第五章 總結(jié)這次的課程設計懂得了理論與實

15、際相結(jié)合是很非常重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為,從而提高自己的實際動手能力和獨立思考的能力。在整個設計過程中,構(gòu)思是很花費時間的,在構(gòu)思總體架構(gòu)時,需要先將需求分析搞清楚,需要在找到了需要解決的問題后,再想辦法解決該問題。而不是在設計過程中邊想邊解決,需要先將所有可能的問題都考慮到,再依次解決。在整個系統(tǒng)設計完成后,如果再遇到新的問題,可以對系統(tǒng)進行適當?shù)母?。調(diào)試時經(jīng)常會遇到這樣那樣的錯誤,有的時候是因為一些最基本的錯誤,如標點的中英錯誤,括號的匹配問題,數(shù)據(jù)的輸入錯誤等。當然,也有很多地方是因為用錯了解決方法。在設計的過

16、程中,最能體現(xiàn)出的缺點就是基礎不扎實,本可以避免的錯誤卻一再出現(xiàn)。在實現(xiàn)舞池配對問題過程中,需要使學生循環(huán)配對,此程序設計的是當一個光盤的音樂播放結(jié)束時,整個配對過程隨之結(jié)束,而沒有讓學生再次進去坐席,導致不再從新將學生入座,就無法實現(xiàn)配對。設計的是在每首歌開始之前學生進入隊列,可以改為當某個學生坐席為空時,隨即讓學生再次進入隊列,可以解決不能重復換歌曲的問題。剛開始的時候我直接在開發(fā)環(huán)境下一邊看題一邊寫代碼,瞪了半天什么也沒寫出來,于是我便先開始在紙上畫畫寫寫,將事件的整個過程畫下來,然后考慮怎么才能運用代碼來實現(xiàn),一邊思考一邊寫一些粗略的代碼,最后從上到下執(zhí)行代碼看看是不是符合題目要求。有

17、沒有什么漏洞。等這些完成以后,再在開發(fā)環(huán)境下將代碼完善、編譯和調(diào)試。雖然說代碼還有許多要改進的地方,有的功能還不夠完善,可畢竟是自己親自寫出來的,對于程序的條理有了一個清晰的了解,對編程也有了更加深刻的認識。參考文獻1 譚浩強. C程序設計(第三版)M.北京:清華大學出版社,2005.2 嚴蔚敏,吳偉民. 數(shù)據(jù)結(jié)構(gòu)(C語言版)M.北京:清華大學出版社,1997. 3 陸麗娜. 軟件工程. 北京:經(jīng)濟科學出版社,2005.4 姚詩斌. 數(shù)據(jù)庫系統(tǒng)基礎.計算機工程與應用,1981年第8期附錄 系統(tǒng)源代碼#include <iostream>#include <stdio.h>

18、;#include<conio.h>#include <stdlib.h>#include <Windows.h>#define MAXQSIZE 20 /循環(huán)隊列最大存儲量#define STU_SIZE 5 /學生人數(shù)#define SIZE 100 int idCount=1000;/全局變量控制學生id自增int length;/記錄每首歌配對的數(shù)量int index=0;/記錄最終配對表的下標using namespace std;/舞池就坐后的學生信息結(jié)構(gòu)體struct Adminchar name15;char passWord15;Admin

19、 *next;Admin *admin;struct FinalStuchar name15;char sex3;int id;FinalStu stuSTU_SIZE;FinalStu stuSeatSTU_SIZE;/用來存放入座后的學生信息FinalStu stuTableSTU_SIZE2;/用來存放沒收歌曲的配對情況/舞池座位struct StuQueueFinalStu *base;int front;int rear;StuQueue Boys; /男生隊列StuQueue Girls; /女生隊列/初始化學生坐席void InitQueue(StuQueue &Q)Q.

20、base=(FinalStu*)malloc(MAXQSIZE*sizeof(FinalStu);if(Q.base=NULL)return ;Q.front=Q.rear=0;/學生就坐,首次入隊,需要獲取學生的idvoid EnQueue(StuQueue &Q,FinalStu stu)int i=100;if(Q.rear+1)%MAXQSIZE=Q.front)return ;strcpy(Q.baseQ.,);strcpy(Q.baseQ.rear.sex,stu.sex);Q.baseQ.rear.id=idCount+;Q.rear=(

21、Q.rear+1)%MAXQSIZE;/非首次入隊,不需獲取學生的idvoid EnQueue2(StuQueue &Q,FinalStu stu)strcpy(Q.baseQ.,);strcpy(Q.baseQ.rear.sex,stu.sex);Q.baseQ.rear.id=stu.id;Q.rear=(Q.rear+1)%MAXQSIZE;/從坐席上出來FinalStu DeQueue(StuQueue &Q)FinalStu stu;if(Q.rear!=Q.front)stu=Q.baseQ.front;Q.front=(Q.fro

22、nt+1)%MAXQSIZE;return stu;/存放音樂信息struct Musicchar M_Name15;Music *next;/存放音樂鏈,循環(huán)鏈表struct MusicListMusic *head; Music *tail;MusicList ML;Music *M_p;/初始化指針void InitMusic(MusicList & MList)MList.head=MList.tail=(Music *)malloc(sizeof(Music);MList.head->next=NULL;/向音樂鏈表中添加音樂void InsertMusic(Music

23、List &MList,char* name)Music *p=(Music*)malloc(sizeof(Music);MList.tail->next=p;strcpy(p->M_Name,name);MList.tail=p;MList.tail->next=MList.head;/臨時隊列,用于存放從男女生隊列中配對成成功的學生信息struct TempQueueFinalStu stu;TempQueue * next;struct TempQListTempQueue *front;TempQueue *rear;TempQList TempQL; /臨時

24、隊列,用于存放每次出來的男女生信息void InitQList(TempQList &TQL)TQL.front=TQL.rear=(TempQueue *)malloc(sizeof(TempQueue);TQL.front->next=NULL;void EnTempQueue(TempQList & TQL,FinalStu stu)TempQueue *p=(TempQueue *)malloc(sizeof(TempQueue);p->stu=stu;p->next=NULL;TQL.rear->next=p;TQL.rear=p;FinalS

25、tu DeTempQueue(TempQList &TQL)FinalStu stu;TempQueue *p;p=TQL.front->next;if(p=TQL.rear)stu=p->stu;TQL.rear=TQL.front;elsestu=p->stu;TQL.front->next=p->next;free(p);return stu;/=配對信息存放=struct MatchListchar musicName20;FinalStu stu2;MatchList matchTableSIZE;/從鍵盤讀入學生信息void GetInfKey

26、()for(int i=0;i<STU_SIZE;i+)cout<<"輸入第"<<i+1<<"個學生的姓名:"scanf("%s",);cout<<"輸入第"<<i+1<<"個學生的性別:"scanf("%s",stui.sex);/學生入座void StudentSit()for(int i=0;i<STU_SIZE;i+)if(strcmp(stui.sex,"

27、男")=0)EnQueue(Boys,stui);elseEnQueue(Girls,stui);/獲取就坐后的男女生性別、姓名、編號,stuSeat 存放就坐后的學生信息,包括學生編號void GetStuSeat()int i=0; int j=0;i=Boys.front;j=Girls.front;while(i!=Boys.rear)stuSeati=Boys.basei;i+;while(j!=Girls.rear)stuSeati=Girls.basej;j+;i+;/將就座的學生信息寫入文件int InFileStuSeat()FILE *fp_Seat;int re

28、s=0;if(fp_Seat=fopen("Seat.txt","wt")=NULL)cout<<"讀取學生座位信息失??!"return -1;fprintf(fp_Seat,"姓名t性別t序號n");for(int i=0;i<STU_SIZE;i+)fprintf(fp_Seat,"%st%st%d",stuS,stuSeati.sex,stuSeati.id);fprintf(fp_Seat,"n");res+;fclose(fp_S

29、eat);return res;void PrintStuSeat()cout<<"ttt姓名t性別t序號"<<endl;for(int i=0;i<STU_SIZE;i+)cout<<"ttt"<<stuS<<"t"cout<<stuSeati.sex<<"t"<<stuSeati.id<<endl;/從文件中獲取管理員信息void ReadAdmin()admin=(Admin*)

30、malloc(sizeof(Admin);admin->next=NULL;Admin *q=admin;FILE *fp_Admin;if(fp_Admin=fopen("admin.txt","rt")=NULL)cout<<"打開文件失?。?quot;return;while(!feof(fp_Admin)Admin *p=(Admin *)malloc(sizeof(Admin); p->next=NULL;fscanf(fp_Admin,"%s%s",p->name,p->pas

31、sWord);q->next=p;q=p;fclose(fp_Admin);/從文件獲取學生信息void ReadStuFile(int res)FILE *fp;if(res=1)if(fp=fopen("student1.txt","rt")=NULL)cout<<"打開文件失敗!"<<endl;return;else if(res=2)if(fp=fopen("student2.txt","rt")=NULL)cout<<"打開文件失??!

32、"<<endl;return;int i=0;while(!feof(fp)fscanf(fp,"%s%s",,stui.sex);i+;if(i>=STU_SIZE)break;fclose(fp);/加載音樂信息int LoadMusic(int cd)char music520; /存放從文件中獲取的音樂名稱int res=0;FILE *fp_music;if(cd=1)if(fp_music=fopen("music1.txt","rt")=NULL)cout<<&q

33、uot;打開音樂文件失?。?quot;<<endl;return -1;else if(cd=2)if(fp_music=fopen("music2.txt","rt")=NULL)cout<<"打開音樂文件失?。?quot;<<endl;return -1;for(int j=0;j<5;j+)if(fread(musicj,20*sizeof(char),1,fp_music)=1)res+;fclose(fp_music);InitMusic(ML);for(int i=0;i<5;i+)I

34、nsertMusic(ML,musici);return res;int InFileMatchTable()FILE *fp_MTable;if(fp_MTable=fopen("matchtable.txt","wt")=NULL)cout<<"打開文件失敗"<<endl;return -1;fprintf(fp_MTable,"歌曲名稱t姓名t性別t序號t姓名t性別t序號n");for(int i=0;i<index;i+)fprintf(fp_MTable,"%stt

35、%st%st%dt",matchTablei.musicName,matchT,matchTablei.stu0.sex,matchTablei.stu0.id);fprintf(fp_MTable,"%st%st%dn",matchT,matchTablei.stu1.sex,matchTablei.stu1.id);fclose(fp_MTable);return 1;void StudentSitAgain()FinalStu stu;while(TempQL.front!=TempQL.rear)

36、stu=DeTempQueue(TempQL);if(strcmp(stu.sex,"男")=0)EnQueue2(Boys,stu);elseEnQueue2(Girls,stu);/播放歌曲void PlayMusic()cout<<"tt正在播放:t"<<M_p->M_Name;/下一首void NextMusic()M_p=M_p->next;if(M_p=ML.head)M_p=ML.head->next;/學生配對void Match()/FinalStu studentSTU_SIZE;int st

37、atic i=0;int j=0;length=0;while(Boys.front!=Boys.rear&&Girls.front!=Girls.rear)EnTempQueue(TempQL,DeQueue(Boys); /從男生隊列中出來進入臨時隊列EnTempQueue(TempQL,DeQueue(Girls);/從女生隊列中出來進入臨時隊列l(wèi)ength+;/記錄每首歌的配對數(shù)/從臨時隊列中將信息賦值給表TempQueue *tem=TempQL.front->next;while(tem)strcpy(matchTableindex.musicName,M_p

38、->M_Name);strcpy(matchT,tem->);strcpy(matchTableindex.stu0.sex,tem->stu.sex);matchTableindex.stu0.id=tem->stu.id;/-每曲歌的配對情況strcpy(stuT,tem->);strcpy(stuTablej0.sex,tem->stu.sex);stuTablej0.id=tem->stu.id;tem=tem->next;/-整個播放過程的配對表

39、strcpy(matchT,tem->);strcpy(matchTableindex.stu1.sex,tem->stu.sex);matchTableindex.stu1.id=tem->stu.id;/-每首歌配對表strcpy(stuT,tem->);strcpy(stuTablej1.sex,tem->stu.sex);stuTablej1.id=tem->stu.id;tem=tem->next;index+;j+;/顯示每首歌配對情況void Pr

40、intEachMatch()cout<<endl;cout<<"本首歌的配對情況:"<<endl;cout<<"姓名t性別t序號t姓名t性別t序號"<<endl;for(int i=0;i<length;i+) /length為每首歌的配對長度cout<<stuT<<"t"<<stuTablei0.sex<<"t"<<stuTablei0.id<<"

41、;t" cout<<stuT<<"t"<<stuTablei1.sex<<"t"<<stuTablei1.id<<endl;/播放下首歌時需要進行的各種操作void Next()StudentSitAgain();NextMusic();PlayMusic();Match();PrintEachMatch();/-獲取要顯示信息的一些操作/-顯示界面的一些函數(shù)void MainMenu()cout<<"tttt "<

42、;<"主界面"<<endl;cout<<"ttt"<<"1、學生就坐"cout<<"t"<<"2、每曲配對"<<endl;cout<<"ttt"<<"3、顯示結(jié)果"cout<<"t"<<"4、查詢配對"<<endl;cout<<"tttt 5、退出"

43、/配對顯示void PrintMatchTable()cout<<"歌曲名稱t姓名t性別t序號t姓名t性別t序號"<<endl;for(int i=0;i<index;i+)cout<<matchTablei.musicName<<"t"<<matchT<<"t"<<matchTablei.stu0.sex<<"t"<<matchTablei.stu0.id<<

44、"t"cout<<matchT<<"t"<<matchTablei.stu1.sex<<"t"<<matchTablei.stu1.id<<endl;void PrintStuRes()cout<<"ttt請選擇學生信息來源:"<<endl;cout<<"ttt1、按班級獲取(推薦)"<<endl;cout<<"ttt2、手動

45、輸入."<<endl;void StudentChose()PrintStuRes();cout<<"請選擇操作:"int res;cin>>res;switch(res)case 1: /從文件讀取數(shù)據(jù)int res;cout<<"請選擇班級:"<<endl;cout<<"1.三年一班t2.三年二班"<<endl;cin>>res;if(res=1)ReadStuFile(1);else if(res=2)ReadStuFile

46、(2);break;case 2:cout<<"開始輸入."<<endl;GetInfKey(); /鍵盤鍵入數(shù)據(jù)break;default:cout<<"輸入有誤,再見"<<endl;break;void MusicMenu()cout<<"請選擇要放入的光盤類型:"<<endl;cout<<"1.流行t2.復古n"int res,i;char ch;cin>>res;if(res=1)i=LoadMusic(1);e

47、lse i=LoadMusic(2);if(i)M_p=ML.head->next;/p指向第一首歌cout<<"歌曲光盤已就位,是否現(xiàn)在播放(Y/N)"<<endl;cin>>ch;InitQList(TempQL); /初始化臨時隊列if(ch='Y'|ch='y')system("cls");PlayMusic();Match();PrintEachMatch();cout<<"按n進行下一首歌曲、n"cout<<"按q停

48、止播放音樂、"<<endl;cin>>ch;while(ch='n'|ch='N')system("cls");Next();cout<<"按n進行下一首歌曲、n" cout<<"按q停止播放音樂、"<<endl;cin>>ch;if(ch='q'|ch='Q')return;void Welcome()cout<<"tttt歡迎進入進入舞池"<<

49、endl<<endl;cout<<"ttt按任意鍵繼續(xù)."getch();system("cls");void LoadAdmin()Welcome();int res=0;int i;ReadAdmin();char userName15;char key15;for( i=0;i<3;i+)Admin *p=admin->next;cout<<"ttt請輸入您的用戶名:"cin>>userName;cout<<"ttt請輸入您的密 碼:"c

50、in>>key;while(p)if(strcmp(p->name,userName)=0)break;p=p->next;if(!p)system("cls");cout<<"ttt輸入的用戶名不存在"<<endl;continue;if(p)if(strcmp(p->passWord,key)=0)system("cls");cout<<"tttt歡迎回來."Sleep(500);system("cls");cout<&

51、lt;"tttt歡迎回來."Sleep(500);system("cls");cout<<"tttt歡迎回來."Sleep(500);/system("cls");break;elsesystem("cls");cout<<"ttt輸入的密碼錯誤、"<<endl;continue;if(i>=3)cout<<"ttt您今天的機會已經(jīng)用完,再見"exit(0);void ShowMessage()syst

52、em("cls");int res;cout<<"ttt選擇要操作的信息:"<<endl;cout<<"ttt1.學生座位信息t2.學生配對信息"<<endl;cin>>res;if(res=1)cout<<"ttt座位信息如下:"<<endl;PrintStuSeat();char ch;cout<<"是否將該信息寫入文件(Y/N):"cin>>ch;if(ch='Y'|

53、ch='y')if(InFileMatchTable()cout<<"數(shù)據(jù)已寫入文件."<<endl;else if(res=2)PrintMatchTable();char ch;cout<<"是否將該信息寫入文件(Y/N):"cin>>ch;if(ch='Y'|ch='y')if(InFileMatchTable()cout<<"數(shù)據(jù)已寫入文件."<<endl;Sleep(3000);void Quit() sy

54、stem("CLS"); printf("nnnnnnnnttt o");Sleep(200);system("CLS"); printf("nnnnnnnnttt o歡");Sleep(200);system("CLS"); printf("nnnnnnnnttt o歡迎");Sleep(200);system("CLS"); printf("nnnnnnnnttt o歡迎下");Sleep(200);system("CLS

55、"); printf("nnnnnnnnttt o歡迎下次");Sleep(200);system("CLS"); printf("nnnnnnnnttt o歡迎下次使");Sleep(200);system("CLS"); printf("nnnnnnnnttt o歡迎下次使用");Sleep(200);system("CLS"); printf("nnnnnnnnttt o歡迎下次使用o");Sleep(200);system("CLS"); printf("nnnnnnnnttt o歡迎下次使用onntttt -");Sleep(200);system("CLS"); printf("nnnnnnnnttt o歡

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論