2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論