版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 計算機學院信息管理與信息系統(tǒng)專業(yè)</p><p> 《程序設計綜合課程設計》報告</p><p> ?。?010/2011學年 第一學期)</p><p> 學生姓名: </p><p> 學生班級: 1</p><p> 學生學號:
2、 </p><p> 指導教師: </p><p><b> 2011年1月7日</b></p><p><b> 目錄Ⅰ</b></p><p> 第一章課程設計的目的和要求1</p><p> 1.1 課程設
3、計的目的1</p><p> 1.2 課程設計的目標1</p><p> 1.3 課程設計要求2</p><p> 第二章 課程設計任務內容3</p><p> 2.1 課程設計題目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> 第三章 詳細設計說明5</p><p> 3.1 主函數(shù)的流程圖5</p><p> 3.2 輸入歌手數(shù)據(jù)6</p><p> 3.3 查詢歌手數(shù)據(jù)7</p><
5、p> 3.4 編碼與調試8</p><p> 第四章 軟件使用說明及運行結果9</p><p><b> 4.1使用說明9</b></p><p> 4.2 運行結果10</p><p> 第五章 課程設計心得與體會13</p><p> 附錄1:參考文獻15<
6、/p><p> 附錄2:程序清單16</p><p><b> 歌手比賽系統(tǒng)</b></p><p> 課程設計的目的和要求</p><p> 1.1課程設計的目的</p><p> C++語言課程設計的主要目的是培養(yǎng)學生綜合運用C++程序設計課程所學到的知識,編寫C++程序解決實際問題的
7、能力,以及嚴謹?shù)墓ぷ鲬B(tài)度和良好的程序設計習慣。</p><p> 通過課程設計的訓練,學生應該能夠了解程序設計的基本開發(fā)過程,掌握編寫、調試和測試C++語言程序的基本技巧,充分理解結構化程序設計的基本方法。</p><p> C++語言程序設計的主要任務時要求學生遵循軟件開發(fā)過程的基本規(guī)范,運用結構化程序設計的方法,按照課程設計的題目要求,分析、設計、編寫、調試和測試C++語言程序及編
8、寫設計報告。</p><p> 本次課程設計是通過設計一個較為簡單的“歌手比賽系統(tǒng)”,進一步熟悉C++中有關各種知識的運用與掌握。了解系統(tǒng)開發(fā)的需求分析、模塊分析、程序流程圖、編碼測試、模塊組裝與整體調試的全過程,加深對C++的理解與Visual C++環(huán)境的使用;逐步熟悉程序設計的方法,并養(yǎng)成良好的編程習慣,進一步培養(yǎng)完善的C++編程設計思維,為以后進行軟件編程、數(shù)據(jù)庫管理等深入學習打下一個牢固基礎</
9、p><p> 1.2課程設計的目標</p><p><b> 本課程設計的目標:</b></p><p> 鞏固和加深學生對C++語言課程的基本知識的理解和掌握;</p><p> 掌握C++語言編程和程序調試的基本技能;</p><p> 掌握利用C++語言進行軟件設計的方法;</p
10、><p> 提高書寫程序設計說明文檔的能力;</p><p> 提高運用C++語言解決實際問題的能力。</p><p><b> 1.3課程設計要求</b></p><p><b> 基本要求:</b></p><p> 1.題目:設計一個“歌手比賽系統(tǒng)”軟件;<
11、/p><p> 2.了解該系統(tǒng)軟件開發(fā)的相關背景;</p><p> 3.參考相關書籍學習課程設計的基本知識;</p><p> 4.清楚所開發(fā)系統(tǒng)軟件的各個相關功能,以便順利開發(fā)系統(tǒng)軟件;</p><p> 5.對系統(tǒng)功能模塊進行分析,寫出設計說明文檔;</p><p> 6.設計完成的軟件要便于操作和使用;&
12、lt;/p><p> 7.對自己所設計的程序進行調試,并不斷完善;</p><p> 8.在設計過程中熟練掌握軟件編程的相關知識;</p><p> 9.詳細體會并記錄相關過程,并將心得體會寫在課程設計報告中;</p><p> 10.設計完成后提交課程設計報告。</p><p> 第二章 課程設計任務內容<
13、;/p><p> 2.1 課程設計題目</p><p><b> 歌手比賽系統(tǒng)。</b></p><p><b> 2.2 背景</b></p><p> 時下,無論是社會上某些場合還是校園內,經常舉行一些歌手演唱比賽,一般不會再像以前那樣用筆記錄比賽的情況,歌手比賽系統(tǒng)由此產生。它幾乎包含了一
14、切應有的功能,歌手信息的輸入,評委打分,成績排序等功能應有盡有,省去了很多麻煩的環(huán)節(jié),完全可以滿足一次歌手比賽的需求。開發(fā)此系統(tǒng)只為方便一般的歌手比賽。</p><p><b> 2.3功能需求</b></p><p> 用C++實現(xiàn)歌手比賽系統(tǒng)。該系統(tǒng)主要有以下功能:</p><p> 系統(tǒng)以菜單方式工作;</p><
15、;p> 歌手數(shù)據(jù)錄入功能(歌手數(shù)據(jù)用文件保存)--輸入;</p><p> 歌手成績(評委打分)錄入功能—輸入:按輸入選手的順序對其分別打分,輸入每個評委的評分,對一個選手打完分之后,顯示其總分和平均分;</p><p> 計算總成績和平均成績(去掉一個最高分和一個最低分);</p><p> 歌手成績排序(按平均分):對選手按平均分進行排序,輸出選手
16、的姓名、編號、總分和平均分;</p><p> 歌手成績查詢功能—算法;</p><p> 按編號查詢:輸入編號,如果存在,輸出選手的數(shù)據(jù),不存在,輸出 “信息不存在”。</p><p> 按姓名查詢:輸入選手姓名,存在,則輸出選手數(shù)據(jù),不存在,則輸出 “信息不存在”;</p><p> 7、 追加選手數(shù)據(jù)(包括歌手姓名和編號):如果
17、添加的選手已經存在,則不能插入,不存在,則輸出“成功插入”。</p><p> 8、 寫入數(shù)據(jù)文件:將輸入的信息進行保存,保存到自己所寫的文件中。</p><p><b> 2.4系統(tǒng)模塊圖</b></p><p> 以下是歌手管理系統(tǒng)的模塊圖:</p><p> 圖2-1 系統(tǒng)模塊圖</p>&l
18、t;p> 第三章 詳細設計說明</p><p> 3.1 主函數(shù)的流程圖</p><p> 圖3-1主函數(shù)流程圖</p><p> 3.2 輸入歌手數(shù)據(jù)</p><p> 輸入函數(shù):刷新此前的顯示界面,然后輸入在執(zhí)行上步操作后的顯示界面</p><p> Singer *create() 包含的參數(shù)
19、有:選手姓名string name;編號 long num。</p><p> 圖3-2輸入函數(shù)流程圖</p><p> 3.3 查詢歌手數(shù)據(jù)</p><p> 查詢函數(shù):刷新此前的顯示界面,然后查詢在執(zhí)行上步操作后的顯示界面</p><p> 按姓名查詢:void inquire(); 參數(shù):姓名 string name</
20、p><p> 按編號查詢:void inquire()。參數(shù):編號 long num</p><p> 圖3-3 查詢函數(shù)流程圖</p><p><b> 3.4 編碼與調試</b></p><p> 此程序包含六個函數(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ù),可輸出開機界面;</p><p> void
22、 menu()功能選擇界面,按提示可提供相關服務;</p><p> Singer *create()創(chuàng)建歌手信息表,輸入選手相關數(shù)據(jù);</p><p> void print()輸出函數(shù),輸出選手的相關數(shù)據(jù);</p><p> Singer *insert()插入函數(shù),插入新的選手的數(shù)據(jù);</p><p> void save()寫
23、入數(shù)據(jù)文件的函數(shù),將選手的數(shù)據(jù)保存到文件夾中;</p><p> void grade()評委打分函數(shù),輸入評委所打的分數(shù);</p><p> void rank()成績排序函數(shù),對選手按平均分進行排序,并輸出最終結果;</p><p> void welcome()該函數(shù)的作用是清空屏幕;</p><p> Singer *impo
24、rt()文件導入函數(shù),從某文件把選手信息導入系統(tǒng)。</p><p> 第四章 軟件使用說明及運行結果</p><p><b> 4.1使用說明</b></p><p> 該程序可以實現(xiàn)對選手有關信息查找的功能,安裝VisualC++6.0英文版后,在工具欄“file”中單擊“new”選項,單擊“files”菜單,選擇“C++ Source
25、 file”輸入文件名“歌手比賽系統(tǒng)”。開始輸入程序,程序輸入完成,單擊“build”工具欄,選擇“build[歌手比賽系統(tǒng).cpp1]”,待程序無誤后,開始執(zhí)行程序。</p><p> 根據(jù)數(shù)據(jù)結構、函數(shù)功能和主要的流程圖,進行錄入源代碼操作。</p><p> 在編碼時,注意代碼的書寫規(guī)范,包括命名慣例、注釋、分隔和縮進等,這樣使程序層析清晰,增強可讀性和可維護性。 </p&
26、gt;<p> 編碼操作完成后,先靜態(tài)檢查一下有沒有語法錯誤,然后進行編譯,更深一步檢查語法錯誤。待編譯通過時,運行程序,觀察是否能夠正常運行,如果有問題,再去修改源程序,直至達到了預期的效果。</p><p><b> 4.2 運行結果</b></p><p> 1、初始界面,提供功能選擇,輸入相應數(shù)字或字母。</p><p&
27、gt; 圖4-1 程序截圖一</p><p> 2、選擇1,輸入選手信息,包括姓名和編號(編號必須是阿拉伯數(shù)字)。</p><p> 圖4-2 程序截圖二</p><p> 3、評委打分界面,會依次提醒輸入每個評委所打的分數(shù)(分數(shù)必須是0到100之內的數(shù)),輸入完畢,顯示選手的總分和平均分,也就是最終得分。</p><p> 圖4-
28、3 程序截圖三</p><p> 4、成績排序界面,輸入選擇“4”,輸出排序的結果,顯示有選手的編號、姓名、總分和平均分,排序是按平均分。</p><p> 圖4-4 程序截圖四</p><p> 5、下面是查詢界面,可按姓名或者編號查詢,輸出選手信息。</p><p> 圖4-5 程序截圖五</p><p>
29、 6、追加選手數(shù)據(jù),輸入新增選手的姓名和編號。</p><p> 圖4-6 程序截圖六</p><p> 7、寫入數(shù)據(jù)文件,保存信息到自己建立的文件內。</p><p> 圖4-7 程序截圖七</p><p> 第五章 課程設計心得與體會</p><p> 課程設計剛開始的時候,我真的感覺到無從下手。因為已
30、經過去一個學期了,期間又沒有怎么看書,大一的時候學的c++,不過基本上已經忘光了,而且那時候學的不深,如果單單寫一個比較的小的程序還可以,大程序基本寫不了。當老師把題目發(fā)給我們之后,剛開始是一籌莫展,不過短時間內就已經覺醒,重新對題目分析了一遍,了解了一下要用到哪方面的知識,然后著手去看書,重新熟悉一下以前的知識。然后去圖書館借了一些關于數(shù)據(jù)結構和c++的書??催^那些書之后,信心增加了不少,對接下來的程序編譯有很大幫助。</p&g
31、t;<p> 通過這三周的課程設計,我獨立完成了一個較大的C++語言程序的設計,并認真完成了課程設計報告。</p><p> 回憶這三周的時間,我收獲很大。首先,我熟練地運用了所學的知識編寫程序,并成功的完成,感覺成就感很強,這大大激發(fā)了我編程的興趣;其次,在設計的過程中遇到了一些困難,我會認真的去思考,或者充分利用網(wǎng)絡資源來尋求幫助,提高獲取信息的能力。課程設計期間,我有向老師和同學尋求幫助,
32、在交流中共同進步。最后,我了解了軟件開發(fā)的大體過程及各個步驟,這對將來的學習和工作是很有幫助的。</p><p> 對于信管專業(yè)的大學生來說,積累實戰(zhàn)經驗是一項極其重要的內容,很可能成為將來就業(yè)的敲門磚。而程序設計綜合課程設計就是積累實戰(zhàn)經驗的一個過程,雖然程序的規(guī)模并不大,但能夠讓我們盡早地認識軟件開發(fā)的重要性和必要性,為將來的就業(yè)打下堅實的基礎。</p><p> 經過兩個星期的上
33、機實踐學習,使我對C++語言有了更進一步的認識和了解,要想學好它要重在實踐,要通過不斷的上機操作才能更好地學習它,通過實踐,我也發(fā)現(xiàn)我的好多不足之處,首先是自己編程粗心大意,經常出錯,通過學習也有所改進;再有對C++語言的一些標準函數(shù)不太了解,還有對函數(shù)調用的正確使用不夠熟悉,以及對C++語言中經常出現(xiàn)的錯誤也不了解,通過實踐,使我在這幾個方面的認識有所提高。這次的課程設讓我認識到很多C++的內在要素:</p><p
34、> 程序設計語言是程序設計的工具。這是我通過兩周課程設計深深體會的一點,并且發(fā)現(xiàn)如果想有效的進行程序設計,正確地應用程序設計語言表達算法,必須準確的運用程序設計語言,掌握其語法知識。</p><p> 學習程序設計必須重視時間環(huán)節(jié),多讀程序,多編寫程序,多上機實踐。這次的課程設計就使得課堂教學、式樣和實踐之間的關系更為緊密。對我的學習有著很深遠的影響。</p><p> 我發(fā)現(xiàn)
35、作為一個程序設計人員,需要掌握面向過程的程序設計,也要掌握面向對象的程序設計。從前,人們通過C++語言學習面向過程的程序設計,再通過C++學習面向對象的程序設計。其實C++并不是純粹的面向對象的語言,它是一種混合語言。學習C++既可以編寫面向過程的程序,也可以編寫面向對象的程序。這一點是我通過可課程設計所的實踐發(fā)現(xiàn)的。</p><p> 4. 深切的感受到了C++語法的復雜,內容的繁多。發(fā)現(xiàn)如果對它缺乏系統(tǒng)的了
36、解,將難以真正的運用,編出來的程序錯誤百出。</p><p><b> 附錄1:參考文獻</b></p><p> [1]譚浩強編著:C++程序設計,北京:清華大學出版社,2004</p><p> [2]楊秀金編著:數(shù)據(jù)結構(c++版),北京:人民郵電出版社,2009.4</p><p> [3]湛為芳編著:C
37、++程序設計技術習題解答和實驗指導,北京:清華大學出版社,2009.10</p><p> [4] 伍俊良編著:Visual C++6.0課程設計與系統(tǒng)開發(fā)案例.北京:清華大學出版社,2002.11</p><p> [5]、(美)戴特爾(Deitel,H.M.)等編著,張引等譯:C++大學基礎教程(第五版),北京:電子工業(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é)點數(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é)點</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、評委打分</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> //按編號查詢</b></p><p>
46、void inquire(Singer *head,long num);</p><p><b> //從文件導入</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、您要創(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<<"成績排序結果為:"<<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<<"請輸入編號:"<<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<<"請輸入新增選手的姓名、編號:"<<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<<"輸入錯誤!"<<endl;</p><p><b> }</b></p><p
67、><b> if (quit)</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> //退出時提示保存</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> <<"制作人:黃光亮 時間: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.從文件導入信息表"<<endl</p><p> <<setw(20)<<"3.評委打分"</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.按編號查詢"</p><p>
76、 <<setw(20)<<"8.追加選手數(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結束)";</p><p> cin>>p1->name;</p><p> if (p1->name=="0")</p><p><b> break;</b></p&g
81、t;<p> cout<<"編號:";</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<<"輸入結束!
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、"編號"<<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<<"合計選手"<<n<<"人。"<<endl;</p><p><b> }</b></p
88、><p><b> else</b></p><p> cout<<"沒有信息!"<<endl;</p><p><b> }</b></p><p><b> //評委打分 </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<<"號選手"<<p->name<<"的得分\n\n";</p><p> for (i=0; i<10; i++)</p
92、><p><b> {</b></p><p> cout <<"第"<<i+1<<"個評委的評分:";</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、評分輸入完畢.\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)<<"編號"<<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<<"編號為"<<
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ù)文件出錯!"<<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)<<"編號"<<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> //按編號查詢</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<<"編號是"<<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> //從文件導入</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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設計----歌手比賽系統(tǒng)
- c語言程序課程設計—歌手比賽系統(tǒng)
- c語言程序課程設計—歌手比賽系統(tǒng)
- 歌手比賽系統(tǒng)課程設計說明書
- c++課程設計--比賽報名系統(tǒng)
- 籃球比賽記分牌課程設計報告
- 比賽計分器課程設計
- c語言課程設計--比賽評分系統(tǒng)的設計
- 匯編語言課程設計-- 計算比賽成績系統(tǒng)
- 嵌入式比賽計分系統(tǒng)課程設計
- eda拔河比賽課程設計
- 計件系統(tǒng)設計 課程設計報告
- 評分系統(tǒng)課程設計-微機接口課程設計報告
- 倉庫管理系統(tǒng)--課程設計報告報告
- 計算比賽成績_匯編語言課程設計報告書
- c語言程序設計課程設計---設計比賽評分系統(tǒng)
- 電子線路課程設計報告--比賽記分牌
- java課程設計----課程設計報告
- fpga課程設計課程設計報告
- 宿舍管理系統(tǒng)課程設計報告
評論
0/150
提交評論