




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、include<iostream /數(shù)據(jù)流輸入輸出include<string>/字符串操作includefstream/文件輸入輸出includetime.h/時(shí)間庫函數(shù)include<iomanip>/輸入輸出格式符using namespace std;/命名空間int year,month;/*888888888888888888888888888888888888888888888888888888888888888888888888888/class Order_inforstring name; /用戶姓名string sex; /用戶性別strin
2、g addr; /用戶地址string tel; /用戶號(hào)碼string mage; /雜志單位float price; /雜志單價(jià)int num; /訂閱數(shù)目int y,m; /訂閱限期int g;public:Order_infor* head; /信息類頭指針Order_infor* next; /信息類next域 void input(); /錄入函數(shù) void input(ifstream infile); /讀取函數(shù) void output(); /輸出函數(shù) void output(ofstream & outfile); /寫入函數(shù)float getprice();int
3、 getnum();int getyear(); /獲取期限時(shí)間函數(shù)int getmonth();string getname();void order(); /錄入信息void mend(); /修改信息void del_select();void del1(); /刪除信息void del2();void found();Order_inforfind(string n); bool find(int y,int m);void statistic();void show(); /顯示信息bool comp(int y,int m); /判斷當(dāng)前訂閱狀況函數(shù) void save(); /保
4、存信息 void begin(); /初始信息 void clear(); /清除函數(shù) void setg(int k) g=k; /設(shè)置系統(tǒng)修改標(biāo)志int getg() return g; /返回系統(tǒng)修改標(biāo)志d;/*888888888888888888888888888888888888888888888888888888888888888888888888888/float Order_infor:getprice()return price;int Order_infor:getnum()return num;int Order_infor:getyear()return y;int O
5、rder_infor::getmonth()return m;string Order_infor::getname()return name;/888888888888888888888888888888888888888888888888888888888888888888888888/class Menu public:void about(); /關(guān)于 void mainmenu(); /主菜單函數(shù)bool land(); /管理員登陸;/888888888888888888888888888888888888888888888888888888888888888888888888*/
6、void Menu:about()cout<”<endl <<"t1."endl <<”t2。"<endl ”t3."<endl <”t4."<endl; cout<""<<endl;/*88888888888888888888888888888888888888888888888888888888888888888888888888*/bool Menu:land()Menu b; /定義菜單類對(duì)象 b。about(); /輸出系統(tǒng)說明strin
7、g s; int i=0; /計(jì)數(shù)變量cout<<"請(qǐng)輸入管理員密碼:”<<endl; /輸出提示信息while(1)cin>s;if(s="123456”) /輸入正確return true; /返回正確else /輸錯(cuò)了 cout<"輸入密碼錯(cuò)誤,請(qǐng)重新輸入:”; /輸出提示信息 i+; /計(jì)數(shù)變量自加 if(i=3) /連輸三次錯(cuò)誤 break; /跳出循環(huán)cout<"輸入錯(cuò)誤三次!系統(tǒng)自動(dòng)退出!”<endl; /提示將退出登錄system(”pause"); /顯示暫停return fal
8、se; /返回錯(cuò)誤/*888888888888888888888888888888888888888888888888888888888888888888888888888/void Menu::mainmenu() system("cls”);string s; cout<"*”endl; cout<<" 歡迎使用雜志訂閱管理軟件 "endl; cout<<"*"<<endl; cout<<"tt0。退出程序 4.瀏覽訂閱用戶"<endl;cout<
9、;”tt1.增加新訂戶 5.查找用戶信息”<<endl;cout<<"tt2。刪除用戶 6.修改用戶信息"<endl;cout<"tt3.統(tǒng)計(jì)本期雜志訂戶數(shù) 7.保存信息 "endl;cout"請(qǐng)輸入功能按鈕:"cin>s;switch(s0)case1':d。order();break;case'2:d.del_select();break;case3':d.statistic();break;case4':d。show();break;case5:d。fou
10、nd();break;case6:d.mend();break;case'7':d。save();break;default:return;/*888888888888888888888888888888888888888888888888888888888888888888888888888/void Order_infor::input()cout<”請(qǐng)輸入姓名: ”; while(1)cin>name; /輸入姓名if (cin.fail() /判斷輸入的數(shù)據(jù)類型是否有錯(cuò)cout ”n姓名輸入錯(cuò)誤,請(qǐng)重新輸入:";cin.clear(); /清除錯(cuò)誤
11、狀態(tài)cin.get(); /重輸else break; /輸入正確則跳出循環(huán)cout<<"請(qǐng)輸入性別: ”; while(1)cin>sex; /輸入性別if (cin。fail() /判斷輸入的數(shù)據(jù)類型是否有錯(cuò)cout "n性別輸入錯(cuò)誤,請(qǐng)重新輸入:"cin.clear(); /清除錯(cuò)誤狀態(tài)cin。get(); /重輸else break; /輸入正確則跳出循環(huán)cout<”請(qǐng)輸入地址: ”; /設(shè)置地址while(1)cin>addr; /輸入地址if (cin.fail()) /判斷輸入的數(shù)據(jù)類型是否有錯(cuò)cout <<
12、”n地址輸入錯(cuò)誤,請(qǐng)重新輸入:”;cin.clear(); /清除錯(cuò)誤狀態(tài)cin。get(); /重輸else break; /輸入正確則跳出循環(huán)cout<<”請(qǐng)輸入電話號(hào)碼: "; /設(shè)置電話號(hào)碼while(1)cintel; /輸入電話號(hào)碼if (cin。fail()) /判斷輸入的數(shù)據(jù)類型是否有錯(cuò)cout <<"n號(hào)碼輸入錯(cuò)誤,請(qǐng)重新輸入:"cin。clear(); /清除錯(cuò)誤狀態(tài)cin。get(); /重輸else break; /輸入正確則跳出循環(huán)cout<<”請(qǐng)輸入雜志單位: ”; /設(shè)置雜志單位while(1)ci
13、n>mage; /輸入雜志單位if (cin。fail()) /判斷輸入的數(shù)據(jù)類型是否有錯(cuò)cout <<”n雜志單位輸入錯(cuò)誤,請(qǐng)重新輸入:"cin.clear(); /清除錯(cuò)誤狀態(tài)cin。get(); /重輸else break; /輸入正確則跳出循環(huán)cout<"請(qǐng)輸入單價(jià): " /設(shè)置單價(jià)while(1)cin>>price; /輸入單價(jià)if (cin.fail() /判斷輸入的數(shù)據(jù)類型是否有錯(cuò)cout "n單價(jià)輸入錯(cuò)誤,請(qǐng)重新輸入:”;cin.clear(); /清除錯(cuò)誤狀態(tài)cin.get(); /重輸else b
14、reak; /輸入正確則跳出循環(huán)cout<”請(qǐng)輸入訂閱數(shù): ”; /設(shè)置訂閱數(shù)while(1)cinnum; /輸入訂閱數(shù)if (cin。fail() /判斷輸入的數(shù)據(jù)類型是否有錯(cuò)cout <”n訂閱數(shù)輸入錯(cuò)誤,請(qǐng)重新輸入:”;cin。clear(); /清除錯(cuò)誤狀態(tài)cin.get(); /重輸else break; /輸入正確則跳出循環(huán)cout<”請(qǐng)輸入訂閱限期(年 月): ”; /設(shè)置期限while(1)ciny>m; /輸入期限if (cin.fail() /判斷輸入的數(shù)據(jù)類型是否有錯(cuò)cout <”n訂閱限期輸入錯(cuò)誤,請(qǐng)重新輸入:";cin.cle
15、ar(); /清除錯(cuò)誤狀態(tài)cin。get(); /重輸else break; /輸入正確則跳出循環(huán)/888888888888888888888888888888888888888888888888888888888888888888888888888*/void Order_infor:input(ifstream & infile) /帶參錄入函數(shù)向鏈表輸入 infile>name>sexaddr>tel>>magepricenum>ym; /輸入至鏈表/*8888888888888888888888888888888888888888888888
16、88888888888888888888888888888*/void Order_infor:output() /信息輸出函數(shù)向顯示屏輸出cout<setw(8)<namesetw(4)sex<setw(10)<<addr<<setw(13)<<tel<<setw(10)mage<setw(6)<pricesetw(4)<<num<setw(2)<<y<<”/"<m<<endl; /*8888888888888888888888888888888
17、88888888888888888888888888888888888888888888/void Order_infor:output(ofstream & outfile) /向文件輸出信息 outfilesetw(10)<name /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 <<endl
18、;/888888888888888888888888888888888888888888888888888888888888888888888888888*/bool Order_infor:comp(int y,int m) /判斷是否超期if(yeary|(year=y&monthm))/先比較年,若一樣則比較月return true; /比較當(dāng)前時(shí)間與限期,獲得訂閱的當(dāng)前狀況,返回表示訂閱超期elsereturn false; /返回表示訂閱未超期/888888888888888888888888888888888888888888888888888888888888888888
19、888888888*/void Order_infor:order() /向鏈表尾部錄入訂閱信息 system("cls”); /清屏 Order_infor *p1,p2=NULL; /定義對(duì)象指針p1=head; /將頭指針賦給p1int n=1; /定義循環(huán)控制變量while(p1next) /當(dāng)頭結(jié)點(diǎn)后有數(shù)據(jù)時(shí)執(zhí)行循環(huán),頭結(jié)點(diǎn)為空也不會(huì)執(zhí)行循環(huán)p1=p1>next; /使p能夠指向未存放數(shù)據(jù)的內(nèi)存,錄入信息會(huì)存放在所有信息之后while(n) /此循環(huán)執(zhí)行在鏈表尾部插入錄入的信息 /通過循環(huán)不斷開辟新空間錄入新的數(shù)據(jù)p2=new Order_infor; /開辟存儲(chǔ)空間
20、,返回地址給p2p2input(); /調(diào)用錄入函數(shù),為p2所指結(jié)點(diǎn)數(shù)據(jù)賦值p1->next=p2; /p1的next指向新開辟空間,連接了p1和p2p2next=NULL; /p2的next變?yōu)榭罩羔榩1=p1-next; /p1指向新開辟的空間,p1緊隨p2之后 Order_infor::setg(1); /標(biāo)記為修改cout<"ttt按1繼續(xù),按0返回: "; /控制變量控制循環(huán)cin>n; /輸入n/*88888888888888888888888888888888888888888888888888888888888888888888888888
21、8/void Order_infor:show()system(”cls"); /清屏cout。setf(ios::left);cout<”訂閱基本信息如下:”<endl /顯示所有訂閱信息<setw(8)<"姓名"setw(8)<”性別”setw(8)”地址"<setw(13)”電話"<setw(8)"單位"<setw(8)<”單價(jià)"<<setw(8)<<”定閱數(shù)"<setw(8)”期限"endl;Order_
22、infor p; /定義訂閱信息類對(duì)象指針p=head; /指向鏈表頭部,啟用鏈表信息while(p->next) /只要下一結(jié)點(diǎn)不為空則執(zhí)行循環(huán) /此循環(huán)功能在于輸出所有訂閱信息p=p-next; /P指向下一節(jié)點(diǎn) coutsetw(8)<<p-name<setw(8)<<p->sex<setw(8)p->addrsetw(13)<p->tel<setw(8)pmage<setw(8)<p->price<setw(8)<p-num<<setw(4)p>y<”/”<
23、;p->m<endl; /調(diào)用next所指對(duì)象的輸出信息函數(shù),頭結(jié)點(diǎn)未存放數(shù)據(jù)只是初始化了next/888888888888888888888888888888888888888888888888888888888888888888888888888/void Order_infor::found() system(”cls”); /清屏string n; /定義輔助變量cout"輸入姓名: " /輸出提示信息cin>>n; /輸入選擇if(!find(n) /調(diào)用find函數(shù)查找cout<"tt找不到你要查找的內(nèi)容!"&l
24、t;endl; /找不到的話輸出相應(yīng)提示信息return; /函數(shù)調(diào)用結(jié)束/*888888888888888888888888888888888888888888888888888888888888888888888888888*/Order_infor Order_infor:find(string n)system("cls"); /清屏Order_infor p; /定義輔助指針p=head; /指向鏈表頭結(jié)點(diǎn)while(p->next) /當(dāng)鏈表未至尾部時(shí)執(zhí)行循環(huán)if( (pnext)-getname()=n ) /班次匹配上則輸出所查到的訂閱信息cout。s
25、etf(ios::left);cout”訂閱基本信息如下:"<endl /輸出信息 "姓名 性別 地址 電話 單位 單價(jià) 定閱數(shù) 期限”<endl; (p>next)->output(); /調(diào)用輸出函數(shù)return p; /表示找到,返回的是目標(biāo)結(jié)點(diǎn)的前一結(jié)點(diǎn)p=p->next; /指向下一節(jié)點(diǎn)return NULL;/*888888888888888888888888888888888888888888888888888888888888888888888888888*/void Order_infor::mend() /修改函數(shù) syst
26、em(”cls”); /清屏Order_infor *p; /定義信息類指針變量string n;cout<”ttt輸入姓名方便查找: "; /輸出提示信息cin>n;p=find(n); /調(diào)用查找函數(shù)if(!p) /判斷是否找到cout<”tt找不到你要修改的內(nèi)容!請(qǐng)利用程序查詢功能確認(rèn)!”<<endl; /輸出提示信息return; /函數(shù)調(diào)用結(jié)束(pnext)>input(); /調(diào)用錄入函數(shù)對(duì)目標(biāo)結(jié)點(diǎn)數(shù)據(jù)再錄入 Order_infor:setg(1);/8888888888888888888888888888888888888888888
27、88888888888888888888888888888888/void Order_infor::del_select()cout<"請(qǐng)選擇刪除選項(xiàng):"endl;cout"1。刪除過期用戶;2。刪除指定用戶"<<endl;int c;cin>c;switch(c)case 1:d。del2();break;case 2:d。del1();break;default:cout"輸入錯(cuò)誤!”;/*888888888888888888888888888888888888888888888888888888888888888
28、888888888888*/void Order_infor:del1() /刪除車輛信息函數(shù) system(”cls”); /清屏Order_infor *p1,p2,p3; /定義兩對(duì)象指針用于鏈表操作string n; cout<<”ttt輸入姓名: "; /輸出提示信息cinn;p1=find(n); /調(diào)用查找函數(shù)if(!p1) /判斷函數(shù)返回值是否為NULL cout<”tt找不到你要?jiǎng)h除的內(nèi)容!"<endl; /輸出沒找到的提示return; /函數(shù)調(diào)用結(jié)束cout"nttt確定刪除(y/n)?"; /顯示將要?jiǎng)h除數(shù)
29、據(jù)信息供用戶核對(duì)char a;cin>a; /輸入指示if(a=ya='Y') /因?yàn)轭^結(jié)點(diǎn)為空僅有next域所以只要考慮被刪結(jié)點(diǎn)是中間結(jié)點(diǎn)和尾結(jié)點(diǎn)情況if(p1->next)->next=NULL) /目標(biāo)結(jié)點(diǎn)為尾結(jié)點(diǎn)時(shí) p2=p1->next; /p2指向目標(biāo)結(jié)點(diǎn)p1-next=NULL; /p1連接目標(biāo)結(jié)點(diǎn)的next域重新賦值為空指針delete p2; /釋放目標(biāo)空間else /目標(biāo)結(jié)點(diǎn)為中間節(jié)點(diǎn)時(shí)p2=p1-next; /p2指向目標(biāo)結(jié)點(diǎn)p3=(p1->next)->next; /p3指向目標(biāo)結(jié)點(diǎn)下一結(jié)點(diǎn) p1-next=p3; /
30、連接目標(biāo)結(jié)點(diǎn)前后結(jié)點(diǎn)delete p2; /釋放目標(biāo)結(jié)點(diǎn)Order_infor::setg(1); /標(biāo)記為修改/*888888888888888888888888888888888888888888888888888888888888888888888888888/void Order_infor:del2() system(”cls”); /清屏Order_infor p1,p2,p3; /定義兩對(duì)象指針用于鏈表操作int n;char c; p1=head;while(p1-next)n=p(p1-next)>y,(p1->next)-m);if(n) system(&quo
31、t;cls”);cout<"訂閱基本信息如下:"<<endl /輸出信息 << "姓名 性別 地址 電話 單位 單價(jià) 定閱數(shù) 期限"<<endl;(p1>next)>output(); cout”是否刪除(y/n)”; cinc;if(c='y'|c=Y) /因?yàn)轭^結(jié)點(diǎn)為空僅有next域所以只要考慮被刪結(jié)點(diǎn)是中間結(jié)點(diǎn)和尾結(jié)點(diǎn)情況 if((p1>next)>next=NULL) /目標(biāo)結(jié)點(diǎn)為尾結(jié)點(diǎn)時(shí) p2=p1>next; /p2指向目標(biāo)結(jié)點(diǎn) p1>next=NU
32、LL; /p1連接目標(biāo)結(jié)點(diǎn)的next域重新賦值為空指針 delete p2; /釋放目標(biāo)空間return; else /目標(biāo)結(jié)點(diǎn)為中間節(jié)點(diǎn)時(shí) p2=p1-next; /p2指向目標(biāo)結(jié)點(diǎn) p3=(p1->next)-next; /p3指向目標(biāo)結(jié)點(diǎn)下一結(jié)點(diǎn) p1next=p3; /連接目標(biāo)結(jié)點(diǎn)前后結(jié)點(diǎn) delete p2; /釋放目標(biāo)結(jié)點(diǎn) Order_infor:setg(1); /標(biāo)記為修改 p1=p1>next;/888888888888888888888888888888888888888888888888888888888888888888888888888/void Order_infor:statistic()Order_infor p;int n=0;int sum=0; p=head;cout<<"本期訂閱信息”<endl;cout<”用戶名 訂閱數(shù) 單價(jià) 全額"<<endl;while(p->next)cout<<(p-nex
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 司機(jī)擔(dān)保協(xié)議合同
- 零售連鎖店經(jīng)營(yíng)模式創(chuàng)新與數(shù)字化升級(jí)解決方案
- 園林綠化工程設(shè)計(jì)合同
- 匯流箱施工方案
- 委托物業(yè)管理電梯協(xié)議書
- 解決方案優(yōu)化提案書
- 個(gè)人民間借貸合同書
- 咨詢服務(wù)委托合同協(xié)議書
- 外墻保溫吊籃施工方案
- 特色廊架施工方案
- 直流充電樁培訓(xùn)
- 《小麻雀》(課件)西師大版音樂二年級(jí)上冊(cè)
- 《民航安全檢查(安檢技能實(shí)操)》課件-第七章 人身檢查
- GB/T 44768-2024配電網(wǎng)線損理論計(jì)算導(dǎo)則
- 危險(xiǎn)品車輛安全運(yùn)輸安全生產(chǎn)值班制度(3篇)
- 模塊一 銀河麒麟桌面操作系統(tǒng)
- 灼口綜合征中醫(yī)治療
- 光伏發(fā)電站項(xiàng)目安全技術(shù)交底資料
- DB11∕693-2017 建設(shè)工程臨建房屋技術(shù)標(biāo)準(zhǔn)
- GB/T 15822.2-2024無損檢測(cè)磁粉檢測(cè)第2部分:檢測(cè)介質(zhì)
- 一次性社保補(bǔ)償協(xié)議書范本
評(píng)論
0/150
提交評(píng)論