下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
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();/顯示信息判斷當前保存信息/void begi n();/初始信息void clear();/清除函數(shù)void setg(i nt k) g=k; /設置系統(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();/關于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ù)據(jù)類型是否有請重新輸入:"清除錯誤狀態(tài)/重輸輸入正確則跳出循環(huán)/設置電話號碼輸入電話號碼/判斷輸入的數(shù)據(jù)類型是
14、否有請重新輸入:"清除錯誤狀態(tài)/重輸輸入正確則跳出循環(huán)/設置雜志單位輸入雜志單位/ 判斷輸入的數(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ù)據(jù)類型是否有請重新輸入:&
16、quot;清除錯誤狀態(tài)/重輸輸入正確則跳出循環(huán)/設置訂閱數(shù)輸入訂閱數(shù)/ 判斷輸入的數(shù)據(jù)類型是否有,請重新輸入:"清除錯誤狀態(tài)/重輸輸入正確則跳出循環(huán)/設置期限輸入期限/ 判斷輸入的數(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()設置輸出寬度<<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*/判斷是否超期先比較年,若一樣則比較月比較當前時間與限期,獲得訂閱的當前/ 返回表示訂閱未超期/*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)/當頭結點后有數(shù)據(jù)時執(zhí)行循環(huán),頭結點為空也不會執(zhí)行循環(huán)p1=p1- >n ext;/使p能夠指向未存放數(shù)據(jù)的內存,錄入信息會存放在所有信息之后while( n)/此循環(huán)執(zhí)行在鏈表尾部插入錄入的信息/通過循環(huán)不斷開辟新空間錄入新的數(shù)據(jù)p2=new Ordernfor;/開辟存儲空間,返回地址給p2p2->i np
22、ut();/調用錄入函數(shù),為p2所指結點數(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定義訂閱 指向鏈表頭 只要下一結 此循環(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;/調用next所指對象的輸出信息函數(shù),頭結點未存放數(shù)據(jù)只是初始化了ne
26、xt/*888888888888888888888888888888888888888888888888888888888888888888888888888*/void Ordernfor:fo un d()system("cls");/清屏定義輔助輸出提示變量stri ng n;/cout<<"輸入姓名:";/信息cin»n;/輸入選擇if(!fi nd( n)/調用find函數(shù)查找rcout<<"tt找不到你要查找的內容!"<<e ndl;/找不到的話輸出相應提示信息return;/
27、函數(shù)調用結束/*888888888888888888888888888888888888888888888888888888888888888888888888888*/Ordernfor* Order_ in for:fi nd(stri ng n)system("cls");/Order_ infor *p;/指針p=head;/結點while(p->n ext)/尾部時執(zhí)行循環(huán)if( (p->n ext)->get name()=n)所查到的訂閱信息cout.setf(ios:left);清屏定義輔助指向鏈表頭當鏈表未至/班次匹配上則輸出/輸出信息電
28、話 單位 單價 定閱數(shù) 期限cout<<"訂閱基本信息如下:"<<endl << " 姓名 性別 地址"<<e ndl;(p_>n ext)_>output();/調用輸出函數(shù)return p;/表示找到,返回的是目標結點的前一結點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ù)清屏定義信息類指針變/輸出調用查找函數(shù)判斷是否找到cout<<"tt找不到你要修改的內容!請利用程序查詢功能確認!"<<e ndl;/輸出提示信息函數(shù)調用結束調用錄入函數(shù)對目標結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;結束 cout<
32、<"nttt刪除數(shù)據(jù)信息供用戶核對char a; cin> >a;if(a='y'|a='Y') 點為空僅有輸入姓名:"/找不到你要刪除的內容確定刪除(y/n)?"/!"<<e ndl;/next域所以只要考慮被刪結點是中間結點和尾結點情況if(p1-> next)-next=NULL)/p2=p1- >n ext;/p2標結點p1-> next=NULL;/p1標結點的next域重新賦值為空指針delete p2;/空間為尾結點時else /為中間節(jié)點時p2=p1- >
33、;n ext;/p2/刪除車清屏定義兩輸出提示調用查找判斷函數(shù)輸出沒找函數(shù)調用顯示將要輸入指示因為頭結目標結點指向目連接目釋放目標目標結點指向目標結點下一結點p1- >n ext=p3;/連接目標結點前后結點delete p2;/釋放目標結點iOrdernfor:setg(1);/標記為修標結點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;因為頭結if(c='y'|c='Y') /點為空僅有next域所以只要考慮被刪結點是中間結點和尾結點情況if(p1-> next)-next=NULL)/目標結點為尾結點時 p2=p1- >n ext;/p2指向目標結點p1-> next=NULL;/p1連接目標結點的next域重新賦值為空指針/釋放目標空間return;目標結點為中間節(jié)p2;else /點時p2=p1- >n ext;/p2指向目標結點p3=(p1- >n ext)-&
36、gt;n ext;p3指向目標結點下一結點p1- >n ext=p3;/連接目標結點前后結點delete/釋放目標結點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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 卡通插畫黑板教師教育教學模板模板
- 2025年生態(tài)農業(yè)認證五年發(fā)展路徑報告
- 2025年佛山市南海區(qū)獅山加立幼兒園招聘備考題庫及一套完整答案詳解
- 2025年保定華醫(yī)中醫(yī)醫(yī)院招聘15人備考題庫完整參考答案詳解
- 湖南時空信息安全檢測服務有限公司2025年面向社會公開招聘備考題庫附答案詳解
- 松桃群希高級中學2026年招聘高中教師備考題庫(數(shù)學物理化學語文英語)及參考答案詳解一套
- 2025年江西省建工集團有限責任公司所屬企業(yè)招聘備考題庫及答案詳解一套
- 2025年城市共享單車補貼政策分析報告
- 2025年成都市泡桐樹中學教師招聘備考題庫完整答案詳解
- 2025年上海舞臺技術研究所(上海文廣演藝劇院管理事務中心)公開招聘工作人員備考題庫及答案詳解1套
- 中國昭通中藥材國際中心項目可行性研究報告
- 2025中國融通資產(chǎn)管理集團有限公司招聘筆試備考試題(230人)附答案解析
- 2026馬年春節(jié)新年年貨節(jié)大集廟會(金馬迎春年貨大集)活動策劃方案
- 心臟搭橋課件
- 2026年安全員之A證考試題庫500道附答案【滿分必刷】
- 2025年廣東省第一次普通高中學業(yè)水平合格性考試(春季高考)思想政治試題(含答案詳解)
- 人工智能行業(yè)-“人工智能+”行動深度解讀與產(chǎn)業(yè)發(fā)展機遇
- 養(yǎng)殖場貸款申請書樣本
- (一診)達州市2026屆高三第一次診斷性測試思想政治試題(含標準答案)
- 購車意向金合同范本
- 2025四川成都東方廣益投資有限公司下屬企業(yè)招聘9人備考題庫及完整答案詳解1套
評論
0/150
提交評論