版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、湖南人文科技學院課程設計 湖 南 人 文 科 技 學 院信息科學與工程系課程設計說明書課 程 名 稱: c+程序設計 課 程 代 碼: 408047 題 目: 運動會比賽計分系統(tǒng) 開 題 時 間: 2014 年 6 月 8 日完 成 時 間: 2014 年 6 月 28 日第22頁目 錄摘 要1一、引 言2二、設計目的與任務2三、設計方案21、總體設計22、詳細設計23、程序清單34、程序調試與體會135、運行結果14四、結 論18五、致 謝19六、參考文獻20摘 要21世紀是一個信息發(fā)展化的時代,以后我們這個走入社會,也會要我們動手能力強,而不是理論基礎功好,又不會做事。所以我覺得學校開展課
2、程是很有必要的。不僅讓我學會了理論基礎,更沒有讓我們停留在理論上,而是實踐。對于這次課程設計。我們組采用了c+剛學的類以及文件和對象對計分系統(tǒng)進行操作。培養(yǎng)了我們團結能力,更好讓我們了解課程以外的知識。本程序是記錄運動會的成績,通過文件輸入輸出流把數據寫入文件,并通過文件輸入輸出流對文件進行數據的顯示、查詢、修改、刪除和排序。關鍵詞:c+、文件讀取、 運動會計分系統(tǒng)、數組、類;abstract twenty-first century is an information era, after our entering society, also have our hands-on abilit
3、y, rather than theoretical foundation work, and not to do. so i think it is necessary to carry out the school curriculum. not only let me learnthe theoretical basis, not to let us stay in theory, but in practice. for the curriculum design. our group used c+ just learning classes and files and object
4、 to operate the scoring system. the culture of our unity ability, better let us understand the curriculum knowledge outside.this program is a games record score, the input and output stream to write the file by file data and file input and output streams through the file data display, query, modify,
5、 delete and sort.keywords: c+; file read; movement of accounting system; class;c+程序設計課程設計-運動會比賽計分系統(tǒng)一、引 言c+作為面向對象的程序設計語言,已運用于很多領域的大型軟件系統(tǒng)的開發(fā)中,愈來愈多的軟件開發(fā)人員認可c+程序設計語言,老師為了讓我們更好的理解、鞏固與學好這門課程,將要求我們開發(fā)一個運動會比賽計分系統(tǒng)。二、設計目的與任務1設計目的此次課程設計旨在,幫助學生樹立程序開發(fā)思想,掌握根據實際問題構建程序模型的方法;學習處理開發(fā)的各個環(huán)節(jié),通過綜合運用所學知識,完成程序設計,最終培養(yǎng)學生分析問題、解
6、決問題的能力以及團隊合作精神,從而更好學習接下來的課程。2設計任務c+課程設計的任務是設計運動會比賽計分系統(tǒng),并產生一個信息菜單表。這里要求使用特有的類來進行編程,使用了動態(tài)數組,進行排序,實現用戶的登錄。運動員信息的添加、顯示、查詢、修改、刪除、排序以及文件的操作。并使用虛函數實現多態(tài)性,根據菜單實現運動員信息的操作。三、設計方案1、總體設計使用c+標準庫中的fstream來實現對文件的初始化,修改和刪除, 其中定義了一個xs_score類,它是一個全為公有成員的類,用來對運動員的數據從低到高進行排序。然后每一個程序功能都用一個獨立的函數的表示。體現了c+與 c語言的不同,更加直接明了的表示
7、了程序的功能。2、 詳細設計利用了主菜單對數據進行操作,void mainmenu()cout *歡迎使用運動會系統(tǒng)*endl;cout *本系統(tǒng)提供功能選項如下:*endl;cout * 1.數據添加。*endl;cout * 2.數據顯示。*endl;cout * 3.數據查詢。*endl;cout * 4.數據刪除。*endl;cout * 5.數據修改。*endl;cout * 6.數據排序。*endl;cout * 請按鍵選擇相應功能 *endl;還同時定義了一個xs-sorce類,類里面的paixu成員函數對成績進行排序。 2、函數分塊 tianjia() /運動員數據的初始化 d
8、isplay() /信息的顯示chaxun()/信息的查詢shanchu()/信息的刪除 xiugan()/信息的修改上面不要放到函數設計中,應改為類中數據成員。xs-sorce 中的成員函數paixu 是對運動員的信息進行排序tianjia 1操作 增加運動員信息此操作只將所要增加的運動員信息寫入內存,寫入文件之后還可以被另一個文件調用 shanchu chaxun xiugan 2 都是對文件進行反復的讀取 paixu 3 操作按運動員的成績從低到高排序; mainmeun 4.是一個菜單,用來對所有的數據進行顯示與操作。類的設計(設計原理、為什么要這樣設計?這樣設計有哪些優(yōu)點和缺點?如果
9、有足夠的時間,該如何改進?)是書寫課程設計的重點,也是你們要仔細考慮的問題。絕對不能像上機報告那樣,寫上程序清單就了事。3、程序清單1.菜單的實現void mainmenu()cout *歡迎使用運動會系統(tǒng)*endl;cout *本系統(tǒng)提供功能選項如下:*endl;cout * 1.數據添加。*endl;cout * 2.數據顯示。*endl;cout * 3.數據查詢。*endl;cout * 4.數據刪除。*endl;cout * 5.數據修改。*endl;cout * 6.數據排序。*endl;cout * 請按鍵選擇相應功能 *endl;2. 數據的添加void tianjia()/梁
10、乾int b;string mex,xxm,xm,name;float score; fstream outfile;outfile.open(e:stu.txt,ios:out|ios:trunc);while(1)cout請輸入學校編號:(1、中南大學,2、湖南大學,3、湖南師大,4、湖南農大,5、國防科大)b;switch(b)case 1:xxm=zhongnandaxue;break;case 2:xxm=hunandaxue;break;case 3:xxm=hunanshida;break;case 4:xxm=hunannongda;break;case 5:xxm=guofa
11、ngkeda;break;default:cout您的輸入有誤:endl;b=0;break;if(!b)break;cout請輸入選手性別:(1代表男,非1代表女)b;if(b=1)mex=nan;cout請輸入男子項目名稱:(1、鉛球,2、乒乓球,3、跳高)b;switch(b)case 1:xm=qianqiu;break;case 2:xm=pingpangqiu;break;case 3:xm=tiaogao;break;default :cout您的輸入有誤endl;b=0;break;elsemex=nv;cout請輸入女子項目名稱:(1、羽毛球,2、乒乓球,3、跳遠)b;swi
12、tch(b)case 1:xm=yumaoqiu;break;case 2:xm=pingpangqiu;break;case 3:xm=tiaoyuan;break;default :cout您的輸入有誤endl;b=0;break;if(!b)break;cout請輸入選手名字:name;cout請輸入選手成績:score;outfilexxm mex xm name scoreendl;cout您的數據已經成功錄入,如想繼續(xù)錄入,請按y/n:c;if(c=y|c=y) continue;else outfile.close();break;3. 數據的顯示/何雁城void display
13、()fstream infile;infile.open(e:stu.txt,ios:in);coutinfile.rdbuf();void chaxun()fstream infile;infile.open(e:stu.txt,ios:in);string xxm,mex,xm,name;int b;float score;string xxm1;cout請輸入您要查詢的學校編號:(1、中南大學,2、湖南大學,3、湖南師大,4、湖南農大,5、國防科大)b;switch(b)case 1:xxm1=zhongnandaxue;break;case 2:xxm1=hunandaxue;brea
14、k;case 3:xxm1=hunanshida;break;case 4:xxm1=hunannongda;break;case 5:xxm1=guofangkeda;break;default:cout您的輸入有誤:endl;b=0;break;if(!b)return ;cout學校名 性別 項目 性名 成績xxmmexxmnamescore;if(infile.eof()break ;if(xxm1=xxm)coutxxm mex xm name scoreendl;cout您還需要繼續(xù)查找嗎?請輸入y/n:c;if(c=y|c=y)chaxun();else return ;4.數據
15、的刪除/孫午林void shanchu() fstream infile,outfile; string mex,xxm,xm,name,name1; float score; infile.open(e:stu.txt,ios:out|ios:in); outfile.open(e:stu1.txt,ios:out|ios:trunc); cout請輸入您要刪除的姓名:name1; while(!infile.eof() infilexxmmexxmnamescore; if(infile.eof()break; if(name!=name1)outfilexxm mex xm name s
16、coreendl; infile.close(); infile.open(e:stu1.txt,ios:in); outfile.close(); outfile.open(e:stu.txt,ios:out|ios:trunc); outfileinfile.rdbuf(); outfile.close(); infile.close(); 5.數據的修改/張艷姣void xiugai()string xxm,mex,xm,name,xname,xxm1,mex1,xm1,name1;float score,score1;int b;fstream infile,outfile;infil
17、e.open(e:stu.txt,ios:in);outfile.open(e:stu1.txt,ios:out);cout請輸入您要修改數據的姓名:xname;while(!infile.eof()infilexxmmexxmnamescore;if(infile.eof() break;if(name!=xname)outfilexxmtmextxmtnametscoreendl;elsecout請您輸入修改后的數據:endl;cout請輸入學校編號:(1、中南大學,2、湖南大學,3、湖南師大,4、湖南農大,5、國防科大)b;switch(b)case 1:xxm1=zhongnandax
18、ue;break;case 2:xxm1=hunandaxue;break;case 3:xxm1=hunanshida;break;case 4:xxm1=hunannongda;break;case 5:xxm1=guofangkeda;break;default:cout您的輸入有誤:endl;b=0;break;if(!b)break;cout請輸入選手性別:(1代表男,非1代表女)b;if(b=1)mex=nan;cout請輸入男子項目名稱:(1、鉛球,2、乒乓球,3、跳高)b;switch(b)case 1:xm1=qianqiu;break;case 2:xm1=pingpang
19、qiu;break;case 3:xm1=tiaogao;break;default :cout您的輸入有誤endl;b=0;break;elsemex=nv;cout請輸入女子項目名稱:(1、羽毛球,2、乒乓球,3、跳遠)b;switch(b)case 1:xm1=yumaoqiu;break;case 2:xm1=pingpangqiu;break;case 3:xm1=tiaoyuan;break;default :cout您的輸入有誤endl;b=0;break;if(!b)break;cout請輸入選手名字:name1;cout請輸入選手成績:score1;outfilexxm1tm
20、ex1txm1tname1tscore1endl;infile.close(); infile.open(e:stu1.txt,ios:in); outfile.close(); outfile.open(e:stu.txt,ios:out|ios:trunc); outfileinfile.rdbuf(); outfile.close(); infile.close();6. 數據的排序/李仁華class xs_scorestring xxm,mex,xm,name;float score;public:xs_score()xs_score(string a,string b,string
21、c,string d,float t)xxm=a;mex=b;xm=c;name=d;score=t;friend void paixu();void paixu()fstream infile,outfile;infile.open(e:stu.txt,ios:in);string xxm,mex,xm,name;float score;xs_score a100,t; int i=0;cout請輸入排序的性別:(1男,非1女)b;string xm1;if(b=1)cout請輸入男要排序的項目:(1、鉛球,2、乒乓球,3、跳高)c;switch(c)case 1:xm1=qianqiu;b
22、reak;case 2:xm1=pingpangqiu;break;case 3:xm1=tiaogao;break;default :cout您的輸入有誤endl;c=0;break;elsecout請輸入女排序的項目:(1、羽毛球,2、乒乓球,3、跳遠)c;switch(c)case 1:xm1=yumaoqiu;break;case 2:xm1=pingpangqiu;break;case 3:xm1=tiaoyuan;break;default :cout您的輸入有誤xxmmexxmnamescore;if(infile.eof()break;if(mex=nan&xm=xm1)ai+
23、=xs_score(xxm,mex,xm,name,score);elseinfilexxmmexxmnamescore;if(infile.eof()break;if(mex=nv&xm=xm1)ai+=xs_score(xxm,mex,xm,name,score);for(int j=0;ji;j+) int min=j; for(int k=min+1;kak.score) t=amin; amin=ak; ak=t; for(int h=0;hi;h+)tah.scoreendl; infile.close();7. 用戶登
24、陸int dengru()fstream infile;infile.open(e:login.txt,ios:in);string username,userpsd,fusername,fuserpsd;cout請輸入用戶名:username; cout請輸入密碼:userpsd;while(!infile.eof()infilefusernamefuserpsd;if(fusername=username & fuserpsd=userpsd)return 1;if(infile.eof() return 0;else return 0; 8. 主函數int main()int t;cou
25、t請輸入帳號密碼登入運動會系統(tǒng)n; if(n7) cout您的輸入有誤,請重新輸入!n; else switch (n) case 1: tianjia();break; case 2: display();break; case 3: chaxun();break; case 4: shanchu();break; case 5: xiugai();break; case 6: paixu();break; cout如果要繼續(xù)本系統(tǒng)的其它操作,必須返回主菜單。您要返回主菜單(y/n)?c; if(c=y | c=y) system(cls);mainmenu(); else break; r
26、eturn 0;4、程序調試與體會代碼編寫過程中遇到兩個問題:(1) 存儲問題本打算在定義info 類時,將其中的字符串變量全定義成 string 類型的,出于string 類中定義了很多的實現方法,好用。 不過在寫完代碼進行測試的時候,發(fā)現不管在文件讀出還是寫入都只是一個很大的數值如2.26961e-307 這樣的數; 一開始并沒有想到是string 這類型使用的問題,而是以為是文件讀出寫寫入的問題, 但是經過進一步的測試才發(fā)現是 employeeinfo 中string 類型過多,造成存儲上的錯誤,所以才會出現上敘錯誤,后面將string 改成 char 數組 的就可以實現存儲了。(2)文
27、件讀取問題文件讀出時,文件尾的判斷問題。一開始我們使用 while(!outfile.eof() 來實現讀文件到它結束,但是老會出現顯示記錄與真正記錄不符合的情況。后面經過網上查資料才發(fā)現,在c+中它的判斷文件結束會在最后一個字符處判斷兩次;出于這個問題我改變了文件讀出的方式,采用類似的方法只是寫讀取,然后再來判斷 來讀完文件的策略(此想法來由acm網上提交的經驗),得到了現在代碼中的實現方法。5、運行結果運行并測試程序:(1) 首先登錄。界面如圖3-5-1圖3-5-1 程序界面2、運動員信息添加程序,如圖 3-5-2圖3-5-2 數據初始化信息3、顯示運動員信息,如圖3-5-3圖3-5-3顯
28、示運動員信息4、查詢運動員信息,如圖3-5-4圖3-5-4 查詢運動員信息5、刪除運動員信息,如圖3-5-5圖3-5-5 刪除運動員的信息6、修改運動員信息,如圖3-5-6圖3-5-6 修改運動員信息7. 數據按排序3-5-7圖3-5-7數據的修改8、測試未定義的操作,如圖3-5-8圖3-5-8 錯誤輸入提示注意上面的文檔結構層次。四、結 論 此次我組主要采用了我們剛剛學習的類,文件與對象,在進行函數分塊。在面象對象的程序設計中,將實現世界中事物的本質抽象為對象,每個對象都具有屬性和方法兩方面的特征。其中對象的屬性描述了對象的狀態(tài)也就是靜態(tài)特征:對象的方法則說明了,對象的行為也就是動態(tài)特征,這兩個方面的結合構成了對象的完整描述。 我們所用的類是具有相似屬性和行為的一組對象集合在一起,類的概念可以地具有共同特征的事物進行統(tǒng)一描述,類可以對私有成員,函數的應用。 這次我們運用了文件流的輸入輸出。來對數據的初始化,和數據查詢、修
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學五年級小數乘除法計算題匯編
- 科創(chuàng)板開通知識測試參考答案
- 語文試卷 天津市濱海新區(qū)五所重點中學高三畢業(yè)班聯(lián)考語文試卷
- 保險行業(yè)助理的工作總結和技能要求
- 骨骼疾病護理工作總結
- 家具家居行業(yè)技術嘗試改造
- 生物醫(yī)藥行業(yè)技術工作總結
- 紙制品行業(yè)業(yè)務員工作總結
- 游戲界面設計師的交互體驗和游戲設計
- 《機械防煙方式》課件
- 施工員崗位述職報告
- 第47屆江蘇省選拔賽化學實驗室技術項目技術文件
- 2024年精美《婚姻法》課件模板:法律教育的新趨勢
- 項目管理年終總結匯報
- 夫妻共同房產變更為一方單獨所有協(xié)議書(2篇)
- 第六單元《多邊形的面積》 單元測試(含答案)2024-2025學年人教版五年級數學上冊
- 光伏電站安裝與調試教學培訓課件:太陽能光伏發(fā)電系統(tǒng)概論
- 工程倫理(2024東莞理工)學習通超星期末考試答案章節(jié)答案2024年
- 平安在線測評 iq 30題 答案
- 2024工程材料合同交底(填報要求)
- 體育場館運營管理與服務標準規(guī)范
評論
0/150
提交評論