音像店出租管理系統_第1頁
音像店出租管理系統_第2頁
音像店出租管理系統_第3頁
音像店出租管理系統_第4頁
音像店出租管理系統_第5頁
已閱讀5頁,還剩19頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、中國農業大學 C+課程設計報告 (20102011 學年春季學期)題 目:音像出租店管理系統學生姓名:學 號:專業班級:指導教師: 康麗 設計時間:2011-06-30目錄系統設計目標及意義、功能介紹-3系統的詳細設計思路-3系統流程圖、類關系UML圖、主要運行界面圖、運行結果圖-3系統設計、開發過程中遇到的問題-11課程設計心得體會-11源程序-11一、 系統設計目標及意義、功能介紹本題目要實現一個音像出租店管理系統,音像出租店一般要管理大量音像資料,傳統的手工記錄方式在查詢和統計時煩瑣、單調、工作量大;本系統可以提高音像出租店的管理工作效率。功能:(1)租借音像光盤。(2)歸還音像光盤。(

2、3)音像光盤管理、維護:引進新光盤、刪除光盤、按編號查詢光盤的詳細信息、修改光盤信息、輸出被租借光盤信息、輸出所有光盤列表等。(4)顧客管理、維護:新增顧客、更改顧客信息、按編號檢索顧客信息、查詢顧客租借光盤數量、刪除顧客信息、輸出顧客列表等。(5)系統界面采用菜單形式。二、 系統的詳細設計思路1、音像光盤類類屬性包括光盤的編號、名稱、是否借出、發行公司等,實現對光盤的信息描述。類成員函數包括提取光盤名稱、提取光盤編號、設置光盤名稱、增加新光盤、刪除光盤、修改光盤信息、租借光盤、歸還光盤、顯示光盤信息等。2、音像光盤庫類采用鏈表和文件保存所有光盤信息,以實現對光盤的入庫、租借、修改、查找、刪除

3、等操作。類屬性包括指向光盤類對象的指針、光盤類對象數組。類成員函數包括構造函數(從文件中讀出所有光盤信息)、析構函數(把所有光盤信息寫入文件)、光盤庫中引進新光盤、刪除指定光盤、刪除全部光盤、按編號查詢光盤的詳細信息、輸出所有光盤列表。3、顧客類類屬性包括顧客的編號、姓名、所借光盤編號、手機號、租借日期、歸還日期、租費、過期罰款(過期1 天,罰款1 角)等,實現對顧客的信息描述。類成員函數包括提取顧客姓名、提取顧客編號、設置顧客姓名、添加新顧客、刪除顧客信息、修改顧客信息、顧客租借光盤、顧客歸還光盤、顯示顧客信息等。4、顧客庫類采用鏈表和文件保存所有顧客信息,以實現對顧客的增加、檢索、刪除、輸

4、出等操作。類屬性包括指向顧客類對象的指針、顧客類對象數組。類成員函數包括構造函數(從文件中讀出所有顧客信息)、析構函數(把顧客信息寫入文件)、顧客庫中增加新顧客、按編號檢索顧客信息、刪除指定顧客、輸出所有顧客清單等。三、 系統流程圖、類關系UML圖、主要運行界面圖、運行結果圖主函數流程圖:開始創建管理對象顯示操作菜單根據輸入執行不同操作租借歸還光盤維護顧客維護離開其它函數流程圖:從文件中加載顧客信息RDatabase:RDatabase結束關閉文件插入顧客記錄指針文件讀取失敗或文件結束打開顧客數據文件開始YN將顧客信息寫入文件RDatabase:RDatabase()結束關閉文件寫入顧客信息顧

5、客記錄加1是否有此顧客?打開一個輸出文件開始NY從文件中加載光盤信息BDatabase:BDatabase結束關閉文件插入CD記錄指針文件讀取失敗或文件結束打開CD數據文件開始YN將CD信息寫入文件BDatabase:BDatabase()結束關閉文件寫入CD信息CD記錄加1是否有此CD?打開一個輸出文件開始NYUML圖Customer-tag:int-no:int-day1:int-day2:int-x:int-fee:int-money:int-name10:char-number11:char-btime20:char-rtime20:char-borcdMaxbor:int+Custo

6、mer()+*getname():char+*getbtime():char+*getrtime():char+getx():int+gettag():int+getday1():int+getday2():int+*getnumber():char+getfee():int+getmoney():int+getno():int+setname(na:char):void+setbtime(bt:char):void+setrtime(rt:char):void+setnumber(num:char):void+delcd():void+addcustomer(n:int,*na:char,*

7、num:char,*bt:char,*rt:char,x:int,day1:int,day2:int):void+borrowcd(cdid:int):void+retcd(cdid:int):int+disp():voidRDatabase-top:int-Customer readMaxr+RDatabase()+clear():void+addcustomer(n:int,*na:char,*num:char,*bt:char,*rt:char,x:int,day1:int,day2:int):int+Customer *query(customerid:int)+disp():void

8、+RDatabase()+customerdata():void+RDatabase:customerdata():voidCD-tag:int-no:int-name20:char-company50:char-onshelf:int+CD()+*getname():char+*getcompany():char+getno():int+gettag():int+setname(na:char):void+setcompany(com:char)void+delcd():void+addcd(n:int,*na:char,*com:char):void+borrowcd():int+retc

9、d():void+disp():voidBDatabase-top:int-CD cdMaxb+BDatabase()+clear():void+addcd(n:int,*na:char,*com:char):int+CD *query(cdid:int)+BDatabase()+cddata():void+disp():void+BDatabase:cddata():void主要運行界面圖:運行結果圖:四、 系統設計、開發過程中遇到的問題由于接觸C+只有一個學期,學的并不扎實,設計過程中有對教材案例某些語句不理解、基礎知識不能熟練應用等問題。1、 顧客類中的租費問題:由于前面定義時依據課本案

10、例將租借日期和歸還日期設為字符型數組,計算租費時沒辦法加減,只能再設置一個變量由外界輸入,再進行計算。2、 對鏈表的應用問題:對鏈表不熟悉,經過對課本、實驗教程等資源的臨時研究勉強編好使用。五、 課程設計心得體會通過這次課程設計,清楚的認識到自己的不足之處,也意識到C+是需要付出很大努力才能學好的。C+課程設計是教學實踐環節的一個重要階段, 是將課程內容與實際問題相聯接的關鍵步驟。通過課程設計,可以深入領會教材的抽象內容,鞏固已學習的C+語法知識,拓寬知識面,能夠提高獨立分析問題、解決問題的能力,提高綜合編程水平。在課程設計的過程中,除了對教材的學習以外,還與同學進行了討論,并上網搜了很多資料

11、,經過許多次補充修改終于完成,對C+有了系統而全新的認識。六、 源程序:#include #include #include #include /輸入/輸出文件流類#define PRICE 1using namespace std; const int Maxc=100;/顧客最大數量const int Maxg=100;/光盤最大數量const int Maxbor=5;/每人最多租五個class Customer /顧客類 private: int tag;/刪除標記:1已刪,0未刪 int no; /編號int day1;/租借天數int day2;/過期天數int x;/租借光盤數i

12、nt fee;/租借費用float money;/過期罰款char name10;/姓名char number11;/手機號char btime20;/租借時間char rtime20;/歸還時間int borcdMaxbor; /最大租借量public: Customer() char *getname() return name;char *getbtime()return btime; char *getrtime()return rtime;int getx()return x;int gettag() return tag;int getday1()return day1;int g

13、etday2()return day2;char *getnumber()return number;int getfee()return PRICE*x*day1; float getmoney()return 0.1*x*day2; int getno() return no; /獲取顧客信息:姓名、租借日期、歸還日期、手機號等void setname(char na) strcpy(name,na); void setbtime(char bt) strcpy(btime,bt); void setrtime(char rt) strcpy(rtime,rt); void setnumb

14、er(char num) strcpy(number,num); void delcd() tag=1; void addcustomer(int n,char *na,char *num,char *bt,char *rt,int x,int day1,int day2)/增加顧客信息 tag=0; no=n;fee=PRICE*x*day1; money=0.1*x*day2;strcpy(name,na);strcpy(number,num);strcpy(btime,bt);strcpy(rtime,rt);for(int i=0;iMaxbor;i+) borcdi=0; void

15、borrowcd(int cdid)/租借操作 for(int i=0;iMaxbor;i+) if (borcdi=0) borcdi=cdid; return; int retcd(int cdid)/歸還操作 for(int i=0;iMaxbor;i+) if(borcdi=cdid) borcdi=0; return 1; return 0; void disp()/輸出顧客信息 cout 顧客編號: no endl;cout 姓名: nameendl;cout手機號:numberendl;cout租借日期:btimeendl;cout歸還日期:rtimeendl;cout租費:fe

16、eendl;cout過期罰款:moneyendl; ; class RDatabase /顧客庫類 private: int top; /顧客記錄指針Customer readMaxc;/顧客記錄public: RDatabase() /構造函數,將customer.txt讀到customer中 Customer s; top=-1; fstream file(customer.txt,ios:in); /打開一個輸入文件while (1) file.read(char *)&s,sizeof(s); if (!file)break; top+; readtop=s; file.close()

17、; /關閉customer.txt void clear()/刪除所有顧客信息 top=-1; int addcustomer(int n,char *na,char *num,char *bt,char *rt,int xx,int d1,int d2)/添加顧客時先查找是否存在 Customer *p=query(n); if (p=NULL) top+; readtop.addcustomer(n,na,num,bt,rt,xx,d1,d2); return 1; return 0; Customer *query(int customerid)/按編號查找 for (int i=0;i

18、=top;i+) if (readi.getno()=customerid & readi.gettag()=0) return &readi; return NULL; void disp() /輸出所有顧客信息 for (int i=0;i=top;i+) readi.disp(); void customerdata();/顧客庫維護RDatabase()/析構函數,將customer寫到customer.txt文件中 fstream file(customer.txt,ios:out); for (int i=0;i=top;i+) if (readi.gettag()=0) file

19、.write(char *)&readi,sizeof(readi); file.close(); ; void RDatabase:customerdata() char choice; char rname20;char rbtime40;char rrtime40; char rnumber11;int customerid; int rx,rday1,rday2;Customer *r; while (choice!=0) cout nnttt顧 客 維 護nnntt 1 新 增nntt 2 更 改nntt 3 刪 除nntt 4 查 找nntt 5 顯 示nntt 6 全 刪nntt

20、 0 退 出 choice; switch (choice) case 1: cout customerid; cout rname; cout rnumber; cout rbtime;cout rrtime;cout rday1;cout rday2;cout rx;addcustomer (customerid,rname,rnumber,rbtime,rrtime,rx,rday1,rday2); break; case 2: cout customerid; r=query(customerid); if (r=NULL) cout 該顧客不存在 endl; break; cout

21、rname; r-setname(rname); break; case 3: cout customerid; r=query(customerid); if (r=NULL) cout 該顧客不存在 delcd(); break; case 4: cout customerid; r=query(customerid); if (r=NULL) cout 該顧客不存在disp(); break; case 5: disp(); break; case 6: clear(); break;case 0:cout轉到上層目錄;break; default:cout輸入錯誤,轉到上層目錄;bre

22、ak; class CD/光盤類 private: int tag;/刪除標記:1已刪,0未刪int no;/光盤編號char name20;/光盤名稱char company50;/發行公司int onshelf; /是否在架 1:在架 0:借出public: CD() char *getname() return name; char *getcompany() return company; int getno() return no; int gettag() return tag; int getonshelf()return onshelf;/獲取光盤信息void setname(

23、char na) /添加名稱 strcpy(name,na); void setcompany(char com) /添加發行公司 strcpy(company,com); void delcd() tag=1; /刪除光盤void addcd(int n,char *na,char *com)/增加光盤 tag=0; no=n; strcpy(name,na); strcpy(company,com);onshelf=1; int borrowcd()/借盤 if (onshelf=1) onshelf=0; return 1; return 0; void retcd()/還盤 onshe

24、lf=1; void disp()/輸出光盤信息cout 光盤編號: no endl;cout光盤名稱: name endl;cout發行公司:companyendl; cout租借情況:(onshelf=1? 在架:已借) endl; ; class BDatabase /光盤庫類 private: int top; /光盤記錄指針CD cdMaxg;/光盤記錄public: BDatabase()/構造函數,將cd.txt讀到cd中 CD b; top=-1; fstream file(cd.txt,ios:in); while (1) file.read(char *)&b,sizeof

25、(b); if (!file) break; top+; cdtop=b; file.close(); void clear()/全刪光盤信息 top=-1; int addcd(int n,char *na,char *com)/增加光盤 CD *p=query(n); if (NULL=p) top+; cdtop.addcd(n,na,com); return 1; return 0; CD *query(int cdid)/按編號查找光盤 for (int i=0;i=top;i+) if (cdi.getno()=cdid &cdi.gettag()=0) return &cdi;

26、return NULL; void cddata();/光盤庫維護void disp() for (int i=0;i=top;i+) if (cdi.gettag()=0) cdi.disp(); void partdisp() for (int i=0;i=top;i+) if (cdi.gettag()=0&cdi.getonshelf()!=1) cdi.disp(); BDatabase()/析構函數,將cd寫到cd.txt文件中 fstream file(cd.txt,ios:out); for (int i=0;i=top;i+) if (cdi.gettag()=0) file

27、.write(char *)&cdi,sizeof(cdi); file.close(); ; void BDatabase:cddata() char choice; char bname40; char bcompany100;int cdid; CD *b; while (choice!=0) cout nnnttt光 盤 維 護 endlendl; couttt1 新 增nn tt2 更 改nntt3 刪 除nntt4 查 找nntt5 顯 示nntt6 顯示租借nntt7 全 刪nntt0 退 出 choice; switch (choice) case 1: cout 輸入光盤編號

28、: cdid; cout 輸入光盤名稱: bname; cout 輸入光盤發行公司: bcompany; addcd(cdid,bname,bcompany); break; case 2: cout 輸入光盤編號: cdid; b=query(cdid); if (b=NULL) cout 該光盤不存在 endl; break; cout 輸入新的光盤名稱: bname; b-setname(bname); break; case 3: cout 讀入光盤編號: cdid; b=query(cdid); if (b=NULL) cout 該光盤不存在 delcd(); break; case 4: cout 讀入光盤編號: cdid;

溫馨提示

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

評論

0/150

提交評論