版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 計(jì)算機(jī)學(xué)院信息管理與信息系統(tǒng)專業(yè)</p><p> 《程序設(shè)計(jì)綜合課程設(shè)計(jì)》報(bào)告</p><p> (2010/2011學(xué)年 第一學(xué)期)</p><p> 學(xué)生姓名: </p><p> 學(xué)生班級(jí): 1</p><p> 學(xué)生學(xué)號(hào):
2、 </p><p> 指導(dǎo)教師: </p><p><b> 2011年1月7日</b></p><p><b> 目錄Ⅰ</b></p><p> 第一章課程設(shè)計(jì)的目的和要求1</p><p> 1.1 課程設(shè)
3、計(jì)的目的1</p><p> 1.2 課程設(shè)計(jì)的目標(biāo)1</p><p> 1.3 課程設(shè)計(jì)要求2</p><p> 第二章 課程設(shè)計(jì)任務(wù)內(nèi)容3</p><p> 2.1 課程設(shè)計(jì)題目3</p><p><b> 2.2 背景3</b></p><p>
4、<b> 2.3功能需求3</b></p><p> 2.4系統(tǒng)模塊圖4</p><p> 第三章 詳細(xì)設(shè)計(jì)說明5</p><p> 3.1 主函數(shù)的流程圖5</p><p> 3.2 輸入歌手?jǐn)?shù)據(jù)6</p><p> 3.3 查詢歌手?jǐn)?shù)據(jù)7</p><
5、p> 3.4 編碼與調(diào)試8</p><p> 第四章 軟件使用說明及運(yùn)行結(jié)果9</p><p><b> 4.1使用說明9</b></p><p> 4.2 運(yùn)行結(jié)果10</p><p> 第五章 課程設(shè)計(jì)心得與體會(huì)13</p><p> 附錄1:參考文獻(xiàn)15<
6、/p><p> 附錄2:程序清單16</p><p><b> 歌手比賽系統(tǒng)</b></p><p> 課程設(shè)計(jì)的目的和要求</p><p> 1.1課程設(shè)計(jì)的目的</p><p> C++語言課程設(shè)計(jì)的主要目的是培養(yǎng)學(xué)生綜合運(yùn)用C++程序設(shè)計(jì)課程所學(xué)到的知識(shí),編寫C++程序解決實(shí)際問題的
7、能力,以及嚴(yán)謹(jǐn)?shù)墓ぷ鲬B(tài)度和良好的程序設(shè)計(jì)習(xí)慣。</p><p> 通過課程設(shè)計(jì)的訓(xùn)練,學(xué)生應(yīng)該能夠了解程序設(shè)計(jì)的基本開發(fā)過程,掌握編寫、調(diào)試和測試C++語言程序的基本技巧,充分理解結(jié)構(gòu)化程序設(shè)計(jì)的基本方法。</p><p> C++語言程序設(shè)計(jì)的主要任務(wù)時(shí)要求學(xué)生遵循軟件開發(fā)過程的基本規(guī)范,運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)的方法,按照課程設(shè)計(jì)的題目要求,分析、設(shè)計(jì)、編寫、調(diào)試和測試C++語言程序及編
8、寫設(shè)計(jì)報(bào)告。</p><p> 本次課程設(shè)計(jì)是通過設(shè)計(jì)一個(gè)較為簡單的“歌手比賽系統(tǒng)”,進(jìn)一步熟悉C++中有關(guān)各種知識(shí)的運(yùn)用與掌握。了解系統(tǒng)開發(fā)的需求分析、模塊分析、程序流程圖、編碼測試、模塊組裝與整體調(diào)試的全過程,加深對C++的理解與Visual C++環(huán)境的使用;逐步熟悉程序設(shè)計(jì)的方法,并養(yǎng)成良好的編程習(xí)慣,進(jìn)一步培養(yǎng)完善的C++編程設(shè)計(jì)思維,為以后進(jìn)行軟件編程、數(shù)據(jù)庫管理等深入學(xué)習(xí)打下一個(gè)牢固基礎(chǔ)</
9、p><p> 1.2課程設(shè)計(jì)的目標(biāo)</p><p><b> 本課程設(shè)計(jì)的目標(biāo):</b></p><p> 鞏固和加深學(xué)生對C++語言課程的基本知識(shí)的理解和掌握;</p><p> 掌握C++語言編程和程序調(diào)試的基本技能;</p><p> 掌握利用C++語言進(jìn)行軟件設(shè)計(jì)的方法;</p
10、><p> 提高書寫程序設(shè)計(jì)說明文檔的能力;</p><p> 提高運(yùn)用C++語言解決實(shí)際問題的能力。</p><p><b> 1.3課程設(shè)計(jì)要求</b></p><p><b> 基本要求:</b></p><p> 1.題目:設(shè)計(jì)一個(gè)“歌手比賽系統(tǒng)”軟件;<
11、/p><p> 2.了解該系統(tǒng)軟件開發(fā)的相關(guān)背景;</p><p> 3.參考相關(guān)書籍學(xué)習(xí)課程設(shè)計(jì)的基本知識(shí);</p><p> 4.清楚所開發(fā)系統(tǒng)軟件的各個(gè)相關(guān)功能,以便順利開發(fā)系統(tǒng)軟件;</p><p> 5.對系統(tǒng)功能模塊進(jìn)行分析,寫出設(shè)計(jì)說明文檔;</p><p> 6.設(shè)計(jì)完成的軟件要便于操作和使用;&
12、lt;/p><p> 7.對自己所設(shè)計(jì)的程序進(jìn)行調(diào)試,并不斷完善;</p><p> 8.在設(shè)計(jì)過程中熟練掌握軟件編程的相關(guān)知識(shí);</p><p> 9.詳細(xì)體會(huì)并記錄相關(guān)過程,并將心得體會(huì)寫在課程設(shè)計(jì)報(bào)告中;</p><p> 10.設(shè)計(jì)完成后提交課程設(shè)計(jì)報(bào)告。</p><p> 第二章 課程設(shè)計(jì)任務(wù)內(nèi)容<
13、;/p><p> 2.1 課程設(shè)計(jì)題目</p><p><b> 歌手比賽系統(tǒng)。</b></p><p><b> 2.2 背景</b></p><p> 時(shí)下,無論是社會(huì)上某些場合還是校園內(nèi),經(jīng)常舉行一些歌手演唱比賽,一般不會(huì)再像以前那樣用筆記錄比賽的情況,歌手比賽系統(tǒng)由此產(chǎn)生。它幾乎包含了一
14、切應(yīng)有的功能,歌手信息的輸入,評(píng)委打分,成績排序等功能應(yīng)有盡有,省去了很多麻煩的環(huán)節(jié),完全可以滿足一次歌手比賽的需求。開發(fā)此系統(tǒng)只為方便一般的歌手比賽。</p><p><b> 2.3功能需求</b></p><p> 用C++實(shí)現(xiàn)歌手比賽系統(tǒng)。該系統(tǒng)主要有以下功能:</p><p> 系統(tǒng)以菜單方式工作;</p><
15、;p> 歌手?jǐn)?shù)據(jù)錄入功能(歌手?jǐn)?shù)據(jù)用文件保存)--輸入;</p><p> 歌手成績(評(píng)委打分)錄入功能—輸入:按輸入選手的順序?qū)ζ浞謩e打分,輸入每個(gè)評(píng)委的評(píng)分,對一個(gè)選手打完分之后,顯示其總分和平均分;</p><p> 計(jì)算總成績和平均成績(去掉一個(gè)最高分和一個(gè)最低分);</p><p> 歌手成績排序(按平均分):對選手按平均分進(jìn)行排序,輸出選手
16、的姓名、編號(hào)、總分和平均分;</p><p> 歌手成績查詢功能—算法;</p><p> 按編號(hào)查詢:輸入編號(hào),如果存在,輸出選手的數(shù)據(jù),不存在,輸出 “信息不存在”。</p><p> 按姓名查詢:輸入選手姓名,存在,則輸出選手?jǐn)?shù)據(jù),不存在,則輸出 “信息不存在”;</p><p> 7、 追加選手?jǐn)?shù)據(jù)(包括歌手姓名和編號(hào)):如果
17、添加的選手已經(jīng)存在,則不能插入,不存在,則輸出“成功插入”。</p><p> 8、 寫入數(shù)據(jù)文件:將輸入的信息進(jìn)行保存,保存到自己所寫的文件中。</p><p><b> 2.4系統(tǒng)模塊圖</b></p><p> 以下是歌手管理系統(tǒng)的模塊圖:</p><p> 圖2-1 系統(tǒng)模塊圖</p>&l
18、t;p> 第三章 詳細(xì)設(shè)計(jì)說明</p><p> 3.1 主函數(shù)的流程圖</p><p> 圖3-1主函數(shù)流程圖</p><p> 3.2 輸入歌手?jǐn)?shù)據(jù)</p><p> 輸入函數(shù):刷新此前的顯示界面,然后輸入在執(zhí)行上步操作后的顯示界面</p><p> Singer *create() 包含的參數(shù)
19、有:選手姓名string name;編號(hào) long num。</p><p> 圖3-2輸入函數(shù)流程圖</p><p> 3.3 查詢歌手?jǐn)?shù)據(jù)</p><p> 查詢函數(shù):刷新此前的顯示界面,然后查詢在執(zhí)行上步操作后的顯示界面</p><p> 按姓名查詢:void inquire(); 參數(shù):姓名 string name</
20、p><p> 按編號(hào)查詢:void inquire()。參數(shù):編號(hào) long num</p><p> 圖3-3 查詢函數(shù)流程圖</p><p><b> 3.4 編碼與調(diào)試</b></p><p> 此程序包含六個(gè)函數(shù):main();Singer *create();void print(); Singer *in
21、sert(); void save();void menu();void grade();void rank(); void welcome();void inquire(); Singer *import();</p><p><b> 其中:</b></p><p> main()為主函數(shù),可輸出開機(jī)界面;</p><p> void
22、 menu()功能選擇界面,按提示可提供相關(guān)服務(wù);</p><p> Singer *create()創(chuàng)建歌手信息表,輸入選手相關(guān)數(shù)據(jù);</p><p> void print()輸出函數(shù),輸出選手的相關(guān)數(shù)據(jù);</p><p> Singer *insert()插入函數(shù),插入新的選手的數(shù)據(jù);</p><p> void save()寫
23、入數(shù)據(jù)文件的函數(shù),將選手的數(shù)據(jù)保存到文件夾中;</p><p> void grade()評(píng)委打分函數(shù),輸入評(píng)委所打的分?jǐn)?shù);</p><p> void rank()成績排序函數(shù),對選手按平均分進(jìn)行排序,并輸出最終結(jié)果;</p><p> void welcome()該函數(shù)的作用是清空屏幕;</p><p> Singer *impo
24、rt()文件導(dǎo)入函數(shù),從某文件把選手信息導(dǎo)入系統(tǒng)。</p><p> 第四章 軟件使用說明及運(yùn)行結(jié)果</p><p><b> 4.1使用說明</b></p><p> 該程序可以實(shí)現(xiàn)對選手有關(guān)信息查找的功能,安裝VisualC++6.0英文版后,在工具欄“file”中單擊“new”選項(xiàng),單擊“files”菜單,選擇“C++ Source
25、 file”輸入文件名“歌手比賽系統(tǒng)”。開始輸入程序,程序輸入完成,單擊“build”工具欄,選擇“build[歌手比賽系統(tǒng).cpp1]”,待程序無誤后,開始執(zhí)行程序。</p><p> 根據(jù)數(shù)據(jù)結(jié)構(gòu)、函數(shù)功能和主要的流程圖,進(jìn)行錄入源代碼操作。</p><p> 在編碼時(shí),注意代碼的書寫規(guī)范,包括命名慣例、注釋、分隔和縮進(jìn)等,這樣使程序?qū)游銮逦鰪?qiáng)可讀性和可維護(hù)性。 </p&
26、gt;<p> 編碼操作完成后,先靜態(tài)檢查一下有沒有語法錯(cuò)誤,然后進(jìn)行編譯,更深一步檢查語法錯(cuò)誤。待編譯通過時(shí),運(yùn)行程序,觀察是否能夠正常運(yùn)行,如果有問題,再去修改源程序,直至達(dá)到了預(yù)期的效果。</p><p><b> 4.2 運(yùn)行結(jié)果</b></p><p> 1、初始界面,提供功能選擇,輸入相應(yīng)數(shù)字或字母。</p><p&
27、gt; 圖4-1 程序截圖一</p><p> 2、選擇1,輸入選手信息,包括姓名和編號(hào)(編號(hào)必須是阿拉伯?dāng)?shù)字)。</p><p> 圖4-2 程序截圖二</p><p> 3、評(píng)委打分界面,會(huì)依次提醒輸入每個(gè)評(píng)委所打的分?jǐn)?shù)(分?jǐn)?shù)必須是0到100之內(nèi)的數(shù)),輸入完畢,顯示選手的總分和平均分,也就是最終得分。</p><p> 圖4-
28、3 程序截圖三</p><p> 4、成績排序界面,輸入選擇“4”,輸出排序的結(jié)果,顯示有選手的編號(hào)、姓名、總分和平均分,排序是按平均分。</p><p> 圖4-4 程序截圖四</p><p> 5、下面是查詢界面,可按姓名或者編號(hào)查詢,輸出選手信息。</p><p> 圖4-5 程序截圖五</p><p>
29、 6、追加選手?jǐn)?shù)據(jù),輸入新增選手的姓名和編號(hào)。</p><p> 圖4-6 程序截圖六</p><p> 7、寫入數(shù)據(jù)文件,保存信息到自己建立的文件內(nèi)。</p><p> 圖4-7 程序截圖七</p><p> 第五章 課程設(shè)計(jì)心得與體會(huì)</p><p> 課程設(shè)計(jì)剛開始的時(shí)候,我真的感覺到無從下手。因?yàn)橐?/p>
30、經(jīng)過去一個(gè)學(xué)期了,期間又沒有怎么看書,大一的時(shí)候?qū)W的c++,不過基本上已經(jīng)忘光了,而且那時(shí)候?qū)W的不深,如果單單寫一個(gè)比較的小的程序還可以,大程序基本寫不了。當(dāng)老師把題目發(fā)給我們之后,剛開始是一籌莫展,不過短時(shí)間內(nèi)就已經(jīng)覺醒,重新對題目分析了一遍,了解了一下要用到哪方面的知識(shí),然后著手去看書,重新熟悉一下以前的知識(shí)。然后去圖書館借了一些關(guān)于數(shù)據(jù)結(jié)構(gòu)和c++的書??催^那些書之后,信心增加了不少,對接下來的程序編譯有很大幫助。</p&g
31、t;<p> 通過這三周的課程設(shè)計(jì),我獨(dú)立完成了一個(gè)較大的C++語言程序的設(shè)計(jì),并認(rèn)真完成了課程設(shè)計(jì)報(bào)告。</p><p> 回憶這三周的時(shí)間,我收獲很大。首先,我熟練地運(yùn)用了所學(xué)的知識(shí)編寫程序,并成功的完成,感覺成就感很強(qiáng),這大大激發(fā)了我編程的興趣;其次,在設(shè)計(jì)的過程中遇到了一些困難,我會(huì)認(rèn)真的去思考,或者充分利用網(wǎng)絡(luò)資源來尋求幫助,提高獲取信息的能力。課程設(shè)計(jì)期間,我有向老師和同學(xué)尋求幫助,
32、在交流中共同進(jìn)步。最后,我了解了軟件開發(fā)的大體過程及各個(gè)步驟,這對將來的學(xué)習(xí)和工作是很有幫助的。</p><p> 對于信管專業(yè)的大學(xué)生來說,積累實(shí)戰(zhàn)經(jīng)驗(yàn)是一項(xiàng)極其重要的內(nèi)容,很可能成為將來就業(yè)的敲門磚。而程序設(shè)計(jì)綜合課程設(shè)計(jì)就是積累實(shí)戰(zhàn)經(jīng)驗(yàn)的一個(gè)過程,雖然程序的規(guī)模并不大,但能夠讓我們盡早地認(rèn)識(shí)軟件開發(fā)的重要性和必要性,為將來的就業(yè)打下堅(jiān)實(shí)的基礎(chǔ)。</p><p> 經(jīng)過兩個(gè)星期的上
33、機(jī)實(shí)踐學(xué)習(xí),使我對C++語言有了更進(jìn)一步的認(rèn)識(shí)和了解,要想學(xué)好它要重在實(shí)踐,要通過不斷的上機(jī)操作才能更好地學(xué)習(xí)它,通過實(shí)踐,我也發(fā)現(xiàn)我的好多不足之處,首先是自己編程粗心大意,經(jīng)常出錯(cuò),通過學(xué)習(xí)也有所改進(jìn);再有對C++語言的一些標(biāo)準(zhǔn)函數(shù)不太了解,還有對函數(shù)調(diào)用的正確使用不夠熟悉,以及對C++語言中經(jīng)常出現(xiàn)的錯(cuò)誤也不了解,通過實(shí)踐,使我在這幾個(gè)方面的認(rèn)識(shí)有所提高。這次的課程設(shè)讓我認(rèn)識(shí)到很多C++的內(nèi)在要素:</p><p
34、> 程序設(shè)計(jì)語言是程序設(shè)計(jì)的工具。這是我通過兩周課程設(shè)計(jì)深深體會(huì)的一點(diǎn),并且發(fā)現(xiàn)如果想有效的進(jìn)行程序設(shè)計(jì),正確地應(yīng)用程序設(shè)計(jì)語言表達(dá)算法,必須準(zhǔn)確的運(yùn)用程序設(shè)計(jì)語言,掌握其語法知識(shí)。</p><p> 學(xué)習(xí)程序設(shè)計(jì)必須重視時(shí)間環(huán)節(jié),多讀程序,多編寫程序,多上機(jī)實(shí)踐。這次的課程設(shè)計(jì)就使得課堂教學(xué)、式樣和實(shí)踐之間的關(guān)系更為緊密。對我的學(xué)習(xí)有著很深遠(yuǎn)的影響。</p><p> 我發(fā)現(xiàn)
35、作為一個(gè)程序設(shè)計(jì)人員,需要掌握面向過程的程序設(shè)計(jì),也要掌握面向?qū)ο蟮某绦蛟O(shè)計(jì)。從前,人們通過C++語言學(xué)習(xí)面向過程的程序設(shè)計(jì),再通過C++學(xué)習(xí)面向?qū)ο蟮某绦蛟O(shè)計(jì)。其實(shí)C++并不是純粹的面向?qū)ο蟮恼Z言,它是一種混合語言。學(xué)習(xí)C++既可以編寫面向過程的程序,也可以編寫面向?qū)ο蟮某绦?。這一點(diǎn)是我通過可課程設(shè)計(jì)所的實(shí)踐發(fā)現(xiàn)的。</p><p> 4. 深切的感受到了C++語法的復(fù)雜,內(nèi)容的繁多。發(fā)現(xiàn)如果對它缺乏系統(tǒng)的了
36、解,將難以真正的運(yùn)用,編出來的程序錯(cuò)誤百出。</p><p><b> 附錄1:參考文獻(xiàn)</b></p><p> [1]譚浩強(qiáng)編著:C++程序設(shè)計(jì),北京:清華大學(xué)出版社,2004</p><p> [2]楊秀金編著:數(shù)據(jù)結(jié)構(gòu)(c++版),北京:人民郵電出版社,2009.4</p><p> [3]湛為芳編著:C
37、++程序設(shè)計(jì)技術(shù)習(xí)題解答和實(shí)驗(yàn)指導(dǎo),北京:清華大學(xué)出版社,2009.10</p><p> [4] 伍俊良編著:Visual C++6.0課程設(shè)計(jì)與系統(tǒng)開發(fā)案例.北京:清華大學(xué)出版社,2002.11</p><p> [5]、(美)戴特爾(Deitel,H.M.)等編著,張引等譯:C++大學(xué)基礎(chǔ)教程(第五版),北京:電子工業(yè)出版社,2006.6</p><p>
38、<b> 附錄2:程序清單</b></p><p> 以下是歌手比賽系統(tǒng)的源代碼:</p><p> #include<iostream></p><p> #include<fstream></p><p> #include<string></p><
39、p> #include<iomanip></p><p> using namespace std;</p><p> #define NULL 0</p><p> int n=0; //鏈表節(jié)點(diǎn)數(shù)</p><p> bool formExist=false; //原有鏈表是否存在</p>
40、;<p> struct Singer</p><p><b> {</b></p><p> string name;</p><p><b> long num;</b></p><p><b> int sum;</b></p>&l
41、t;p> int mark[10];</p><p> float average;</p><p> Singer *next;</p><p><b> };</b></p><p><b> //創(chuàng)建鏈表</b></p><p> Singer *cr
42、eate();</p><p><b> //打印信息</b></p><p> void print(Singer *pt);</p><p><b> //插入節(jié)點(diǎn)</b></p><p> Singer *insert(Singer *head,Singer *sin);</p&
43、gt;<p><b> //保存到文件</b></p><p> void save(Singer *head,char filename[]);</p><p><b> //菜單</b></p><p> void menu();</p><p><b> //
44、評(píng)委打分</b></p><p> void grade(Singer *head,int mark[]);</p><p><b> //成績排序</b></p><p> void rank(Singer *&head);</p><p><b> //歡迎</b>&
45、lt;/p><p> void welcome();</p><p><b> //按姓名查詢</b></p><p> void inquire(Singer *head,string name);</p><p><b> //按編號(hào)查詢</b></p><p>
46、void inquire(Singer *head,long num);</p><p><b> //從文件導(dǎo)入</b></p><p> Singer *import(char filename[],Singer *head);</p><p> int main()</p><p><b> {&
47、lt;/b></p><p> Singer *head=NULL;</p><p> Singer newsin;</p><p> string name;</p><p> void grade(Singer *);</p><p> ifstream infile;</p><
48、;p> char filename[20];</p><p><b> long num;</b></p><p> char choose;</p><p> bool quit=false;</p><p><b> char c;</b></p><p>
49、; welcome();</p><p> while(true)</p><p><b> {</b></p><p><b> menu();</b></p><p> cin>>choose;</p><p> switch(choose)<
50、;/p><p><b> {</b></p><p><b> case '1':</b></p><p> if (formExist)</p><p><b> {</b></p><p> cout<<"
51、您要?jiǎng)?chuàng)建新的鏈表,原有鏈表將丟失,是否繼續(xù)?(Y/N)";</p><p><b> cin>>c;</b></p><p> if (!(c=='y'||c=='Y'))</p><p><b> continue;</b></p><p&g
52、t;<b> else</b></p><p><b> {</b></p><p><b> n=0;</b></p><p> head=create();</p><p> system("pause");</p><p&
53、gt;<b> break;</b></p><p><b> }</b></p><p><b> }else</b></p><p><b> {</b></p><p> head=create();</p><p>
54、; system("pause");</p><p><b> break;</b></p><p><b> }</b></p><p><b> case '2':</b></p><p> cout<<"
55、請輸入文件名:";</p><p> cin>>filename;</p><p> head=import(filename,head);</p><p> system("pause");</p><p><b> break;</b></p><
56、p><b> case '3':</b></p><p> grade(head);</p><p> system("pause");</p><p><b> break;</b></p><p><b> case '4
57、39;:</b></p><p> cout<<"成績排序結(jié)果為:"<<endl;</p><p> rank(head);</p><p> system("pause");</p><p><b> break;</b></p&
58、gt;<p><b> case '5':</b></p><p> print(head);</p><p> system("pause");</p><p><b> break;</b></p><p><b> case
59、 '6':</b></p><p> cout<<"請輸入姓名:"<<endl;</p><p> cin>>name;</p><p> inquire(head,name);</p><p> system("pause");&
60、lt;/p><p><b> break;</b></p><p><b> case '7':</b></p><p> cout<<"請輸入編號(hào):"<<endl;</p><p><b> cin>>num;&
61、lt;/b></p><p> inquire(head,num);</p><p> system("pause");</p><p><b> break;</b></p><p><b> case '8':</b></p>&l
62、t;p> cout<<"請輸入新增選手的姓名、編號(hào):"<<endl;</p><p> cin>>newsin.name;</p><p> cin>>newsin.num;</p><p> head=insert(head,&newsin);</p><
63、p> system("pause");</p><p><b> break;</b></p><p><b> case 'k':</b></p><p> cout<<"請輸入文件名:";</p><p> ci
64、n>>filename;</p><p> save(head,filename);</p><p> system("pause");</p><p><b> break;</b></p><p><b> case 'c':</b><
65、;/p><p> system("cls");</p><p> welcome();</p><p><b> break;</b></p><p><b> case 'q':</b></p><p> quit=true;<
66、;/p><p><b> break;</b></p><p><b> default:</b></p><p> cout<<"輸入錯(cuò)誤!"<<endl;</p><p><b> }</b></p><p
67、><b> if (quit)</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> //退出時(shí)提示保存</b></p><p> cout<<"您想保
68、存這些信息嗎? (Y/N)";</p><p><b> cin>>c;</b></p><p> if (c=='y' || c=='Y')</p><p><b> {</b></p><p> cout<<"請
69、輸入文件名:";</p><p> cin>>filename;</p><p> save(head,filename);</p><p><b> }</b></p><p><b> return 0;</b></p><p><b&
70、gt; }</b></p><p><b> //歡迎界面</b></p><p> void welcome()</p><p><b> {</b></p><p> cout<<"***********************************
71、****"<<endl</p><p> <<" 歡迎使用歌手比賽管理系統(tǒng)!"<<endl</p><p> <<"制作人:黃光亮 時(shí)間:2010-12-29"<<endl</p><p> <<"********
72、*******************************"<<endl<<endl;</p><p><b> }</b></p><p><b> //菜單</b></p><p> void menu()</p><p><b> {&l
73、t;/b></p><p> cout<<setiosflags(ios::left);</p><p> cout<<"\n\n您要做什么?"<<endl</p><p> <<setw(20)<<"1.創(chuàng)建選手信息表"</p><p
74、> <<setw(20)<<"2.從文件導(dǎo)入信息表"<<endl</p><p> <<setw(20)<<"3.評(píng)委打分"</p><p> <<setw(20)<<"4.成績排序"<<endl</p>&l
75、t;p> <<setw(20)<<"5.打印所有的信息"</p><p> <<setw(20)<<"6.按姓名查詢"<<endl</p><p> <<setw(20)<<"7.按編號(hào)查詢"</p><p>
76、 <<setw(20)<<"8.追加選手?jǐn)?shù)據(jù)"<<endl</p><p> <<setw(20)<<"k.保存信息表到文件"</p><p> <<setw(20)<<"c.清空屏幕"<<endl</p><p
77、> <<setw(20)<<"q.退出"<<endl<<endl</p><p> <<"輸入您的選擇:";</p><p><b> }</b></p><p><b> //創(chuàng)建鏈表</b></p&g
78、t;<p> Singer *create()</p><p><b> {</b></p><p> bool error=false;</p><p> formExist=true;</p><p> Singer *p1,*p2,*head;</p><p> h
79、ead=NULL;</p><p><b> p1=head;</b></p><p> while(true)</p><p><b> {</b></p><p><b> p2=p1;</b></p><p> p1=new Singer
80、;</p><p> cout<<"請輸入選手的姓名:(輸0結(jié)束)";</p><p> cin>>p1->name;</p><p> if (p1->name=="0")</p><p><b> break;</b></p&g
81、t;<p> cout<<"編號(hào):";</p><p> cin>>p1->num;</p><p><b> n++;</b></p><p><b> if (n==1)</b></p><p><b> {&l
82、t;/b></p><p><b> head=p1;</b></p><p> p1->next=NULL;</p><p><b> }</b></p><p><b> else</b></p><p><b> {
83、</b></p><p> p2->next=p1;</p><p> p1->next=NULL;</p><p><b> }</b></p><p><b> }</b></p><p> cout<<"輸入結(jié)束!
84、 "<<endl;</p><p> return head;</p><p><b> }</b></p><p><b> //輸出信息</b></p><p> void print(Singer *head)</p><p><b&
85、gt; {</b></p><p> Singer *p=head;</p><p> if(p!=NULL)</p><p><b> {</b></p><p> cout<<setw(15)<<"姓名"<<setw(10)<<
86、"編號(hào)"<<endl;</p><p><b> do</b></p><p><b> {</b></p><p> cout<<setw(15)<<p->name<<setw(10)<<p->num<<endl
87、;</p><p> p=p->next;</p><p> }while(p!=NULL);</p><p> cout<<"合計(jì)選手"<<n<<"人。"<<endl;</p><p><b> }</b></p
88、><p><b> else</b></p><p> cout<<"沒有信息!"<<endl;</p><p><b> }</b></p><p><b> //評(píng)委打分 </b></p><p>
89、 void grade(Singer *head)</p><p><b> {</b></p><p> Singer *p;</p><p><b> p=head;</b></p><p> if (p!=NULL)</p><p><b> {&l
90、t;/b></p><p><b> do</b></p><p><b> {</b></p><p> int i, max, min;</p><p> int sum=0;</p><p><b> max = -1;</b>&l
91、t;/p><p> min =101 ;</p><p> cout <<"請輸入"<<p->num<<"號(hào)選手"<<p->name<<"的得分\n\n";</p><p> for (i=0; i<10; i++)</p
92、><p><b> {</b></p><p> cout <<"第"<<i+1<<"個(gè)評(píng)委的評(píng)分:";</p><p> cin>>p->mark[i];</p><p> if(p->mark[i]>max)
93、</p><p> max=p->mark[i];</p><p> if(p->mark[i]<min)</p><p> min=p->mark[i];</p><p> sum+=p->mark[i];</p><p><b> }</b>&l
94、t;/p><p> p->sum=sum;</p><p> p->average = (p->sum-max-min)/8.0;</p><p> cout<<"總分"<<p->sum<<"平均分:"<<p->average<< en
95、dl;</p><p> p = p->next;</p><p> }while(p!= NULL);</p><p><b> }</b></p><p><b> else</b></p><p> cout<<"\n所有選手的
96、評(píng)分輸入完畢.\n";</p><p> system("pause");</p><p><b> }</b></p><p> //按平均分排序數(shù)出函數(shù)</p><p> void rank(Singer *&head)</p><p><b
97、> {</b></p><p> /////////////////冒泡法排序/////////////////////////////</p><p> //p = head;</p><p><b> int cc;</b></p><p> Singer *p,*q,*tail,*h;&
98、lt;/p><p><b> if(!head)</b></p><p><b> return;</b></p><p> tail=NULL;</p><p> h = new Singer; </p><p> h->next = head;</p&g
99、t;<p> //h = head;</p><p> while(h->next!=tail)</p><p><b> { </b></p><p><b> p=h;</b></p><p> q=p->next;</p><p>
100、 while(q->next!=tail)</p><p><b> {</b></p><p><b> //swap</b></p><p> if (p->next->average < q->next->average)</p><p><b&
101、gt; {</b></p><p> p->next=q->next;</p><p> q->next=q->next->next;</p><p> p->next->next=q;</p><p> p=p->next;</p><p><
102、;b> }</b></p><p><b> else{</b></p><p> //next step</p><p> q=q->next;</p><p> p=p->next;</p><p><b> }</b></
103、p><p><b> }</b></p><p> //tail is the element bubble out</p><p> //since we use single link</p><p><b> tail=q;</b></p><p><b>
104、; }</b></p><p><b> /*</b></p><p> do//求出選手的的人數(shù)</p><p><b> {</b></p><p> p = p->next;</p><p><b> n++;</b>
105、</p><p> }while(p->next != NULL);</p><p> Singer *temp = head->next;</p><p> Singer *prev = head;</p><p> for(i=0; i<n-1; i++)</p><p><b>
106、; {</b></p><p> if(head->average < temp->average)</p><p><b> {</b></p><p> prev->next = temp->next;</p><p> temp->next = head;
107、</p><p> head = temp;</p><p><b> }</b></p><p><b> }</b></p><p><b> /*</b></p><p> for(i=1; i<n; i++)//冒泡法排序<
108、/p><p><b> {</b></p><p> p1 = head;</p><p> p2 = head->next->next;</p><p> for(j=0; j<n-i; j++)</p><p><b> {</b></p&g
109、t;<p> if(p1->next[i].average <= p2->average)//滿足條件交換數(shù)據(jù)位置</p><p><b> {</b></p><p> p1->next->next = p2->next;</p><p> p2->next = p1->n
110、ext;</p><p> p1->next = p2;</p><p> p2 = p2->next;</p><p><b> }//if</b></p><p> p1 = p1->next;</p><p> p2 = p2->next;</p>
111、;<p><b> }//for</b></p><p><b> }//for</b></p><p><b> */</b></p><p> /////////////////////輸出排序后數(shù)據(jù)////////////////////////////////</
112、p><p> head = p->next;</p><p> p = h->next;</p><p> cout <<setw(10)<<"編號(hào)"<<setw(10)<<"姓名"<<setw(10)<<"總分"<
113、<setw(15)<<"平均分"<<endl;</p><p><b> do</b></p><p><b> {</b></p><p> cout <<setw(10)<<p->num<< setw(10)<<
114、;p->name<<setw(10)<<p->sum<<setw(15)<<p->average<<endl;</p><p> p = p->next;</p><p> }while(p != NULL);</p><p> system("pause"
115、);</p><p><b> }</b></p><p><b> //插入信息</b></p><p> Singer *insert(Singer *head,Singer *sin)</p><p><b> {</b></p><p>
116、 Singer *p0,*p1;</p><p><b> p1=head;</b></p><p><b> p0=sin;</b></p><p> if (head==NULL)</p><p><b> {</b></p><p>&l
117、t;b> head=p0;</b></p><p> p0->next=NULL;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p>
118、 while(p1->next!=NULL)</p><p><b> {</b></p><p> if (p0->num==p1->num)</p><p><b> {</b></p><p> cout<<"編號(hào)為"<<
119、p0->num<<"的選手已存在!"<<endl;</p><p> return head;</p><p><b> }</b></p><p> p1=p1->next;</p><p><b> }</b></p>
120、<p> p1->next=p0;</p><p> p0->next=NULL;</p><p><b> n++;</b></p><p><b> }</b></p><p> cout<<"成功插入信息!"<<en
121、dl; </p><p> return head;</p><p><b> }</b></p><p><b> //保存到文件</b></p><p> void save(Singer *head,char filename[])</p><p><b&
122、gt; {</b></p><p> Singer *p=head;</p><p> bool flag=false;</p><p> if (head==NULL)</p><p><b> {</b></p><p> cout<<"沒有可以保
123、存的信息!"<<endl;</p><p><b> return;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><
124、;p> fstream outfile(filename,ios::out);</p><p> if (!outfile)</p><p><b> {</b></p><p> cout<<"打開數(shù)據(jù)文件出錯(cuò)!"<<endl;</p><p><b>
125、; return;</b></p><p><b> }</b></p><p><b> do</b></p><p><b> {</b></p><p><b> if(flag)</b></p><p>
126、; outfile<<endl;</p><p> outfile<<p->name<<"\t"<<p->num<<'\t'<<p->mark;</p><p> flag=true;</p><p> p=p->next;&l
127、t;/p><p> }while(p!=NULL);</p><p> outfile.close();</p><p> cout<<"保存成功!保存到"<<filename<<endl;</p><p><b> }</b></p><p
128、><b> }</b></p><p><b> //按姓名查詢</b></p><p> void inquire(Singer *head,string name)</p><p><b> {</b></p><p> bool flag=true;<
129、;/p><p> Singer *p=head;</p><p> int total=0;</p><p> if (p==NULL)</p><p><b> {</b></p><p> cout<<"信息為空!"<<endl;</p&
130、gt;<p><b> return;</b></p><p><b> }</b></p><p><b> do</b></p><p><b> {</b></p><p> if(p->name==name)</
131、p><p><b> {</b></p><p><b> if (flag)</b></p><p><b> {</b></p><p> cout<<"姓名為"<<name<<"的選手有:"&
132、lt;<endl;</p><p> cout<<setw(15)<<"姓名"<<setw(10)<<"編號(hào)"<<setw(7)<<"成績"<<endl;</p><p> flag=false;</p><p>
133、<b> }</b></p><p> cout<<setw(15)<<p->name<<setw(10)<<p->num<<setw(7)<<p->average<<endl;</p><p><b> total++;</b></
134、p><p><b> }</b></p><p> p=p->next;</p><p> }while(p!=NULL);</p><p> cout<<"已查詢到"<<total<<"條記錄。"<<endl;</p
135、><p><b> }</b></p><p><b> //按編號(hào)查詢</b></p><p> void inquire(Singer *head,long num)</p><p><b> {</b></p><p> bool flag=
136、true;</p><p> Singer *p=head;</p><p> if (p==NULL)</p><p><b> {</b></p><p> cout<<"信息為空!"<<endl;</p><p><b> re
137、turn;</b></p><p><b> }</b></p><p><b> do</b></p><p><b> {</b></p><p> if(p->num==num)</p><p><b> {&
138、lt;/b></p><p><b> if (flag)</b></p><p><b> {</b></p><p> cout<<"編號(hào)是"<<num<<"的選手是:"<<endl;</p><p&
139、gt; cout<<setw(15)<<"姓名"<<setw(7)<<"成績"<<endl;</p><p> flag=false;</p><p><b> }</b></p><p> cout<<setw(15)<
140、;<p->name<<setw(7)<<p->average<<endl;</p><p><b> return;</b></p><p><b> }</b></p><p> p=p->next;</p><p> }whil
141、e(p!=NULL);</p><p> cout<<"查無此人!"<<endl;</p><p><b> }</b></p><p><b> //從文件導(dǎo)入</b></p><p> Singer *import(char filename[
142、],Singer *head)</p><p><b> {</b></p><p> ifstream infile;</p><p> infile.open(filename,ios::in);</p><p> if(!infile)</p><p><b> {<
143、;/b></p><p> cout<<"打開文件失敗!"<<endl;</p><p> return head;</p><p><b> }</b></p><p> head=NULL;</p><p><b> n=0
144、;</b></p><p> Singer *p1;</p><p> Singer *p;</p><p> while(!infile.eof())</p><p><b> {</b></p><p> p=new Singer;</p><p>
145、;<b> if(n>=1)</b></p><p> p1->next=p;</p><p> infile>>p->name>>p->num;</p><p> p->next=NULL;</p><p><b> if (n==0)</
146、b></p><p><b> head=p;</b></p><p><b> p1=p;</b></p><p><b> n++;</b></p><p><b> }</b></p><p> infile.
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計(jì)----歌手比賽系統(tǒng)
- c語言程序課程設(shè)計(jì)—歌手比賽系統(tǒng)
- c語言程序課程設(shè)計(jì)—歌手比賽系統(tǒng)
- 歌手比賽系統(tǒng)課程設(shè)計(jì)說明書
- c++課程設(shè)計(jì)--比賽報(bào)名系統(tǒng)
- 籃球比賽記分牌課程設(shè)計(jì)報(bào)告
- 比賽計(jì)分器課程設(shè)計(jì)
- c語言課程設(shè)計(jì)--比賽評(píng)分系統(tǒng)的設(shè)計(jì)
- 匯編語言課程設(shè)計(jì)-- 計(jì)算比賽成績系統(tǒng)
- 嵌入式比賽計(jì)分系統(tǒng)課程設(shè)計(jì)
- eda拔河比賽課程設(shè)計(jì)
- 計(jì)件系統(tǒng)設(shè)計(jì) 課程設(shè)計(jì)報(bào)告
- 評(píng)分系統(tǒng)課程設(shè)計(jì)-微機(jī)接口課程設(shè)計(jì)報(bào)告
- 倉庫管理系統(tǒng)--課程設(shè)計(jì)報(bào)告報(bào)告
- 計(jì)算比賽成績_匯編語言課程設(shè)計(jì)報(bào)告書
- c語言程序設(shè)計(jì)課程設(shè)計(jì)---設(shè)計(jì)比賽評(píng)分系統(tǒng)
- 電子線路課程設(shè)計(jì)報(bào)告--比賽記分牌
- java課程設(shè)計(jì)----課程設(shè)計(jì)報(bào)告
- fpga課程設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 宿舍管理系統(tǒng)課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論