


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、#in clude<iostream> #in clude<stri ng>#in clude<fstream>#in clude<time.h>#in clude<ioma nip> using n amespace std; int year,m on th;/數(shù)據(jù)流輸入輸出/字符串操作/文件輸入輸出/時間庫函數(shù)/輸入輸出格式符/命名空間/*888888888888888888888888888888888888888888888888888888888888888888888888888*/class Ordernforstri
2、 ng n ame;/用戶姓名stri ng se x;/用戶性別stri ng addr;/用戶地址stri ng tel;/用戶號碼stri ng mage;/雜志單位float price;/雜志單價int num;/訂閱數(shù)目int y,m;/訂閱限期in t g;public:Order_ infor* head;/信息類頭指針Order_i nfor* n ext;/信息類next域void in put();/錄入函數(shù)void in put(ifstream & in file);/讀取函數(shù)void output();/輸出函數(shù)void output(ofstream &a
3、mp; outfile);/寫入函數(shù)float getprice();int get num();int getyear();/獲取期限時間函數(shù)int getmo nth();stri ng get name();void order();/錄入信息void men d();/修改信息void del_select();void del1();/刪除信息void del2();void foun d();Order_ in for*fi nd(stri ng n);bool fin d(i nt y,i nt m);void statistic();void show();bool comp(
4、i nt y,i nt m);訂閱狀況函數(shù)void save();/顯示信息判斷當(dāng)前保存信息/void begi n();/初始信息void clear();/清除函數(shù)void setg(i nt k) g=k; /設(shè)置系統(tǒng)修改標志int getg() return g;/返回系統(tǒng)修改標志d;/*888888888888888888888888888888888888888888888888888888888888888888888888888*/float Order_ in for:getprice()return price;int Order_ in for:get num()retu
5、rn num;int Order_i nfor:getyear()return y;int Order_ in for:getm on th()return m;stri ng Order_ in for:get name()return n ame;/*888888888888888888888888888888888888888888888888888888888888888888888888*/class Menupublic:void about();/關(guān)于void mainmenu ();/主菜單函數(shù)bool la nd();/管理員登陸;/*88888888888888888888
6、8888888888888888888888888888888888888888888888888888*/void Men u:about()cout<<" "<<endl<<"t1."<<e ndl<<"t2."<<e ndl<<"t3."<<e ndl<<"t4."<<e ndl;cout<<" "<<e ndl;/*88888
7、888888888888888888888888888888888888888888888888888888888888888888888*/bool Men u:la nd()Menu b;b.about();stri ng s;int i=0;cout<<"請輸入管理員密while(1)cin> >s;if(s="123456")return true;elsecout<<"輸入密碼錯誤 i+;if(i>=3)break;/"<<e ndl;/,請重新輸入:"/cout<
8、<"輸入錯誤三次!系統(tǒng)自動退出!"<<endl;/system("pause");/return false;/定義菜單類對象輸出系統(tǒng)說明計數(shù)變量 輸出提示信息輸入正確 返回正確 輸錯了輸出提示信息 計數(shù)變量自加 連輸三次錯誤 跳出循環(huán)提示將退出登錄顯示暫停返回錯誤/*888888888888888888888888888888888888888888888888888888888888888888888888888*/void Men u:ma inmenu()system("cls");stri ng s;cou
9、t<<I* "<cout<<""<<e ndl;歡迎使用雜志訂閱管理軟件*"<<e nccout<<"ttO.cout<<"tt1.cout<<"tt2.cout<<"tt3.退出程序4.增加新訂戶5.刪除用戶6.統(tǒng)計本期雜志訂戶數(shù)瀏覽訂閱用戶"<<endl; 查找用戶信息"<<endl; 修改用戶信息"<<endl;7.保存信息"<
10、<e ndl;cout<<"請輸入功能按鈕:cin> >s;switch(sO)case'1':d.order();break;case'2':d.del_select();break;case'3':d.statistic();break;case'4':d.show();break;case'5':d.fo un d();break;case'6':d.me nd();break;case'7':d.save();break;default
11、:retur n;/*888888888888888888888888888888888888888888888888888888888888888888888888888*/void Order_ in for:i nput()cout<<"請輸入姓名:" while(1) cin»n ame;if (ci n. fail()錯cout <<"n cin. clear(); cin .get();else break; cout<<"請輸入性別while(1)cin> >sex;if (ci n
12、. fail()/輸入姓名判斷輸入的數(shù)據(jù)類型是否有姓名輸入錯誤,請重新輸入:"/清除錯誤狀態(tài)重輸輸入正確則跳出循環(huán)輸入性別判斷輸入的數(shù)據(jù)類型是否有清除錯誤狀態(tài)cout <<"n 性別輸入錯誤,請重新輸入:"cin .clear();/cin .get();else break;/cout<<"請輸入地址:"while(1)cin> >addr;/if (ci n. fail()錯cout <<"n 地址輸入錯誤 cin .clear();/cin .get();else break;/c
13、out<<"請輸入電話號碼:";while(1)錯cin> >tel;if (ci n. fail()/cout <<"n號碼輸入錯誤cin .clear(); cin .get();/else break;/cout<<"請輸入雜志單位.II. ,while(1)錯cin>> mage; if (ci n. fail()/重輸輸入正確則跳出循環(huán)/設(shè)置地址輸入地址/判斷輸入的數(shù)據(jù)類型是否有請重新輸入:"清除錯誤狀態(tài)/重輸輸入正確則跳出循環(huán)/設(shè)置電話號碼輸入電話號碼/判斷輸入的數(shù)據(jù)類型是
14、否有請重新輸入:"清除錯誤狀態(tài)/重輸輸入正確則跳出循環(huán)/設(shè)置雜志單位輸入雜志單位/ 判斷輸入的數(shù)據(jù)類型是否有cout <<"n雜志單位輸入錯誤cin .clear();/cin .get();else break;/,請重新輸入:"清除錯誤狀態(tài)/重輸輸入正確則跳出循環(huán)cout<<"請輸入單價:"while(1)cin> >price;/if (ci n. fail()錯cout <<"n 單價輸入錯誤, cin. clear();/cin .get();else break;/cout&
15、lt;<"請輸入訂閱數(shù):";while(1)cin»num;/if (ci n. fail()錯cout <<"n訂閱數(shù)輸入錯誤cin .clear();/cin .get(); else break;/cout<<"請輸入訂閱限期(年 月):while(1)cin»y»m;/if (ci n. fail()錯cout <<"n訂閱限期輸入錯誤cin .clear();/cin .get();else break;/設(shè)置單價輸入單價/ 判斷輸入的數(shù)據(jù)類型是否有請重新輸入:&
16、quot;清除錯誤狀態(tài)/重輸輸入正確則跳出循環(huán)/設(shè)置訂閱數(shù)輸入訂閱數(shù)/ 判斷輸入的數(shù)據(jù)類型是否有,請重新輸入:"清除錯誤狀態(tài)/重輸輸入正確則跳出循環(huán)/設(shè)置期限輸入期限/ 判斷輸入的數(shù)據(jù)類型是否有請重新輸入:"清除錯誤狀態(tài)/重輸輸入正確則跳出循環(huán)/*888888888888888888888888888888888888888888888888888888888888888888888888888*/voidOrdernfor:i nput(ifstream/帶參錄入函數(shù)向鏈表輸入in file)in file>n ame»sex>>addr>
17、;>tel>>mage»price >>num»y»m;/輸入至鏈表/*888888888888888888888888888888888888888888888888888888888888888888888888888*/voidOrdernfor:output()/信息輸出函數(shù)向顯示屏輸出 cout<<setw(8)< <n ame<<setw(4)<<sex<<setw(10)<<addr<<setw(13)<<tel<<
18、;setw(10)< <mage<<setw(6)<<price<<setw(4)< <nu m<<setw(2)<<y<<"/"<<m<<e ndl;/*888888888888888888888888888888888888888888888888888888888888888888888888888*/void Ordernfor:output(ofstream & outfile) /向文件輸出信息outfile<<setw(1
19、0)< <n ame/setw()設(shè)置輸出寬度<<setw(10)<<sex<<setw(10)<<addr<<setw(12)<<tel<<setw(10)<<mage<<setw(10)<<price<<setw(10) <<num<<setw(10)<<y<<setw(10)<<m<<e ndl;bool Order_ in for:comp(i nt y,i nt m)if
20、(year>y|(year=y&&mon th>m)/ return true;/狀況,返回表示訂閱超期elsereturn false;/*888888888888888888888888888888888888888888888888888888888888888888888888888*/判斷是否超期先比較年,若一樣則比較月比較當(dāng)前時間與限期,獲得訂閱的當(dāng)前/ 返回表示訂閱未超期/*888888888888888888888888888888888888888888888888888888888888888888888888888*/ void Order_i
21、 nfor:order()/向鏈表尾部錄入訂閱信息system("cls");/清屏Order_i nfor *p1,*p2=NULL;/定義對象指針p仁head;/將頭指針賦給p1int n=1;/定義循環(huán)控制變量while(p1- >n ext)/當(dāng)頭結(jié)點后有數(shù)據(jù)時執(zhí)行循環(huán),頭結(jié)點為空也不會執(zhí)行循環(huán)p1=p1- >n ext;/使p能夠指向未存放數(shù)據(jù)的內(nèi)存,錄入信息會存放在所有信息之后while( n)/此循環(huán)執(zhí)行在鏈表尾部插入錄入的信息/通過循環(huán)不斷開辟新空間錄入新的數(shù)據(jù)p2=new Ordernfor;/開辟存儲空間,返回地址給p2p2->i np
22、ut();/調(diào)用錄入函數(shù),為p2所指結(jié)點數(shù)據(jù)賦值p1- >n ext=p2;p1的 next指向新開辟空間,連接了 p1和p2p2-> next=NULL;/p2的 next變?yōu)榭罩羔榩1=p1- >n ext;p1指向新開辟的空間,p1緊隨p2之后Order_i nfor:setg(1);/標記為修改cout<<"ttt按 1 繼續(xù),按0返回:"/控制變量控制循環(huán)cin»n;/輸入n/*88888888888888888888888888888888888888888888888888888888888888888888888888
23、8*/void Ordernfor:show()system("cls"); /清屏cout.setf(ios:left);cout<<"訂閱基本信息如下:"<<endl閱信息/顯示所有訂<<setw(8)<<"姓名"<<setw(8)<<"性別"<<setw(8)<<"地址”<<setw(13)<<"電話"<<setw(8)<<"單
24、位"<<setw(8)<<" 單價” <<setw(8)<<"定閱數(shù)"<<setw(8)<<"期限"<<endl;Order_ infor *p;信息類對象指針p=head;部,啟用鏈表信息while(p-> next)點不為空則執(zhí)行循環(huán)在于輸出所有訂閱信息p=p->n ext;/P定義訂閱 指向鏈表頭 只要下一結(jié) 此循環(huán)功能指向下一節(jié)點cout<<setw(8)<<p->n ame<<setw(8
25、)<<p->sex<<setw(8)<<p->addr<<setw(13)<<p->tel<<setw(8)<<p->mage<<setw(8)<<p->price<<setw(8)<<p->num <<s etw(4)<<p->y<<"/"<<p->m<<e ndl;/調(diào)用next所指對象的輸出信息函數(shù),頭結(jié)點未存放數(shù)據(jù)只是初始化了ne
26、xt/*888888888888888888888888888888888888888888888888888888888888888888888888888*/void Ordernfor:fo un d()system("cls");/清屏定義輔助輸出提示變量stri ng n;/cout<<"輸入姓名:";/信息cin»n;/輸入選擇if(!fi nd( n)/調(diào)用find函數(shù)查找rcout<<"tt找不到你要查找的內(nèi)容!"<<e ndl;/找不到的話輸出相應(yīng)提示信息return;/
27、函數(shù)調(diào)用結(jié)束/*888888888888888888888888888888888888888888888888888888888888888888888888888*/Ordernfor* Order_ in for:fi nd(stri ng n)system("cls");/Order_ infor *p;/指針p=head;/結(jié)點while(p->n ext)/尾部時執(zhí)行循環(huán)if( (p->n ext)->get name()=n)所查到的訂閱信息cout.setf(ios:left);清屏定義輔助指向鏈表頭當(dāng)鏈表未至/班次匹配上則輸出/輸出信息電
28、話 單位 單價 定閱數(shù) 期限cout<<"訂閱基本信息如下:"<<endl << " 姓名 性別 地址"<<e ndl;(p_>n ext)_>output();/調(diào)用輸出函數(shù)return p;/表示找到,返回的是目標結(jié)點的前一結(jié)點p=p->n ext;/指向下一節(jié)點return NULL;/*888888888888888888888888888888888888888888888888888888888888888888888888888*/void Ordernfor:me nd()
29、 system("cls"); Order_i nfor *p;量stri ng n; cout<<"ttt提示信息cin»n;p=fi nd(n);if(!p)/輸入姓名方便查找/修改函數(shù)清屏定義信息類指針變/輸出調(diào)用查找函數(shù)判斷是否找到cout<<"tt找不到你要修改的內(nèi)容!請利用程序查詢功能確認!"<<e ndl;/輸出提示信息函數(shù)調(diào)用結(jié)束調(diào)用錄入函數(shù)對目標結(jié)return;/(p->n ext)->i nput();/點數(shù)據(jù)再錄入Order_i nfor:setg(1);/*888
30、888888888888888888888888888888888888888888888888888888888888888888888888*/ void Order_i nfor:del_select()cout<<"請選擇刪除選項:"<<endl;cout<<"1.刪除過期用戶;2.刪除指定用戶"<<endl; int c;cin> >c;switch(c)case 1:d.del2();break;case 2:d.del1();break;default:cout<<&q
31、uot;輸入錯誤!"/*888888888888888888888888888888888888888888888888888888888888888888888888888*/void Ordernfor:del1()輛信息函數(shù)/system("cls");Order_i nfor *p1,*p2,*p3;對象指針用于鏈表操作stri ng n;cout<<"ttt/信息cin»n; p1=fi nd(n);函數(shù)if(!p1)返回值是否為INULLcout<<"tt到的提示return;結(jié)束 cout<
32、<"nttt刪除數(shù)據(jù)信息供用戶核對char a; cin> >a;if(a='y'|a='Y') 點為空僅有輸入姓名:"/找不到你要刪除的內(nèi)容確定刪除(y/n)?"/!"<<e ndl;/next域所以只要考慮被刪結(jié)點是中間結(jié)點和尾結(jié)點情況if(p1-> next)-next=NULL)/p2=p1- >n ext;/p2標結(jié)點p1-> next=NULL;/p1標結(jié)點的next域重新賦值為空指針delete p2;/空間為尾結(jié)點時else /為中間節(jié)點時p2=p1- >
33、;n ext;/p2/刪除車清屏定義兩輸出提示調(diào)用查找判斷函數(shù)輸出沒找函數(shù)調(diào)用顯示將要輸入指示因為頭結(jié)目標結(jié)點指向目連接目釋放目標目標結(jié)點指向目標結(jié)點下一結(jié)點p1- >n ext=p3;/連接目標結(jié)點前后結(jié)點delete p2;/釋放目標結(jié)點iOrdernfor:setg(1);/標記為修標結(jié)點p3=(p1- >n ext)->n ext;p3指向目改/*888888888888888888888888888888888888888888888888888888888888888888888888888*/void Ordernfor:del2()system("c
34、ls");/Ordernfor *p1,*p2,*p3;/針用于鏈表操作int n;char c;p仁head;while(p1- >n ext)n=p(p1- >n ext)->y,(p1- >n ext)->m);if(n)system("cls");cout<<"訂閱基本信息如下:"<<endl<< " 姓名 性別 地址 電話/單位 單價清屏定義兩對象指輸出信息定閱數(shù) 期限"<<e ndl;(p1- >n ext)->output
35、(); cout<<"是否刪除(y/n)"cin»c;因為頭結(jié)if(c='y'|c='Y') /點為空僅有next域所以只要考慮被刪結(jié)點是中間結(jié)點和尾結(jié)點情況if(p1-> next)-next=NULL)/目標結(jié)點為尾結(jié)點時 p2=p1- >n ext;/p2指向目標結(jié)點p1-> next=NULL;/p1連接目標結(jié)點的next域重新賦值為空指針/釋放目標空間return;目標結(jié)點為中間節(jié)p2;else /點時p2=p1- >n ext;/p2指向目標結(jié)點p3=(p1- >n ext)-&
36、gt;n ext;p3指向目標結(jié)點下一結(jié)點p1- >n ext=p3;/連接目標結(jié)點前后結(jié)點delete/釋放目標結(jié)點Ordernfor:setg(1);/標記為修改p1=p1- >n ext; /*888888888888888888888888888888888888888888888888888888888888888888888888888*/ void Order_ in for:statistic() Order_ infor *p;int n=0;int sum=0;p=head;cout<<"本期訂閱信息"<<endl;c
37、out<<"用戶名訂閱數(shù)單價 全額"<<endl;while(p-> next)cout<<(p->n ext)->get name()<<"t"<<(p_ >n ext)->get num() <<"t"<<(p->n ext)->getprice()<<"t"<<(p->n ext)->get num()*(p_ >n ext)->getp
38、rice()<<e ndl; n=n+(p->n ext)->get num ();sum+=(p->n ext)->get num()*(p->n ext)->getprice();p=p->n ext;cout<<"合計"<<"t"<<n <<"tt"<<sum<<endl;/*888888888888888888888888888888888888888888888888888888888888888888888888888*/void Ordernfor:begi n()Ordernfor *p,*p2;p=head;ifs
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度健康醫(yī)療大數(shù)據(jù)預(yù)付款全新合作協(xié)議
- 二零二五年度幼兒園保育員聘用合同書-幼兒教育創(chuàng)新項目合作
- 二零二五年度環(huán)保咨詢服務(wù)營業(yè)執(zhí)照轉(zhuǎn)讓合同
- 二零二五年度一手房購房意向金預(yù)定合同
- 2025年度有限責(zé)任公司股東離任協(xié)議書
- 二零二五年度拆除房屋及土地回收合同范本
- 二零二五年度學(xué)校食堂承包經(jīng)營與服務(wù)滿意度提升協(xié)議
- 二零二五年度離職后商業(yè)秘密保護及競業(yè)限制合同
- 二零二五年度房屋維修安全責(zé)任保險協(xié)議
- 二零二五年度美容院養(yǎng)生保健入股合同協(xié)議
- 家具公司合伙協(xié)議
- DL5000-火力發(fā)電廠設(shè)計技術(shù)規(guī)程
- 《醫(yī)德醫(yī)風(fēng)學(xué)習(xí)記錄》
- 羊水穿刺的委托書
- 爆破飛石控制措施
- 2024年新疆生產(chǎn)建設(shè)兵團興新職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫必考題
- (高清版)JTGT M72-01-2017 公路隧道養(yǎng)護工程預(yù)算定額
- DZ∕T 0130.6-2006 地質(zhì)礦產(chǎn)實驗室測試質(zhì)量管理規(guī)范 第6部分:水樣分析(正式版)
- 2024年遼寧生態(tài)工程職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫一套
- 摩托車科目一題庫-共400題(附答案)
- 第一節(jié)-原核生物與真核生物DNA的復(fù)制課件
評論
0/150
提交評論