假設某商店有如下幾種貨品襯衣帽子立柜每一種貨物都有與其關聯(lián)的說明信息_第1頁
假設某商店有如下幾種貨品襯衣帽子立柜每一種貨物都有與其關聯(lián)的說明信息_第2頁
假設某商店有如下幾種貨品襯衣帽子立柜每一種貨物都有與其關聯(lián)的說明信息_第3頁
假設某商店有如下幾種貨品襯衣帽子立柜每一種貨物都有與其關聯(lián)的說明信息_第4頁
假設某商店有如下幾種貨品襯衣帽子立柜每一種貨物都有與其關聯(lián)的說明信息_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C+程序設計上機實驗題目:假設某商店有如下幾種貨品:襯衣、帽子、立柜。每一種貨物都有與其關聯(lián)的說明信息。襯衣:單價、產(chǎn)地、庫存量、布料;帽子:單價、產(chǎn)地、庫存量、布料、樣式(平頂或尖頂);立柜:單價、產(chǎn)地、庫存量、木料、顏色。對這些商品的操作有:商品的進庫(增加庫存量),商品的出庫(減少庫存量),該類貨品總價格的計算。要求自行設計數(shù)據(jù)結構,用類的繼承與派生關系將上述的各種貨品表示出來,并使用類的構造函數(shù)來初始化每一類對象的初始數(shù)據(jù)。而后將上述的商品管理計算機化,完成操作要求的功能。【實現(xiàn)方法提示】1設立3 個不同的類來描述與處理3 種不同的貨品。首先注意到上述3 種貨品數(shù)據(jù)之間的相互關聯(lián)關系,

2、可使用C+基類及其派生類的定義方法,先抽象出(“提取”出)如下每一貨品都具有的 “公有”數(shù)據(jù)構成一個所謂的基類base,而后再派生出所需的那3 個類。(1)base(基)類:單價、產(chǎn)地、庫存量;(2)由base 作為基類,派生出shirt(襯衣)類:增加“布料”數(shù)據(jù);(3)由base 出發(fā),派生出wardrobe(立柜)類:增加“木料”與“顏色”數(shù)據(jù);(4)而后又由shirt 類出發(fā)(作為基類),派生出cap(帽子)類:增加“樣式”數(shù)據(jù)。2對應于要對各類數(shù)據(jù)所進行的操作,而設立出類的如下幾個成員函數(shù)。(1)構造函數(shù)通過傳遞來的實參數(shù)據(jù),來構造出每一對象所具有的各數(shù)據(jù)成員。如基類base 需要傳

3、遞place、count 與price 三項數(shù)據(jù),而派生類shirt 則需在base 數(shù)據(jù)的基礎上增加第四項即布料數(shù)據(jù)material 等。(2)商品的進庫(增加庫存量)void in_something(int add_cnt);將對象的庫存量count 增加一個數(shù)量add_cnt。(3)商品的出庫(減少庫存量)void out_something(int del_cnt);將對象的庫存量count 減少一個數(shù)量del_cnt。(4)該類貨品總價格的計算double total_price();通過使用“price*count”計算并返回對象所代表貨品的總價格。(5)對象數(shù)據(jù)的輸出。在屏幕上

4、顯示出對象所擁有的當前數(shù)據(jù)。 /復雜化要求:1. 各自商品擁有獨立特征 獨立庫存數(shù)量、單價和其他特性2. 2.錄入功能中(1)需要判斷現(xiàn)在輸入與以前輸入的是否相同 若相同 則疊加庫存量(2)在(1)的基礎上判斷單價是否沖突 若沖突 則要求重新錄入3.功能部分要求自由度 并設立查詢功能程序如下: #include<iostream>#include<string>using namespace std;class baseprotected: float price; /單價 string place; /產(chǎn)地 int count; /庫存量 public: base(f

5、loat &p,int &c,string &pl) price=p; count=c; place=pl; void in_something(int add_cnt) count+=add_cnt; void out_something(int del_cnt) if(del_cnt>count)count=0; /變0保護 小于0的按0計算 else count-=del_cnt; double total_price() return price*count; int r_count() return count; ;class shirt:public

6、baseprotected: string material;public: shirt(float &p ,int &c ,string &pl ,string &m):base( p , c, pl) material=m; void print() cout<<"n襯衣"<<"t產(chǎn)地:"<<place<<"t材料:"<<material <<"n庫存量:"<<count<<"

7、;t單價:"<<price<<"t總價格"<<total_price()<<endl; ;class wardrobe:public baseprotected: string wood; string color;public: wardrobe(float &p ,int &c ,string &pl ,string &w ,string &co ):base(p,c,pl) wood=w; color=co; void print() cout<<"

8、n立柜"<<"t產(chǎn)地:"<<place<<"t顏色:"<<color<<"t木料:"<<wood<<"n庫存量:" <<count<<"t單價:"<<price<<"t總價格"<<total_price()<<endl; ;class cap:public shirtprotected: string style

9、;public: cap(float &p ,int &c ,string &pl ,string &m,string &st ):shirt(p,c,pl,m) style=st; void print() cout<<"n帽子"<<"t產(chǎn)地:"<<place<<"t材料:"<<material <<"樣式:"<<style<<"n庫存量:"<<c

10、ount<<"t單價:" <<price<<"t總價格"<<total_price()<<endl; ;int choose(string a) /用于判斷下一步執(zhí)行的命令 0.結束1.襯衣2.帽子3.立柜4.查詢5.入庫6.出庫7.出錯重輸 if(a="0")return 0; /結束 else if(a="襯衣"|a="shirt")return 1; else if(a="帽子"|a="cap&quo

11、t;)return 2; else if(a="立柜"|a="wardrobe")return 3; else if(a="查詢"|a="?"|a="about")return 4; else if(a="入庫"|a="+"|a="in")return 5; else if(a="出庫"|a="-"|a="out")return 6; else if(a="幫助&qu

12、ot;|a="?"|a="help")return 8; else return 7; int total_count(cap &a,shirt &b,wardrobe &c) return a.r_count()+b.r_count()+c.r_count(); /Powered by X.Duke int main(void)/=輸入部分 int cho=1,i; /cho為選擇計數(shù)器 接收choose函數(shù)的返回值 通過if語句判斷要執(zhí)行的語句 int ci=0,wi=0,si=0; /標記 角標 float pci5=0.0

13、0,pwi5=0.00,psi5=0.00; /單價 int cou_cap5=0,0,0,0,0,cou_shi5=0,0,0,0,0,cou_war5=0,0,0,0,0; /依次記錄帽子 襯衣 立柜的庫存量 string pla_cap5="0","0","0","0","0" /保存帽子產(chǎn)地信息 string pla_war5="0","0","0","0","0" /保存立柜產(chǎn)地信息 s

14、tring pla_shi5="0","0","0","0","0" /保存襯衣產(chǎn)地信息 string col5="0","0","0","0","0" /保存顏色信息 string s_mat5="0","0","0","0","0" /保存襯衣_布料信息 string c_mat5="

15、0","0","0","0","0" /保存帽子_布料信息 string woo5="0","0","0","0","0" /保存木料信息 string sty5="0","0","0","0","0" /保存樣式信息 string temp,temp1="0",temp2="0

16、",temp3="0" /臨時寄存字符 int cou_temp;float p_temp; /臨時記錄初始值 int loop_sw=0; /事件標記點 為0時不跳過 非0時跳過 /提示性語句 cout<<"現(xiàn)在對3種商品 n襯衣(shirt),帽子(cap),立柜(wardrobe) n實現(xiàn)基本管理功能"<<endl<<"n=首先進行初始化工作="<<endl; cout<<"即將錄入商品名稱(也可以是括號中的英文)輸入0結束"<<

17、;endl; while(cho!=0) /分類輸入 cout<<"輸入商品名稱" cin>>temp; cho=choose(temp); if(cho=1) /shirt ->place material if(si=5)cout<<"超過最大數(shù)量輸入限制,跳出"continue; /溢出保護 cout<<"設置襯衣的單價:"cin>>p_temp; /設置帽子單價 cout<<"輸入產(chǎn)地 布料 初始數(shù)量 并以空格隔開"<<

18、;endl;cin>>temp1>>temp2>>cou_temp; for(i=0;i<=si;i+) /用于判斷是否與之前輸入的有沖突 if(temp1=pla_shii&&temp2=s_mati) if(p_temp!=psisi)cout<<"價格沖突,輸入最終價格:"cin>>psisi; cout<<"與之前輸入的商品重復,將數(shù)量疊加"<<endl;cou_shii+=cou_temp; loop_sw=1; /由于重復 事件開關打開

19、跳過賦值工作 if(loop_sw=0) psisi=p_temp; pla_shisi=temp1; s_matsi=temp2; cou_shisi+=cou_temp; /賦值工作 cou_temp=0; /掃尾清零工作 loop_sw=0; /同上 if(cho=2) /cap ->place material style if(ci=5)cout<<"超過最大數(shù)量輸入限制,跳出"continue; cout<<"設置帽子單價:"cin>>p_temp; / cout<<"輸入產(chǎn)地

20、布料 樣式 初始數(shù)量 并以空格隔開"<<endl;cin>>temp1>>temp2>>temp3>>cou_temp; for(i=0;i<=ci;i+) if(temp1=pla_capi&&temp2=c_mati&&temp3=styi) if(p_temp!=pcici)cout<<"價格沖突,輸入最終價格:"cin>>pcici; cout<<"與之前輸入的商品重復,將數(shù)量疊加"<<end

21、l;cou_capi+=cou_temp; loop_sw=1; if(loop_sw=0) pcici=p_temp; pla_capci=temp1; c_matci=temp2; styci=temp3; cou_capci+=cou_temp; cou_temp=0; loop_sw=0; if(cho=3) /wardrobe ->place wood color if(wi=5)cout<<"超過最大數(shù)量輸入限制,跳出"continue; cout<<"設置立柜單價:"cin>>p_temp; cou

22、t<<"輸入產(chǎn)地 木料 顏色 初始數(shù)量 并以空格隔開"<<endl;cin>>temp1>>temp2>>temp3>>cou_temp; for(i=0;i<=wi;i+) if(temp1=pla_wari&&temp2=wooi&&temp3=coli) if(p_temp!=pwiwi)cout<<"價格沖突,輸入最終價格:"cin>>pwiwi; cout<<"與之前輸入的商品重復,將數(shù)量疊

23、加"<<endl;cou_wari+=cou_temp; loop_sw=1; if(loop_sw=0) pwiwi=p_temp; pla_warwi=temp1; woowi=temp2; colwi=temp3; cou_warwi+=cou_temp; cou_temp=0; loop_sw=0; if(cho=7)cout<<"輸入有誤 重新" cho=1; /選擇計數(shù)器重新設置 /開始初始化工作 shirt s_5= shirt(psi0,cou_shi0,pla_shi0,s_mat0), shirt(psi1,cou_sh

24、i1,pla_shi1,s_mat1), shirt(psi2,cou_shi2,pla_shi2,s_mat2), shirt(psi3,cou_shi3,pla_shi3,s_mat3), shirt(psi4,cou_shi4,pla_shi4,s_mat4) ; cap c_5= cap(pci0,cou_cap0,pla_cap0,c_mat0,sty0), cap(pci1,cou_cap1,pla_cap1,c_mat1,sty1), cap(pci2,cou_cap2,pla_cap2,c_mat2,sty2), cap(pci3,cou_cap3,pla_cap3,c_mat

25、3,sty3), cap(pci4,cou_cap4,pla_cap4,c_mat4,sty4) ; wardrobe w_5= wardrobe(pwi0,cou_war0,pla_war0,woo0,col0), wardrobe(pwi1,cou_war1,pla_war1,woo1,col1), wardrobe(pwi2,cou_war2,pla_war2,woo2,col2), wardrobe(pwi3,cou_war3,pla_war3,woo3,col3), wardrobe(pwi4,cou_war4,pla_war4,woo4,col4) ;/輸入部分結束/=功能部分 i

26、nt total=0,totalcap=0,totalshi=0,totalwar=0; /用于累計庫存總數(shù) float ptotal=0.00,stotal=0.00,ctotal=0.00,wtotal=0.00; /用于累計總價值 int j=0; cout<<"初始化結束 啟用基本功能"<<endl<<"n輸入查詢或about 查詢當前庫存情況"<<endl; cout<<"輸入+或in或 入庫 實現(xiàn)入庫功能"<<endl; cout<<&qu

27、ot;輸入-或out或 出庫 實現(xiàn)出庫功能"<<endl; while(cho!=0) if(loop_sw=0)cout<<"請輸入相應功能:"cin>>temp; cho=choose(temp); if(cho=7)cout<<"輸入有誤 重新" if(cho=4) /查詢功能 for(i=0;i<si;i+)s_i.print(); for(i=0;i<ci;i+)c_i.print(); for(i=0;i<wi;i+)w_i.print(); for(i=0;i<

28、;5;i+) total+=total_count(c_i,s_i,w_i); ptotal+=(s_i.total_price()+c_i.total_price()+w_i.total_price(); stotal+=s_i.total_price(); ctotal+=c_i.total_price(); wtotal+=w_i.total_price(); totalcap+=c_i.r_count(); totalshi+=s_i.r_count(); totalwar+=w_i.r_count(); cout<<"n襯衣總庫存:"<<t

29、otalshi<<"t價值:"<<stotal<<"n帽子總庫存:"<<totalcap<<"t價值:"<<ctotal<<"n立柜總庫存:"<<totalwar<<"t價值:"<<wtotal<<"n所有商品庫存總量:"<<total<<"t總價值:"<<ptotal<<end

30、l; if(loop_sw=1)break; if(cho=5) /入庫 while(cho!=0) cout<<"輸入要入庫的商品種類(輸入0結束):"cin>>temp; cho=choose(temp); if(cho)cout<<temp<<"中有以下小類 輸入編號進行入庫操作" if(cho=1) for(i=0;i<si;i+) cout<<"n編號 "<<i<<"t產(chǎn)地 "<<pla_shii<

31、< "t布料:"<<s_mati<<"t現(xiàn)有 "<<s_i.r_count(); cout<<"n輸入商品編號:"cin>>j; if(si=0)cout<<"無商品"<<endl; else while(j<0|j>=si)cout<<"有誤 重新輸入:"cin>>j; cout<<"入庫數(shù)量:"cin>>cou_temp;s

32、_j.in_something(cou_temp); if(cho=2) for(i=0;i<ci;i+) cout<<"n編號 "<<i<<"t產(chǎn)地 "<<pla_capi<<"t布料:"<<c_mati <<"樣式:"<<styi<<"t現(xiàn)有 "<<c_i.r_count(); if(ci=0)cout<<"無商品"<<en

33、dl; else cout<<"n輸入商品編號:"cin>>j; while(j<0|j>=ci)cout<<"有誤 重新輸入:"cin>>j; cout<<"入庫數(shù)量:"cin>>cou_temp;c_j.in_something(cou_temp); if(cho=3) for(i=0;i<wi;i+) cout<<"n編號 "<<i<<"t產(chǎn)地 "<<p

34、la_wari<<"t木料:"<<wooi <<"顏色:"<<coli<<"t現(xiàn)有 "<<w_i.r_count(); if(ci=0)cout<<"無商品"<<endl; else cout<<"n輸入商品編號:"cin>>j; while(j<0|j>=wi)cout<<"有誤 重新輸入:"cin>>j; cout&l

35、t;<"入庫數(shù)量:"cin>>cou_temp;w_j.in_something(cou_temp); if(cho=7)cout<<"有誤 重新" cho=5; if(cho=6) /出庫 while(cho!=0) cout<<"輸入要出庫的商品種類(輸入0結束):"cin>>temp; cho=choose(temp); if(cho)cout<<temp<<"中有以下小類 輸入編號進行出庫操作" if(cho=1) for(i=0;i<si;i+) cout<<"n編程 "<<i<<"t產(chǎn)地 "<<pla_shii<< "t布料:"<<s_mati<<

溫馨提示

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

評論

0/150

提交評論