2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  《數(shù)據(jù)結(jié)構(gòu)》</b></p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p><b>  (圖書(shū)管理系統(tǒng))</b></p><p><b>  目錄</b></p><p>  一.需求分析…………………………………

2、…………………….3</p><p>  二.概要設(shè)計(jì)……………………………………………………….3</p><p>  三.詳細(xì)設(shè)計(jì)……………………………………………………….4</p><p>  四.調(diào)試分析……………………………………………………….6</p><p>  五.用戶使用說(shuō)明………………………………………………….6&l

3、t;/p><p>  六.測(cè)試結(jié)果……………………………………………………….7</p><p>  七.附錄:帶注釋的源代碼……………………………………….8</p><p><b>  一.需求分析</b></p><p>  大學(xué)的圖書(shū)館藏書(shū)是非常龐大的,原始的人工借書(shū)也是非常麻煩的,因此用一種自動(dòng)系統(tǒng)來(lái)管理圖書(shū)是非常

4、有必要的,所以設(shè)計(jì)一個(gè)圖書(shū)管理系統(tǒng),要能夠自如管理借書(shū),還書(shū),以及注冊(cè),注銷(xiāo)書(shū)本,這樣就能節(jié)省很多資源,提高效率。</p><p><b>  明確規(guī)定:</b></p><p>  1.每種書(shū)的登記內(nèi)容包括書(shū)號(hào)、書(shū)名、著作者、現(xiàn)存量和庫(kù)存量;</p><p>  2.對(duì)書(shū)號(hào)建立索引表(線性表)以提高查找效率;</p><p

5、>  3.系統(tǒng)主要功能如下:</p><p>  *采編入庫(kù):新購(gòu)一種書(shū),確定書(shū)號(hào)后,登記到圖書(shū)帳目表中,如果表中已有,則只將庫(kù)存量增加;*借閱:如果一種書(shū)的現(xiàn)存量大于0,則借出一本,登記借閱者的書(shū)證號(hào)和歸還期限,改變現(xiàn)存量;*歸還:注銷(xiāo)對(duì)借閱者的登記,改變?cè)摃?shū)的現(xiàn)存量。</p><p><b>  二.概要設(shè)計(jì)</b></p><p&g

6、t;  1.本題中用到了以下函數(shù)和結(jié)構(gòu)體:</p><p>  本程序首先命名頭文件:</p><p>  #include <stdio.h> </p><p>  #include <stdlib.h> </p><p>  #include <conio.h> </p><p>

7、;  以實(shí)現(xiàn)對(duì)各種函數(shù)的調(diào)用以及可能用到的各種循環(huán)。</p><p>  用“struct BOOK”結(jié)構(gòu)體,用來(lái)存放書(shū)籍以及借書(shū)信息;</p><p>  并用到“void page_title”的頁(yè)頭函數(shù),通過(guò)“void book_out”, “void book_in”來(lái)實(shí)現(xiàn)對(duì)書(shū)本的借出以及還書(shū),定義“search_book”來(lái)實(shí)現(xiàn)對(duì)書(shū)本各種信息的搜索任務(wù),“void book_ad

8、d”實(shí)現(xiàn)對(duì)書(shū)本的購(gòu)進(jìn)時(shí)的注冊(cè),用“void book_del”實(shí)現(xiàn)對(duì)書(shū)本的注銷(xiāo)。最后通過(guò)“goto menu”語(yǔ)句跳出整個(gè)循環(huán)語(yǔ)句,在各種操作做完后能夠返回到主菜單。用到goto語(yǔ)句原則上一般不符合結(jié)構(gòu)化一些規(guī)定,但是此題中大大提高了效率,因此我采用了。</p><p>  2. 主程序的流程及各程序模塊之間的層次:</p><p>  本程序運(yùn)用到的是用數(shù)組作為線性表的一種代替方式,實(shí)現(xiàn)

9、各種查詢,對(duì)各種數(shù)據(jù)的管理,運(yùn)用線性表的話可能會(huì)更加簡(jiǎn)便,但是我在用了數(shù)組代替后發(fā)現(xiàn)其實(shí)這樣更容易看懂?!皊truct Book”結(jié)構(gòu)體就保證了各種信息的存放和管理,接下來(lái)便是定義各種函數(shù)來(lái)一一實(shí)現(xiàn)對(duì)書(shū)籍的借出,歸還,注銷(xiāo)和注冊(cè),而在這些函數(shù)中,有包括了一些小的函數(shù)以及循環(huán),例如在搜索函數(shù)中,我用到了“for , if”等循環(huán)語(yǔ)句,當(dāng)然少不了數(shù)組的添加,一個(gè)大的程序就是這些小的部分而組成的。</p><p>  

10、也可以簡(jiǎn)單的歸納為:整個(gè)程序是由搜索,借書(shū),還書(shū),注冊(cè)書(shū),注銷(xiāo)書(shū)這幾個(gè)模塊組成,這些又都是在整個(gè)“struct Book”結(jié)構(gòu)體中。</p><p><b>  三.詳細(xì)設(shè)計(jì)</b></p><p>  struct BOOK為主結(jié)構(gòu)體;</p><p>  void page_title(char *menu_item)為頁(yè)頭函數(shù)也就是登錄界

11、面的顯示; </p><p>  void return_confirm(void)為返回確認(rèn)函數(shù),以便返回主菜單;</p><p>  int search_book(void)為搜索書(shū)本信息的變量定義;</p><p>  void book_out(void)為借出書(shū)本的變量定義;</p><p>  void book_in(void

12、)為歸還書(shū)本的變量定義;</p><p>  void book_add(void)為注冊(cè)書(shū)本的變量定義;</p><p>  void book_del(void)為注銷(xiāo)書(shū)本的變量定義;</p><p>  switch(getch())為多分支選擇語(yǔ)句,即輸入一個(gè)數(shù),即選擇了一個(gè)操作;</p><p>  goto menu返回主菜單的語(yǔ)

13、句;</p><p>  ——圖書(shū)目錄文件示例圖</p><p>  struct Book</p><p>  int search_book void book_out void book_in void book_add void book_del</p><p><b>  ——函數(shù)調(diào)用關(guān)系圖</b>

14、;</p><p>  詳細(xì)流程為: Start </p><p><b>  Home</b></p><p>  user option</p><p>  Member login Borrow Return Registeration</p>&

15、lt;p>  Search book</p><p><b>  四.調(diào)試分析</b></p><p>  (1).調(diào)試過(guò)程中遇到的問(wèn)題是如何解決的以及對(duì)設(shè)計(jì)與實(shí)現(xiàn)的回顧討論和分析:</p><p>  在調(diào)試過(guò)程中主要遇到的問(wèn)題是對(duì)函數(shù)的定義是出現(xiàn)過(guò)一些錯(cuò)誤,最后是翻看教材找到了對(duì)這些函數(shù)的準(zhǔn)確定義和使用解決了問(wèn)題。</p>

16、<p>  (2).算法的時(shí)空分析(包括基本操作和其他算法的時(shí)間復(fù)雜度和空間復(fù)雜度的分析)和改進(jìn)設(shè)想:</p><p>  一個(gè)能執(zhí)行的程序除了需要存儲(chǔ)空間來(lái)寄存本身所用指令、常數(shù)、變量和輸入數(shù)據(jù)外,也需要一些對(duì)數(shù)據(jù)進(jìn)行操作的工作單元和存儲(chǔ)一些為實(shí)現(xiàn)計(jì)算所需要的信息的輔助空間。我的算法應(yīng)當(dāng)說(shuō)是挺簡(jiǎn)單的一種方法實(shí)現(xiàn)的,空間可能做得不夠好,但是時(shí)間我想是有保證的,這也就是彌補(bǔ)了那方面的不足了。需要改進(jìn)的

17、地方就是:每輸入完一個(gè)操作,就得返回原來(lái)的操作界面,不能夠繼續(xù)在現(xiàn)有的面板上操作,這挺不方便的,需要改進(jìn)。</p><p>  (3).經(jīng)驗(yàn)和體會(huì):</p><p>  經(jīng)過(guò)了這次編程體驗(yàn),我感想蠻多的,一個(gè)好的程序最起碼要能運(yùn)行成功,其次是里邊的算法的簡(jiǎn)便度,這能夠?yàn)槟愎?jié)省很多時(shí)間和空間,當(dāng)然如果自己還不能運(yùn)用高級(jí)算法,那么我們就用自己會(huì)的東西編,這也是一種達(dá)到目標(biāo)的方法。</p&

18、gt;<p><b>  五.用戶使用說(shuō)明</b></p><p>  首先成功運(yùn)行程序后,會(huì)彈出一個(gè)運(yùn)行窗口,窗口會(huì)有一個(gè)簡(jiǎn)單的介紹操作步驟:如</p><p>  按照步驟,你可以很簡(jiǎn)便的實(shí)現(xiàn)各種操作,完成一個(gè)操作后,你必須按任意鍵返回到最初的界面然后繼續(xù)接下來(lái)的操作。</p><p><b>  六.測(cè)試結(jié)果<

19、;/b></p><p>  七.附錄:帶注釋的源代碼</p><p>  #include <stdio.h> </p><p>  #include <stdlib.h> </p><p>  #include <conio.h> </p><p>  struct BOO

20、K </p><p><b>  { </b></p><p>  int id,usr[10],total,store,days[10]; </p><p>  char name[30],author[20]; </p><p>  }books[100]; </p><p>  /*結(jié)構(gòu)體,

21、存放書(shū)籍及借書(shū)信息。*/ </p><p>  void page_title(char *menu_item) </p><p><b>  { </b></p><p>  printf(">>> 以下是圖 書(shū) 管 理 系 統(tǒng)--請(qǐng) 按 要 求 操 作 <<<\n\n- %s -\n\n&quo

22、t;,menu_item); </p><p><b>  } </b></p><p>  /*頁(yè)頭函數(shù),可以通過(guò)參數(shù)menu_item,顯示當(dāng)前狀態(tài)。*/ </p><p>  void return_confirm(void) </p><p><b>  { </b></p>

23、<p>  printf("\n任意鍵返回……\n"); </p><p><b>  getch(); </b></p><p><b>  } </b></p><p>  /*返回前請(qǐng)求確認(rèn)函數(shù),方便返回前觀察結(jié)果*/ </p><p>  int search_

24、book(void) </p><p><b>  { </b></p><p><b>  int n,i; </b></p><p>  printf("請(qǐng)輸入圖書(shū)序號(hào):"); </p><p>  scanf("%d",&i); </p&g

25、t;<p>  for(n=0;n<100;n++) </p><p><b>  { </b></p><p>  if(books[n].id==i) </p><p><b>  { </b></p><p>  printf("書(shū)名:%s\n",boo

26、ks[n].name); </p><p>  printf("作者:%s\n",books[n].author); </p><p>  printf("存數(shù):%d\n",books[n].store); </p><p>  printf("總數(shù):%d\n",books[n].total); </

27、p><p>  return n; </p><p><b>  } </b></p><p><b>  } </b></p><p>  printf("\n輸入有錯(cuò)或圖書(shū)序號(hào)不存在.\n"); </p><p>  return -1; </p&g

28、t;<p><b>  } </b></p><p>  /*上面是在數(shù)組中找到圖書(shū)號(hào)匹配的記錄,顯示其信息并返 </p><p>  回?cái)?shù)組下標(biāo),如果找不到相應(yīng)記錄則提示錯(cuò)誤并返回-1。*/ </p><p>  void book_out(void) </p><p><b>  { <

29、/b></p><p>  int n,s,l,d; </p><p>  page_title("借書(shū)"); </p><p>  if((n=search_book())!=-1&&books[n].store>0) </p><p><b>  { </b></

30、p><p>  printf("請(qǐng)輸入借書(shū)證序號(hào):"); </p><p>  scanf("%d",&s); </p><p>  printf("請(qǐng)輸入可借天數(shù):"); </p><p>  scanf("%d",&d); </p>

31、<p>  for(l=0;l<10;l++) </p><p><b>  { </b></p><p>  if(books[n].usr[l]==0) </p><p><b>  { </b></p><p>  books[n].usr[l]=s; </p>

32、<p>  books[n].days[l]=d; </p><p><b>  break; </b></p><p><b>  } </b></p><p><b>  } </b></p><p>  books[n].store--; </p>

33、<p><b>  } </b></p><p>  if(n!=-1&&books[n].store==0) printf("此書(shū)已經(jīng)全部借出.\n"); </p><p>  return_confirm(); </p><p><b>  } </b></p>

34、;<p>  /*借書(shū)的函數(shù),首先調(diào)用找書(shū)函數(shù)*/ </p><p>  void book_in(void) </p><p><b>  { </b></p><p>  int n,s,l; </p><p>  page_title("還書(shū)"); </p><

35、p>  if((n=search_book())!=-1&&books[n].store<books[n].total) </p><p><b>  { </b></p><p>  printf("借閱者圖書(shū)證列表:\n"); </p><p>  for(l=0;l<10;l++) &

36、lt;/p><p>  if (books[n].usr[l]!=0) </p><p>  printf("[%d] - %d天\n",books[n].usr[l],books[n].days[l]); </p><p>  printf("請(qǐng)輸入借書(shū)證序號(hào):"); </p><p>  scanf(&

37、quot;%d",&s); </p><p>  for(l=0;l<10;l++) </p><p><b>  { </b></p><p>  if(books[n].usr[l]==s) </p><p><b>  { </b></p><p&g

38、t;  books[n].usr[l]=0; </p><p>  books[n].days[l]=0; </p><p><b>  break; </b></p><p><b>  } </b></p><p><b>  } </b></p><p

39、>  books[n].store++; </p><p><b>  } </b></p><p>  if(n!=-1&&books[n].store==books[n].total) </p><p>  printf("全部入藏.\n"); </p><p>  retu

40、rn_confirm(); </p><p><b>  } </b></p><p>  void book_add(void) </p><p><b>  { </b></p><p><b>  int n; </b></p><p>  pag

41、e_title("注冊(cè)書(shū)"); </p><p>  for(n=0;n<100;n++) </p><p>  if(books[n].id==0) break; </p><p>  printf("序號(hào):"); </p><p>  scanf("%d",&boo

42、ks[n].id); </p><p>  printf("書(shū)名:"); </p><p>  scanf("%s",&books[n].name); </p><p>  printf("作者:"); </p><p>  scanf("%s",&

43、;books[n].author); </p><p>  printf("數(shù)量:"); </p><p>  scanf("%d",&books[n].total); </p><p>  books[n].store=books[n].total; </p><p>  return_con

44、firm(); </p><p><b>  } </b></p><p>  void book_del(void) </p><p><b>  { </b></p><p><b>  int n; </b></p><p>  page_titl

45、e("注銷(xiāo)書(shū)"); </p><p>  if((n=search_book())!=-1) books[n].id=0; </p><p>  printf("該書(shū)已注銷(xiāo).\n"); </p><p>  return_confirm(); </p><p><b>  } </b&g

46、t;</p><p>  void main(void) </p><p><b>  { </b></p><p>  menu: page_title("操作選擇單子"); </p><p>  printf("請(qǐng)按以上要求選擇操作\n\n"); </p><

47、;p>  printf("1 借書(shū)\n2 還書(shū)\n\n"); </p><p>  printf("3 注冊(cè)書(shū)\n4 注銷(xiāo)書(shū)\n\n"); </p><p>  printf("\n0 退出\n"); </p><p>  switch(getch()) </p><p>&l

48、t;b>  { </b></p><p>  case '1' : book_out();break; </p><p>  case '2' : book_in();break; </p><p>  case '3' : book_add();break; </p><p>

49、;  case '4' : book_del();break; </p><p>  case '0' : exit(0); </p><p><b>  } </b></p><p>  goto menu; </p><p><b>  }</b></p&g

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論