數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--小型圖書購銷管理系統(tǒng)_第1頁
已閱讀1頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p><b>  目錄</b></p><p>  1課題1——圖書管理系統(tǒng)2</p><p>  1.1 設(shè)計要求2</p><p>  1.2 創(chuàng)作的思路3</p><p>  1.3 創(chuàng)作和調(diào)試4</p><p>  1.4 心得體會9</p><p

2、><b>  附錄10</b></p><p><b>  設(shè)計要求</b></p><p>  小型圖書購銷管理系統(tǒng)</p><p>  1、需要處理的基礎(chǔ)數(shù)據(jù)</p><p>  圖書資料基本信息:圖書編號、書名、作者、出版社、出版日期、定價等。</p><p>

3、  圖書庫存信息:圖書編號、書名、作者、庫存數(shù)量等。</p><p>  圖書采購信息:采購單號、圖書編號、采購日期、采購數(shù)量、單價、采購金額等。</p><p>  圖書銷售信息:銷售單號、圖書編號、銷售日期、銷售數(shù)量、單價、銷售金額等。</p><p><b>  2、系統(tǒng)的基本功能</b></p><p>  圖書

4、基本信息的錄入和查詢</p><p><b>  圖書采購</b></p><p>  (1)輸入要采購的圖書編號,自動從圖書基本資料中把相關(guān)信息提取出來。</p><p>  (2)根據(jù)采購數(shù)量和單價,自動計算采購金額。</p><p> ?。?)根據(jù)采購數(shù)量,增加圖書庫存量。</p><p>

5、<b>  圖書銷售</b></p><p>  (1)輸入要采購的圖書編號(或書名)、銷售數(shù)量,從圖書庫存信息中查找是否合法,合法時進行銷售,否則報錯。</p><p> ?。?)根據(jù)采購數(shù)量和單價,自動計算銷售金額。</p><p> ?。?)銷售時,從庫存中減去相應的數(shù)量。</p><p><b>  利

6、潤計算:</b></p><p>  根據(jù)全部的采購金額和銷售金額,計算書店的利潤情況。</p><p><b>  思路:</b></p><p><b>  1.基本模塊:</b></p><p>  根據(jù)要求,應該有三個封裝的類,包括:書籍信息,采購信息和銷售信息。</p&g

7、t;<p>  其中以書籍信息為核心,在書籍信息中建立關(guān)于其它兩類的友元函數(shù),達到信息交流的目的。</p><p><b>  2.功能實現(xiàn):</b></p><p>  要求實現(xiàn)的功能有:對于書籍信息:錄入,查詢,采購和銷售導致存量的改變</p><p>  對于采購信息:實施采購,查詢采購</p><p&g

8、t;  對于銷售信息:實施銷售(需要判斷是否合法),查詢銷售</p><p><b>  總利潤的計算</b></p><p><b>  所以草圖如下</b></p><p>  考慮到購買和銷售時要輸入書籍號,并且更改基本庫存信息。不如將銷售和采購函數(shù)作為友元函數(shù),或許能減少函數(shù)個數(shù)。</p><p

9、><b>  建立程序和調(diào)試改錯</b></p><p>  因為是在模塊的建設(shè)中邊建設(shè)邊調(diào)試,所以容易發(fā)現(xiàn)錯誤原因。</p><p>  開始先建設(shè)基本類:Book,公有成員為:</p><p><b>  public:</b></p><p>  void set_book();錄入功能

10、函數(shù)</p><p>  void display_book();反饋功能函數(shù)</p><p>  void buy_book(Buy&);//此項在Buy類建立后再輸入,為采購函數(shù)</p><p>  void sale_book(Sale&);//此項在Sale類建立后再輸入,為銷售函數(shù)</p><p>  int bia

11、nhao;書籍編號(設(shè)為公有是為了方便進行對比時調(diào)用,不然或許要一個公有函數(shù)來實現(xiàn)“查詢是否有此書”的功能,if(i==b[i1].bianhao)可能比寫函數(shù)更加簡短。)</p><p>  私有成員為private:</p><p>  string name;//書名</p><p>  string writername; 作者名</p>&

12、lt;p>  string publisher;出版社</p><p>  int time;出版時間</p><p>  int price;價格</p><p>  int bnum;存量</p><p>  在主函數(shù)中大框架是一個選擇結(jié)構(gòu),選擇想要執(zhí)行的功能,由于選項多,所以選擇swich.</p><p>

13、;  而進行完一個功能后,考慮到依然有其他功能待執(zhí)行,所以又用goto回到初始界面。</p><p>  由于goto,所以case分支后面沒有break,在調(diào)試過程中也沒有發(fā)現(xiàn)問題</p><p>  用類數(shù)組定義了書籍類數(shù)組后,用 for 循環(huán)進行錄入,每次錄入后,如果全部錄入完畢,有一個選擇,可以跳出for循環(huán),同時記下錄入函數(shù)執(zhí)行的循環(huán)次數(shù),方便反饋時控制反饋函數(shù)的執(zhí)行次數(shù)。<

14、;/p><p>  可是在實際調(diào)試中發(fā)現(xiàn),由于忽略了for循環(huán)中循環(huán)條件的等號,使得次數(shù)丟失。于是補上。</p><p>  在建立Buy模塊后,發(fā)現(xiàn)程序報錯,結(jié)尾處有非法字符,原來是在打中文的時候順帶打了個“;”,結(jié)果非法。</p><p>  在建立完Sale模塊后,發(fā)現(xiàn)選擇執(zhí)行銷售功能時,程序直接結(jié)束,再試銷售查詢,結(jié)果也是結(jié)束,再試利潤計算,也是如此。但其他功能

15、正常</p><p>  開始以為是case的問題,于是加入一個default:cout<<”請輸入正確編碼”來測試是否是進入case選擇時未能成功匹配到選項,結(jié)果不是,輸入4,選擇銷售功能時,依然是直接結(jié)束,看來是成功執(zhí)行到了case 4:以后的語句。</p><p>  在關(guān)掉VC后,刪除所有生成的文件,再重新打開剛才的CPP后,發(fā)現(xiàn)無法構(gòu)建,結(jié)果顯示一個Sale的disp

16、lay()函數(shù)出現(xiàn)了問題。</p><p>  再仔細看,原來由于Sale模塊我是直接copy再修改的Buy模塊,結(jié)果粗心忘了說明Sale::display(){****}這個函數(shù)</p><p>  于是將上面的函數(shù)進行說明后,程序完成,最終調(diào)試界面:</p><p><b>  登錄界面</b></p><p>&l

17、t;b>  錄入</b></p><p>  查詢(全體展示在任意一次錄入完成后選擇“N”后自動進行)</p><p><b>  采購</b></p><p><b>  銷售</b></p><p><b>  采購查詢</b></p>&l

18、t;p>  采購多項后查詢(后來的多次采購未截屏)</p><p>  同樣的,銷售多次后(這多次銷售未截屏)</p><p><b>  最后計算利潤</b></p><p><b>  調(diào)試結(jié)束</b></p><p><b>  4心得</b></p>

19、<p><b>  程序心得:</b></p><p>  首先是對這個程序來說,結(jié)構(gòu)簡單,也只有大概300行,但是實際寫卻寫了4個小時,首先是因為很多小細節(jié)上的語法錯誤難以控制,又難以尋找,而且到后來很難去檢查一個很長的程序哪個細節(jié)錯了。不過,利用一些小技巧,比如隔離法:用/**/來隱藏一個獨立的模塊,看是否依然報錯,如果沒有報錯了,那顯然錯誤出現(xiàn)在被隱藏的地方。還有,針對性糾

20、錯,比如看看“;”是否是用中文輸入法時輸入的。而且,養(yǎng)成了括號,引號必定成對打的習慣也讓我減少了很多失誤。程序的思路不難,但是思路還有很多,比如可以用類中函數(shù)來判斷輸入的書籍編碼是否和Book類組中的書籍碼相同,比如友元函數(shù)可以是在銷售和采購類中定義的,或者不使用友元函數(shù),但是我認為自己做的程序是我能獨立想到的最簡潔了,對于一個不長又計算量不大的程序來說,也不必太過苛求。不過寫完報告后,聽聽其他同學的思路,或許也是一種學習方式。<

21、/p><p><b>  C++心得:</b></p><p>  對于這個新接觸的概念,在進行了適量的實踐后,發(fā)現(xiàn)確實比C好用多了,比如,剛編完的課程設(shè)計1,如果要用C來做,就很難檢查結(jié)構(gòu)性錯誤了,因為編了三個小時之后,就發(fā)現(xiàn)頭腦茫然,看著長長的連成一片的語句很難尋找關(guān)鍵。</p><p>  但是有類之后,就只要尋找錯誤出在哪個類上,再在對應的

22、類或者主函數(shù)里排查,大大降低了調(diào)試難度。而且,由于進行了封裝,也很難出現(xiàn)張冠李戴的錯誤,每一個數(shù)據(jù)的作用都一目了然。最關(guān)鍵的是,這樣的編程更加模塊化,我可以先編出關(guān)于某一個功能的模塊,再編寫另一個,最后關(guān)聯(lián)起來,思路清晰,難以犯下結(jié)構(gòu)性錯誤。而且,由于豐富了語法,編寫也更加隨心所欲,不會糾結(jié)著用很多句子實現(xiàn)一個簡單的功能。</p><p>  附錄 課程設(shè)計,課題1(圖書管理系統(tǒng))源代碼</p>&

23、lt;p>  #include<iostream></p><p>  #include<string></p><p>  using namespace std;</p><p>  int dis=0;int gain=0;int total=0;int i1=0;int i2=0;//全局變量 總支出 總收入 凈收益 采購次數(shù)

24、銷售次數(shù)</p><p>  class Sale;</p><p>  class Buy;</p><p>  class Book//定義圖書類</p><p><b>  {public:</b></p><p>  void set_book();</p><p>

25、;  void display_book();</p><p>  void buy_book(Buy&);</p><p>  void sale_book(Sale&);</p><p>  int bianhao;</p><p><b>  private:</b></p><

26、p>  string name;</p><p>  string writername;</p><p>  string publisher;</p><p>  string time;</p><p>  int price;</p><p><b>  int bnum;</b>&

27、lt;/p><p><b>  };</b></p><p>  class Buy//購買類</p><p><b>  {</b></p><p><b>  public:</b></p><p>  friend void Book::buy_boo

28、k(Buy&) ;void display();</p><p><b>  private:</b></p><p>  int shuliang;int dprice;int buy_bianhao;int total;int b_bianhao;string time;</p><p><b>  };</b>

29、;</p><p>  class Sale//銷售類</p><p><b>  {public:</b></p><p>  friend void Book::sale_book(Sale&);void display();</p><p><b>  private:</b><

30、/p><p>  int shuliang;int dprice;int sale_bianhao;int total;int b_bianhao;string time;</p><p><b>  };</b></p><p>  void Sale::display()//采購查詢函數(shù)</p><p><b>

31、;  {</b></p><p>  cout<<" 銷售編號:"<<sale_bianhao<<" 書籍編號:"<<b_bianhao<<" 銷售時間:"<<time<<" 銷售單價:"<<dprice<<&

32、quot; 銷售數(shù)量:"<<shuliang<<" 銷售單項收益:"<<total<<endl;</p><p><b>  }</b></p><p>  void Buy::display()//采購查詢函數(shù)</p><p><b>  {</b

33、></p><p>  cout<<" 買單編號:"<<buy_bianhao<<" 書籍編號:"<<b_bianhao<<" 購買時間:"<<time<<" 購買單價:"<<dprice<<" 采購數(shù)量

34、:"<<shuliang<<" 采購單項支出:"<<total<<endl;</p><p><b>  }</b></p><p>  void Book::set_book() //錄入函數(shù)</p><p><b>  {</b><

35、;/p><p>  cout<<"請輸入編號:";</p><p>  cin>>bianhao;</p><p>  cout<<"請輸入書名:";</p><p>  cin>>name;</p><p>  cout<<

36、;"請輸入作者名:";</p><p>  cin>>writername;</p><p>  cout<<"請輸入出版社:";</p><p>  cin>>publisher;</p><p>  cout<<"請輸入出版時間:"

37、;</p><p>  cin>>time;</p><p>  cout<<"請輸入定價:";</p><p>  cin>>price;</p><p>  cout<<"請輸入數(shù)量:";</p><p>  cin>&g

38、t;bnum;</p><p><b>  }</b></p><p>  void Book::buy_book(Buy&d) //購買函數(shù)</p><p>  {d.b_bianhao=bianhao;</p><p>  cout<<"請輸入買單編號";</p>

39、<p>  cin>>d.buy_bianhao;</p><p>  cout<<"請輸入采購時間";</p><p>  cin>>d.time;</p><p>  cout<<"請輸入要購買的圖書數(shù)量";</p><p>  cin&g

40、t;>d.shuliang;</p><p>  bnum=bnum+d.shuliang;</p><p>  cout<<"請輸入要購買的圖書單價";</p><p>  cin>>d.dprice;</p><p>  d.total=d.shuliang*d.dprice;</p

41、><p>  cout<<"單項支出為"<<d.total;</p><p>  dis=dis+d.total;</p><p>  cout<<" 已成功采購!";</p><p><b>  }</b></p><p>

42、;  void Book::sale_book(Sale&d)//銷售函數(shù)</p><p>  {d.b_bianhao=bianhao;</p><p>  cout<<"請輸入要銷售的圖書數(shù)量";</p><p>  cin>>d.shuliang;</p><p>  if(d.shu

43、liang<=bnum)</p><p><b>  {</b></p><p>  bnum=bnum-d.shuliang;</p><p>  cout<<"請輸入銷售編號";</p><p>  cin>>d.sale_bianhao;</p>&l

44、t;p>  cout<<"請輸入銷售時間";</p><p>  cin>>d.time;</p><p>  cout<<"請輸入要銷售的圖書單價";</p><p>  cin>>d.dprice;</p><p>  d.total=d.shu

45、liang*d.dprice;</p><p>  cout<<"單項收益為"<<d.total;</p><p>  gain=gain+d.total;</p><p><b>  i2++;</b></p><p>  cout<<" 已成功銷售!

46、";</p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p>  cout<<"庫存不足,無法銷售"<<endl;</p>

47、<p><b>  }</b></p><p><b>  }</b></p><p>  void Book::display_book() //展示函數(shù)</p><p><b>  {</b></p><p>  cout<<"圖書編

48、號"<<bianhao<<" 圖書名:"<<name<<" 作者名"<<writername<<" 出版社"<<publisher<<" 出版時間"<<time<<" 定價"<<pric

49、e<<"存量"<<bnum<<endl;</p><p><b>  }</b></p><p>  int main()</p><p>  {int m=0;Book b[300];Buy a[200];Sale c[200];int d=0;int k=1;int l;</

50、p><p><b>  a:</b></p><p>  cout<<"************************************************************************"<<endl;</p><p>  cout<<"*******

51、*************** tsy 圖書購銷系統(tǒng) ********************************"<<endl;</p><p>  cout<<"******************1.創(chuàng)建圖書 2.圖書查詢 *********************"<<endl;</p><

52、;p>  cout<<"******************3.采購圖書 4.銷售圖書 *********************"<<endl;</p><p>  cout<<"******************5.采購信息 6.銷售信息 *********************"

53、<<endl;</p><p>  cout<<"******************7.統(tǒng)計利潤 *********************"<<endl;</p><p>  cout<<"****************** 請輸入將執(zhí)行操作對應的數(shù)字 **************

54、*******"<<endl;</p><p><b>  cin>>d;</b></p><p><b>  switch(d)</b></p><p><b>  {</b></p><p>  case 1://執(zhí)行創(chuàng)建</p>

55、;<p><b>  int i;</b></p><p>  for(i=(m+1);i<301;i++)</p><p><b>  {</b></p><p>  cout<<"第"<<i<<"組";</p>

56、<p>  b[i].set_book();</p><p>  b[i].display_book();</p><p>  cout<<"是否繼續(xù)?(y/n)";</p><p>  char choice1;</p><p>  cin>>choice1;</p>&

57、lt;p>  if(choice1=='y')</p><p><b>  continue;</b></p><p>  if(choice1=='n')</p><p>  {m=i;break;}</p><p><b>  }</b></p>

58、<p>  for(l=1;l<=m;l++)</p><p><b>  {</b></p><p>  b[l].display_book();</p><p><b>  }</b></p><p>  system("pause");</p>

59、;<p>  system("cls");</p><p><b>  goto a;</b></p><p>  case 2://執(zhí)行查詢</p><p>  cout<<"請輸入查詢圖書的編號";</p><p><b>  cin>

60、>l;</b></p><p>  for(i=1;i<=m;i++)</p><p><b>  {</b></p><p>  if (l==b[i].bianhao)</p><p><b>  {</b></p><p>  k=0;b[i].

61、display_book();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  if(k)</b></p><p><b>  {</b></p><p>  cout&l

62、t;<"所查詢的圖書不存在!";</p><p><b>  }</b></p><p>  system("pause");</p><p>  system("cls");</p><p><b>  goto a;</b><

63、;/p><p>  case 3://執(zhí)行采購</p><p>  cout<<"請輸入采購的圖書編號";</p><p>  cin>>l;k=1;</p><p>  for(i=1;i<=m;i++)</p><p><b>  {</b><

64、;/p><p>  if (l==b[i].bianhao)</p><p><b>  {</b></p><p>  k=0;cout<<"所采購書籍為";</p><p>  b[i].display_book();</p><p>  b[i].buy_book

65、(a[i1]);</p><p><b>  i1++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  if(k)</b></p><p><b>  

66、{</b></p><p>  cout<<"所購買的圖書不存在!請先錄入!";</p><p><b>  }</b></p><p>  system("pause");</p><p>  system("cls");</p&

67、gt;<p><b>  goto a;</b></p><p>  case 4://執(zhí)行銷售</p><p>  cout<<"請輸入銷售的圖書編號";</p><p><b>  cin>>l;</b></p><p><b>

68、;  k=1;</b></p><p>  for(i=1;i<=m;i++)</p><p><b>  {</b></p><p>  if (l==b[i].bianhao)</p><p><b>  {</b></p><p>  k=0;cout

69、<<"所銷售書籍為";</p><p>  b[i].display_book();</p><p>  b[i].sale_book(c[i2]);</p><p><b>  }</b></p><p><b>  }</b></p><p&g

70、t;<b>  if(k)</b></p><p><b>  {</b></p><p>  cout<<"所銷售的圖書不存在!請檢查錯誤后重試!";</p><p><b>  }</b></p><p>  system("pau

71、se");</p><p>  system("cls");</p><p><b>  goto a;</b></p><p><b>  case 5:</b></p><p>  cout<<"采購查詢";</p>&

72、lt;p>  for(i=0;i<i1;i++)</p><p><b>  {</b></p><p>  a[i].display();</p><p><b>  }</b></p><p>  cout<<" 總支出:"<<dis&l

73、t;<endl;</p><p>  system("pause");</p><p>  system("cls");</p><p><b>  goto a;</b></p><p><b>  case 6:</b></p><

74、;p>  cout<<"銷售查詢";</p><p>  for(i=0;i<i2;i++)</p><p><b>  {</b></p><p>  c[i].display();</p><p><b>  }</b></p><

75、p>  cout<<" 總收益:"<<gain<<endl;</p><p>  system("pause");</p><p>  system("cls");</p><p><b>  goto a;</b></p>&

76、lt;p><b>  case 7:</b></p><p>  total=gain-dis;</p><p>  cout<<"采購總支出:"<<dis<<endl;</p><p>  cout<<"銷售總收益:"<<gain<

77、<endl;</p><p>  cout<<"凈利潤為:"<<total<<endl;</p><p>  system("pause");</p><p>  system("cls");</p><p><b>  goto

78、 a;</b></p><p>  default:cout<<"請輸入正確的編號"<<endl; </p><p>  system("pause");</p><p>  system("cls");</p><p><b>  go

溫馨提示

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

最新文檔

評論

0/150

提交評論