




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
足球俱樂部管理系統(tǒng)第一版本(試用版)開發(fā)環(huán)境VisualStudio2015二.實(shí)驗(yàn)描述給相關(guān)管理機(jī)構(gòu)開發(fā)一個(gè)足球俱樂部的管理程序,實(shí)現(xiàn)對眾多足球俱樂部管理的基本功能,包括:俱樂部的增刪改查,其中俱樂部的屬性包括:俱樂部的名稱,現(xiàn)金,其下的球員和普通行政人員。實(shí)現(xiàn)對所有球員的各項(xiàng)屬性(包括姓名、年齡、能力、年薪、轉(zhuǎn)會(huì)費(fèi)、進(jìn)球總數(shù)、服役年限)的簡單搜索,支持輸入多個(gè)條件,條件之間用&&連接,如“年齡不大于25且服役年限大于5年的球員”的查詢表達(dá)式為!(@age>25)&&@experience>5支持球員在不同俱樂部間的買賣,買賣條件為:買方俱樂部的現(xiàn)金>=球員的轉(zhuǎn)會(huì)費(fèi)。交易完成后,賣方得到其轉(zhuǎn)會(huì)費(fèi)。三.?dāng)?shù)據(jù)結(jié)構(gòu)把員工也看作一個(gè)對象,記作名為staff類,這個(gè)類的屬性有姓名、年齡、能力,年薪,把球員看作一個(gè)對象,記作名為player類,這個(gè)類的屬性有:姓名、年齡、能力、年薪、轉(zhuǎn)會(huì)費(fèi)、進(jìn)球總數(shù)和服役年限,則球員和員工都具有姓名、年齡、能力,工作俱樂部這些共同屬性,因此將球員看作是員工類的一個(gè)派生。把俱樂部看作一個(gè)對象,記為club類,俱樂部的屬性有:俱樂部的名稱,現(xiàn)金,其下球員和員工。將管理機(jī)構(gòu)看作一個(gè)對象,記為League的一個(gè)類,則League的屬性有:所有俱樂部。四.具體功能實(shí)現(xiàn)球員和員工信息的查找和修改由于球員和員工的屬性都是私有成員,只能通過類的成員函數(shù)來訪問和修改。這兩個(gè)類的成員函數(shù)及其方法如下:Staff類:classStaff{//staff類private: stringname;//姓名 intage; //年齡 intability;//能力 intsalary;//年薪public: Staff(conststring&Name="None",intAge=0,intAbi=0,intSal=0); ~Staff(){}; virtualvoidShow()const;//虛函數(shù),打印職員信息 stringGetName(){returnname;} intGetAge(){returnage;} intGetAbility(){returnability;} intGetSalary(){returnsalary;}//得到私有成員的值 voidResetStaff(string&new_name,intnew_age,intnew_abi,intnew_sal);//重置一個(gè)staff voidResetName(string&Name){name=Name;} voidResetAge(intnew_age){age=new_age;} voidResetAbillity(intnew_abi){ability=new_abi;} voidResetSalary(intnew_sal){salary=new_sal;}//修改單項(xiàng)值};Player類:classPlayer:publicStaff{//球員類,公有繼承staff類public: intfee;//轉(zhuǎn)會(huì)費(fèi) intgoals;//進(jìn)球數(shù) intyear;//服役年限public: Player(conststring&Name="None",intAge=0,intAbi=0,intSal=0, intFee=0,intGoals=0,intYear=0); Player(constStaff&sta,intFee=0,intGoals=0,intYear=0);//構(gòu)造函數(shù) ~Player(){}; intGetFee(){returnfee;} intGetGoals(){returngoals;} intGetYear(){returnyear;}//得到私有成員的值 virtualvoidShow()const;//打印球員信息 voidResetPlayer(string&Name,intAge,intAbi,intSal,intFee,intGoals,intYear);//改寫一個(gè)player voidResetFee(intFEE){fee=FEE;} voidResetGoals(intGOALS){goals=GOALS;} voidResetYear(intYEAR){year=YEAR;}//修改單值};說明:在C++中,在類的內(nèi)部定義了函數(shù)體的函數(shù)都會(huì)被默認(rèn)為內(nèi)聯(lián)函數(shù),可省略了關(guān)鍵字incline。由于員工和球員的信息不完全相同,在staff類中定義了一個(gè)虛函數(shù)virtualvoidShow()const;用于打印員工的信息。在player類中有一個(gè)同名函數(shù)virtualvoidShow()const;在調(diào)用的時(shí)候會(huì)自動(dòng)覆蓋基類的Show()函數(shù),從而實(shí)現(xiàn)多態(tài),打印出球員的信息。俱樂部的增刪改查俱樂部中的球員和行政人員用vector容器來存儲(chǔ),其類的聲明和成員函數(shù)如下:classClub{//俱樂部類private: vector<Staff>staffs;//職員 vector<Player>players;//球員 intcash;//現(xiàn)金 stringclubName;//俱樂部名public: Club(constStaffst,constPlayerpl,conststring&Name="None",intCash=0); Club(constStaffst,conststring&Name="None",intCash=0); Club(constPlayerpl,conststring&Name="None",intCash=0); Club(conststring&Name="None",intCash=0){clubName=Name;cash=Cash;}//構(gòu)造函數(shù) stringGetClubName(){returnclubName;} intGetClubCash(){returncash;}//得到私有成員的值 virtualvoidShow();//打印俱樂部信息 voidResetClubName(conststring&Name){clubName=Name;} voidResetCash(constintCASH){cash=CASH;}//修改信息 voidAddPlayer(); voidAddPlayer1(vector<Player>::iteratorpl){players.push_back((*pl));}//增加球員 voidAddStaff(); voidAddStaff1(vector<Staff>::iteratorst){staffs.push_back((*st));}//增加職員 voidDeletePlayer(stringname);//刪除球員 voidDeleteStaff(stringname);//刪除職員 PlayerSearchPlayer(stringname);//查找球員,返回一個(gè)球員 StaffSearchStaff(stringname);//查找職員,返回一個(gè)職員 voidRevisePlayer(stringname);//修改球員 voidReviseStaff(stringname);//修改普通職員 vector<Player>::iteratorGetPlaSta(){returnplayers.begin();} vector<Player>::iteratorGetPlaEnd(){returnplayers.end();}//得到player的頭和超尾 vector<Staff>::iteratorGetStaSta(){returnstaffs.begin();} vector<Staff>::iteratorGetStaEnd(){returnstaffs.end();}//得到staff的頭和超尾};管理機(jī)構(gòu)的具體功能對于所有俱樂部的管理,定義了一個(gè)League類,私有成員為所有的俱樂部,其聲明如下:classLeague{//聯(lián)盟類,實(shí)現(xiàn)對所有俱樂部的管理private: vector<Club>clubs;public: vector<Club>::iteratorSearClub(stringname);//搜索俱樂部 voidAddClub(stringname);//添加俱樂部 voidDeleteClub(stringname);//刪除俱樂部 voidReviseClub(stringname);//修改俱樂部 vector<Player>::iteratorSearchPlayer1(stringname); voidSearchPlayer2();//搜索球員 voidChosePlayer(vector<Player>&w,intnum,charop,inttype,vector<int>&yes);//搜索球員的輔助函數(shù) voidSearchStaff(stringname);//搜索球員和職員 voidTransferPlayer(stringname,stringclub1,stringclub2);//球員轉(zhuǎn)會(huì) voidRevisePlayers(stringname);//修改隊(duì)員信息 voidReviseStaffs(stringname);//修改職員信息 voidAddPlayers(stringclub);//添加隊(duì)員 voidAddStaffs(stringclub);//添加職員 voidDeletePlayers(stringname);//刪除隊(duì)員 voidDeleteStaffs(stringname);//刪除職員 virtualvoidShow();//打印聯(lián)盟信息,包括所有的俱樂部及俱樂部的所有信息 vector<Club>::iteratorGetClubSta(){returnclubs.begin();} vector<Club>::iteratorGetClubEnd(){returnclubs.end();}//得到俱樂部的頭尾 };五.試用版操作說明根據(jù)菜單選項(xiàng)輸入對應(yīng)功能的代碼,然后進(jìn)去相應(yīng)的功能,姓名為字符串string,其余各屬性值為int型,輸入各值時(shí),不要多輸入數(shù)字。使用版功能比較簡單,對于按條件搜索球員,不允許出現(xiàn)大非號,即&&符必須在括號外,所有的條件都是與操作。第二版本(專業(yè)版) 一.實(shí)驗(yàn)描述在第一版本的基礎(chǔ),增加了文件存儲(chǔ)和高級搜索的功能:文件存取功能:程序啟動(dòng)的時(shí)候會(huì)自動(dòng)從League.txt文件中讀取所有的俱樂部信息(其中包括所有的球員和員工信息),在對俱樂部信息進(jìn)行更改后會(huì)自動(dòng)更新文件存儲(chǔ)的信息。 高級搜索功能:在對球員的各項(xiàng)屬性進(jìn)行條件搜索的時(shí)候,增加了以下幾種搜索方式(表達(dá)式支持&&、||、!、括號、<、=、>):支持球員信息的“||”查找,例如:“年齡不大于25且服役年限大于5年,或者進(jìn)球數(shù)大于100的球員”,其查詢表達(dá)式為:(!(@age>25)&&@experience>5)||@kick>100可以通過球員所在俱樂部進(jìn)行查找,例如:“屬于俱樂部A、B的所有球員”,其查詢表達(dá)式:@club=A||@club=B可以對球員的姓名進(jìn)行模糊查找,例如:“名字中含有abc的所有球員”,查詢表達(dá)式:@name~abc二.改進(jìn)功能的實(shí)現(xiàn)1.文件存取功能文件格式先存俱樂部名稱,然后是俱樂部現(xiàn)金,然后下一行依次存球員名,年齡,能力值,年薪,轉(zhuǎn)會(huì)費(fèi),進(jìn)球數(shù)和年限,然后是職員信息,球員信息和職員信息用#號隔開,依次代表職員名,年齡,能力值,年薪,每個(gè)俱樂部之間的信息也用#隔開,文件末尾不要留空行。文件的讀取在League類中增加方法,voidReadFile();按照上述文件格式讀取到內(nèi)存中,每次程序運(yùn)行開始時(shí)先將文件中的數(shù)據(jù)讀取到內(nèi)存中。文件的更新在League類中增加方法,voidWriteFile(),按照文件格式,在程序運(yùn)行結(jié)束時(shí)將數(shù)據(jù)寫入文件中。2.高級搜索功能新增加一個(gè)search類,類的聲明如下:#pragmaonce#include"soccerClub.h"classSearch{private: charstr[1000];//搜索條件 charch;//單個(gè)字符 charname[20],club_name[20];//球員名和俱樂部名 intage,ability,salary,fee,kick,year;//單個(gè)球員的各個(gè)屬性 intlable;//標(biāo)記符 intstack1[1000],stack2[1000];//輔助棧 inttop1,top2;//棧頂指針 intread;//讀取str時(shí)的下標(biāo)public: Search(intapp=0);//構(gòu)造函數(shù) ~Search(){}; voidplayer_search(vector<Club>clubs);//搜索球員函數(shù) intDeOneCond();//判斷球員是否符合搜索語句中的其中的一個(gè)單個(gè)條件 voidGetSearType(intx);//判斷相鄰搜索條件的類型,與或非 intGetOpPri(charch);//得到操作符的優(yōu)先級 intDeCond();//判斷一個(gè)球員是否符合}; 搜索算法,是從所有的球員中挑出一個(gè)球員和輸入的條件做對比,若符合條件,則返回值1,否則,返回值0。用一個(gè)字符數(shù)組存儲(chǔ)條件表達(dá)式的信息,設(shè)置兩個(gè)輔助棧,其中一個(gè)輔助棧用來存儲(chǔ)一個(gè)球員與條件做對比的結(jié)果,另一個(gè)輔助棧用來存放操作符||,&&,(,)和操作符操作類型。遇到@處理一條信息,遇到(入棧,遇到),判斷棧頂是否為(,若不是,則按照棧中的操作符類型,對第一個(gè)輔助棧的結(jié)果做運(yùn)算,遇到|,&或者!,判斷操作符的優(yōu)先級,然后入棧。例如輸入條件!(@age>20)&&@kick>80,有非號,先見非號入棧1,令非號為1入棧,然后讀?。ǎ藭r(shí)入操作符棧2,將0入棧,讀到@,處理age>20,若球員年齡大于20,則為真,將其入棧1,即棧1為:11,棧2為:0,此時(shí)讀到),判斷棧2的棧頂,此時(shí)為),則將棧2的棧頂出棧,棧2為空,讀到&,入棧2,令&為3,然后讀到kick,若球員進(jìn)球數(shù)大于80則將1入棧1,即棧1為:111,此時(shí)字符串讀取完,棧2:3,則將棧1做運(yùn)算,棧頂和其下兩個(gè)1做與運(yùn)算為1,與最后一個(gè)1做異或即為0,此時(shí)返回結(jié)果為0,該球員不符合條件,詳細(xì)算法見代碼。三操作說明操作與使用版相同,此版本對一些錯(cuò)誤輸入沒有一定的處理,搜索球員的條件要以#號結(jié)尾。第三版本(企業(yè)版)一.實(shí)驗(yàn)描述在題目二的程序基礎(chǔ)上,增加遠(yuǎn)程訪問功能,采用客戶端/服務(wù)器的方式,實(shí)現(xiàn)兩種遠(yuǎn)程操作 高級搜索,在客戶端上執(zhí)行搜索,其搜索范圍除了本地?cái)?shù)據(jù)以外,也應(yīng)該返回服務(wù)端的搜索結(jié)果(這里假設(shè)服務(wù)端、客戶端擁有不同的俱樂部); 球員買賣,客戶端可以發(fā)起向服務(wù)端買入球員的請求,如果符合買賣條件,交易成功,該球員從服務(wù)端刪除,進(jìn)入客戶端選定的俱樂部。二.Socket說明socket通常也稱作"套接字",用于描述IP地址和端口,是一個(gè)通信鏈的句柄。被用于解決不同主機(jī)的進(jìn)程間通訊問題。后在網(wǎng)絡(luò)軟件中被廣泛應(yīng)用于TCP/IP網(wǎng)絡(luò),成為開發(fā)網(wǎng)絡(luò)應(yīng)用軟件的強(qiáng)有力工具。在網(wǎng)絡(luò)連接中,連接雙方兩個(gè)端點(diǎn)所組成的五元組(即通訊協(xié)議、本地IP、本地PORT、遠(yuǎn)程IP和遠(yuǎn)程PORT)稱為socketpair,該五元組唯一的標(biāo)識(shí)了一個(gè)網(wǎng)絡(luò)連接。通信的兩個(gè)進(jìn)程間相互作用的主要模式是客戶/服務(wù)器模式(Client/Servermodel),即客戶向服務(wù)器發(fā)出服務(wù)請求,服務(wù)器接收到請求后,提供相應(yīng)的服務(wù)。 1.服務(wù)端的操作過程為:1.創(chuàng)建套接字(socket)。
2.將套接字綁定到一個(gè)本地地址和端口上(bind)。
3.將套接字設(shè)為監(jiān)聽模式,準(zhǔn)備接受客戶請求(listen)。
4.等待客戶請求到來;當(dāng)請求到來后,接受連接請求,返回一個(gè)新對應(yīng)于此次連接的套接字(accept)。
5.用返回的套接字和客戶端進(jìn)行通訊(send/recv)。
6.返回等待另一客戶請求。
7.關(guān)閉套接字。2.客戶端的操作過程為:1.創(chuàng)建套接字(socket)。
2.向服務(wù)器發(fā)出連接請求(connect)。
3.和服務(wù)器端進(jìn)行通訊(send/recv)。
4.關(guān)閉套接字。三.具體實(shí)現(xiàn) 按照socket客戶端和服務(wù)端的操作過程編寫代碼。 對于高級搜索功能,首先客戶端先從鍵盤接收到搜索條件,然后在本地進(jìn)行搜索,然后將
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國物業(yè)管理信息系統(tǒng)數(shù)據(jù)監(jiān)測研究報(bào)告
- 白水泥行業(yè)的產(chǎn)品設(shè)計(jì)國際化趨勢
- 科技企業(yè)如何應(yīng)對復(fù)雜的知識(shí)產(chǎn)權(quán)環(huán)境
- 科技引領(lǐng)未來移動(dòng)支付在商業(yè)地產(chǎn)的應(yīng)用研究
- 科技助力下的綠色餐飲創(chuàng)新實(shí)踐案例分享
- 現(xiàn)代保安公司經(jīng)營模式創(chuàng)新與教育領(lǐng)域融合研究
- 電競產(chǎn)業(yè)未來創(chuàng)新發(fā)展方向研究報(bào)告
- 2025至2030年中國泥炭粉末數(shù)據(jù)監(jiān)測研究報(bào)告
- 2024年企業(yè)招聘呼和浩特旭陽中燃能源有限公司招聘筆試真題
- 2024年空港數(shù)字城市開發(fā)建設(shè)有限公司社會(huì)招聘筆試真題
- 電解質(zhì)溶液的圖像分析(原卷版)-2025年高考化學(xué)一輪復(fù)習(xí)講義(新教材新高考)
- 2025年中考?xì)v史一輪復(fù)習(xí)知識(shí)清單:隋唐時(shí)期
- 【生物】蒸騰作用- 2024-2025學(xué)年七年級上冊生物(北師大版2024)
- 摩根大通金融科技支出
- 《井巷掘進(jìn)作業(yè)》課件
- 銀行保安服務(wù) 投標(biāo)方案(技術(shù)方案)
- 《TCPIP協(xié)議基礎(chǔ)》課件
- 2019年大學(xué)學(xué)術(shù)規(guī)范測試版題庫500題(含標(biāo)準(zhǔn)答案)
- 養(yǎng)老院院長崗位職責(zé)(崗位說明書)
- 農(nóng)村砍樹賠償合同模板
- 2024年貴州省公務(wù)員錄用考試《行測》真題及答案解析
評論
0/150
提交評論