北郵-足球俱樂部管理系統(tǒng)new_第1頁
北郵-足球俱樂部管理系統(tǒng)new_第2頁
北郵-足球俱樂部管理系統(tǒng)new_第3頁
北郵-足球俱樂部管理系統(tǒng)new_第4頁
北郵-足球俱樂部管理系統(tǒng)new_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

北京郵電大學課程設計報告課程設計名稱面向對象程序設計與實踐2學院計算機學院指導教師雙鍇學生姓名班級學號課程設計內容本次課程設計是面向對象程序設計與實踐(C++)2,主要完成足球俱樂部管理程序,從試用版到專業(yè)版到最后完成企業(yè)版。這次課程設計是在上學期基礎上進行的提高,通過個人編寫程序代碼來完成本次課程設計。學生課程設計報告見程序代碼。課程設計成績評定遵照實踐教學大綱并根據(jù)以下四方面綜合評定成績:1、課程設計目的任務明確,選題符合教學要求,份量及難易程度2、團隊分工是否恰當與合理3、綜合運用所學知識,提高分析問題、解決問題及實踐動手能力的效果4、是否認真、獨立完成屬于自己的課程設計內容,課程設計報告是否思路清晰、文字通順、書寫規(guī)范評語:成績:指導教師簽名:年月日 面向對象程序設計與實踐(C++)2足球俱樂部管理程序程序說明書班級:姓名:Oneseven學號:題目一:足球俱樂部管理程序(試用版)題目描述以及要求描述:足球俱樂部包括球員、普通行政人員。球員有姓名、年齡、能力、年薪、轉會費、進球總數(shù)、服役年限等重要參數(shù);普通行政人員有姓名、年齡、能力、年薪等參數(shù)。你需要給相關管理機構開發(fā)一個管理程序,實現(xiàn)對眾多足球俱樂部管理的基本功能。具體功能包括:俱樂部的增刪改查,俱樂部的屬性包括名稱、現(xiàn)金、其下人員;可以對所有球員的各項屬性進行簡單搜索,支持輸入多個條件,條件之間用&&連接,例如:“年齡不大于25且服役年限大于5年且進球數(shù)大于100的球員”,查詢表達式:!(@age>25)&&@experience>5&&@kick>100支持球員在不同俱樂部間的買賣,買賣需符合以下條件:作為買方的俱樂部的現(xiàn)金>=球員的轉會費,交易完成后,賣方將得到轉會費。要求:必須采用面向對象的方式,使用類組織數(shù)據(jù)結構,并注意類的繼承關系;在題目要求基礎上可以自行擴展功能,提供擴實用擴展功能者適當加分(加分不超過5分)。各功能實現(xiàn)模塊題目一要求的功能有類的定義,俱樂部和球員的增刪改查,球員條件搜索,球員買賣先將各功能實現(xiàn)細明敘述如下。俱樂部和所屬人員的增刪改查功能2.1.1實現(xiàn)截圖 2.1.2實現(xiàn)思路定義了三個類,一個普通行政人員類,一個球員類繼承普通行政人員類的所有信息,然后又派生出其他信息,比如轉會費,進球數(shù),服務年限這些普通行政人員沒有的信息。還有一個俱樂部類,它里面包含了一個行政人員和球員類的鏈表。在主程序里定義了一個俱樂部的類,放著許多不同的俱樂部,這樣就可以比較方便的增刪改查,都是用的鏈表。比如:Club的headPtr,nextPtr等等。球員和行政人員的增速改查也都是在俱樂部的里面完成。使俱樂部類club繼承球員和行政人員的類,調用其增刪改查函數(shù)來完成所需要的功能。2.1.3主要代碼見源程序classStaff{public:charname[30];//名字intage;//年齡intability;//能力intsalary;//年薪intstaff_num;//行政人員人數(shù)Staff*nextPtr,*newPtr,*headPtr,*currentPtr,*previousPtr;Staff();//構造函數(shù)voidstaff_add();//添加行政人員voidstaff_delete();//刪除行政人員voidstaff_modify();//修改行政人員voidstaff_search();//查找行政人員voidstaff_operate();//行政人員操作};classPlayer:publicStaff{public:intfee;//轉會費intkick;//進球數(shù)intexperience;//服役年限intplayer_num;//球員人數(shù)Player*nextPtr,*newPtr,*headPtr,*currentPtr,*previousPtr;Player();//構造函數(shù)voidplayer_add(Player*);//添加球員voidplayer_delete();//刪除球員voidplayer_modify();//修改球員voidplayer_search();//查找球員voidplayer_operate();//球員操作};classClub:publicPlayer{private:intclub_num;//俱樂部個數(shù)intcash;//俱樂部資金Club*nextPtr,*newPtr,*headPtr,*currentPtr,*previousPtr;public:Club();//構造函數(shù)voidclub_add();//添加俱樂部voidclub_delete();//刪除俱樂部voidclub_search();//查找俱樂部voidclub_deal();//處理俱樂部voidclub_operate();//俱樂部操作voidclub_exchange();//交易球員voidclub_playersearch();//條件搜索球員voidclub_print(Club*);//打印俱樂部內部信息};球員條件搜索功能2.2.1實現(xiàn)截圖2.2.2實現(xiàn)思路先讀取輸入的條件字符串,然后進行分析,程序里面定義了三個數(shù)組分別是,在分析字符串的時候還用到了字符串的連接即:s1=s1+s2(把s2所指向的字符串接的s1的尾部),遇到一個@就把數(shù)組下標加1,分別是stringst[20];charop[20]={0};intnum[20]={0};st存字母信息,如:age,kick等,op存操作符(>,<,=),num存數(shù)字。在搜索的時候先遍歷俱樂部球員信息,對每一個球員,用統(tǒng)一的下標取三個數(shù)組里面對應的元素,然后通過一個計算函數(shù)value()一個下標計算一次,如果球員符合條件,得到結果1,如果球員不符合條件得到結果0,最后再將所有下標得到的結果取與,如果取與后的結果為1,就表明這個球員符合條件,將其信息輸出,如果結果為0,表明這個球員不符合條件,繼續(xù)比較下一個球員,如果所有俱樂部的所有球員都不符合條件,就輸出"沒有符合條件的球員",還有一個小判斷,就是如果輸入的表達式不是age,kick之類的,而是其他的,程序就會提示"您輸入的條件有誤,請重新輸入."。2.2.3代碼見源程序球員買賣功能2.3.1實現(xiàn)截圖2.3.2實現(xiàn)思路球員買賣呢是在兩個俱樂部之間,所以在買賣之前需要判斷當前有多少個俱樂部,如果不足兩個,就無法進行買賣,如果等于或多于兩個,就可以正常買賣,系統(tǒng)會提示輸入你想買賣的俱樂部,然后遍歷要買的俱樂部,將要買球員的俱樂部現(xiàn)金和將要買的球員的轉會費作比較,如果現(xiàn)金大于等于轉會費就買賣成功,將這個球員信息從賣球員的俱樂部里面刪除,再將其添加到買的俱樂部里,這些都是用的club類里面的成員函數(shù)。如果現(xiàn)金小于轉會費就會提示球員轉會費太高,買不了球員。2.3.3代碼見源程序題目二:足球俱樂部管理程序(專業(yè)版)1題目描述以及要求描述:在題目一的程序基礎上,增加文件存儲和高級搜索功能。文件存取功能:程序啟動后自行從自定義的文件中讀取所有俱樂部記錄,并且各種增刪改查操作后能夠自動保存更新后的數(shù)據(jù)。高級搜索功能:可以對所有球員的各項屬性進行條件搜索,搜索采用表達式輸入的方式(表達式支持&&、||、!、括號、<、=、>),并能實現(xiàn)對球員姓名的模糊查找(運算符為~),輸出球員的詳細信息。例如:“年齡不大于25且服役年限大于5年,或者進球數(shù)大于100的球員”,查詢表達式:(!(@age>25)&&@experience>5)||@kick>100“屬于俱樂部A、B的所有球員”,查詢表達式:@club=A||@club=B“名字中含有abc的所有球員”,查詢表達式:@name~abc要求:必須在題目一的代碼基礎上來修改;必須支持文件讀寫時的異常處理;文件格式采用文本文件,文件格式需自行設計;文件名可以由程序內部自行指定,不需要用戶手動設置;其他要求與題目一相同;在題目要求基礎上可以自行擴展功能,提供擴實用擴展功能者適當加分(加分不超過5分)。2.各功能實現(xiàn)模塊題目二要求的功能有球員條件高級搜索,文件輸入輸出先將各功能實現(xiàn)細明敘述如下。2.1文件輸入輸出功能2.1.1實現(xiàn)截圖2.1.2實現(xiàn)思路主要用到了#include<fstream>里面的庫函數(shù),然后自己寫了兩個子函數(shù),分別是讀club_fin()和寫club_fout(),讀是從文件里面讀取所有俱樂部的信息返回到一個俱樂部的指針里,寫是將一個俱樂部鏈表的所有信息寫到文件中。讀和寫都是一行一行進行,將俱樂部的個數(shù)及其下行政人員,球員的所有信息,按照初始化時的輸入順序依次寫入文件,而且每一條信息都占一行(這樣比較方便),然后為了實現(xiàn)增刪改完以后文件里面的信息也改了,只要在所有這些操作的最后再加club_fout()的調用,就可以把改變后的信息寫入文件里。2.1.3主要代碼見源程序voidClub::club_fout()//輸入到文件{Player*nowPtr;Staff*nowPtr2;ofstreamoutf("club.txt");outf<<"俱樂部的個數(shù):"<<club_num<<endl; for(currentPtr=headPtr;currentPtr!=NULL;currentPtr=currentPtr->nextPtr) {outf<<"俱樂部:"<<currentPtr->name<<endl;outf<<"現(xiàn)有資金:"<<currentPtr->cash<<endl;nowPtr=currentPtr->Player::headPtr;nowPtr2=currentPtr->Staff::headPtr;if(nowPtr==NULL)outf<<"此俱樂部無球員。"<<endl;else{outf<<"俱樂部現(xiàn)有球員人數(shù):"<<currentPtr->player_num<<endl;outf<<"name\tage\tabliity\tsalary\tfee\tkick\texperience"<<endl; for(;nowPtr!=NULL;nowPtr=nowPtr->nextPtr) {outf<<nowPtr->name<<"\t"<<nowPtr->age<<"\t"<<nowPtr->ability<<"\t"<<nowPtr->salary;outf<<"\t"<<nowPtr->fee<<"\t"<<nowPtr->kick<<"\t"<<nowPtr->experience<<endl; }}if(nowPtr2==NULL)outf<<"此俱樂部無行政人員。"<<endl;else{outf<<"俱樂部現(xiàn)有行政人員人數(shù):"<<currentPtr->staff_num<<endl;outf<<"name\tage\tabliity\tsalary"<<endl; for(;nowPtr2!=NULL;nowPtr2=nowPtr2->nextPtr)outf<<nowPtr2->name<<"\t"<<nowPtr2->age<<"\t"<<nowPtr2->ability<<"\t"<<nowPtr2->salary<<endl;}}outf.close(); }2.2高級搜索功能2.2.1實現(xiàn)截圖2.2.2實現(xiàn)思路在第一版的基礎上對條件搜索進行了增加功能,使條件搜索變得高級,能實現(xiàn)對球員姓名的模糊查找,以及對球員所在俱樂部的條件限定。通過與上一版的方法的改進,實現(xiàn)了要求。2.2.3代碼見源程序題目三:足球俱樂部管理程序(企業(yè)版)1題目描述以及要求描述:在題目二的程序基礎上,增加遠程訪問功能,采用客戶端/服務器的方式,實現(xiàn)兩種遠程操作高級搜索,在客戶端上執(zhí)行搜索,其搜索范圍除了本地數(shù)據(jù)以外,也應該返回服務端的搜索結果;球員買賣,客戶端可以發(fā)起向服務端買入球員的請求,如果符合買賣條件,交易成功,該球員從服務端刪除,進入客戶端選定的俱樂部。要求:必須在題目二的代碼基礎上來修改;必須使用Socket作為遠程通信技術,可以使用更高層次的Socket封裝類;其他要求與題目二相同;在題目要求基礎上可以自行擴展功能,提供擴實用擴展功能者適當加分(加分不超過5分)。2.各功能實現(xiàn)模塊題目三要求的功能有遠程操作功能實現(xiàn)細明敘述如下。2.1遠程操作功能2.2.1實現(xiàn)截圖(1)客戶端(2)服務端2.2.2實現(xiàn)思路遠程操作主要是在前面程序的基礎上運用一些模板,添加新的東西,使用socket實現(xiàn)客戶端和服務端的信息傳遞,主要還是傳遞問題,而因為傳遞時候只能傳字符型的信息,所以在傳信息之前必須將信息用強制類型轉化方式轉成char型,才能進行傳遞,所有信息都用一個char數(shù)組接收,所以每接受一個數(shù)據(jù)就得初始化。當客戶端想買球員的時候會發(fā)一個特定的數(shù)到服務端,服務端接收的信息,判斷以后發(fā)現(xiàn)是要買球員,客戶端同時會詢問想要買球員的俱樂部,選擇以后,就將俱樂部的現(xiàn)金再傳給服務端,服務端會將所有俱樂部的所有球員的信息列出,供人參考,然后你選擇你想買的球員,判斷符合買賣條件,則買賣成功,將這個球員的信息一一傳遞到客戶端,客戶端接受以后再添加到相應的俱樂部里,同時服務端球員所屬的俱樂部將該球員信息刪除,同時服務端賣球員的俱樂部的現(xiàn)金增加,客戶端買球員的俱樂部現(xiàn)金減少,最后把更改后的信息寫入文件里。這樣就實現(xiàn)了遠程訪問功能。2.1.3主要代碼見源程序intmain(){WSADATAwsaData;WSAStartup(MAKEWORD(2,2),&wsaData);SOCKETclientSocket=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_INclientsock_in; clientsock_in.sin_family=AF_INET; clientsock_in.sin_port=htons(6000);clientsock_in.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");connect(clientSocket,(SOCKADDR*)&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論