C++雜志訂閱管理系統_第1頁
C++雜志訂閱管理系統_第2頁
C++雜志訂閱管理系統_第3頁
C++雜志訂閱管理系統_第4頁
已閱讀5頁,還剩7頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、#include/數據流輸入輸出#include/ 字符串操作#include/ 文件輸入輸出#include/ 時間庫函數#include/ 輸入輸出格式符usingnamespacestd;/ 命名空間intyear,month;classOrder_inforstringname;/用戶姓名stringsex;/用戶性別stringaddr;/用戶地址stringtel;/用戶號碼stringmage;/雜志單位floatprice;/雜志單價intnum;/訂閱數目inty,m;/訂閱限期intg;public:Order_infor*head;/信息類頭指針Order_infor*n

2、ext;/信息類 next 域voidinput();/ 錄入函數voidinput(ifstream&infile);/ 讀取函數voidoutput();/輸出函數voidoutput(ofstream&outfile);/ 寫入函數floatgetprice();intgetnum();intgetyear();/ 獲取期限時間函數intgetmonth();stringgetname();voidorder();/ 錄入信息voidmend();/ 修改信息voiddel_select();voiddel1();/刪除信息voiddel2();voidfound();Order_inf

3、or*find(stringn);boolfind(inty,intm);voidstatistic();voidshow();/ 顯示信息boolcomp(inty,intm);/ 判斷當前訂閱狀況函數voidsave();/保存信息voidbegin();/初始信息voidclear(); voidsetg(intk)g=k;/ 清除函數/ 設置系統修改標志intgetg()returng;/ 返回系統修改標志d;floatOrder_infor:getprice()returnprice;intOrder_infor:getnum()returnnum;intOrder_infor:ge

4、tyear()returny;intOrder_infor:getmonth()returnm;stringOrder_infor:getname()returnname;classMenupublic:voidabout();/ 關于voidmainmenu();/ 主菜單函數boolland();/管理員登陸;voidMenu:about()cout endlt1.endlt2.endlt3.endlt4.endl;cout endl;boolMenu:land()Menub;/ 定義菜單類對象b.about();/輸出系統說明strings;inti=0;/計數變量cout 請輸入管理員

5、密碼: s;if(s=123456)/輸入正確returntrue;/返回正確else/輸錯了cout=3)/連輸三次錯誤break;/跳出循環cout 輸入錯誤三次!系統自動退出!endl;/提示將退出登錄system(pause);/顯示暫停returnfalse;/返回錯誤voidMenu:mainmenu()system(cls);strings;cout*endl;cout 歡迎使用雜志訂閱管理軟件 endl; cout*endl;couttt0.退出程序 4.瀏覽訂閱用戶 endl;couttt1.增加新訂戶5. 查找用戶信息 endl;couttt2.刪除用戶 6.修改用戶信息

6、endl;couttt3.統計本期雜志訂戶數 7. 保存信息 endl;couts;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;voidOrder_infor:input()coutname;/輸入姓名if(cin.fail()/ 判斷輸入的數據類型是否有錯coutn姓名輸

7、入錯誤 , 請重新輸入 :;cin.clear();/清除錯誤狀態cin.get();/ 重輸elsebreak;/輸入正確則跳出循環coutsex;/輸入性別if(cin.fail()/ 判斷輸入的數據類型是否有錯coutn性別輸入錯誤 , 請重新輸入 :;cin.clear();/清除錯誤狀態cin.get();/ 重輸elsebreak;/輸入正確則跳出循環coutaddr;/輸入地址if(cin.fail()/ 判斷輸入的數據類型是否有錯coutn地址輸入錯誤 , 請重新輸入 :;cin.clear();/清除錯誤狀態cin.get();/ 重輸elsebreak;/輸入正確則跳出循環

8、couttel;/輸入電話號碼if(cin.fail()/ 判斷輸入的數據類型是否有錯coutn號碼輸入錯誤 , 請重新輸入 :;cin.clear();/cin.get();清除錯誤狀態/ 重輸elsebreak;/輸入正確則跳出循環coutmage;/ 輸入雜志單位if(cin.fail()/ 判斷輸入的數據類型是否有錯coutn雜志單位輸入錯誤cin.clear();/清除錯誤狀態cin.get();/ 重輸, 請重新輸入:;elsebreak;/輸入正確則跳出循環coutprice;/輸入單價if(cin.fail()/ 判斷輸入的數據類型是否有錯coutn單價輸入錯誤 , 請重新輸入

9、 :;cin.clear();/清除錯誤狀態cin.get();/ 重輸elsebreak;/輸入正確則跳出循環coutnum;/輸入訂閱數if(cin.fail()/ 判斷輸入的數據類型是否有錯coutn訂閱數輸入錯誤 , 請重新輸入 :;cin.clear();/清除錯誤狀態cin.get();/ 重輸elsebreak;/輸入正確則跳出循環coutym;/ 輸入期限if(cin.fail()/ 判斷輸入的數據類型是否有錯coutnamesexaddrtelmagepricenumym;/輸入至鏈表voidOrder_infor:output()/信息輸出函數向顯示屏輸出coutsetw(

10、8)namesetw(4)sexsetw(10)addrsetw(13)telsetw(10) magesetw(6)pricesetw(4)numsetw(2)y/mendl; voidOrder_infor:output(ofstream&outfile)/向文件輸出信息outfilesetw(10)name/setw()設置輸出寬度setw(10)sexsetw(10)addrsetw(12)telsetw(10)magesetw(10)pricesetw(10)numsetw(10)ysetw(10)my|(year=y&monthm)/先比較年,若一樣則比較月returntrue;/

11、比較當前時間與限期 , 獲得訂閱的當前狀況 , 返回表示訂閱超期elsereturnfalse;/ 返回表示訂閱未超期voidOrder_infor:order()/向鏈表尾部錄入訂閱信息system(cls);/清屏Order_infor*p1,*p2=NULL;/定義對象指針p1=head;/ 將頭指針賦給p1intn=1;/定義循環控制變量while(p1-next)/ 當頭結點后有數據時執行循環,頭結點為空也不會執行循環 p1=p1-next;/ 使 p 能夠指向未存放數據的內存 , 錄入信息會存放在所有信息之后while(n)/此循環執行在鏈表尾部插入錄入的信息/ 通過循環不斷開辟新

12、空間錄入新的數據p2=newOrder_infor;/開辟存儲空間,返回地址給p2p2-input();/調用錄入函數 , 為 p2 所指結點數據賦值p1-next=p2;/p1的 next 指向新開辟空間,連接了p1 和 p2p2-next=NULL;/p2的next變為空指針p1=p1-next;/p1指向新開辟的空間,Order_infor:setg(1);/標記為修改coutn;/輸入nvoidOrder_infor:show()system(cls);/清屏cout.setf(ios:left);cout 訂閱基本信息如下 :endl/ 顯示所有訂閱信息 setw(8) 姓名 set

13、w(8) 性別 setw(8) 地址 setw(13) 電話 setw(8) 單位 setw(8) 單價 setw(8) 定閱數 setw(8) 期限 next)/ 只要下一結點不為空則執行循環/ 此循環功能在于輸出所有訂閱信息p=p-next;/P指向下一節點coutsetw(8)namesetw(8)sexsetw(8)addrsetw(13)telsetw(8)magesetw(8)pricesetw(8)num setw(4)y/mendl;/ 調用 next 所指對象的輸出信息函數,頭結點未存放數據只是初始化了nextvoidOrder_infor:found()system(cls

14、);/清屏stringn;/定義輔助變量coutn;/輸入選擇if(!find(n)/調用輸出提示信息find函數查找coutttreturn;/找不到你要查找的內容函數調用結束!next)/當鏈表未至尾部時執行循環if(p-next)-getname()=n)/班次匹配上則輸出所查到的訂閱信息cout.setf(ios:left);cout 訂閱基本信息如下 :endl/輸出信息姓名性別地址電話單位單價定閱數期限next)-output();/調用輸出函數returnp;/表示找到,返回的是目標結點的前一結點p=p-next;/指向下一節點returnNULL;voidOrder_infor

15、:mend()/修改函數system(cls);/清屏Order_infor*p;/定義信息類指針變量stringn;coutn;p=find(n);/調用查找函數輸出提示信息if(!p)/判斷是否找到couttt找不到你要修改的內容!請利用程序查詢功能確認!next)-input();/ 調用錄入函數對目標結點數據再錄入 Order_infor:setg(1);voidOrder_infor:del_select()cout 請選擇刪除選項 :endl;cout1. 刪除過期用戶; 2. 刪除指定用戶 c;switch(c)case1:d.del2();break;case2:d.del1(

16、);break;default:cout輸入錯誤! ;voidOrder_infor:del1()/刪除車輛信息函數system(cls);/清屏Order_infor*p1,*p2,*p3;/stringn;coutn;p1=find(n);/調用查找函數定義兩對象指針用于鏈表操作輸出提示信息if(!p1)/判斷函數返回值是否為NULLcoutttreturn;/找不到你要刪除的內容函數調用結束!endl;/輸出沒找到的提示couta;/輸入指示顯示將要刪除數據信息供用戶核對if(a=y|a=Y)/ 因為頭結點為空僅有next 域所以只要考慮被刪結點是中間結點和尾結點情況if(p1-next

17、)-next=NULL)/目標結點為尾結點時p2=p1-next;/p2 指向目標結點 p1-next=NULL;/p1 連接目標結點的 next 域重新賦值為空指針 deletep2;/ 釋放目標空間else/ 目標結點為中間節點時p2=p1-next;/p2指向目標結點p3=(p1-next)-next;/p3 指向目標結點下一結點 p1-next=p3;/ 連接目標結點前后結點 deletep2;/ 釋放目標結點Order_infor:setg(1);/標記為修改voidOrder_infor:del2()system(cls);/清屏Order_infor*p1,*p2,*p3;/ 定

18、義兩對象指針用于鏈表操作 intn;charc;p1=head;while(p1-next)n=p(p1-next)-y,(p1-next)-m);if(n)system(cls);cout 訂閱基本信息如下 :endl/ 輸出信息姓名性別地址電話單位單價定閱數期限 next)-output();coutc;if(c=y|c=Y)/ 因為頭結點為空僅有next 域所以只要考慮被刪結點是中間結點和尾結點情況if(p1-next)-next=NULL)/目標結點為尾結點時p2=p1-next;/p2指向目標結點p1-next=NULL;/p1 連接目標結點的 next 域重新賦值為空指針 dele

19、tep2;/ 釋放目標空間return;else/ 目標結點為中間節點時p2=p1-next;/p2指向目標結點p3=(p1-next)-next;/p3 指向目標結點下一結點 p1-next=p3;/ 連接目標結點前后結點 deletep2;/ 釋放目標結點Order_infor:setg(1);/標記為修改p1=p1-next;voidOrder_infor:statistic()Order_infor*p;intn=0;intsum=0;p=head;cout 本期訂閱信息 endl;cout 用戶名訂閱數單價全額 next)coutnext)-getname()tnext)-getnum() tnext)-getprice(

溫馨提示

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

評論

0/150

提交評論