版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、C+雜志訂閱管理系統(tǒng)作者: 日期:#include #include #include #include #include using namespace std; int year,month;/數(shù)據(jù)流輸入輸出 /字符串操作 /文件輸入輸出 /時間庫函數(shù) /輸入輸出格式符 /命名空間/*888888888888888888888888888888888888888888888888888888888888888888888888888*/class Order_inforstring name;/用戶姓名string sex;/用戶性別string addr;/用戶地址string tel;
2、/用戶號碼string mage;/雜志單位float price;/雜志單價int num;/訂閱數(shù)目int y,m;/訂閱限期int g;public:Order_infor* head;Order_infor* next;void input();void input(ifstream & infile); void output();void output(ofstream & outfile); float getprice();int getnum();int getyear();int getmonth();string getname();void order();void m
3、end();void del_select();void del1();void del2();void found(); Order_infor*find(string n);bool find(int y,int m);void statistic();void show();bool comp(int y,int m); 狀況函數(shù)/信息類頭指針/ 信息類 next 域/錄入函數(shù)/讀取函數(shù)/輸出函數(shù)/寫入函數(shù)/獲取期限時間函數(shù)/錄入信息/修改信息/刪除信息/顯示信息/判斷當前訂閱/保存信息/初始信息/清除函數(shù)/設置系統(tǒng)修改標志/返回系統(tǒng)修改void save();void begin();
4、void clear();void setg(int k) g=k; int getg() return g; 標志d;/*888888888888888888888888888888888888888888888888888888888888888888888888888*/ float Order_infor:getprice()return price;int Order_infor:getnum()return num;int Order_infor:getyear()return y;int Order_infor:getmonth()return m;string Order_in
5、for:getname()return name;/*888888888888888888888888888888888888888888888888888888888888888888888888*/ class Menupublic:void about();/關于void mainmenu();/主菜單函數(shù)bool land();/管理員登陸;/*888888888888888888888888888888888888888888888888888888888888888888888888*/ void Menu:about()cout endl t1.endlt2.endlt3.end
6、lt4.endl;cout endl; /*88888888888888888888888888888888888888888888888888888888888888888888888888*/bool Menu:land()Menu b;b.about();string s;int i=0;cout 請輸入管理員密碼: s;if(s=123456)return true;elsecout=3)break;cout輸入錯誤三次!系統(tǒng)自動退出! system(pause);return false;/定義菜單類對象/輸出系統(tǒng)說明/ 計數(shù)變量/輸出提示信息/輸入正確/返回正確/輸錯了/輸出提示信
7、息/計數(shù)變量自加 /連輸三次錯誤 /跳出循環(huán)endl;/提示將退出登錄/ 顯示暫停/返回錯誤/*888888888888888888888888888888888888888888888888888888888888888888888888888*/void Menu:mainmenu()system(cls);string s;coutendl;cout歡迎使用雜志訂閱管理軟件endl;cout*endl;couttt0. 退出程序 couttt1. 增加新訂戶 couttt2. 刪除用戶 couttt3. 統(tǒng)計本期雜志訂戶數(shù) cout 請輸入功能按鈕: ;4. 瀏覽訂閱用戶 endl;5.
8、 查找用戶信息 endl;6. 修改用戶信息 endl;7. 保存信息 s;switch(s0) case1:d.order();break;case2:d.del_select();break;case3:d.statistic();break;case4:d.show();break;case5:d.found();break;case6:d.mend();break;case7:d.save();break;default:return;/*88888888888888888888888888888888888888888888888888888888888888888888888888
9、8*/void Order_infor:input()coutname;if (cin.fail()cout n 姓名輸入錯誤cin.clear();cin.get();else break;coutsex;if (cin.fail()cout n 性別輸入錯誤 cin.clear();cin.get();else break;coutaddr;/輸入地址if (cin.fail()/判斷輸入的數(shù)據(jù)類型是否有錯cout n 地址輸入錯誤 ,請重新輸入 :;cin.clear();cin.get();else break;couttel;if (cin.fail()/清除錯誤狀態(tài)/重輸/輸入正確
10、則跳出循環(huán)/設置電話號碼/輸入電話號碼/判斷輸入的數(shù)據(jù)類型是否有錯cout n 號碼輸入錯誤 ,請重新輸入cin.clear();cin.get();else break; coutmage; if (cin.fail() cout price;if (cin.fail()cout n 單價輸入錯誤cin.clear();cin.get();else break;/設置單價cout 請輸入單價 : /輸入單價/判斷輸入的數(shù)據(jù)類型是否有錯,請重新輸入 :;/清除錯誤狀態(tài)/重輸/輸入正確則跳出循環(huán)coutnum;if (cin.fail()cout n 訂閱數(shù)輸入錯誤 cin.clear();ci
11、n.get();else break;/輸入訂閱數(shù)/判斷輸入的數(shù)據(jù)類型是否有錯,請重新輸入 :;/清除錯誤狀態(tài)/重輸 co wh/輸入正確則跳出循環(huán)utym;if (cin.fail()cout namesexaddrtelmagepricenumym;/輸入至鏈表 /*888888888888888888888888888888888888888888888888888888888888888888888888888*/ void Order_infor:output() /信息輸出函數(shù)向顯示屏輸出 coutsetw(8)namesetw(4)sexsetw(10)addrsetw(13)t
12、elsetw(10)mag esetw(6)pricesetw(4)numsetw(2)y/mendl; /*888888888888888888888888888888888888888888888888888888888888888888888888888*/ void Order_infor:output(ofstream & outfile)/向文件輸出信息 outfilesetw(10)name /setw() 設置輸出寬度 setw(10)sex8setw(10)addrsetw(12)telsetw(10)magesetw(10)pricesetw(10)numsetw(10)y
13、setw(10)my|(year=y&monthm)/ 先比較年,若一樣則比較月 return true;/比較當前時間與限期 ,獲得訂閱的當前狀況返回表示訂閱超期elsereturn false;/返回表示訂閱未超期/*888888888888888888888888888888888888888888888888888888888888888888888888888*/ void Order_infor:order() / 向鏈表尾部錄 入訂閱信息system(cls);/清屏Order_infor *p1,*p2=NULL;/ 定義對象指針p1=head;/將頭指針賦給 p1int n=
14、1;/ 定義循環(huán)控制變量while(p1-next)/ 當頭結(jié)點后有數(shù)據(jù)時執(zhí)行循環(huán),頭結(jié)點為空也不會執(zhí)行循環(huán)p1=p1-next;/使 p 能夠指向未存放數(shù)據(jù)的內(nèi)存 ,錄入信息會存放在所有信息之后while(n)/ 此循環(huán)執(zhí)行在鏈表尾部插入錄入的信息/ 通過循環(huán)不斷開辟新空間錄入新的數(shù)據(jù)p2=new Order_infor;/ 開辟存儲空間,返回地址給 p2p2-input();/調(diào)用錄入函數(shù) ,為 p2 所指結(jié)點數(shù)據(jù)賦值/p2 的 nextp1-next=p2; /p1 的 next 指 向新開辟空間,連接了 p1 和 p2p2-next=NULL;/p1 指向新開/標記為修/控制變量控制/
15、輸入 n變?yōu)榭罩羔榩1=p1-next;辟的空間, p1 緊隨 p2 之后Order_infor:setg(1);改coutn;/*888888888888888888888888888888888888888888888888888888888888888888888888888*/ void Order_infor:show()system(cls); /清屏/ 顯示所有訂閱/定義訂閱信/指向鏈表頭/只要下一結(jié)點/此循環(huán)功能 /P 指向下一節(jié)cout.setf(ios:left);cout 訂閱基本信息如下 :endl信息setw(8) 姓名 setw(8) 性別 setw(8) 地址 s
16、etw(13) 電話setw(8) 單位setw(8) 單價 setw(8) 定閱數(shù) setw(8) 期限 next)不為空則執(zhí)行循環(huán)在于輸出所有訂閱信息p=p-next;coutsetw(8)namesetw(8)sexsetw(8)addrsetw(13)telsetw(8)magesetw(8)pricesetw(8)numsetw( 4)y/mendl; / 調(diào)用 next 所指對象的輸出信息函數(shù),頭結(jié)點未存放數(shù)據(jù)只是初始化了 next/*88888888888888888888888888888888888888888888888888888888888888888888888888
17、8*/ void Order_infor:found()system(cls);/ 清屏string n;/定義輔助變量/輸出提示信coutn; if(!find(n)/ 輸入選擇/ 調(diào)用 find 函數(shù)查找/找不到的話輸couttt 找不到你要查找的內(nèi)容 !next) 部時執(zhí)行循環(huán)if( (p-next)-getname()=n ) 到的訂閱信息cout.setf(ios:left);cout 訂閱基本信息如下 :endl 姓名性別 地址next)-output();數(shù)return p; 返回的是目標結(jié)點的前一結(jié)點 p=p-next;節(jié)點/班次匹配上則輸出所查/輸出信息 電話 單位 單價 定
18、閱數(shù) 期限/調(diào)用輸出函/表示找到,/指向下一return NULL;/*888888888888888888888888888888888888888888888888888888888888888888888888888*/ void Order_infor:mend()/修改函數(shù)system(cls);/清屏11Order_infor *p; string n;coutn; p=find(n); if(!p) coutnext)-input(); 據(jù)再錄入Order_infor:setg(1);/調(diào)用查找函數(shù)/判斷是否找到請利用程序查詢功能確認! endl; /函數(shù)調(diào)用結(jié)束/調(diào)用錄入函數(shù)對
19、目標結(jié)點數(shù)/*888888888888888888888888888888888888888888888888888888888888888888888888888*/ void Order_infor:del_select()cout 請選擇刪除選項 :endl;cout1. 刪除過期用戶; 2.刪除指定用戶 c;switch(c)case 1:d.del2();break;case 2:d.del1();break;default:cout 輸入錯誤! ;/*888888888888888888888888888888888888888888888888888888888888888888
20、888888888*/ void Order_infor:del1()函數(shù)system(cls);Order_infor *p1,*p2,*p3;指針用于鏈表操作string n;coutn;p1=find(n);數(shù)if(!p1)回值是否為 NULL/刪除車輛信息/清屏/定義兩對象/輸出提示信息/調(diào)用查找函/判斷函數(shù)返12couttt 找不到你要刪除的內(nèi)容 !endl;提示return;束 couta; if(a=y|a=Y)為空僅有 next 域所以只要考慮被刪結(jié)點是中間結(jié)點和尾結(jié)點情況 if(p1-next)-next=NULL)結(jié)點時 p2=p1-next;結(jié)點 p1-next=NULL
21、;標結(jié)點的 next 域重新賦值為空指針 delete p2; else 中間節(jié)點時p2=p1-next;結(jié)點p3=(p1-next)-next;點下一結(jié)點p1-next=p3;點前后結(jié)點delete p2; Order_infor:setg(1);/輸出沒找到的/函數(shù)調(diào)用結(jié)/顯示將要刪除數(shù)/輸入指示/ 因為頭結(jié)點/目標結(jié)點為尾/p2 指向目標/p1 連接目/釋放目標空間/ 目標結(jié)點為/p2 指向目標/p3 指向目標結(jié)/ 連接目標結(jié)/釋放目標結(jié)點/標記為修改/*8888888888888888888888888888888888888888888888888888888888888888888
22、88888888*/ void Order_infor:del2()system(cls);Order_infor *p1,*p2,*p3; 于鏈表操作/清屏/定義兩對象指針用int n; char c;13p1=head;while(p1-next) n=p(p1-next)-y,(p1-next)-m); if(n)system(cls); cout 訂閱基本信息如下 :endl 姓名性別 地址 電話 單位/輸出信息單價 定閱數(shù) 期限next)-output(); coutc;if(c=y|c=Y)為空僅有 next 域所以只要考慮被刪結(jié)點是中間結(jié)點和尾結(jié)點情況if(p1-next)-ne
23、xt=NULL) 目標結(jié)點為尾結(jié)點時/ 因為頭結(jié)點/ p2=p1-next;/p2 指向目標結(jié)點 p1-next=NULL;/p1 連接目標結(jié)點的 next 域重新賦值為空指針 delete p2; 釋放目標空間/return;else 時p2=p1-next;/p2 指向目標結(jié)點p3=(p1-next)-next;/p3 指向目標結(jié)點下一結(jié)點 p1-next=p3;/連接目標結(jié)點前后結(jié)點delete p2; 釋放目標結(jié)點 Order_infor:setg(1); 標記為修改14/目標結(jié)點為中間節(jié)點/ p1=p1-next;/*888888888888888888888888888888888888888888888888888888888888888888888888888*/ void Order_infor:statistic()Order_infor *p;int n=0;int sum=0;p=head;cout 本期訂閱信息 endl;cout用戶名 訂閱數(shù) 單價 全額 next) coutnext)-getname()tnext)-getnum() tnext)-getprice()t next)-getnum()*(p-next
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度高端住宅項目分銷渠道合作協(xié)議3篇
- 二零二五版市政道路砍割樁施工項目合同2篇
- 2025年度生態(tài)農(nóng)業(yè)餐飲食材配送框架協(xié)議3篇
- 梧州職業(yè)學院《推拿學》2023-2024學年第一學期期末試卷
- 2024版醫(yī)療機構餐飲服務合作協(xié)議版B版
- 二零二五版醫(yī)療設備檢驗試劑配套供應協(xié)議2篇
- 2024版行政人員合同
- 二零二五版單位食堂餐飲服務設施升級改造合同3篇
- 2024版廣告設計與發(fā)布合同
- 太湖創(chuàng)意職業(yè)技術學院《輕化工程專業(yè)發(fā)展概論》2023-2024學年第一學期期末試卷
- 2024年醫(yī)師定期考核臨床業(yè)務知識考試題庫及答案(共三套)
- 2014新PEP小學英語六年級上冊-Unit5-What-does-he-do復習課件
- 建筑材料供應鏈管理服務合同
- 孩子改名字父母一方委托書
- 2024-2025學年人教版初中物理九年級全一冊《電與磁》單元測試卷(原卷版)
- 江蘇單招英語考綱詞匯
- 2024年事業(yè)單位財務工作計劃例文(6篇)
- 2024年工程咨詢服務承諾書
- 青桔單車保險合同條例
- 車輛使用不過戶免責協(xié)議書范文范本
- 2023-2024學年天津市部分區(qū)九年級(上)期末物理試卷
評論
0/150
提交評論