九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 舞伴問題

上傳人:仙*** 文檔編號:83416378 上傳時(shí)間:2022-05-01 格式:DOC 頁數(shù):53 大?。?48KB
收藏 版權(quán)申訴 舉報(bào) 下載
大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 舞伴問題_第1頁
第1頁 / 共53頁
大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 舞伴問題_第2頁
第2頁 / 共53頁
大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 舞伴問題_第3頁
第3頁 / 共53頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 舞伴問題》由會(huì)員分享,可在線閱讀,更多相關(guān)《大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 舞伴問題(53頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、word分類號 編 號華北水利水電大學(xué)North China Institute of Water Conservancy and Hydroelectric Power課 程 設(shè) 計(jì)題目 舞伴問題 院 系 信息工程學(xué)院 專業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 姓 名 賈 寧 指 導(dǎo) 教 師 彬 第一章需求分析2問題描述21.2 根本要求21.2.1 輸入與輸出格式21.2.2 程序所完成的功能2第二章概要設(shè)計(jì)32.1 數(shù)據(jù)結(jié)構(gòu)32.2 程序模塊42.3 模塊調(diào)用與算法5第三章詳細(xì)設(shè)計(jì)73.1 操作實(shí)現(xiàn)73.2 算法實(shí)現(xiàn)8第四章編碼調(diào)試104.1 調(diào)試環(huán)境104.2 調(diào)試方法104.3 調(diào)試項(xiàng)目與調(diào)試結(jié)果10

2、4.3.1 登陸測試104.3.2 加載學(xué)生信息114.3.3 學(xué)生配對調(diào)試124.3.4 顯示總配對134.3.5 查詢配對13第五章總結(jié)15參考文獻(xiàn)16附錄系統(tǒng)源代碼17第一章 需求分析 問題描述一班有m個(gè)女生、n個(gè)男生(m不等于n), 舉辦一場舞會(huì). 男女生分別編號坐在舞池兩邊的椅子上,每曲開始時(shí), 依次從男生和女生中各出一人配對跳舞, 本曲沒成功配對者坐著等待下一曲找舞伴,設(shè)計(jì)一個(gè)程序模擬舞伴配對過程。1.2 根本要求1.2.1 輸入與輸出格式輸入男、女學(xué)生的、性別,由程序自動(dòng)為男女生編號,可以順序編號,也可以隨機(jī)編號,輸出每曲配對情況包括男、女生的、性別和編號。原始數(shù)據(jù)和結(jié)果數(shù)據(jù)要保

3、存到文件中。在讀入男女生信息時(shí),可以從文件中直接讀取學(xué)生的和性別信息。輸出顯示時(shí)顯示每首歌的配對情況,包括對應(yīng)配對學(xué)生的、性別以與編號。可以輸出整個(gè)舞池配對過程的所有配對情況。將輸出顯示的容對應(yīng)寫入到指定的文件中。1.2.2 程序所完成的功能從文件或者手動(dòng)輸入班級的學(xué)生信息,包括和性別根本信息,根據(jù)性別使男女生分別坐在舞池兩邊的座位上,學(xué)生的座位編號順序生成,且一旦編號確定,將不再發(fā)生變化。每一首歌曲播放時(shí),依次從男女生隊(duì)列中出來學(xué)生進(jìn)展配對,由于男女生人數(shù)不一致,會(huì)使某個(gè)隊(duì)列中剩下假如干學(xué)生配對不成功,配對不成功者等待下首歌時(shí)再進(jìn)展配對。該首歌完畢時(shí),配對成功的學(xué)生再回到座位上。然后再依次進(jìn)

4、展配對,未成功者等待下首歌再進(jìn)展配對。配對成功時(shí),會(huì)顯示本首歌的詳細(xì)配對情況,以與整個(gè)過程的配對情況,并且可以將配對情況寫入到文件。根據(jù)男女生的或者某首歌曲的名字可以查詢到對應(yīng)的配對情況。第二章 概要設(shè)計(jì)2.1 數(shù)據(jù)結(jié)構(gòu)學(xué)生座位隊(duì)列:ADT StuQueue 數(shù)據(jù)對象:D= ai|aiElemSet,i=1,2.n;n0 數(shù)據(jù)關(guān)系:R= aiD ,i=1,2.nvoid InitQueue(StuQueue &Q) 操作結(jié)果:初始化一個(gè)空的循環(huán)隊(duì)列void EnQueue(StuQueue &Q,FinalStu stu) 初始條件:循環(huán)隊(duì)列Q已經(jīng)存在,并且無信息 操作結(jié)果:向Q中循環(huán)參加信息

5、void EnQueue2(StuQueue &Q,FinalStu stu) 初始條件:循環(huán)隊(duì)列已存在,非首次進(jìn)循環(huán)隊(duì)列 操作結(jié)果:向Q中添加信息FinalStu DeQueue(StuQueue &Q) 初始條件:循環(huán)隊(duì)列已存在 操作結(jié)果:使隊(duì)列頭的元素出隊(duì)列,且返回FinalStu類型值A(chǔ)DT StuQueue /學(xué)生座位隊(duì)列音樂隊(duì)列:ADT MusicList數(shù)據(jù)對象:D= ai|aiElemSet,i=1,2.n;n0 數(shù)據(jù)關(guān)系:R= aiD ,i=1,2.nvoid InitMusic(MusicList & MList)操作結(jié)果:創(chuàng)建循環(huán)鏈表void InsertMusic(Mu

6、sicList &MList,char* name)初始條件:該鏈表已存在 操作結(jié)果:向鏈表中添加數(shù)據(jù)ADT MusicList;臨時(shí)隊(duì)列:ADT TempQList數(shù)據(jù)對象:D= ai|aiElemSet,i=1,2.n;n0 數(shù)據(jù)關(guān)系:R= aiD ,i=1,2.nvoid InitQList(TempQList &TQL) 操作結(jié)果:初始化臨時(shí)隊(duì)列void EnTempQueue(TempQList & TQL,FinalStu stu) 初始條件:隊(duì)列TQL已存在 操作結(jié)果:向TQL中添加信息FinalStu DeTempQueue(TempQList &TQL) 初始條件:隊(duì)列TQL

7、存在 操作結(jié)果:取出隊(duì)列的對頭元素,返回FinalStu類型ADT TempQList;2.2 程序模塊本系統(tǒng)主要包括登陸模塊、學(xué)生入座、自動(dòng)配對、顯示配對過程以與查詢配對信息模塊。登陸:輸入正確的用戶名以與密碼,方可進(jìn)入系統(tǒng),連續(xù)輸入錯(cuò)誤三次如此禁止進(jìn)入系統(tǒng)。學(xué)生入座:以不同的方式獲取學(xué)生信息后,根據(jù)學(xué)生性別依次進(jìn)入兩個(gè)循環(huán)隊(duì)列,并為每個(gè)學(xué)生唯一編號。自動(dòng)配對:每首歌開始時(shí),男女生依次從坐席中出來進(jìn)展本首歌的配對,配對不成功者等待下首歌繼續(xù)配對,下首歌時(shí),上首歌未配對成功者本首歌先進(jìn)展配對。顯示配對過程:在播放歌曲的過程中,顯示播放的歌曲信息,以與本首歌的配對信息。查詢配對:根據(jù)男女生的查出

8、兩人的在哪一首歌進(jìn)展過配對,根據(jù)歌曲名稱查詢出本首歌的配對信息。文件操作:將配對情況與學(xué)生的座位信息寫入文件根據(jù)系統(tǒng)模塊的劃分,本系統(tǒng)的功能模塊圖如圖2-1所示圖 2-1 功能模塊2.3 模塊調(diào)用與算法登陸成功后進(jìn)入主界面,進(jìn)入主界面后,需要先運(yùn)行學(xué)生入座模塊,方能進(jìn)展下邊的操作。學(xué)生入座后會(huì)得到相關(guān)的根本信息。之后調(diào)用配對模塊函數(shù),進(jìn)展學(xué)生的配對。學(xué)生配對成功后,才能利用顯示配對過程進(jìn)展顯示配對的情況,后續(xù)的查詢配對模塊也必須在配對成功的根底上進(jìn)展。模塊間的調(diào)用流程如圖2-2所示圖 2-2 模塊調(diào)用 在進(jìn)展配對過程中用到算法,在每首歌配對時(shí),依次從男女生隊(duì)列中出來一個(gè)學(xué)生,進(jìn)入到臨時(shí)隊(duì)列,從

9、臨時(shí)隊(duì)列中獲取配對的情況。在本首歌完畢,下首歌開始之前,讓臨時(shí)隊(duì)列中的男女在分別根據(jù)性別入隊(duì),依次循環(huán),每次調(diào)用配對函數(shù),實(shí)現(xiàn)學(xué)生的循環(huán)配對。第三章 詳細(xì)設(shè)計(jì)3.1 操作實(shí)現(xiàn)本系統(tǒng)包含七個(gè)文件。設(shè)計(jì)分有歡迎界面,登陸系統(tǒng),入隊(duì)函數(shù),配對函數(shù),顯示函數(shù),查詢函數(shù)等。登陸界面是整個(gè)系統(tǒng)的入口,其主要是讓合法人員進(jìn)入系統(tǒng),入隊(duì)函數(shù)主要讓學(xué)生進(jìn)入男女隊(duì)列,配對函數(shù)主要是根據(jù)每首歌曲把男女生進(jìn)展配對,顯示函數(shù)主要是顯示男女生的配對情況,查詢函數(shù)主要是根據(jù)男女生和歌曲名查找配對情況。系統(tǒng)首先通過程序調(diào)用void main()進(jìn)入歡迎界面和系統(tǒng)登陸界面,根據(jù)用戶的和密碼登陸成功后進(jìn)入主菜單。根據(jù)用戶的選擇可

10、分別進(jìn)入:1.學(xué)生就坐;2.每曲配對;3.顯示結(jié)果;4.查詢配對;5.退出。選擇“項(xiàng),會(huì)顯示學(xué)生信息來源,包括“1.按班級獲取(推薦)“2.手動(dòng)輸入.兩項(xiàng)可供選擇。其中,1是從文件中獲取學(xué)生信息,2是用戶手動(dòng)輸入學(xué)生信息。選擇“項(xiàng),會(huì)顯示播放歌曲的類型,有“兩個(gè)音樂風(fēng)格可供選擇,當(dāng)用戶選擇其中一個(gè)風(fēng)格并確定播放后,會(huì)顯示出當(dāng)前播放的歌曲名字和所配對的男女生。選擇“項(xiàng),會(huì)有“和“兩項(xiàng)操作可供選擇。當(dāng)選擇1,會(huì)把學(xué)生就坐后的信息顯示出來,選擇2,會(huì)把每首歌學(xué)生的配對情況顯示出來。選擇“項(xiàng),也有兩個(gè)操作可供選擇,分別是“按歌曲名兩項(xiàng)。選擇1,會(huì)根據(jù)用戶輸入的男女生查看他們的配對情況,選擇2,會(huì)根據(jù)用

11、戶輸入的歌曲名稱顯示每首歌曲學(xué)生的配對情況。選擇“項(xiàng),會(huì)出現(xiàn)感使用系統(tǒng)界面,并按任意鍵退出系統(tǒng)。本系統(tǒng)的主流程圖如圖3-1 所示圖 3-1 主流程3.2 算法實(shí)現(xiàn)定義學(xué)生結(jié)構(gòu)體FinalStu ,將學(xué)生的信息放到本結(jié)構(gòu)體中,定義兩個(gè)循環(huán)隊(duì)列Boys和Girls隊(duì)列,分別存儲(chǔ)男女生的座位信息。定義MusicList循環(huán)鏈表,用于存放音樂信息。定義TempQueue隊(duì)列,用于臨時(shí)存放從男女生隊(duì)列中出來的學(xué)生信息。創(chuàng)建一個(gè)存放每首歌配對情況的數(shù)組stuTable,用來存放播放該首歌曲時(shí)男女生的信息。每一首歌開始時(shí),男女生依次用Boys和Girls隊(duì)列中出對,依次進(jìn)入臨時(shí)隊(duì)列TempQueue,從Te

12、mpQueue中讀取男女生的信息,放到stuTable數(shù)組中,表示該首歌的配對情況。下首歌開始時(shí),讓臨時(shí)隊(duì)列中的學(xué)生再根據(jù)性別依次進(jìn)入男女循環(huán)隊(duì)列。同時(shí)將存放歌曲的MusicList循環(huán)鏈表指針后移,播放下首歌曲,再執(zhí)行上述操作,便可實(shí)現(xiàn)循環(huán)配對。第四章 編碼調(diào)試4.1 調(diào)試環(huán)境硬件環(huán)境:Intel 1GHZ處理器或AMD同類處理器,512M或以上存容量,10G或以上硬盤容量,可連接互聯(lián)網(wǎng)的相關(guān)設(shè)備。軟件環(huán)境軟件、操作系統(tǒng):Windows XP或Windows 2003或Windows vista或Windows 7操作系統(tǒng),Microsoft Visual Studio 2008。4.2 調(diào)

13、試方法為了提高測試效率,降低測試本錢,本測試方案采用黑盒法設(shè)計(jì)根本的測試方案,再用白盒法補(bǔ)充一些方案。在黑盒法測試方案中,采用等價(jià)劃分技術(shù),把所有可能的數(shù)據(jù)劃分成幾個(gè)等價(jià)類。4.3 調(diào)試項(xiàng)目與調(diào)試結(jié)果4.3.1 登陸測試用戶根據(jù)用戶名與密碼登陸系統(tǒng),置用戶為Admin,密碼為888888。登陸成功如圖4-1所示,登陸失敗如圖4-2所示圖 4-1 登陸成功圖 4-2 登陸失敗4.3.2 加載學(xué)生信息 可以從文件或者手動(dòng)輸入學(xué)生信息,從文件中選擇時(shí),可以選擇不同的文件,其運(yùn)行結(jié)果如圖4-2 與圖4-3 所示圖 4-3 選擇信息來源圖 4-4 顯示獲取信息4.3.3 學(xué)生配對調(diào)試 在進(jìn)展配對之前,需

14、要先將音樂信息加載到系統(tǒng)中,其加載過程如圖4-5所示圖 4-5 加載音樂 學(xué)生就位與音樂加載成功后,開始播放音樂,并進(jìn)展配對,其音樂播放情況與每首歌曲的配對情況如圖4-6、圖4-7與圖4-8所示圖 4-6 配對開始圖 4-7 播放下一首圖 4-8 循環(huán)配對4.3.4 顯示總配對 在整個(gè)過程完畢后,停止播放音樂,可以顯示整個(gè)過程的配對情況,其結(jié)果如圖4-9所示圖 4-9 顯示配對結(jié)果4.3.5 查詢配對 可以根據(jù)男女生的查詢兩人的配對情況,當(dāng)輸入兩個(gè)學(xué)生時(shí),顯示在整個(gè)過程中的配對情況,其結(jié)果如圖 4-10所示圖4-10 查詢配對 根據(jù)每一首歌曲情況查詢在本首歌曲中的配對情況,其結(jié)果如圖4-11

15、所示圖 4-11 按歌名查找第五章 總結(jié)這次的課程設(shè)計(jì)懂得了理論與實(shí)際相結(jié)合是很非常重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為,從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在整個(gè)設(shè)計(jì)過程中,構(gòu)思是很花費(fèi)時(shí)間的,在構(gòu)思總體架構(gòu)時(shí),需要先將需求分析搞清楚,需要在找到了需要解決的問題后,再想方法解決該問題。而不是在設(shè)計(jì)過程中邊想邊解決,需要先將所有可能的問題都考慮到,再依次解決。在整個(gè)系統(tǒng)設(shè)計(jì)完成后,如果再遇到新的問題,可以對系統(tǒng)進(jìn)展適當(dāng)?shù)母?。調(diào)試時(shí)經(jīng)常會(huì)遇到這樣那樣的錯(cuò)誤,有的時(shí)候是因?yàn)橐恍┳罡镜腻e(cuò)誤,如標(biāo)點(diǎn)的中英錯(cuò)誤,括號的匹配問題,

16、數(shù)據(jù)的輸入錯(cuò)誤等。當(dāng)然,也有很多地方是因?yàn)橛缅e(cuò)了解決方法。在設(shè)計(jì)的過程中,最能表現(xiàn)出的缺點(diǎn)就是根底不扎實(shí),本可以防止的錯(cuò)誤卻一再出現(xiàn)。在實(shí)現(xiàn)舞池配對問題過程中,需要使學(xué)生循環(huán)配對,此程序設(shè)計(jì)的是當(dāng)一個(gè)光盤的音樂播放完畢時(shí),整個(gè)配對過程隨之完畢,而沒有讓學(xué)生再次進(jìn)去坐席,導(dǎo)致不再從新將學(xué)生入座,就無法實(shí)現(xiàn)配對。設(shè)計(jì)的是在每首歌開始之前學(xué)生進(jìn)入隊(duì)列,可以改為當(dāng)某個(gè)學(xué)生坐席為空時(shí),隨即讓學(xué)生再次進(jìn)入隊(duì)列,可以解決不能重復(fù)換歌曲的問題。剛開始的時(shí)候我直接在開發(fā)環(huán)境下一邊看題一邊寫代碼,瞪了半天什么也沒寫出來,于是我便先開始在紙上畫畫寫寫,將事件的整個(gè)過程畫下來,然后考慮怎么才能運(yùn)用代碼來實(shí)現(xiàn),一邊思考

17、一邊寫一些粗略的代碼,最后從上到下執(zhí)行代碼看看是不是符合題目要求。有沒有什么漏洞。等這些完成以后,再在開發(fā)環(huán)境下將代碼完善、編譯和調(diào)試。雖然說代碼還有許多要改良的地方,有的功能還不夠完善,可畢竟是自己親自寫出來的,對于程序的條理有了一個(gè)清晰的了解,對編程也有了更加深刻的認(rèn)識(shí)。參考文獻(xiàn)1 譚浩強(qiáng). C程序設(shè)計(jì)(第三版)M.:清華大學(xué),2005.2 嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語言版)M.:清華大學(xué),1997.3 陸麗娜. 軟件工程. :經(jīng)濟(jì)科學(xué),2005.4 詩斌.數(shù)據(jù)庫系統(tǒng)根底.計(jì)算機(jī)工程與應(yīng)用,1981年第8期附錄 系統(tǒng)源代碼#include#include#include#include#

18、include#define MAXQSIZE 20 /循環(huán)隊(duì)列最大存儲(chǔ)量#define STU_SIZE 5 /學(xué)生人數(shù)#define SIZE 100 int idCount=1000;/全局變量控制學(xué)生id自增int length;/記錄每首歌配對的數(shù)量int index=0;/記錄最終配對表的下標(biāo)usingnamespace std;/舞池就坐后的學(xué)生信息結(jié)構(gòu)體struct Adminchar name15;char passWord15;Admin *next;Admin *admin;struct FinalStuchar name15;char sex3;int id;Final

19、Stu stuSTU_SIZE;FinalStu stuSeatSTU_SIZE;/用來存放入座后的學(xué)生信息FinalStu stuTableSTU_SIZE2;/用來存放沒收歌曲的配對情況/舞池座位struct StuQueueFinalStu *base;int front;int rear;StuQueue Boys; /男生隊(duì)列StuQueue Girls; /女生隊(duì)列/初始化學(xué)生坐席void InitQueue(StuQueue &Q)Q.base=(FinalStu*)malloc(MAXQSIZE*sizeof(FinalStu);if(Q.base=NULL)return ;Q

20、.front=Q.rear=0;/學(xué)生就坐,首次入隊(duì),需要獲取學(xué)生的idvoid EnQueue(StuQueue &Q,FinalStu stu)int i=100;if(Q.rear+1)%MAXQSIZE=Q.front)return ;strcpy(Q.baseQ.rear.name,stu.name);strcpy(Q.baseQ.rear.sex,stu.sex);Q.baseQ.rear.id=idCount+;Q.rear=(Q.rear+1)%MAXQSIZE;/非首次入隊(duì),不需獲取學(xué)生的idvoid EnQueue2(StuQueue &Q,FinalStu stu)str

21、cpy(Q.baseQ.rear.name,stu.name);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.front+1)%MAXQSIZE;return stu;/存放音樂信息struct Musicchar M_Name15;Music *next;/存放音樂鏈,循環(huán)鏈表str

22、uct 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(MusicList &MList,char* name)Music *p=(Music*)malloc(sizeof(Music);MList.tail-next=p;strcpy(p-M_Nam

23、e,name);MList.tail=p;MList.tail-next=MList.head;/臨時(shí)隊(duì)列,用于存放從男女生隊(duì)列中配對成成功的學(xué)生信息struct TempQueueFinalStu stu;TempQueue * next;struct TempQListTempQueue *front;TempQueue *rear;TempQList TempQL; /臨時(shí)隊(duì)列,用于存放每次出來的男女生信息void InitQList(TempQList &TQL)TQL.front=TQL.rear=(TempQueue *)malloc(sizeof(TempQueue);TQL.f

24、ront-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;FinalStu 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

25、.front-next=p-next;free(p);return stu;/=配對信息存放=struct MatchListchar musiame20;FinalStu stu2;MatchList matchTableSIZE;/從鍵盤讀入學(xué)生信息void GetInfKey()for(int i=0;iSTU_SIZE;i+)cout輸入第i+1個(gè)學(xué)生的:;scanf(%s,stui.name);cout輸入第i+1個(gè)學(xué)生的性別:;scanf(%s,stui.sex);/學(xué)生入座void StudentSit()for(int i=0;iSTU_SIZE;i+)if(strcmp(st

26、ui.sex,男)=0)EnQueue(Boys,stui);elseEnQueue(Girls,stui);/獲取就坐后的男女生性別、編號,stuSeat 存放就坐后的學(xué)生信息,包括學(xué)生編號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+;/將就座的學(xué)生信息寫入文件int InFileStuSeat()FILE *fp_Seat;int res=

27、0;if(fp_Seat=fopen(Seat.txt,wt)=NULL)cout讀取學(xué)生座位信息失敗!;return -1;fprintf(fp_Seat,t性別t序號n);for(int i=0;iSTU_SIZE;i+)fprintf(fp_Seat,%st%st%d,stuSeati.name,stuSeati.sex,stuSeati.id);fprintf(fp_Seat,n);res+;fclose(fp_Seat);return res;void PrintStuSeat()couttttt性別t序號endl;for(int i=0;iSTU_SIZE;i+)couttttst

28、uSeati.namet;coutstuSeati.sextstuSeati.idnext=NULL;Admin *q=admin;FILE *fp_Admin;if(fp_Admin=fopen(admin.txt,rt)=NULL)coutnext=NULL;fscanf(fp_Admin,%s%s,p-name,p-passWord);q-next=p;q=p;fclose(fp_Admin);/從文件獲取學(xué)生信息void ReadStuFile(int res)FILE *fp;if(res=1)if(fp=fopen(student1.txt,rt)=NULL)cout打開文件失??!

29、endl;return;elseif(res=2)if(fp=fopen(student2.txt,rt)=NULL)cout打開文件失??!=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打開音樂文件失??!endl;return -1;elseif(cd=2)if(fp_music=fopen(music2.txt,rt)=NU

30、LL)cout打開音樂文件失?。ndl;return -1;for(int j=0;j5;j+)if(fread(musicj,20*sizeof(char),1,fp_music)=1)res+;fclose(fp_music);InitMusic(ML);for(int i=0;i5;i+)InsertMusic(ML,musici);return res;int InFileMatchTable()FILE *fp_MTable;if(fp_MTable=fopen(matchtable.txt,wt)=NULL)cout打開文件失敗endl;return -1;fprintf(fp_

31、MTable,歌曲名稱tt性別t序號tt性別t序號n);for(int i=0;iindex;i+)fprintf(fp_MTable,%stt%st%st%dt,matchTablei.musiame,matchTablei.stu0.name,matchTablei.stu0.sex,matchTablei.stu0.id);fprintf(fp_MTable,%st%st%dn,matchTablei.stu1.name,matchTablei.stu1.sex,matchTablei.stu1.id);fclose(fp_MTable);return 1;void StudentSit

32、Again()FinalStu stu;while(TempQL.front!=TempQL.rear)stu=DeTempQueue(TempQL);if(strcmp(stu.sex,男)=0)EnQueue2(Boys,stu);elseEnQueue2(Girls,stu);/播放歌曲void PlayMusic()couttt正在播放:tM_Name;/下一首void NextMusic()M_p=M_p-next;if(M_p=ML.head)M_p=ML.head-next;/學(xué)生配對void Match()/FinalStu studentSTU_SIZE;intstatic

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

34、hTableindex.stu0.name,tem-stu.name);strcpy(matchTableindex.stu0.sex,tem-stu.sex);matchTableindex.stu0.id=tem-stu.id;/-每曲歌的配對情況strcpy(stuTablej0.name,tem-stu.name);strcpy(stuTablej0.sex,tem-stu.sex);stuTablej0.id=tem-stu.id;tem=tem-next;/-整個(gè)播放過程的配對表strcpy(matchTableindex.stu1.name,tem-stu.name);strcp

35、y(matchTableindex.stu1.sex,tem-stu.sex);matchTableindex.stu1.id=tem-stu.id;/-每首歌配對表strcpy(stuTablej1.name,tem-stu.name);strcpy(stuTablej1.sex,tem-stu.sex);stuTablej1.id=tem-stu.id;tem=tem-next;index+;j+;/顯示每首歌配對情況void PrintEachMatch()coutendl;cout本首歌的配對情況:endl;coutt性別t序號tt性別t序號endl;for(int i=0;ileng

36、th;i+) /length為每首歌的配對長度coutstuTablei0.nametstuTablei0.sextstuTablei0.idt; coutstuTablei1.nametstuTablei1.sextstuTablei1.idendl;/播放下首歌時(shí)需要進(jìn)展的各種操作void Next()StudentSitAgain();NextMusic();PlayMusic();Match();PrintEachMatch();/-獲取要顯示信息的一些操作/-顯示界面的一些函數(shù)void MainMenu()couttttt 主界面endl;coutttt1、學(xué)生就坐;coutt2、每

37、曲配對endl;coutttt3、顯示結(jié)果;coutt4、查詢配對endl;couttttt 5、退出;/配對顯示void PrintMatchTable()cout歌曲名稱tt性別t序號tt性別t序號endl;for(int i=0;iindex;i+)coutmatchTablei.musiametmatchTablei.stu0.nametmatchTablei.stu0.sextmatchTablei.stu0.idt;coutmatchTablei.stu1.nametmatchTablei.stu1.sextmatchTablei.stu1.idendl;void PrintStu

38、Res()coutttt請選擇學(xué)生信息來源:endl;coutttt1、按班級獲取(推薦)endl;coutttt2、手動(dòng)輸入.endl;void StudentChose()PrintStuRes();coutres;switch(res)case 1: /從文件讀取數(shù)據(jù)int res;cout請選擇班級:endl;cout1.三年一班t2.三年二班res;if(res=1)ReadStuFile(1);elseif(res=2)ReadStuFile(2);break;case 2:cout開始輸入.endl;GetInfKey(); /鍵盤鍵入數(shù)據(jù)break;default:cout輸入

39、有誤,再見endl;break;void MusicMenu()cout請選擇要放入的光盤類型:endl;coutres;if(res=1)i=LoadMusic(1);elsei=LoadMusic(2);if(i)M_p=ML.head-next;/p指向第一首歌cout歌曲光盤已就位,是否現(xiàn)在播放(Y/N)ch;InitQList(TempQL); /初始化臨時(shí)隊(duì)列if(ch=Y|ch=y)system(cls);PlayMusic();Match();PrintEachMatch();cout按n進(jìn)展下一首歌曲、n;cout按q停止播放音樂、ch;while(ch=n|ch=N)sys

40、tem(cls);Next();cout按n進(jìn)展下一首歌曲、n;cout按q停止播放音樂、ch;if(ch=q|ch=Q)return;void Wele()couttttt歡迎進(jìn)入進(jìn)入舞池endlendl;coutttt按任意鍵繼續(xù).;getch();system(cls);void LoadAdmin()Wele();int res=0;int i;ReadAdmin();char userName15;char key15;for( i=0;inext;coutuserName;coutkey;while(p)if(strcmp(p-name,userName)=0)break;p=p-

41、next;if(!p)system(cls);coutttt輸入的用戶名不存在passWord,key)=0)system(cls);couttttt歡迎回來.;Sleep(500);system(cls);couttttt歡迎回來.;Sleep(500);system(cls);couttttt歡迎回來.;Sleep(500);/system(cls);break;elsesystem(cls);coutttt輸入的密碼錯(cuò)誤、=3)coutttt您今天的機(jī)會(huì)已經(jīng)用完,再見;exit(0);void ShowMessage()system(cls);int res;coutttt選擇要操作的信

42、息:endl;coutttt1.學(xué)生座位信息t2.學(xué)生配對信息res;if(res=1)coutttt座位信息如下:endl;PrintStuSeat();char ch;coutch;if(ch=Y|ch=y)if(InFileMatchTable()cout數(shù)據(jù)已寫入文件.endl;elseif(res=2)PrintMatchTable();char ch;coutch;if(ch=Y|ch=y)if(InFileMatchTable()cout數(shù)據(jù)已寫入文件.endl;Sleep(3000);void Quit() system(CLS); printf(nnnnnnnnttt o);

43、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); printf(nnnnnnnnttt o歡迎下次);Sleep(200);system(CLS); printf(nnnnnnnnttt o歡迎下次使);Sleep(200);system(CLS); printf(nnnnnnnnttt o歡迎下次使用);Sle

44、ep(200);system(CLS); printf(nnnnnnnnttt o歡迎下次使用o);Sleep(200);system(CLS); printf(nnnnnnnnttt o歡迎下次使用onntttt -);Sleep(200);system(CLS); printf(nnnnnnnnttt o歡迎下次使用onntttt -GoodBye!);Sleep(200);system(CLS); printf(nnnnnnnnttt o歡迎下次使用onntttt -GoodBye!n);void CheckByName() /根據(jù)查詢配對情況char boyName15;char gi

45、rlName15;coutboyName;coutgirlName;int count=0;for(int i=0;iindex;i+)if(strcmp(matchTablei.stu0.name,boyName)=0& strcmp(matchTablei.stu1.name,girlName)=0)count+;if(count=0)cout未找到配對情況:;elsecoutttt查詢的學(xué)生的配對情況如下:endl;cout歌曲名稱tt性別t編號tt性別t編號endl;for(int j=0;jindex;j+)if(strcmp(matchTablej.stu0.name,boyNam

46、e)=0& strcmp(matchTablej.stu1.name,girlName)=0)coutmatchTablej.musiametmatchTablej.stu0.nametmatchTablej.stu0.sextmatchTablej.stu0.idt;coutmatchTablej.stu1.nametmatchTablej.stu1.sextmatchTablej.stu1.idendl;void CheckByMusic()char Musiame15;coutMusiame;int count=0;for(int i=0;iindex;i+)if(strcmp(matc

47、hTablei.musiame,Musiame)=0)count+;if(count=0)cout未找到該歌曲;elsecoutttt查詢的學(xué)生的配對情況如下:endl;cout歌曲名稱tt性別t編號tt性別t編號endl;for(int j=0;jindex;j+)if(strcmp(matchTablej.musiame,Musiame)=0)coutmatchTablej.musiametmatchTablej.stu0.nametmatchTablej.stu0.sextmatchTablej.stu0.idt;coutmatchTablej.stu1.nametmatchTablej

48、.stu1.sextmatchTablej.stu1.idendl;/主界面選項(xiàng)void MainChoose()int ins;LoadAdmin();while(1)system(cls);MainMenu();coutendlins;switch(ins)case 1:system(cls);StudentChose();InitQueue(Boys);InitQueue(Girls);StudentSit(); /學(xué)生分別入座GetStuSeat(); /獲取學(xué)生座位信息coutttt男女生已分別就位.endl;coutttt座位信息如下:endl;PrintStuSeat();cha

49、r ch;coutch;if(ch=Y|ch=y)if(InFileStuSeat()cout數(shù)據(jù)已寫入文件.endl;Sleep(3000);break;case 2:system(cls);couttttt請先放入歌曲光盤.endl;MusicMenu();break;case 3:ShowMessage();break;case 4:system(cls);coutttt請選擇查詢的方式:endl;coutttt1.按學(xué)生t2.按歌曲名i;switch(i)case 1:CheckByName();break;case 2:CheckByMusic();break;/CheckByMusic();getch();break;case 5:system(color FC);Quit();exit(0);break;void main()MainCho

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!