2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩27頁(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>  課程報(bào)告任務(wù)書(shū)</b></p><p><b>  成績(jī)?cè)u(píng)定教師: </b></p><p> 題 目圖書(shū)信息管理系統(tǒng)</p><p> 主要內(nèi)容開(kāi)發(fā)一個(gè)圖書(shū)信息管理系統(tǒng),圖書(shū)信息包括:圖書(shū)編號(hào)、書(shū)名、作者、出版社、類(lèi)別、出版時(shí)間、價(jià)格等基本信息(也可以根據(jù)自己情況進(jìn)行擴(kuò)充,比如是否借出、庫(kù)

2、存量等)。使之能提供以下基本功能:(1)圖書(shū)信息錄入功能(圖書(shū)信息用文件保存)--輸入(2)圖書(shū)信息瀏覽功能--輸出(3)查詢(xún)功能(至少一種查詢(xún)方式)、排序功能(至少一種排序方式): ①按書(shū)名查詢(xún) ②按作者名查詢(xún) ③ 按照價(jià)錢(qián)排序 ④按出版時(shí)間排序等等(4)圖書(shū)信息的刪除與修改擴(kuò)展功能:可以按照自己的程度進(jìn)行擴(kuò)展。比如(1)簡(jiǎn)單的權(quán)限處理 (2)報(bào)表打印功能(3)甚至根據(jù)自己情況,可以加上學(xué)生信息,并擴(kuò)充為圖書(shū)借閱系統(tǒng)。(4)模糊查詢(xún)

3、 (5)綜合查詢(xún) (6)統(tǒng)計(jì)功能 比如統(tǒng)計(jì)處某一類(lèi)別的圖書(shū)信息 或 篩選出小于指定數(shù)量庫(kù)存的圖書(shū)信息等等,總之,可以根據(jù)自己需求進(jìn)行分析功能。</p><p> 任務(wù)要求一、提交材料應(yīng)包括:(1)系統(tǒng)源代碼 (2)課程報(bào)告二、整個(gè)設(shè)計(jì)過(guò)程具體要求(1)需求分析 要求學(xué)生對(duì)案例系統(tǒng)進(jìn)行分析,設(shè)計(jì)出需要完成的功能,完善各個(gè)模塊的調(diào)用關(guān)系;(2)設(shè)計(jì)過(guò)程 要求學(xué)生進(jìn)一步明確各模塊調(diào)用關(guān)系,進(jìn)一步完善模塊函數(shù)細(xì)節(jié)

4、(函數(shù)名、參數(shù)、返回值等)(3)實(shí)現(xiàn)過(guò)程 要求學(xué)生養(yǎng)成良好的編碼習(xí)慣、完成各個(gè)模塊并進(jìn)行測(cè)試,最終完成系統(tǒng)整體測(cè)試;(4)總結(jié)階段 按照要求完成系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)報(bào)告,并進(jìn)行總結(jié)、答辯。</p><p> 成績(jī)?cè)u(píng)定報(bào)告撰寫(xiě)情況(30分)系統(tǒng)完成情況(30分)答辯情況(40分)總分</p><p> 內(nèi)容20分規(guī)范程度5分程序測(cè)試5分基本功能20分?jǐn)U展功能10分自述情況10分答辯情況30

5、分</p><p><b>  1 需求分析</b></p><p>  經(jīng)過(guò)大一上學(xué)期的理論學(xué)習(xí),在基礎(chǔ)實(shí)驗(yàn)的基礎(chǔ)上,本學(xué)期我們繼續(xù)開(kāi)設(shè)了C語(yǔ)言程序設(shè)計(jì)實(shí)踐課。課程要求我們對(duì)已經(jīng)學(xué)習(xí)的基礎(chǔ)實(shí)驗(yàn)進(jìn)行整合與銜接處理,并最終形成一個(gè)系統(tǒng)性質(zhì)的規(guī)模較大的程序。</p><p>  本次課程設(shè)計(jì)要求我們達(dá)到能獨(dú)立完成一個(gè)圖書(shū)管理系統(tǒng),完成后要求實(shí)現(xiàn)的功

6、能有對(duì)圖書(shū)信息的錄入、刪除、修改,瀏覽(即輸出), 按某種方式查詢(xún)(要求至少一種查詢(xún)方式),按某種方式排序(要求至少一種排序方式)。當(dāng)然,我們可以根據(jù)自己的能力對(duì)系統(tǒng)進(jìn)行完善性的拓展,例如自己加入簡(jiǎn)單的權(quán)限處理,統(tǒng)計(jì)功能,模糊查詢(xún)等,甚至可以拓展為圖書(shū)借閱系統(tǒng)。</p><p>  通過(guò)整個(gè)程序的開(kāi)發(fā)過(guò)程,最終使我們掌握利用計(jì)算機(jī)解決實(shí)際問(wèn)題的基本方法,熟悉C語(yǔ)言開(kāi)發(fā)的全過(guò)程,提高綜合應(yīng)用C語(yǔ)言的能力、編程和調(diào)試

7、能力,為學(xué)習(xí)計(jì)算機(jī)和通信專(zhuān)業(yè)的后續(xù)課程打好專(zhuān)業(yè)基礎(chǔ)。 </p><p><b>  2 概要設(shè)計(jì)</b></p><p><b>  圖書(shū)信息及數(shù)據(jù)格式</b></p><p><b>  圖書(shū)信息:</b></p><p>  圖書(shū)信息包括圖書(shū)編號(hào)、圖書(shū)類(lèi)別、圖書(shū)書(shū)名、作者、

8、出版社、出版時(shí)間、圖書(shū)價(jià)格。</p><p><b>  數(shù)據(jù)格式:</b></p><p>  本系統(tǒng)采用單向鏈表來(lái)對(duì)圖書(shū)信息進(jìn)行各項(xiàng)操作。其中圖書(shū)的編號(hào)為整型數(shù)據(jù),價(jià)格為雙精度浮點(diǎn)型,其余的類(lèi)別、書(shū)名、作者、出版社與出版時(shí)間均為字符串類(lèi)型</p><p>  struct tushu_node{</p><p>&l

9、t;b>  int num; </b></p><p>  char leibie[20];</p><p>  char name[30];</p><p>  char author[20];</p><p>  char press[20];</p><p>  char time[20];&l

10、t;/p><p>  double price;</p><p>  struct tushu_node*next;</p><p><b>  };</b></p><p>  一個(gè)結(jié)點(diǎn)的示意圖如下圖所示:</p><p> ?。?)程序的整體框架</p><p><b

11、> ?。?)模塊劃分</b></p><p>  1、int quanxian(); 核查權(quán)限的函數(shù) </p><p>  2、int inputchioce(); 顯示主菜單的函數(shù) </p><p>  3、void save();

12、 保存鏈表為文件的函數(shù) 覆蓋以前的信息 </p><p>  4、void save1(); 保存鏈表為文件的函數(shù) 不覆蓋以前的信息 只在創(chuàng)建時(shí)調(diào)用</p><p>  5、struct tushu_node* wjtolb();從文件中讀取數(shù)據(jù)并建立圖書(shū)信息的鏈表的函數(shù) </p><p>  6、int luruxinxi();

13、 錄入學(xué)生信息的函數(shù) </p><p>  7、struct tushu_node * luruxinxi_chuangjian(); 創(chuàng)建圖書(shū)信息的函數(shù) </p><p>  8、struct tushu_node * luruxinxi_charu(); 插入圖書(shū)信息的函數(shù)</p><p>  9、str

14、uct tushu_node * luruxinxi_shanchu(); 刪除圖書(shū)信息的函數(shù)</p><p>  10、struct tushu_node * luruxinxi_xiugai(); 修改圖書(shū)信息的函數(shù)</p><p>  11、int liulantushu(); 瀏覽

15、圖書(shū)信息的函數(shù) </p><p>  12、int chaxuntushu(); 查詢(xún)圖書(shū)信息的函數(shù) </p><p>  13、void chaxuntushu_num(); 按編號(hào)查詢(xún)圖書(shū) </p><p>  14、void chaxuntush

16、u_name(); 按書(shū)名查詢(xún)圖書(shū) </p><p>  15、void chaxuntushu_price(); 按價(jià)格查詢(xún)圖書(shū) </p><p>  16、void paixutushu(); 為圖書(shū)排序的函數(shù) </p&

17、gt;<p>  17、struct tushu_node* paixutushu_price(); 為圖書(shū)按價(jià)格排序的函數(shù) </p><p>  18、struct tushu_node* paixutushu_time(); 為圖書(shū)按出版時(shí)間排序的函數(shù) </p><p>  19、void sfjx() ;

18、 寫(xiě)個(gè)函數(shù) 判斷是否繼續(xù) 排序中使用 </p><p>  20、int tongjitushu_shumu(); 統(tǒng)計(jì)圖書(shū)數(shù)目的函數(shù) </p><p>  21、void shiyongshuoming(); 使用說(shuō)明的函數(shù) </p><p>

19、;<b>  3 詳細(xì)設(shè)計(jì)</b></p><p>  程序的主體設(shè)計(jì)思想是根據(jù)結(jié)構(gòu)化程序設(shè)計(jì)思想分模塊進(jìn)行設(shè)計(jì),有一個(gè)主函數(shù)和多個(gè)自定義函數(shù)構(gòu)成。</p><p><b>  主函數(shù)</b></p><p>  對(duì)于本程序來(lái)說(shuō),主函數(shù)很簡(jiǎn)單,就是定義了一個(gè)變量chioce用來(lái)接受核查用戶是否有使用該管理系統(tǒng)的權(quán)限的函數(shù)q

20、uanxian()函數(shù)返回的值,若為1(即用戶獲得了使用權(quán)限),則調(diào)出顯示主菜單的函數(shù)進(jìn)行具體操作</p><p>  int main()</p><p><b>  {</b></p><p>  int chioce; </p><p>  chioce=quanxian(); 核查用戶是

21、否有使用該管理系統(tǒng)的權(quán)限的函數(shù)</p><p>  if(chioce==1) 若取得權(quán)限 則返回值為1 </p><p><b>  {</b></p><p>  system("cls");</p><p>  inputchioce(); 用

22、來(lái)顯示主菜單的函數(shù)</p><p><b>  }</b></p><p><b>  exit(0);</b></p><p><b>  }</b></p><p><b>  權(quán)限函數(shù)</b></p><p>  核查用戶權(quán)限

23、的函數(shù)使用do-while語(yǔ)句來(lái)限制用戶輸入密碼的次數(shù)僅為三次,并且為了使界面更具親切感,會(huì)在用戶輸入密碼錯(cuò)誤時(shí)進(jìn)行提示引起用戶注意及提示剩余輸入次數(shù)。</p><p>  int quanxian()</p><p><b>  {</b></p><p>  int m=1,n=3,flag=0;</p><p> 

24、 char mima[20];</p><p><b>  do{</b></p><p>  printf("\n\n 你好,歡迎使本圖書(shū)信息管理系統(tǒng)!\n"); printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

25、~~\n");</p><p>  printf("【現(xiàn)在進(jìn)行權(quán)限核查】 \n--------------------友情提醒:你共有3次輸入密碼的機(jī)會(huì)!\n");</p><p>  printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n ");&

26、lt;/p><p>  if(n==2||n==1){printf("注意:你已輸入錯(cuò)誤%d次 剩余輸入次數(shù): %d 請(qǐng)輸入密碼:",3-n,n);}</p><p>  if(n==3) printf("剩余輸入次數(shù): %d 請(qǐng)輸入密碼:",n);</p><p>  scanf("%s",m

27、ima); //第一次輸入和輸錯(cuò)密碼后再次輸入顯示的也賣(mài)弄不同</p><p>  if(strcmp(mima,"chenbo0916")==0)</p><p><b>  {</b></p><p><b>  flag=1;</b></p><p>  return

28、flag;</p><p><b>  } </b></p><p><b>  m++;</b></p><p><b>  n--;</b></p><p>  system("cls");</p><p>  }w

29、hile(strcmp(mima,"chenbo0916")!=0&&m<=3) ; // 限制輸入次數(shù)在3次之內(nèi)</p><p>  printf("\n\n對(duì)不起,你連續(xù)三次輸入密碼錯(cuò)誤,沒(méi)有使用該圖書(shū)管理系統(tǒng)的權(quán)限!\n");</p><p>  exit(0); </p><p><b

30、>  }</b></p><p><b>  顯示主菜單的函數(shù)</b></p><p>  本程序?qū)⒅鞑藛螁为?dú)作為一個(gè)函數(shù)是為了讓用戶進(jìn)入一次系統(tǒng)可以進(jìn)行多項(xiàng)操作(即為在每次用戶完成一個(gè)具體的操作后,都會(huì)有對(duì)是否繼續(xù)或返回主菜單有相應(yīng)的詢(xún)問(wèn),讓用戶在想退出系統(tǒng)時(shí)才退出),基本思路是通過(guò)函數(shù)的嵌套調(diào)用來(lái)實(shí)現(xiàn)多項(xiàng)操作。這個(gè)函數(shù)的功能就是顯示主菜單并對(duì)用戶

31、進(jìn)行的選擇調(diào)用不同的子菜單函數(shù)或進(jìn)入具體功能</p><p>  int inputchioce() /* 主菜單 */</p><p><b>  {</b></p><p>  int mychioce,x=-1;</p><p>

32、;  printf("\n++++++++++++++歡 迎 你++++++++++++++++++\n\n");</p><p>  printf("**+++++++++++++ 主 菜 單 +++++++++++++++++++++**\n");</p><p>  printf("**1-- 錄入(刪除 修改)圖書(shū)信息 ** **2

33、--(按規(guī)則)查詢(xún)圖書(shū)信息 **\n");</p><p>  printf("** 3-- 瀏覽圖書(shū)信息**** 4-- 為圖書(shū)(按規(guī)則)排序 **\n");</p><p>  printf("** 5-- 統(tǒng)計(jì)圖書(shū)(數(shù)目) **** 6-- 幫助 **\n");</p>&

34、lt;p>  printf("** 0-- 退出系統(tǒng) ** ** **\n"); printf("**++++++++++++++++++++++++++++++++++++++++++++++++++++++++**\n");</p><p>  printf("\n 恭喜你獲得使用權(quán)限

35、,請(qǐng)你選擇:");</p><p>  scanf("%d",&mychioce);</p><p>  switch(mychioce) </p><p><b>  {</b></p><p><b>  case 1:</b></p&

36、gt;<p>  {luruxinxi();break;}</p><p><b>  case 2:</b></p><p>  { chaxuntushu();break;}</p><p><b>  case 3:</b></p><p>  {liulantushu()

37、;break;}</p><p><b>  case 4:</b></p><p>  {paixutushu();break;}</p><p><b>  case 5:</b></p><p>  { tongjitushu_shumu();</p><p> 

38、 printf("\n\n是否繼續(xù)操作? 請(qǐng)選擇(繼續(xù)-1/退出-0)");</p><p>  scanf("%d",&x);</p><p>  if(x==1){system("cls");inputchioce();}</p><p><b>  if(x==0){</b&

39、gt;</p><p>  printf("\n\n謝謝你的使用! 再見(jiàn)\n");</p><p>  exit (0); </p><p><b>  }</b></p><p>  if(x!=1&&x!=0){</p><p>  system(&quo

40、t;cls"); </p><p>  printf("選擇有誤,默認(rèn)返回主菜單,請(qǐng)重新選擇:\n");</p><p>  inputchioce();}</p><p><b>  break;</b></p><p><b>  }</b></p>

41、<p><b>  case 6:</b></p><p>  {shiyongshuoming();break;}</p><p><b>  case 0:</b></p><p>  { printf(" \n\n 謝謝你的使用??!再見(jiàn) \n\n");break;}

42、 </p><p><b>  default:</b></p><p>  { system("cls");</p><p>  printf("\n 選擇有誤,請(qǐng)重新選擇:\n");</p><p>  inputchioce();

43、</p><p><b>  }break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  關(guān)于一些錄入(刪除 修改)、查詢(xún)、排序等子菜單的原理及實(shí)現(xiàn)方法與主菜單那類(lèi)似</p><p>&l

44、t;b>  創(chuàng)建(插入)函數(shù)</b></p><p><b>  算法如下圖:</b></p><p>  結(jié)束輸入控制條件Num!=0</p><p>  將鏈表數(shù)據(jù)保存為文件的函數(shù)</p><p>  首先打開(kāi)文件以可讀寫(xiě)(也可以只寫(xiě)的方式打開(kāi) 區(qū)別在于是否覆蓋以前的信息)的方式,p1作為形參來(lái)接受

45、實(shí)參head,只要不為空,寫(xiě)入p1 后,下移一個(gè)節(jié)點(diǎn)</p><p>  void save1(struct tushu_node* p1){ /*將鏈表保存為文件的函數(shù) 不覆蓋前面信息 */</p><p>  if( (fpp=fopen("1.txt","a"))==NULL )</p><p><b>  

46、{</b></p><p>  printf("打開(kāi)文件失敗!");</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p>  while(p1!=NULL)</p><p><b&

47、gt;  { </b></p><p>  fprintf(fpp," %d %s %s %s %s %s %lf\n",p1->num,p1->leibie,p1-> </p><p>  name,p1->author,p1->press,p1->time,p1->price);

48、 </p><p>  p1=p1->next;</p><p><b>  }</b></p><p>  if(fclose(fpp))</p><p><b>  { </b></p><p>  printf("關(guān)閉文件失??!\n");

49、</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  從文件中讀出數(shù)據(jù)并創(chuàng)建鏈表的函數(shù)</p><p>  在調(diào)用從文件讀取數(shù)據(jù)創(chuàng)建鏈表的函數(shù)前,先定義

50、head鏈表指針并賦值為空作為實(shí)參 。打開(kāi)文件后,從文件中讀取一組數(shù)據(jù)賦給已經(jīng)被動(dòng)態(tài)分配內(nèi)存的結(jié)點(diǎn)指針p</p><p>  第一次head為空時(shí)</p><p><b>  Head</b></p><p><b>  p1</b></p><p>  第二次以后head

51、 head</p><p>  p2 p1</p><p><b>  head</b></p><p>  p2 p1</p><p><b>  刪除函數(shù) </b></p><p>  

52、刪除函數(shù)執(zhí)行流程圖及算法如下圖所示:</p><p><b>  Head=NULL</b></p><p>  Head!=NULL</p><p>  相等(即刪除頭結(jié)點(diǎn))</p><p>  不相等(刪除其他結(jié)點(diǎn))</p><p>  Ptr2!=NULL (即不是鏈表結(jié)尾 循環(huán)結(jié)束

53、條件)</p><p>  While循環(huán) 相等</p><p><b>  不相等</b></p><p><b>  修改函數(shù)</b></p><p>  修改函數(shù)執(zhí)行流程圖如下:</p><p>  If (Head!=Nul

54、l)</p><p><b>  不相等</b></p><p><b>  相等</b></p><p>  是 否</p><p><b>  瀏覽遍歷函數(shù)</b></p><p>  重新定義一組變量num、le

55、ibie、name、author、press、time、 price,將從文件中讀取一組數(shù)據(jù)后賦給這組變量并輸出它們,使用while(!feof(fp)),一直執(zhí)行上述過(guò)程實(shí)現(xiàn)遍歷瀏覽全部文件中的圖書(shū)信息。瀏覽完成后,同樣有對(duì)是否繼續(xù)其他操作的詢(xún)問(wèn),如果選擇繼續(xù),則會(huì)返回主菜單。</p><p>  int liulantushu() /* 瀏覽圖書(shū)信息的函數(shù) */ </p>

56、<p>  {int num; </p><p>  char leibie[10];</p><p>  char name[30];</p><p>  char author[20];</p><p>  char press[20];</p><p>  char time[20];</p&

57、gt;<p>  double price;</p><p>  int x=-1;</p><p>  if( (fpp=fopen("1.txt","r"))==NULL )</p><p><b>  {</b></p><p>  printf("

58、 打開(kāi)文件失敗 ! ");</p><p><b>  exit(0);}</b></p><p><b>  else{</b></p><p>  printf("\n\n編號(hào) 類(lèi)別 書(shū)名 作者 出版社 出版時(shí)間 價(jià)格\n");</p><p>  

59、while(!feof(fpp)){ fscanf(fpp,"%d%s%s%s%s%s%lf",&num,leibie,name,autho </p><p>  r,press,time,&price); printf("%d %s %s %s %s %s %lf\n ",num,leibie,name

60、,author,press,time,price);}</p><p><b>  }</b></p><p>  if(fclose(fpp))</p><p>  {printf("關(guān)閉文件失??!\n");</p><p><b>  exit(0);</b></p

61、><p><b>  }</b></p><p>  printf("\n\n是否繼續(xù)操作? 請(qǐng)選擇(繼續(xù)-1/退出-0)");</p><p>  scanf("%d",&x);</p><p><b>  if(x==1)</b></p>

62、<p>  { system("cls");</p><p>  inputchioce();}</p><p><b>  if(x==0)</b></p><p>  { printf("\n\n謝謝你的使用! 再見(jiàn)\n");</p><p>  exit

63、 (0);}</p><p>  if(x!=1&&x!=0)</p><p>  { system("cls"); </p><p>  printf("選擇有誤,默認(rèn)返回主菜單,請(qǐng)重新選擇:\n");</p><p>  inputchioce();}</p>&l

64、t;p><b>  }</b></p><p><b>  統(tǒng)計(jì)圖書(shū)數(shù)目的函數(shù)</b></p><p>  統(tǒng)計(jì)函數(shù)簡(jiǎn)單的實(shí)現(xiàn)了對(duì)圖書(shū)數(shù)目的統(tǒng)計(jì),其實(shí)現(xiàn)思路可以看做在瀏覽函數(shù)的基礎(chǔ)上去掉一些不必要的輸出而是另外加上一個(gè)變量n用在while中執(zhí)行一次循環(huán)就n++一次,就能統(tǒng)計(jì)出圖書(shū)的數(shù)目了,不再具體敘述。由于feof()函數(shù)本身的原理,如果每

65、次寫(xiě)入一行數(shù)據(jù)到文件中時(shí)最后有換行符號(hào),則會(huì)出現(xiàn)n多加一問(wèn)題或輸出時(shí)最后一行復(fù)制,只要將n減一即為圖書(shū)實(shí)際上的數(shù)目。</p><p><b>  查詢(xún)函數(shù)</b></p><p>  查詢(xún)函數(shù)算法如下圖所示:</p><p><b>  P!=NULL</b></p><p><b>  

66、不相等</b></p><p><b>  相等</b></p><p>  如果found依然為0 ,則輸出“未找到某圖書(shū)”</p><p>  是 否</p><p><b>  排序函數(shù)</b></p><p>

67、  排序函數(shù)算法敘述如下:</p><p>  排序函數(shù)使用冒泡排序的算法,定義了i j兩個(gè)變量來(lái)控制實(shí)現(xiàn)雙層循環(huán),for(i=1;i<n;i++)(n為調(diào)用統(tǒng)計(jì)函數(shù)統(tǒng)計(jì)的圖書(shū)總數(shù)目)來(lái)實(shí)現(xiàn)外循環(huán),一次外循環(huán)將鏈表中價(jià)格最高的(或出版時(shí)間最靠后的)圖書(shū)移動(dòng)至鏈表的最后,具體實(shí)現(xiàn)過(guò)程(即內(nèi)循環(huán))如下圖所示:</p><p><b>  內(nèi)循環(huán):</b></p

68、><p><b>  初始化狀態(tài)為</b></p><p>  P4 P4->next</p><p>  輔助 P3 p1 p2</p><p>  比較p1與p2的排序項(xiàng),如p1比 p2小,上圖所有指針的指針均后移一位</p><p>  相反

69、 ,若上圖中p1比 p2大,則變?yōu)?lt;/p><p>  P3 P3->next</p><p>  P2->next p1 p2</p><p>  簡(jiǎn)單的說(shuō)———始終是p1與p2比較,其中一個(gè)為前一次比較中的的大的一個(gè),另一個(gè)向后移動(dòng)</p><p><b&

70、gt;  內(nèi)循環(huán)源程序</b></p><p>  p4=(struct tushu_node*)malloc(size);</p><p>  p4->next=head; </p><p><b>  p3=p4;</b></p><p><b>  p1=head;</b>&

71、lt;/p><p>  p2=head->next;</p><p>  for(j=0;j<n-i;j++)</p><p><b>  {</b></p><p>  if(p2->price>p1->price)</p><p><b>  {</b

72、></p><p><b>  p3=p1;</b></p><p><b>  p1=p2;</b></p><p>  p2=p2->next;</p><p><b>  }</b></p><p><b>  else<

73、;/b></p><p><b>  {</b></p><p>  p1->next =NULL;</p><p>  p1->next=p2->next;</p><p>  p3->next=p2;</p><p>  p2->next =p1;</

74、p><p><b>  p3=p2;</b></p><p>  p2=p1->next;</p><p><b>  }</b></p><p><b>  }</b></p><p>  head=p4->next;free(p4);<

75、/p><p><b>  4 調(diào)試分析</b></p><p>  程序的編寫(xiě)過(guò)程中調(diào)試時(shí)遇到的問(wèn)題及如何解決:</p><p>  問(wèn)題一 界面不美觀,進(jìn)入一次系統(tǒng)只能進(jìn)行一項(xiàng)操作的問(wèn)題</p><p>  解決方法 通過(guò)將主菜單的顯示作為一個(gè)獨(dú)立的函數(shù)(inputchoice()),結(jié)合函數(shù)的嵌套調(diào)用實(shí)現(xiàn),與清屏函數(shù)

76、(system(“cls”))一起,在每次進(jìn)行完一次具體操作都有以下詢(xún)問(wèn)</p><p>  printf("\n\n是否繼續(xù)操作? 請(qǐng)選擇(繼續(xù)-1/退出-0)");</p><p>  scanf("%d",&x);</p><p><b>  if(x==1)</b></p>

77、<p><b>  {</b></p><p>  system("cls");</p><p>  inputchioce();</p><p><b>  }</b></p><p><b>  if(x==0)</b></p>

78、<p><b>  {</b></p><p>  printf("\n\n謝謝你的使用! 再見(jiàn)\n");</p><p>  exit (0); </p><p><b>  }</b></p><p>  if(x!=1&&x!=0)</p&

79、gt;<p><b>  {</b></p><p>  system("cls"); </p><p>  printf("選擇有誤,默認(rèn)返回主菜單,請(qǐng)重新選擇:\n");</p><p>  inputchioce();</p><p><b>  }&

80、lt;/b></p><p>  實(shí)現(xiàn)了每次操作完成后,使只顯示主菜單可繼續(xù)進(jìn)行其他操作</p><p>  問(wèn)題二 權(quán)限系統(tǒng)以前是輸入學(xué)號(hào)后三位(int)進(jìn)行驗(yàn)證并且只有一次輸入機(jī)會(huì),一次輸入錯(cuò)誤就退出系統(tǒng)</p><p>  解決方法 在權(quán)限函數(shù)中使用字符串變量(char)來(lái)作為密碼,使用do-while語(yǔ)句來(lái)實(shí)現(xiàn)對(duì)輸入次數(shù)的控制</p>

81、<p>  問(wèn)題三 錄入時(shí)以前的思路是想在輸入的同時(shí)寫(xiě)入文件只有一組數(shù)據(jù)想存入文件</p><p>  解決方法 將保存文件作為一個(gè)獨(dú)立的函數(shù)。在創(chuàng)建函數(shù)中有一組另外的參數(shù)來(lái)接收用戶輸入的數(shù)據(jù),然后再調(diào)用保存函數(shù)將數(shù)據(jù)存入文件</p><p>  問(wèn)題四 文件的保存與讀取問(wèn)題</p><p>  解決方法 由于系統(tǒng)要求結(jié)合文件的知識(shí)使用戶的數(shù)據(jù)

82、在一次輸入之后即使關(guān)閉退出系統(tǒng)后在次進(jìn)入系統(tǒng)時(shí)原有數(shù)據(jù)依然能繼續(xù)使用。并且在對(duì)數(shù)據(jù)進(jìn)行創(chuàng)建、刪除、修改、排序等相關(guān)的操作之后要重新保存,所以將將鏈表保存到文件和從文件讀取數(shù)據(jù)建立鏈表都重新寫(xiě)作單獨(dú)的函數(shù),在進(jìn)行完相關(guān)的操作后都調(diào)用save()重新保存,在再次進(jìn)行操作前就先調(diào)用wjtolb()函數(shù)從文件中讀取數(shù)據(jù)創(chuàng)建鏈表,實(shí)現(xiàn)了對(duì)數(shù)據(jù)更及時(shí)的保存與利用</p><p>  問(wèn)題五 保存數(shù)據(jù)時(shí)覆蓋不覆蓋原有數(shù)據(jù)的問(wèn)

83、題</p><p>  解決問(wèn)題 由于以前沒(méi)有注意細(xì)節(jié)問(wèn)題導(dǎo)致雖然數(shù)據(jù)被修改或是刪除后保存成功,但數(shù)據(jù)不覆蓋原來(lái)的數(shù)據(jù)從而出現(xiàn)文件中數(shù)據(jù)重復(fù)保存的問(wèn)題,解決方法很簡(jiǎn)單,只要將打開(kāi)文件的方式由可讀可寫(xiě)(a)改為只寫(xiě)方式打開(kāi)(w)就行</p><p>  問(wèn)題六 輸入時(shí)無(wú)法結(jié)束輸入的問(wèn)題</p><p>  解決方法 由于在輸入時(shí)時(shí)先輸入圖書(shū)的編號(hào),所以在輸入時(shí)除了輸

84、入第一本圖書(shū)的信息,</p><p>  即在輸入第一本圖書(shū)之后在輸入時(shí)先輸入圖書(shū)的編號(hào),加上一個(gè)判斷循環(huán)while(num!=0)才繼續(xù)輸入完這本圖書(shū)的其他信息,即0可以作為輸入結(jié)束標(biāo)志</p><p>  問(wèn)題七 程序漏洞,只有第二本圖書(shū)信息無(wú)法修改的問(wèn)題</p><p>  解決方法 程序設(shè)計(jì)思路有問(wèn)題及對(duì)do-while語(yǔ)句了解不充分導(dǎo)致了問(wèn)題。修改函數(shù)

85、的思路是先讓用戶先輸入要修改的圖書(shū)編號(hào)再依次查詢(xún),先看頭結(jié)點(diǎn)的圖書(shū)編號(hào)與要修改的編號(hào)是否相等,如果相等繼續(xù)選擇要修改的圖書(shū)信息成分修改,如果不相等,有個(gè)循環(huán)語(yǔ)句來(lái)使結(jié)點(diǎn)后移只帶相等再選擇要修改的圖書(shū)信息成分修改。有問(wèn)題的寫(xiě)法是使用了</p><p><b>  do {</b></p><p>  p=p->next;</p><p>

86、;  } while(p!=NULL&&p->num!=numm) </p><p>  從而導(dǎo)致了如果要修改的圖書(shū)不是第一本而是第二本時(shí),先執(zhí)行了后移一個(gè)結(jié)點(diǎn)直接到第三個(gè)結(jié)點(diǎn)即無(wú)法修改第二本圖書(shū)的信息。解決后是用while循環(huán)</p><p>  while(p!=NULL&&p->num!=numm)</p><p>

87、<b>  {</b></p><p>  p=p->next;</p><p><b>  }</b></p><p><b>  就不存在上述問(wèn)題</b></p><p>  問(wèn)題八 要對(duì)圖書(shū)的信息進(jìn)行刪除后修改前必須先瀏覽圖書(shū)不然不知道要選擇哪本圖書(shū)進(jìn)行操作的問(wèn)題

88、</p><p>  解決方法 由于上述修改與刪除的操作是通過(guò)用戶對(duì)圖書(shū)編號(hào)的選擇來(lái)完成的所以在瀏覽前不知道圖書(shū)對(duì)于的編號(hào)就使操作具有盲目性即對(duì)圖書(shū)的信息進(jìn)行刪除后修改前必須先瀏覽圖書(shū)。解決時(shí)時(shí)讓修改于刪除函數(shù)中讓用戶輸入編號(hào)前默認(rèn)直接輸出所有圖書(shū)(遍歷所有圖書(shū))</p><p><b>  5測(cè)試結(jié)果 </b></p><p>  編號(hào) 類(lèi)

89、別 書(shū)名 作者 出版社 出版時(shí)間 價(jià)格</p><p>  4 傳記 讓世界因你而不同 李開(kāi)復(fù) 北京工業(yè)出版社 2008.3 28.000000 </p><p>  2 英語(yǔ) 四級(jí)詞匯 俞敏洪 群言出版社 2008.9 32.000000 </p>

90、<p>  5 漫畫(huà) 我兔斯基你 王卯卯 動(dòng)漫出版社 2009.3 32.000000 </p><p>  3 營(yíng)銷(xiāo) 哈佛市場(chǎng)營(yíng)銷(xiāo)策略 宋海峰 內(nèi)蒙古出版社 2010.4 28.000000 </p><p>  1 雜志 電腦愛(ài)好者 無(wú) cfan雜志社 2010.9

91、 6.000000 </p><p>  6 教材 思修 羅國(guó)杰 高等教育出版社 2006.8 15.50</p><p>  7 教材 大學(xué)英語(yǔ) 王大偉 外研社 2005.1 34.9</p><p>  8 教材 高等數(shù)學(xué) 蔣青

92、 高等教育出版社 2007.6 25.9</p><p>  現(xiàn)在給出一組測(cè)試數(shù)據(jù)來(lái)全程展示本圖書(shū)管理系統(tǒng)的所有功能 </p><p>  功能一之核查用戶權(quán)限:</p><p>  首先進(jìn)入系統(tǒng),你會(huì)發(fā)現(xiàn)要求對(duì)用戶使用權(quán)限進(jìn)行核查的界面:(效果圖如下)</p><p>  若密碼為錯(cuò)誤密碼,那么你會(huì)看到提醒“注意”的界面</p&

93、gt;<p>  上圖密碼正確,則仍然可以順利進(jìn)入系統(tǒng)見(jiàn)到主菜單 如下圖</p><p>  若三次輸入錯(cuò)誤 將無(wú)法進(jìn)入系統(tǒng)</p><p>  功能二之瀏覽全部圖書(shū):</p><p>  在主菜單界面選擇3則可遍歷現(xiàn)有全部圖書(shū)信息</p><p>  功能三之創(chuàng)建或添加圖書(shū):</p><p>  選擇

94、1后進(jìn)入錄入(刪除 修改)子菜單</p><p>  繼續(xù)選擇1進(jìn)入創(chuàng)建添加圖書(shū)功能 以0結(jié)束輸入</p><p>  結(jié)束后自動(dòng)返回主菜單 再次選擇3(瀏覽)可查看添加效果(瀏覽時(shí)剛才上圖添加的圖書(shū)信息“9 IT FLASH8 尹浩瓊 電子工業(yè)出版社 2006.9 41”顯示在最后一行說(shuō)明程序已經(jīng)實(shí)現(xiàn)了添加功能)</p><p>  功能四之為圖書(shū)按規(guī)則排序:&

95、lt;/p><p>  選擇4后進(jìn)入排序子菜單進(jìn)一步選擇按何種規(guī)則排序(報(bào)告只演示按出版時(shí)間排序)</p><p>  當(dāng)選擇2—按出版時(shí)間排序 然后回車(chē)鍵你會(huì)看到</p><p>  選1繼續(xù)返回瀏覽看到圖書(shū)已經(jīng)按出版時(shí)間的先后排序完成</p><p>  功能五之按規(guī)則查詢(xún)圖書(shū):</p><p>  同排序一樣你可以

96、在子菜單選擇按何種方式查詢(xún)(報(bào)告只演示按書(shū)名查詢(xún))</p><p>  選擇按書(shū)名查詢(xún)后你可以輸入書(shū)名</p><p>  查詢(xún)圖書(shū)《當(dāng)代大學(xué)生》的結(jié)果是“沒(méi)有找到這本書(shū)”</p><p>  選擇1繼續(xù)按書(shū)名查找其他圖書(shū)</p><p>  查找到圖書(shū)《讓世界因你而不同》時(shí),這本圖書(shū)的信息將被全部輸出,如圖:</p><

97、p>  功能六之修改已有圖書(shū)信息:</p><p>  從錄入子菜單1進(jìn)入后選擇3可以進(jìn)入修改功能 首先你會(huì)看到目前文件中所有圖書(shū)的信息方便你選擇要修改哪本圖書(shū)</p><p>  上圖選擇了修改編號(hào)為1的圖書(shū) 現(xiàn)在編號(hào)為1的圖書(shū)的信息單獨(dú)顯示出來(lái) 你可以再次根據(jù)提示界面選擇修改圖書(shū)1的哪一項(xiàng)成分</p><p>  我們看到圖書(shū)1的作者為“無(wú)” 決定將

98、它改為“陳波”(如下圖)</p><p>  完成后可以利用瀏覽函數(shù)同樣可以查看到修改后的效果</p><p><b>  修改成功</b></p><p>  功能七之按編號(hào)刪除某本圖書(shū):</p><p>  選擇要?jiǎng)h除圖書(shū)的編號(hào)前你也會(huì)看到目前所有圖書(shū)的信息</p><p>  現(xiàn)在選擇刪除編

99、號(hào)為8的圖書(shū)</p><p>  瀏覽看到編號(hào)為8的圖書(shū)已被成功刪除</p><p>  功能八之簡(jiǎn)單的統(tǒng)計(jì)功能(統(tǒng)計(jì)圖書(shū)總數(shù)目):</p><p>  主菜單中選擇5即可統(tǒng)計(jì)出圖書(shū)總數(shù)目(上圖看出還剩余編號(hào)為1、2、3、4、5、6、7、9)八本圖書(shū)</p><p>  統(tǒng)計(jì)正確 現(xiàn)在基本功能演示完畢 選擇0退出系統(tǒng)</p>

100、<p>  為了完善 系統(tǒng)也設(shè)計(jì)了一個(gè)幫助功能對(duì)系統(tǒng)的使用方法做了簡(jiǎn)單的介紹</p><p><b>  6 課程心得總結(jié)</b></p><p>  經(jīng)歷了幾個(gè)星期的課程設(shè)計(jì),從設(shè)計(jì)前期的不知如何下手到開(kāi)始設(shè)計(jì)時(shí)的各種錯(cuò)誤的困擾再到一個(gè)個(gè)的攻破各個(gè)問(wèn)題,最后到對(duì)程序的進(jìn)一步完善與課程報(bào)告的撰寫(xiě)。這一段時(shí)間我們由被程序困擾到幾乎崩潰到最后成就感的油然而生

101、;從一整天的坐在電腦屏幕面前到現(xiàn)在的帶著喜悅一遍一遍運(yùn)行著程序;一遍遍的互相探討解決大家遇到的問(wèn)題到越來(lái)越發(fā)現(xiàn)編程的有意思,我到現(xiàn)在真的感覺(jué)認(rèn)真自己做完這樣一個(gè)系統(tǒng)收獲頗大:</p><p>  對(duì)結(jié)構(gòu)化程序設(shè)計(jì)與函數(shù)的嵌套調(diào)用有了更清晰具體的認(rèn)識(shí)</p><p>  對(duì)鏈表的操作更加熟練,更清晰的認(rèn)識(shí)到鏈表與其他我們前面學(xué)習(xí)的數(shù)據(jù)類(lèi)型(如結(jié)構(gòu)體)的區(qū)別與聯(lián)系,及使用方法上的異同</

102、p><p>  明確認(rèn)識(shí)到鏈表的循環(huán)操作要注意到的是前一部分對(duì)某某進(jìn)行操作處理,而后要分析好對(duì)于如何實(shí)現(xiàn)對(duì)某某重新賦值等變化來(lái)實(shí)現(xiàn)繼續(xù)循環(huán)</p><p>  引入了文件知識(shí)可以對(duì)電腦硬盤(pán)上的數(shù)據(jù)操作,改變了對(duì)C語(yǔ)言的狹義認(rèn)識(shí),認(rèn)識(shí) 到C語(yǔ)言實(shí)際上還可以實(shí)現(xiàn)更復(fù)雜豐富的功能來(lái)利用開(kāi)發(fā)的軟件來(lái)進(jìn)一步實(shí)現(xiàn)對(duì)現(xiàn)實(shí)中的問(wèn)題的解決</p><p>  學(xué)習(xí)到C語(yǔ)言的學(xué)習(xí)一定不不能

溫馨提示

  • 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)論