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

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

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

  • 資源ID:83416378       資源大小:348KB        全文頁數(shù):53頁
  • 資源格式: DOC        下載積分:10積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要10積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請(qǐng)知曉。

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

word分類號(hào) 編 號(hào)華北水利水電大學(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é)果104.3.1 登陸測試104.3.2 加載學(xué)生信息114.3.3 學(xué)生配對(duì)調(diào)試124.3.4 顯示總配對(duì)134.3.5 查詢配對(duì)13第五章總結(jié)15參考文獻(xiàn)16附錄系統(tǒng)源代碼17第一章 需求分析 問題描述一班有m個(gè)女生、n個(gè)男生(m不等于n), 舉辦一場舞會(huì). 男女生分別編號(hào)坐在舞池兩邊的椅子上,每曲開始時(shí), 依次從男生和女生中各出一人配對(duì)跳舞, 本曲沒成功配對(duì)者坐著等待下一曲找舞伴,設(shè)計(jì)一個(gè)程序模擬舞伴配對(duì)過程。1.2 根本要求1.2.1 輸入與輸出格式輸入男、女學(xué)生的、性別,由程序自動(dòng)為男女生編號(hào),可以順序編號(hào),也可以隨機(jī)編號(hào),輸出每曲配對(duì)情況包括男、女生的、性別和編號(hào)。原始數(shù)據(jù)和結(jié)果數(shù)據(jù)要保存到文件中。在讀入男女生信息時(shí),可以從文件中直接讀取學(xué)生的和性別信息。輸出顯示時(shí)顯示每首歌的配對(duì)情況,包括對(duì)應(yīng)配對(duì)學(xué)生的、性別以與編號(hào)??梢暂敵稣麄€(gè)舞池配對(duì)過程的所有配對(duì)情況。將輸出顯示的容對(duì)應(yīng)寫入到指定的文件中。1.2.2 程序所完成的功能從文件或者手動(dòng)輸入班級(jí)的學(xué)生信息,包括和性別根本信息,根據(jù)性別使男女生分別坐在舞池兩邊的座位上,學(xué)生的座位編號(hào)順序生成,且一旦編號(hào)確定,將不再發(fā)生變化。每一首歌曲播放時(shí),依次從男女生隊(duì)列中出來學(xué)生進(jìn)展配對(duì),由于男女生人數(shù)不一致,會(huì)使某個(gè)隊(duì)列中剩下假如干學(xué)生配對(duì)不成功,配對(duì)不成功者等待下首歌時(shí)再進(jìn)展配對(duì)。該首歌完畢時(shí),配對(duì)成功的學(xué)生再回到座位上。然后再依次進(jìn)展配對(duì),未成功者等待下首歌再進(jìn)展配對(duì)。配對(duì)成功時(shí),會(huì)顯示本首歌的詳細(xì)配對(duì)情況,以與整個(gè)過程的配對(duì)情況,并且可以將配對(duì)情況寫入到文件。根據(jù)男女生的或者某首歌曲的名字可以查詢到對(duì)應(yīng)的配對(duì)情況。第二章 概要設(shè)計(jì)2.1 數(shù)據(jù)結(jié)構(gòu)學(xué)生座位隊(duì)列:ADT StuQueue 數(shù)據(jù)對(duì)象:D= ai|aiElemSet,i=1,2.n;n0 數(shù)據(jù)關(guān)系:R= <ai-1,ai > 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)參加信息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ù)對(duì)象: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;臨時(shí)隊(duì)列:ADT TempQList數(shù)據(jù)對(duì)象:D= ai|aiElemSet,i=1,2.n;n0 數(shù)據(jù)關(guān)系:R= <ai-1,ai > 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存在 操作結(jié)果:取出隊(duì)列的對(duì)頭元素,返回FinalStu類型ADT TempQList;2.2 程序模塊本系統(tǒng)主要包括登陸模塊、學(xué)生入座、自動(dòng)配對(duì)、顯示配對(duì)過程以與查詢配對(duì)信息模塊。登陸:輸入正確的用戶名以與密碼,方可進(jìn)入系統(tǒng),連續(xù)輸入錯(cuò)誤三次如此禁止進(jìn)入系統(tǒng)。學(xué)生入座:以不同的方式獲取學(xué)生信息后,根據(jù)學(xué)生性別依次進(jìn)入兩個(gè)循環(huán)隊(duì)列,并為每個(gè)學(xué)生唯一編號(hào)。自動(dòng)配對(duì):每首歌開始時(shí),男女生依次從坐席中出來進(jìn)展本首歌的配對(duì),配對(duì)不成功者等待下首歌繼續(xù)配對(duì),下首歌時(shí),上首歌未配對(duì)成功者本首歌先進(jìn)展配對(duì)。顯示配對(duì)過程:在播放歌曲的過程中,顯示播放的歌曲信息,以與本首歌的配對(duì)信息。查詢配對(duì):根據(jù)男女生的查出兩人的在哪一首歌進(jìn)展過配對(duì),根據(jù)歌曲名稱查詢出本首歌的配對(duì)信息。文件操作:將配對(duì)情況與學(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)用配對(duì)模塊函數(shù),進(jìn)展學(xué)生的配對(duì)。學(xué)生配對(duì)成功后,才能利用顯示配對(duì)過程進(jìn)展顯示配對(duì)的情況,后續(xù)的查詢配對(duì)模塊也必須在配對(duì)成功的根底上進(jìn)展。模塊間的調(diào)用流程如圖2-2所示圖 2-2 模塊調(diào)用 在進(jìn)展配對(duì)過程中用到算法,在每首歌配對(duì)時(shí),依次從男女生隊(duì)列中出來一個(gè)學(xué)生,進(jìn)入到臨時(shí)隊(duì)列,從臨時(shí)隊(duì)列中獲取配對(duì)的情況。在本首歌完畢,下首歌開始之前,讓臨時(shí)隊(duì)列中的男女在分別根據(jù)性別入隊(duì),依次循環(huán),每次調(diào)用配對(duì)函數(shù),實(shí)現(xiàn)學(xué)生的循環(huán)配對(duì)。第三章 詳細(xì)設(shè)計(jì)3.1 操作實(shí)現(xiàn)本系統(tǒng)包含七個(gè)文件。設(shè)計(jì)分有歡迎界面,登陸系統(tǒng),入隊(duì)函數(shù),配對(duì)函數(shù),顯示函數(shù),查詢函數(shù)等。登陸界面是整個(gè)系統(tǒng)的入口,其主要是讓合法人員進(jìn)入系統(tǒng),入隊(duì)函數(shù)主要讓學(xué)生進(jìn)入男女隊(duì)列,配對(duì)函數(shù)主要是根據(jù)每首歌曲把男女生進(jìn)展配對(duì),顯示函數(shù)主要是顯示男女生的配對(duì)情況,查詢函數(shù)主要是根據(jù)男女生和歌曲名查找配對(duì)情況。系統(tǒng)首先通過程序調(diào)用void main()進(jìn)入歡迎界面和系統(tǒng)登陸界面,根據(jù)用戶的和密碼登陸成功后進(jìn)入主菜單。根據(jù)用戶的選擇可分別進(jìn)入:1.學(xué)生就坐;2.每曲配對(duì);3.顯示結(jié)果;4.查詢配對(duì);5.退出。選擇“項(xiàng),會(huì)顯示學(xué)生信息來源,包括“1.按班級(jí)獲取(推薦)“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)前播放的歌曲名字和所配對(duì)的男女生。選擇“項(xiàng),會(huì)有“和“兩項(xiàng)操作可供選擇。當(dāng)選擇1,會(huì)把學(xué)生就坐后的信息顯示出來,選擇2,會(huì)把每首歌學(xué)生的配對(duì)情況顯示出來。選擇“項(xiàng),也有兩個(gè)操作可供選擇,分別是“按歌曲名兩項(xiàng)。選擇1,會(huì)根據(jù)用戶輸入的男女生查看他們的配對(duì)情況,選擇2,會(huì)根據(jù)用戶輸入的歌曲名稱顯示每首歌曲學(xué)生的配對(duì)情況。選擇“項(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è)存放每首歌配對(duì)情況的數(shù)組stuTable,用來存放播放該首歌曲時(shí)男女生的信息。每一首歌開始時(shí),男女生依次用Boys和Girls隊(duì)列中出對(duì),依次進(jìn)入臨時(shí)隊(duì)列TempQueue,從TempQueue中讀取男女生的信息,放到stuTable數(shù)組中,表示該首歌的配對(duì)情況。下首歌開始時(shí),讓臨時(shí)隊(duì)列中的學(xué)生再根據(jù)性別依次進(jìn)入男女循環(huán)隊(duì)列。同時(shí)將存放歌曲的MusicList循環(huán)鏈表指針后移,播放下首歌曲,再執(zhí)行上述操作,便可實(shí)現(xiàn)循環(huán)配對(duì)。第四章 編碼調(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)試方法為了提高測試效率,降低測試本錢,本測試方案采用黑盒法設(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é)生配對(duì)調(diào)試 在進(jìn)展配對(duì)之前,需要先將音樂信息加載到系統(tǒng)中,其加載過程如圖4-5所示圖 4-5 加載音樂 學(xué)生就位與音樂加載成功后,開始播放音樂,并進(jìn)展配對(duì),其音樂播放情況與每首歌曲的配對(duì)情況如圖4-6、圖4-7與圖4-8所示圖 4-6 配對(duì)開始圖 4-7 播放下一首圖 4-8 循環(huán)配對(duì)4.3.4 顯示總配對(duì) 在整個(gè)過程完畢后,停止播放音樂,可以顯示整個(gè)過程的配對(duì)情況,其結(jié)果如圖4-9所示圖 4-9 顯示配對(duì)結(jié)果4.3.5 查詢配對(duì) 可以根據(jù)男女生的查詢兩人的配對(duì)情況,當(dāng)輸入兩個(gè)學(xué)生時(shí),顯示在整個(gè)過程中的配對(duì)情況,其結(jié)果如圖 4-10所示圖4-10 查詢配對(duì) 根據(jù)每一首歌曲情況查詢?cè)诒臼赘枨械呐鋵?duì)情況,其結(jié)果如圖4-11 所示圖 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ì)完成后,如果再遇到新的問題,可以對(duì)系統(tǒng)進(jìn)展適當(dāng)?shù)母?。調(diào)試時(shí)經(jīng)常會(huì)遇到這樣那樣的錯(cuò)誤,有的時(shí)候是因?yàn)橐恍┳罡镜腻e(cuò)誤,如標(biāo)點(diǎn)的中英錯(cuò)誤,括號(hào)的匹配問題,數(shù)據(jù)的輸入錯(cuò)誤等。當(dāng)然,也有很多地方是因?yàn)橛缅e(cuò)了解決方法。在設(shè)計(jì)的過程中,最能表現(xiàn)出的缺點(diǎn)就是根底不扎實(shí),本可以防止的錯(cuò)誤卻一再出現(xiàn)。在實(shí)現(xiàn)舞池配對(duì)問題過程中,需要使學(xué)生循環(huán)配對(duì),此程序設(shè)計(jì)的是當(dāng)一個(gè)光盤的音樂播放完畢時(shí),整個(gè)配對(duì)過程隨之完畢,而沒有讓學(xué)生再次進(jìn)去坐席,導(dǎo)致不再從新將學(xué)生入座,就無法實(shí)現(xiàn)配對(duì)。設(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),一邊思考一邊寫一些粗略的代碼,最后從上到下執(zhí)行代碼看看是不是符合題目要求。有沒有什么漏洞。等這些完成以后,再在開發(fā)環(huán)境下將代碼完善、編譯和調(diào)試。雖然說代碼還有許多要改良的地方,有的功能還不夠完善,可畢竟是自己親自寫出來的,對(duì)于程序的條理有了一個(gè)清晰的了解,對(duì)編程也有了更加深刻的認(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<iostream>#include<stdio.h>#include<conio.h>#include<stdlib.h>#include<Windows.h>#define MAXQSIZE 20 /循環(huán)隊(duì)列最大存儲(chǔ)量#define STU_SIZE 5 /學(xué)生人數(shù)#define SIZE 100 int idCount=1000;/全局變量控制學(xué)生id自增int length;/記錄每首歌配對(duì)的數(shù)量int index=0;/記錄最終配對(duì)表的下標(biāo)usingnamespace std;/舞池就坐后的學(xué)生信息結(jié)構(gòu)體struct Adminchar name15;char passWord15;Admin *next;Admin *admin;struct FinalStuchar name15;char sex3;int id;FinalStu stuSTU_SIZE;FinalStu stuSeatSTU_SIZE;/用來存放入座后的學(xué)生信息FinalStu stuTableSTU_SIZE2;/用來存放沒收歌曲的配對(duì)情況/舞池座位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.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)strcpy(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)鏈表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(MusicList &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;/臨時(shí)隊(duì)列,用于存放從男女生隊(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.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;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.front->next=p->next;free(p);return stu;/=配對(duì)信息存放=struct MatchListchar musiame20;FinalStu stu2;MatchList matchTableSIZE;/從鍵盤讀入學(xué)生信息void GetInfKey()for(int i=0;i<STU_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;i<STU_SIZE;i+)if(strcmp(stui.sex,"男")=0)EnQueue(Boys,stui);elseEnQueue(Girls,stui);/獲取就坐后的男女生性別、編號(hào),stuSeat 存放就坐后的學(xué)生信息,包括學(xué)生編號(hào)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=0;if(fp_Seat=fopen("Seat.txt","wt")=NULL)cout<<"讀取學(xué)生座位信息失??!"return -1;fprintf(fp_Seat,"t性別t序號(hào)n");for(int i=0;i<STU_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()cout<<"tttt性別t序號(hào)"<<endl;for(int i=0;i<STU_SIZE;i+)cout<<"ttt"<<stuSeati.name<<"t"cout<<stuSeati.sex<<"t"<<stuSeati.id<<endl;/從文件中獲取管理員信息void ReadAdmin()admin=(Admin*)malloc(sizeof(Admin);admin->next=NULL;Admin *q=admin;FILE *fp_Admin;if(fp_Admin=fopen("admin.txt","rt")=NULL)cout<<"打開文件失??!"return;while(!feof(fp_Admin)Admin *p=(Admin *)malloc(sizeof(Admin); p->next=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<<"打開文件失敗!"<<endl;return;elseif(res=2)if(fp=fopen("student2.txt","rt")=NULL)cout<<"打開文件失敗!"<<endl;return;int i=0;while(!feof(fp)fscanf(fp,"%s%s",stui.name,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<<"打開音樂文件失?。?quot;<<endl;return -1;elseif(cd=2)if(fp_music=fopen("music2.txt","rt")=NULL)cout<<"打開音樂文件失??!"<<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+)InsertMusic(ML,musici);return res;int InFileMatchTable()FILE *fp_MTable;if(fp_MTable=fopen("matchtable.txt","wt")=NULL)cout<<"打開文件失敗"<<endl;return -1;fprintf(fp_MTable,"歌曲名稱tt性別t序號(hào)tt性別t序號(hào)n");for(int i=0;i<index;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 StudentSitAgain()FinalStu stu;while(TempQL.front!=TempQL.rear)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;/學(xué)生配對(duì)void Match()/FinalStu studentSTU_SIZE;intstatic 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+;/記錄每首歌的配對(duì)數(shù)/從臨時(shí)隊(duì)列中將信息賦值給表TempQueue *tem=TempQL.front->next;while(tem)strcpy(matchTableindex.musiame,M_p->M_Name);strcpy(matchTableindex.stu0.name,tem->stu.name);strcpy(matchTableindex.stu0.sex,tem->stu.sex);matchTableindex.stu0.id=tem->stu.id;/-每曲歌的配對(duì)情況strcpy(stuTablej0.name,tem->stu.name);strcpy(stuTablej0.sex,tem->stu.sex);stuTablej0.id=tem->stu.id;tem=tem->next;/-整個(gè)播放過程的配對(duì)表strcpy(matchTableindex.stu1.name,tem->stu.name);strcpy(matchTableindex.stu1.sex,tem->stu.sex);matchTableindex.stu1.id=tem->stu.id;/-每首歌配對(duì)表strcpy(stuTablej1.name,tem->stu.name);strcpy(stuTablej1.sex,tem->stu.sex);stuTablej1.id=tem->stu.id;tem=tem->next;index+;j+;/顯示每首歌配對(duì)情況void PrintEachMatch()cout<<endl;cout<<"本首歌的配對(duì)情況:"<<endl;cout<<"t性別t序號(hào)tt性別t序號(hào)"<<endl;for(int i=0;i<length;i+) /length為每首歌的配對(duì)長度cout<<stuTablei0.name<<"t"<<stuTablei0.sex<<"t"<<stuTablei0.id<<"t" cout<<stuTablei1.name<<"t"<<stuTablei1.sex<<"t"<<stuTablei1.id<<endl;/播放下首歌時(shí)需要進(jìn)展的各種操作void Next()StudentSitAgain();NextMusic();PlayMusic();Match();PrintEachMatch();/-獲取要顯示信息的一些操作/-顯示界面的一些函數(shù)void MainMenu()cout<<"tttt "<<"主界面"<<endl;cout<<"ttt"<<"1、學(xué)生就坐"cout<<"t"<<"2、每曲配對(duì)"<<endl;cout<<"ttt"<<"3、顯示結(jié)果"cout<<"t"<<"4、查詢配對(duì)"<<endl;cout<<"tttt 5、退出"/配對(duì)顯示void PrintMatchTable()cout<<"歌曲名稱tt性別t序號(hào)tt性別t序號(hào)"<<endl;for(int i=0;i<index;i+)cout<<matchTablei.musiame<<"t"<<matchTablei.stu0.name<<"t"<<matchTablei.stu0.sex<<"t"<<matchTablei.stu0.id<<"t"cout<<matchTablei.stu1.name<<"t"<<matchTablei.stu1.sex<<"t"<<matchTablei.stu1.id<<endl;void PrintStuRes()cout<<"ttt請(qǐng)選擇學(xué)生信息來源:"<<endl;cout<<"ttt1、按班級(jí)獲取(推薦)"<<endl;cout<<"ttt2、手動(dòng)輸入."<<endl;void StudentChose()PrintStuRes();cout<<"請(qǐng)選擇操作:"int res;cin>>res;switch(res)case 1: /從文件讀取數(shù)據(jù)int res;cout<<"請(qǐng)選擇班級(jí):"<<endl;cout<<"1.三年一班t2.三年二班"<<endl;cin>>res;if(res=1)ReadStuFile(1);elseif(res=2)ReadStuFile(2);break;case 2:cout<<"開始輸入."<<endl;GetInfKey(); /鍵盤鍵入數(shù)據(jù)break;default:cout<<"輸入有誤,再見"<<endl;break;void MusicMenu()cout<<"請(qǐng)選擇要放入的光盤類型:"<<endl;cout<<"1.流行t2.復(fù)古n"int res,i;char ch;cin>>res;if(res=1)i=LoadMusic(1);elsei=LoadMusic(2);if(i)M_p=ML.head->next;/p指向第一首歌cout<<"歌曲光盤已就位,是否現(xiàn)在播放(Y/N)"<<endl;cin>>ch;InitQList(TempQL); /初始化臨時(shí)隊(duì)列if(ch='Y'|ch='y')system("cls");PlayMusic();Match();PrintEachMatch();cout<<"按n進(jìn)展下一首歌曲、n"cout<<"按q停止播放音樂、"<<endl;cin>>ch;while(ch='n'|ch='N')system("cls");Next();cout<<"按n進(jìn)展下一首歌曲、n"cout<<"按q停止播放音樂、"<<endl;cin>>ch;if(ch='q'|ch='Q')return;void Wele()cout<<"tttt歡迎進(jìn)入進(jìn)入舞池"<<endl<<endl;cout<<"ttt按任意鍵繼續(xù)."getch();system("cls");void LoadAdmin()Wele();int res=0;int i;ReadAdmin();char userName15;char key15;for( i=0;i<3;i+)Admin *p=admin->next;cout<<"ttt請(qǐng)輸入您的用戶名:"cin>>userName;cout<<"ttt請(qǐng)輸入您的密 碼:"cin>>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<<"tttt歡迎回來."Sleep(500);system("cls");cout<<"tttt歡迎回來."Sleep(500);/system("cls");break;elsesystem("cls");cout<<"ttt輸入的密碼錯(cuò)誤、"<<endl;continue;if(i>=3)cout<<"ttt您今天的機(jī)會(huì)已經(jīng)用完,再見"exit(0);void ShowMessage()system("cls");int res;cout<<"ttt選擇要操作的信息:"<<endl;cout<<"ttt1.學(xué)生座位信息t2.學(xué)生配對(duì)信息"<<endl;cin>>res;if(res=1)cout<<"ttt座位信息如下:"<<endl;PrintStuSeat();char ch;cout<<"是否將該信息寫入文件(Y/N):"cin>>ch;if(ch='Y'|ch='y')if(InFileMatchTable()cout<<"數(shù)據(jù)已寫入文件."<<endl;elseif(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() 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歡迎下次使");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歡迎下次使用onntttt -GoodBye!");Sleep(200);system("CLS"); printf("nnnnnnnnttt o歡迎下次使用onntttt -GoodBye!n");void CheckByName() /根據(jù)查詢配對(duì)情況char boyName15;char girlName15;cout<<"請(qǐng)輸入男生:"cin>>boyName;cout<<"請(qǐng)輸入女生:"cin>>girlName;int count=0;for(int i=0;i<index;i+)if(strcmp(matchTablei.stu0.name,boyName)=0&& strcmp(matchTablei.stu1.name,girlName)=0)count+;if(count=0)cout<<"未找到配對(duì)情況:"elsecout<<"ttt查詢的學(xué)生的配對(duì)情況如下:"<<endl;cout<<"歌曲名稱tt性別t編號(hào)tt性別t編號(hào)"<<endl;for(int j=0;j<index;j+)if(strcmp(matchTablej.stu0.name,boyName)=0&& strcmp(matchTablej.stu1.name,girlName)=0)cout<<matchTablej.musiame<<"t"<<matchTablej.stu0.name<<"t"<<matchTablej.stu0.sex<<"t"<<matchTablej.stu0.id<<"t"cout<<matchTablej.stu1.name<<"t"<<matchTablej.stu1.sex<<"t"<<matchTablej.stu1.id<<endl;void CheckByMusic()char Musiame15;cout<<"請(qǐng)輸入歌名:"cin>>Musiame;int count=0;for(int i=0;i<index;i+)if(strcmp(matchTablei.musiame,Musiame)=0)count+;if(count=0)cout<<"未找到該歌曲"elsecout<<"ttt查詢的學(xué)生的配對(duì)情況如下:"<<endl;cout<<"歌曲名稱tt性別t編號(hào)tt性別t編號(hào)"<<endl;for(int j=0;j<index;j+)if(strcmp(matchTablej.musiame,Musiame)=0)cout<<matchTablej.musiame<<"t"<<matchTablej.stu0.name<<"t"<<matchTablej.stu0.sex<<"t"<<matchTablej.stu0.id<<"t"cout<<matchTablej.stu1.name<<"t"<<matchTablej.stu1.sex<<"t"<<matchTablej.stu1.id<<endl;/主界面選項(xiàng)void MainChoose()int ins;LoadAdmin();while(1)system("cls");MainMenu();cout<<endl<<"請(qǐng)選擇操作(1-4):"cin>>ins;switch(ins)case 1:system("cls");StudentChose();InitQueue(Boys);InitQueue(Girls);StudentSit(); /學(xué)生分別入座GetStuSeat(); /獲取學(xué)生座位信息cout<<"ttt男女生已分別就位."<<endl;cout<<"ttt座位信息如下:"<<endl;PrintStuSeat();char ch;cout<<"是否將該信息寫入文件(Y/N):"cin>>ch;if(ch='Y'|ch='y')if(InFileStuSeat()cout<<"數(shù)據(jù)已寫入文件."<<endl;Sleep(3000);break;case 2:system("cls");cout<<"tttt請(qǐng)先放入歌曲光盤."<<endl;MusicMenu();break;case 3:ShowMessage();break;case 4:system("cls");cout<<"ttt請(qǐng)選擇查詢的方式:"<<endl;cout<<"ttt1.按學(xué)生t2.按歌曲名"<<endl;int i;cin>>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

注意事項(xiàng)

本文(大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 舞伴問題)為本站會(huì)員(仙***)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

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

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


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