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

下載本文檔

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

文檔簡介

1、<p>  課程設(shè)計(論文)任務(wù)書</p><p>  軟 件 學(xué) 院 學(xué)  院   軟 件+電氣 專  業(yè) 2010— 2  班</p><p>  一、課程設(shè)計(論文)題目  客戶消費積分管理系統(tǒng) </p><p>  二、課程設(shè)計(論文)工作自 2011 年 12 月 26 日起至 2

2、011 年 12 月 30 日止 </p><p>  三、課程設(shè)計(論文) 地點: </p><p>  四、課程設(shè)計(論文)內(nèi)容要求:</p><p>  1.本課程設(shè)計的目的</p><p>  ⑴訓(xùn)練學(xué)生靈活應(yīng)用所學(xué)數(shù)據(jù)結(jié)構(gòu)知識,獨立完成問題分析,結(jié)合數(shù)

3、據(jù)結(jié)構(gòu)理論知識,</p><p>  編寫程序求解指定問題;</p><p> ?、瞥醪秸莆哲浖_發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等基本方法和技能;</p><p> ?、翘岣呔C合運用所學(xué)的理論知識和方法獨立分析和解決問題的能力,鞏固、深化學(xué)生</p><p>  的理論知識,提升編程水平。</p><p>

4、  2.課程設(shè)計的任務(wù)及要求</p><p><b>  1)基本要求:</b></p><p> ?、乓髲姆治鲱}目的需求入手,按設(shè)計抽象數(shù)據(jù)類型、構(gòu)思算法、通過設(shè)計實現(xiàn)抽象</p><p>  數(shù)據(jù)類型、編寫上機(jī)程序和上機(jī)調(diào)試等若干步驟完成題目,最終寫出完整的報告;</p><p> ?、圃诔绦蛟O(shè)計階段應(yīng)盡量利用已有

5、的標(biāo)準(zhǔn)函數(shù),加大代碼的重用率;</p><p> ?、浅绦蛟O(shè)計語言推薦使用C/C++,程序書寫規(guī)范,源程序需加必要的注釋;</p><p>  ⑷每位同學(xué)需提交可獨立運行的程序和規(guī)范的課程設(shè)計報告。</p><p>  2)課程設(shè)計論文編寫要求</p><p> ?、爬碚撛O(shè)計部分以課程設(shè)計論文的形式提交,格式必須按照課程設(shè)計論文標(biāo)準(zhǔn)格式進(jìn)&l

6、t;/p><p><b>  行書寫和裝訂;</b></p><p> ?、普n程設(shè)計報告(論文)包括中文目錄、設(shè)計任務(wù)、需求分析、概要設(shè)計、詳細(xì)設(shè)計、</p><p>  編碼實現(xiàn)、調(diào)試分析、課設(shè)總結(jié)、謝辭、參考文獻(xiàn)、附錄等;</p><p> ?、窃O(shè)計部分應(yīng)包含系統(tǒng)功能模塊圖,調(diào)試分析應(yīng)包括運行截圖等。</p>

7、<p>  3)課程設(shè)計評分標(biāo)準(zhǔn): </p><p> ?、艑W(xué)習(xí)態(tài)度:10分;</p><p> ?、葡到y(tǒng)設(shè)計:20分;</p><p> ?、蔷幊陶{(diào)試:20分;</p><p> ?、然卮饐栴}:20分;</p><p> ?、烧撐淖珜懀?0分。</p><p><b>

8、  4)參考文獻(xiàn):</b></p><p> ?、艊?yán)蔚敏,吳偉民. 數(shù)據(jù)結(jié)構(gòu)(C語言版)[M]. 清華大學(xué)出版社. 2010.3 </p><p> ?、茋?yán)蔚敏,吳偉民. 數(shù)據(jù)結(jié)構(gòu)題集(C語言版)[M]. 清華大學(xué)出版社. 1999.2</p><p>  ⑶何欽銘,馮燕等. 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計[M]. 浙江大學(xué)出版社. 2007.8</p>

9、<p>  5)課程設(shè)計進(jìn)度安排</p><p> ?、艤?zhǔn)備階段(4學(xué)時):選擇設(shè)計題目、了解設(shè)計目的要求、查閱相關(guān)資料;</p><p> ?、瞥绦蚰K設(shè)計分析階段(4學(xué)時):程序概要設(shè)計、詳細(xì)設(shè)計;</p><p> ?、谴a編寫調(diào)試階段(8學(xué)時):程序模塊代碼編寫、調(diào)試、測試;</p><p> ?、茸珜懻撐碾A段(4學(xué)時):

10、總結(jié)課程設(shè)計任務(wù)和設(shè)計內(nèi)容,撰寫課程設(shè)計論文。</p><p>  學(xué)生簽名: </p><p>  2011 年 12 月 26 日</p><p>  6)課程設(shè)計題目具體要求:</p><p><b>  問題描述:</b></p><p>  針對客戶的消費情

11、況,進(jìn)行客戶管理,根據(jù)客戶的消費積分對客戶實行不同程度的打折優(yōu)惠。</p><p><b>  基本要求:</b></p><p> ?、挪捎靡欢ǖ拇鎯Y(jié)構(gòu)進(jìn)行客戶信息的存儲;</p><p> ?、茖蛻舻男畔⒖梢赃M(jìn)行修改、刪除、添加;</p><p> ?、悄軌蚋鶕?jù)消費情況進(jìn)行客戶積分的計算;</p>

12、<p> ?、雀鶕?jù)積分情況實行不同程度的打折優(yōu)惠;</p><p>  課程設(shè)計(論文)評審意見</p><p> ?。?)學(xué)習(xí)態(tài)度(10分):優(yōu)(?。⒘迹ā。⒅校ā。?、一般(?。?、差(?。?; </p><p> ?。?)系統(tǒng)設(shè)計(20分):優(yōu)( )、良( )、中(?。?、一般(?。⒉睿ā。?</p><p> ?。?)編程

13、調(diào)試(20分):優(yōu)(?。?、良(?。⒅校ā。?、一般( )、差(?。?lt;/p><p> ?。?)回答問題(20分):優(yōu)( )、良( )、中(?。⒁话悖ā。?、差(?。?;</p><p> ?。?)論文撰寫(30分):優(yōu)( )、良( )、中(?。?、一般(?。?、差(?。?;</p><p> ?。?)格式規(guī)范性及考勤是否降等級:是(?。?、否( )</p>&

14、lt;p><b>  目錄</b></p><p><b>  1、設(shè)計目的1</b></p><p><b>  2、需求分析2</b></p><p>  2.1選題的意義及背景2</p><p><b>  3、概要設(shè)計3</b><

15、;/p><p><b>  3.1設(shè)計思想3</b></p><p>  3.2函數(shù)間的關(guān)系3</p><p><b>  4、詳細(xì)設(shè)計3</b></p><p>  4.1系統(tǒng)的主要結(jié)構(gòu)4</p><p>  4.1.1結(jié)構(gòu)定義4</p><p&g

16、t;  4.1.2主要函數(shù)聲明及功能描述4</p><p><b>  4.2源程序4</b></p><p>  4.2.1頭文件4</p><p>  4.2.2源文件10</p><p>  5、程序測試結(jié)果及問題分析12</p><p><b>  6、總結(jié)17<

17、;/b></p><p><b>  1.設(shè)計目的</b></p><p>  數(shù)據(jù)結(jié)構(gòu)作為一門學(xué)科主要研究數(shù)據(jù)的各種邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),以及對數(shù)據(jù)的各種操作。因此,主要有三個方面的內(nèi)容:數(shù)據(jù)的邏輯結(jié)構(gòu);數(shù)據(jù)的物理存儲結(jié)構(gòu);對數(shù)據(jù)的操作(或算法)。通常,算法的設(shè)計取決于數(shù)據(jù)的邏輯結(jié)構(gòu),算法的實現(xiàn)取決于數(shù)據(jù)的物理存儲結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)是信息的一種組織方式,其目的是為了

18、提高算法的效率,它通常與一組算法的集合相對應(yīng),通過這組算法集合可以對數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)進(jìn)行某種操作。</p><p>  在當(dāng)今信息時代,信息技術(shù)己成為當(dāng)代知識經(jīng)濟(jì)的核心技術(shù)。我們時刻都在和數(shù)據(jù)打交道。比如人們在外出工作時找最短路徑,在銀行查詢存款、通過互聯(lián)網(wǎng)查新聞、以及遠(yuǎn)程教育報名等,所有這些都在與數(shù)據(jù)發(fā)生關(guān)系。實際上,現(xiàn)實世界中的實體經(jīng)過抽象以后,就可以成為計算機(jī)上所處理的數(shù)據(jù)。</p><

19、p>  數(shù)據(jù)結(jié)構(gòu)課程主要是研究非數(shù)值計算的程序設(shè)計問題中所出現(xiàn)的計算機(jī)操作對象以及它們之間的關(guān)系和操作的學(xué)科。數(shù)據(jù)結(jié)構(gòu)是介于數(shù)學(xué)、計算機(jī)軟件和計算機(jī)硬件之間的一門計算機(jī)專業(yè)的核心課程,它是計算機(jī)程序設(shè)計、數(shù)據(jù)庫、操作系統(tǒng)、編譯原理及人工智能等的重要基礎(chǔ),廣泛的應(yīng)用于信息學(xué)、系統(tǒng)工程等各種領(lǐng)域。</p><p>  學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)是為了將實際問題中所涉及的對象在計算機(jī)中表示出來并對它們進(jìn)行處理。通過課程設(shè)計可以

20、提高學(xué)生的思維能力,促進(jìn)學(xué)生的綜合應(yīng)用能力和專業(yè)素質(zhì)的提高。通過此次課程設(shè)計主要達(dá)到以下目的:</p><p>  了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計方法,具備初步的獨立分析和設(shè)計能力;</p><p>  初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等基本方法和技能;</p><p>  提高綜合運用所學(xué)的理論知識和方法獨立分析和解決問題的能力;</

21、p><p>  訓(xùn)練用系統(tǒng)的觀點和軟件開發(fā)一般規(guī)范進(jìn)行軟件開發(fā),培養(yǎng)軟件工作者所應(yīng)具備的科學(xué)的工作方法和作風(fēng)。</p><p><b>  2.需求分析</b></p><p>  2.1選題的意義及背景</p><p>  在信息社會中,誰最先擁有最及時最準(zhǔn)確的信息,誰就能在競爭中占據(jù)主動地位。會員制營銷就是一個通過會員消

22、費信息挖掘會員消費潛力的典型案例。會員制營銷又稱俱樂部營銷,指的是將顧客組織成會員團(tuán)體或是俱樂部,通過加強(qiáng)內(nèi)部的聯(lián)系來建立顧客的忠誠度,以此獲取最大的經(jīng)濟(jì)利益。目前,會員制營銷已經(jīng)從理論到實踐都已經(jīng)比較完善,并認(rèn)為是最有效的現(xiàn)代營銷方式。會員制營銷通過會員的信息富裕會員額外利益(如折扣,禮品,活動等)將一群具有共同興趣的消費經(jīng)歷的人組織起來,使他們不僅加強(qiáng)與公司的溝通,而且還可以與公司其他會員交流消費體驗;從而使會員對公司產(chǎn)生強(qiáng)烈的參與

23、感和歸屬感,進(jìn)而發(fā)展成為最忠實的消費者。如今會員制營銷在中國已是悄然遍布與社會的各個角落,期發(fā)展趨勢也喜迎了眾多行業(yè)的注意力。</p><p>  通常,采用俱樂部形勢的公司或企業(yè),一般都實行會員制營銷的管理體制,其營銷對象主要是加入本俱樂部的會員。由于俱樂部會員之間以及與俱樂部組織者之間往往存在著一種相互滲透,相互支持的結(jié)構(gòu)性關(guān)系,他沒之間不僅有買賣交易關(guān)系,伙伴協(xié)作關(guān)系,更有心理情感關(guān)系等作為堅實基礎(chǔ),從而形

24、成比較牢固的利益情感共生體。俱樂部除了具有賺取利潤的目的,還具有社交,娛樂,學(xué)習(xí),健身等多種功能。一般來所,各種各樣的俱樂部都有自己獨特的服務(wù)類容,其他服務(wù)也有一定的共性,一個人一旦成為麼俱樂部的會員,就可能樹立更強(qiáng)的信心,感受到集體力量的強(qiáng)大。</p><p>  客戶關(guān)系管理理論告訴我們,在顧客導(dǎo)向時代,如何制定以客戶為中心的營銷策略,如何從需求中挖掘客戶價值,如何提升客戶滿意度,獲得客戶的忠誠度,并實現(xiàn)服務(wù)

25、和利潤的價值轉(zhuǎn)換,會員制營銷可以說是該思想的一個重要營銷實踐。會員消費管理系統(tǒng)就是一套對以會員為基礎(chǔ)的俱樂部營銷的系統(tǒng)化建設(shè),俱樂部營銷的專業(yè)化建設(shè),俱樂部營銷的客戶化建設(shè)精心管理的管理信息系統(tǒng)軟件,他主要通過對俱樂部的營銷核心,活動選擇,客戶細(xì)分,細(xì)分的方法和操作,活動的系統(tǒng)設(shè)計,和實施策略進(jìn)行管理,通過對會員的消費習(xí)慣,消費心理,消費情況進(jìn)行分析并采取積分贈送,消費打折等適當(dāng)?shù)募畲胧瑥亩粌H提高了會員的滿意度,忠誠度,歸屬感,和

26、成就感,而且也潛移默化的實現(xiàn)了俱樂部的價值轉(zhuǎn)換和提升。</p><p><b>  3.概要設(shè)計</b></p><p><b>  3.1設(shè)計思想</b></p><p>  本程序運用鏈表對客戶信息進(jìn)行存儲,首先對結(jié)點進(jìn)行定義,結(jié)點中的數(shù)據(jù)域分別定義了消費者的消費號、身份證、消費價格、積分,其中身份證和消費價格用了字符

27、型數(shù)組進(jìn)行定義,然后定義了客戶消費信息鏈表,每添加一個客戶,先分配內(nèi)存,再添加消費者的信息,之后將鏈表中最后一個指針指向該新的消費者,刪除時,需先找到該消費者前面的消費者,直接將其指針指向刪除消費者的下一個消費者,修改信息時,先找到該消費者,選擇修改的內(nèi)容,再進(jìn)行修改,添加消費價格時,先找到該消費者,根據(jù)情況對增加或減少消費價格,并根據(jù)價格計算積分,打折時,根據(jù)消費者打折的要求,進(jìn)行打折。</p><p><

28、;b>  3.2函數(shù)間的關(guān)系</b></p><p>  哈夫曼系統(tǒng),函數(shù)間的關(guān)系如圖所示:</p><p><b>  4、詳細(xì)設(shè)計</b></p><p>  4.1系統(tǒng)的主要結(jié)構(gòu) </p><p>  4.1.1結(jié)構(gòu)定義:</p><p>  struct cnode&l

29、t;/p><p><b>  {</b></p><p>  char name[20];</p><p>  char ID[4];</p><p>  double consume;</p><p>  double integer;</p><p>  cnode *ne

30、xt;</p><p><b>  };</b></p><p>  4.1.2主要函數(shù)聲明及功能描述如下:</p><p>  void Count(cnode *head);</p><p><b>  計算客戶數(shù)量</b></p><p>  double displa

31、y_discount(double pionts);</p><p><b>  計算并返回折扣</b></p><p>  void Initstack(cnode * &head);</p><p><b>  初始化鏈表</b></p><p>  void Getelem(cnode

32、 *head);</p><p><b>  建立客戶信息</b></p><p>  void Search(cnode *head, char name[]);</p><p><b>  查找客戶</b></p><p>  void Amend(cnode *head, char name[

33、]);</p><p><b>  修改客戶資料</b></p><p>  void Delete(cnode *head, char name[]);</p><p><b>  刪除客戶信息</b></p><p>  void Showall(cnode *head);</p>

34、<p><b>  顯示所有客戶信息</b></p><p><b>  4.2源程序 </b></p><p>  4.2.1頭文件head.h</p><p>  #include <stdio.h></p><p>  #include <stdlib.h>

35、</p><p>  #include <string.h></p><p>  struct cnode</p><p><b>  {</b></p><p>  char name[20];</p><p>  char ID[4];</p><p>  

36、double consume;</p><p>  double integer;</p><p>  cnode *next;</p><p><b>  };</b></p><p>  void Count(cnode *head)</p><p><b>  {</b>

37、;</p><p><b>  cnode *p;</b></p><p>  int i = 0;</p><p><b>  p = head;</b></p><p>  if (p->next == NULL)</p><p><b>  {</

38、b></p><p>  printf("\n沒有客戶!");</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  while (p-

39、>next != NULL)</p><p><b>  {</b></p><p>  p = p->next;</p><p><b>  i++;</b></p><p><b>  }</b></p><p><b>  }

40、</b></p><p>  printf("\n現(xiàn)有客戶數(shù)量為%d位.\n", i);</p><p>  system("pause");</p><p><b>  }</b></p><p>  通過遍歷單鏈表并計數(shù)來統(tǒng)計客戶的數(shù)量,然后輸出。如圖5。</

41、p><p>  double display_discount(double pionts)</p><p><b>  {</b></p><p>  double discount;</p><p>  if (pionts == 0)</p><p><b>  {</b>

42、</p><p>  discount = 0;</p><p><b>  }</b></p><p>  else if (pionts>0 && pionts<=50)</p><p><b>  {</b></p><p>  discou

43、nt = 9.8;</p><p><b>  }</b></p><p>  else if (pionts>50 && pionts<=100)</p><p><b>  {</b></p><p>  discount = 9.5;</p><

44、p><b>  }</b></p><p>  else if (pionts>100 && pionts<=200)</p><p><b>  {</b></p><p>  discount = 9.0;</p><p><b>  }</b&

45、gt;</p><p>  else if (pionts>200 && pionts<=300)</p><p><b>  {</b></p><p>  discount = 8.0;</p><p><b>  }</b></p><p>

46、  else if (pionts > 300)</p><p><b>  {</b></p><p>  discount = 7.0;</p><p><b>  }</b></p><p>  return discount;</p><p><b>

47、  }</b></p><p>  用if else語句來判定積分的范圍,從而確定折扣,然后返回折扣。</p><p>  void Initstack(cnode * &head)</p><p><b>  {</b></p><p>  head = (cnode *)malloc(sizeof

48、(cnode));</p><p>  head->next = NULL;</p><p><b>  }</b></p><p>  初始化鏈表,將頭結(jié)點儲存在head中。</p><p>  void Getelem(cnode *head)</p><p><b>  {&

49、lt;/b></p><p><b>  cnode *p;</b></p><p><b>  double y;</b></p><p>  p = (cnode *)malloc(sizeof(cnode));</p><p>  printf("請輸入姓名:");&

50、lt;/p><p>  scanf("%s", &p->name);</p><p>  printf("請輸入ID(4位):");</p><p>  scanf("%s", &p->ID);</p><p>  while(strlen(p->ID)

51、 != 4)</p><p><b>  {</b></p><p>  printf("ID有誤,請重新輸入(4位):");</p><p>  scanf("%s", p->ID);</p><p><b>  }</b></p>&l

52、t;p>  printf("請輸入消費金額:");</p><p>  scanf("%lf", &p->consume);</p><p>  p->integer = p->consume/100;</p><p>  y = display_discount(p->integer);

53、</p><p>  printf("折扣: %.1lf 折\n", y);</p><p>  p->next = head->next;</p><p>  head->next = p;</p><p>  system("pause");</p><p>

54、;<b>  }</b></p><p>  用malloc函數(shù)分配存儲空間,然后輸入姓名、ID、消費金額等客戶數(shù)據(jù),最后插入鏈表尾部。如圖2。</p><p>  void Search(cnode *head, char name[])</p><p><b>  {</b></p><p>&

55、lt;b>  cnode *p;</b></p><p><b>  double y;</b></p><p>  bool flag = false;</p><p><b>  p = head;</b></p><p>  if (p->next == NULL)&l

56、t;/p><p><b>  {</b></p><p>  printf("\n沒有客戶!");</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b

57、></p><p>  while (p->next !=NULL)</p><p><b>  {</b></p><p>  p = p->next;</p><p>  if (!strcmp(name, p->name))</p><p><b>  {&

58、lt;/b></p><p>  printf("姓名: %s\n", p->name);</p><p>  printf("ID: %s\n", p->ID);</p><p>  printf("消費: %.2lf", p->consume);</p><p

59、>  printf("積分: %lf\n", p->integer);</p><p>  y = display_discount(p->integer);</p><p>  printf("折扣: %.1lf折\n", y);</p><p>  flag = true;</p><

60、p><b>  }</b></p><p><b>  }</b></p><p>  if (!flag)</p><p><b>  {</b></p><p>  printf("\n該客戶不存在!\n");</p><p&g

61、t;<b>  }</b></p><p><b>  }</b></p><p>  system("pause");</p><p><b>  }</b></p><p>  通過遍歷單鏈表,用strcmp函數(shù)對比與要查找的客戶姓名,若存在,則輸出該客

62、戶的信息;否則,輸出“該客戶不存在”。如圖3。</p><p>  void Amend(cnode *head, char name[])</p><p><b>  {</b></p><p><b>  cnode *p;</b></p><p>  double y, z;</p>

63、;<p>  int choose, x;</p><p><b>  p = head;</b></p><p>  if (p->next == NULL)</p><p><b>  {</b></p><p>  printf("\n沒有客戶!");&

64、lt;/p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  while (p->next != NULL)</p><p><b>  {</b&

65、gt;</p><p>  p = p->next;</p><p>  if (strcmp(name, p->name) == 0)</p><p><b>  {</b></p><p>  printf("姓名: %s\n", p->name);</p><

66、;p>  printf("ID: %s\n", p->ID);</p><p>  printf("消費: %.2lf\n", p->consume);</p><p>  printf("積分: %.lf\n", p->integer);</p><p>  y = display

67、_discount(p->integer);</p><p>  printf("折扣: %.1lf", y);</p><p><b>  }</b></p><p><b>  }</b></p><p>  printf("\n請選擇您要修改的資料: 1.姓

68、名 2.ID 3.消費金額");</p><p>  scanf("%d", &choose);</p><p>  switch (choose)</p><p><b>  {</b></p><p>  case 1:printf("請輸入修改后的姓名:"

69、);</p><p>  scanf("%s", &p->name);break;</p><p>  case 2:printf("請輸入修改后的ID:");</p><p>  scanf("%s", p->ID);</p><p>  while(strl

70、en(p->ID) != 4)</p><p><b>  {</b></p><p>  printf("ID有誤,請重新輸入(4位):");</p><p>  scanf("%s", p->ID);</p><p><b>  }break;</b

71、></p><p>  case 3:printf("請選擇1.覆蓋以前的消費 2.續(xù)加上現(xiàn)在的消費:");</p><p>  scanf("%d", &x);</p><p>  switch(x) </p><p><b>  {</b></p>

72、<p>  case 1: printf("請輸入修改后的消費:");</p><p>  scanf("%lf", &p->consume);break;</p><p>  case 2: printf("請輸入續(xù)加金額:");</p><p>  scanf("%l

73、f", &z);</p><p>  p->consume += z;break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  printf("姓名:%s\n", p->name);</p

74、><p>  printf("ID:%s\n", p->ID);</p><p>  printf("消費額:%.2lf\n", p->consume);</p><p>  p->integer = p->consume/100;</p><p>  printf("積分

75、:%lf\n", p->integer);</p><p>  y = display_discount(p->integer);</p><p>  printf("折扣:%.1lf折\n", y);</p><p><b>  }</b></p><p>  system(&

76、quot;pause");</p><p><b>  }</b></p><p>  先找到該客戶并輸出其信息,然后用switch語句選擇要修改的資料,然后輸出修改后的資料。如圖4。</p><p>  void Delete(cnode *head, char name[])</p><p><b&g

77、t;  {</b></p><p><b>  cnode *p;</b></p><p><b>  int x;</b></p><p><b>  double y;</b></p><p><b>  p = head;</b><

78、/p><p>  if (p->next == NULL)</p><p><b>  {</b></p><p>  printf("\n沒有客戶!");</p><p><b>  }</b></p><p><b>  else</

79、b></p><p><b>  {</b></p><p>  while (p->next != NULL) </p><p><b>  {</b></p><p><b>  head = p;</b></p><p>  p = p

80、->next;</p><p>  if (strcmp(name, p->name) == 0)</p><p><b>  {</b></p><p>  printf("姓名: %s\n", p->name);</p><p>  printf("ID: %s\n&q

81、uot;, p->ID);</p><p>  printf("消費: %.2lf", p->consume);</p><p>  printf("積分: %lf\n", p->integer);</p><p>  y = display_discount(p->integer);</p>

82、;<p>  printf("折扣: %.1lf折\n", y);</p><p><b>  }</b></p><p>  printf("確認(rèn)刪除? 1.確定 2.取消 請選擇:");</p><p>  scanf("%d", &x);</p>

83、<p>  if (x == 1)</p><p><b>  {</b></p><p>  head->next = p->next;</p><p>  printf("刪除成功!");</p><p><b>  }</b></p>

84、<p><b>  else</b></p><p><b>  {</b></p><p>  printf("刪除失敗!");</p><p><b>  }</b></p><p><b>  }</b></p&

85、gt;<p><b>  }</b></p><p>  printf("\n");</p><p>  system("pause");</p><p><b>  }</b></p><p>  先找到并輸出要刪除的客戶資料,然后進(jìn)行確認(rèn),若

86、確定,則刪除。Head儲存要刪除的客戶前一個結(jié)點的地址,將下一個結(jié)點地址賦給head->next。如圖7。</p><p>  void Showall(cnode *head)</p><p><b>  {</b></p><p><b>  cnode *p;</b></p><p>&

87、lt;b>  double y;</b></p><p><b>  p = head;</b></p><p>  if (p->next == NULL)</p><p><b>  {</b></p><p>  printf("沒有客戶!\n");

88、</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  while (p->next != NULL) </p><p><b>  {</

89、b></p><p>  p = p->next;</p><p>  printf("姓名: %s\n", p->name);</p><p>  printf("ID: %s\n", p->ID);</p><p>  printf("消費: %.2lf"

90、, p->consume);</p><p>  printf("積分: %lf\n", p->integer);</p><p>  y = display_discount(p->integer);</p><p>  printf("折扣: %.1lf折\n", y);</p><p

91、><b>  }</b></p><p><b>  }</b></p><p>  system("pause");</p><p><b>  }</b></p><p>  遍歷單鏈表,輸出每個節(jié)點的信息,直到p->next為空。如圖6。&

92、lt;/p><p>  4.2.2源文件source.cpp</p><p>  #include "Customer.h"</p><p>  void main()</p><p><b>  {</b></p><p>  cnode *head;</p>&l

93、t;p>  int choice;</p><p>  char name[10];</p><p>  Initstack(head);</p><p><b>  do </b></p><p><b>  {</b></p><p>  printf("

94、\n");</p><p>  printf(" 客戶消費積分管理系統(tǒng)\n\n");</p><p>  printf("****************************");</p><p>  printf("\n **");</p><p>

95、  printf("\n * 主菜單*");</p><p>  printf("\n *1. 添加客戶*");</p><p>  printf("\n *2. 查找客戶*");</p><p>  printf("\n *3. 修改客戶*");&l

96、t;/p><p>  printf("\n *4. 刪除客戶*");</p><p>  printf("\n *5. 顯示客戶*");</p><p>  printf("\n *6. 統(tǒng)計客戶*");</p><p>  printf("\n *

97、7. 退出*");</p><p>  printf("\n **");</p><p>  printf("\n***************************");</p><p>  printf("\n 請輸入您的選擇(1, 2, 3, 4, 5, 6, 7):")

98、;</p><p>  scanf("%d",&choice);</p><p>  switch (choice)</p><p><b>  {</b></p><p>  case 1:Getelem(head);break;</p><p>  case 2:

99、printf("\n 請輸入要查找的客戶姓名:");</p><p>  scanf("%s", name);</p><p>  Search(head, name);break;</p><p>  case 3:printf("\n 請輸入要修改的客戶姓名:");</p><p

100、>  scanf("%s", name);</p><p>  Amend(head, name);break;</p><p>  case 4:printf("\n 請輸入要刪除的客戶姓名:");</p><p>  scanf("%s", name);</p><p>

101、  Delete(head, name);break;</p><p>  case 5:printf("\n");</p><p>  Showall(head);break;</p><p>  case 6:printf("\n");</p><p>  Count(head);break;&

102、lt;/p><p>  case 7:exit(1);break;</p><p><b>  }</b></p><p>  system("cls");</p><p>  }while (choice <= 7);</p><p><b>  }</b

103、></p><p>  5.程序測試結(jié)果及問題分析</p><p>  5.1 程序測試結(jié)果</p><p><b>  圖1系統(tǒng)主界面</b></p><p><b>  圖2添加客戶</b></p><p><b>  圖3查找客戶</b>&l

104、t;/p><p>  圖4-1顯示要修改客戶的信息</p><p><b>  圖4-2修改后輸出</b></p><p><b>  圖5統(tǒng)計客戶數(shù)量</b></p><p>  圖6顯示所有客戶信息</p><p><b>  圖7刪除客戶信息</b>&

105、lt;/p><p><b>  5.2 問題分析</b></p><p>  數(shù)據(jù)結(jié)構(gòu)課程設(shè)計的目的是,通過設(shè)計掌握數(shù)據(jù)結(jié)構(gòu)課程中學(xué)到的基本理論和算法并綜合運用于解決實際問題中,它是理論與實踐相結(jié)合的重要過程。設(shè)計要求學(xué)會如何對實際問題定義相關(guān)數(shù)據(jù)結(jié)構(gòu),并采用恰當(dāng)?shù)脑O(shè)計方法和算法解決問題,同時訓(xùn)練學(xué)生進(jìn)行復(fù)雜程序設(shè)計的技能和培養(yǎng)良好的程序設(shè)計習(xí)慣。</p>

106、<p>  同時,需要我們發(fā)現(xiàn)細(xì)小問題的眼光及解決問題的能力,更要求我們多去掌握一些課外知識點,便于我們程序編寫。</p><p><b>  6.總結(jié)</b></p><p>  通過本次數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計,我學(xué)習(xí)了很多在上課沒懂的知識,并對單鏈表的算法有了更加深刻的了解,更鞏固了課堂中學(xué)習(xí)有關(guān)于單鏈表的知識,真正學(xué)會一種算法了。當(dāng)求解一個算法時,不是拿到

107、問題就不加思索地做,而是首先要先對它有個大概的了解,接著再詳細(xì)地分析每一步怎么做,無論自己以前是否有處理過相似的問題,只要按照以上的步驟,必定會順利地做出來。</p><p>  這次課程設(shè)計,我在編輯中犯了不應(yīng)有的錯誤,設(shè)計統(tǒng)計字符和合并時忘記應(yīng)該怎樣保存保存數(shù)據(jù),在不斷分析后明確并改正了錯誤和疏漏,使我的程序有了更高的質(zhì)量。這不僅是程序設(shè)計,更是鍛煉我們處理問題的能力,同時也使我們了解到團(tuán)隊合作的可貴.編寫程

108、序是件細(xì)心活,稍不留神就會出錯,這就必須要求我們對待事情要認(rèn)真!在編寫程序的過程中,錯誤不斷出現(xiàn),不同的類型(如少寫了一個符號,寫錯了字母,用錯了函數(shù)等等)層出不窮,這考驗我們待事細(xì)心,耐心,能不能堅持到底,不能半途而廢。</p><p>  三人行必有我?guī)?遇到問題我們一起討論,研究,錯了再寫,寫了在改.經(jīng)過多次的修改,調(diào)試,運行,添加,終于最后在大家的歡呼聲中,完成了我們的任務(wù).雖說是累了點,但我們也從中找到

109、了自己的快樂,每當(dāng)完成一個新的函數(shù)時,那心情是激動啊,這畢竟是自己弄出來的,同時也使我感受到了學(xué)習(xí)的快樂!</p><p><b>  7.附錄</b></p><p><b>  //頭文件</b></p><p>  #include <stdio.h></p><p>  #inc

110、lude <stdlib.h></p><p>  #include <string.h></p><p>  struct cnode</p><p><b>  {</b></p><p>  char name[20];</p><p>  char ID[4];&l

111、t;/p><p>  double consume;</p><p>  double integer;</p><p>  cnode *next;</p><p><b>  };</b></p><p>  void Count(cnode *head)</p><p>

112、<b>  {</b></p><p><b>  cnode *p;</b></p><p>  int i = 0;</p><p><b>  p = head;</b></p><p>  if (p->next == NULL)</p><p

113、><b>  {</b></p><p>  printf("\n沒有客戶!");</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p>

114、<p>  while (p->next != NULL)</p><p><b>  {</b></p><p>  p = p->next;</p><p><b>  i++;</b></p><p><b>  }</b></p>

115、<p><b>  }</b></p><p>  printf("\n現(xiàn)有客戶數(shù)量為%d位.\n", i);</p><p>  system("pause");</p><p><b>  }</b></p><p>  double displ

116、ay_discount(double pionts)</p><p><b>  {</b></p><p>  double discount;</p><p>  if (pionts == 0)</p><p><b>  {</b></p><p>  discoun

117、t = 0;</p><p><b>  }</b></p><p>  else if (pionts>0 && pionts<=50)</p><p><b>  {</b></p><p>  discount = 9.8;</p><p>

118、<b>  }</b></p><p>  else if (pionts>50 && pionts<=100)</p><p><b>  {</b></p><p>  discount = 9.5;</p><p><b>  }</b><

119、;/p><p>  else if (pionts>100 && pionts<=200)</p><p><b>  {</b></p><p>  discount = 9.0;</p><p><b>  }</b></p><p>  else

120、 if (pionts>200 && pionts<=300)</p><p><b>  {</b></p><p>  discount = 8.0;</p><p><b>  }</b></p><p>  else if (pionts > 300)<

121、;/p><p><b>  {</b></p><p>  discount = 7.0;</p><p><b>  }</b></p><p>  return discount;</p><p><b>  }</b></p><p

122、>  void Initstack(cnode * &head)</p><p><b>  {</b></p><p>  head = (cnode *)malloc(sizeof(cnode));</p><p>  head->next = NULL;</p><p><b>  }

123、</b></p><p>  void Getelem(cnode *head)</p><p><b>  {</b></p><p><b>  cnode *p;</b></p><p><b>  double y;</b></p><p

124、>  p = (cnode *)malloc(sizeof(cnode));</p><p>  printf("請輸入姓名:");</p><p>  scanf("%s", &p->name);</p><p>  printf("請輸入ID(4位):");</p>&

125、lt;p>  scanf("%s", &p->ID);</p><p>  while(strlen(p->ID) != 4)</p><p><b>  {</b></p><p>  printf("ID有誤,請重新輸入(4位):");</p><p>

126、;  scanf("%s", p->ID);</p><p><b>  }</b></p><p>  printf("請輸入消費金額:");</p><p>  scanf("%lf", &p->consume);</p><p>  p

127、->integer = p->consume/100;</p><p>  y = display_discount(p->integer);</p><p>  printf("折扣: %.1lf 折\n", y);</p><p>  p->next = head->next;</p><p&

128、gt;  head->next = p;</p><p>  system("pause");</p><p><b>  }</b></p><p>  void Search(cnode *head, char name[])</p><p><b>  {</b>&l

129、t;/p><p><b>  cnode *p;</b></p><p><b>  double y;</b></p><p>  bool flag = false;</p><p><b>  p = head;</b></p><p>  if (p

130、->next == NULL)</p><p><b>  {</b></p><p>  printf("\n沒有客戶!");</p><p><b>  }</b></p><p><b>  else</b></p><p&g

131、t;<b>  {</b></p><p>  while (p->next !=NULL)</p><p><b>  {</b></p><p>  p = p->next;</p><p>  if (!strcmp(name, p->name))</p>&l

132、t;p><b>  {</b></p><p>  printf("姓名: %s\n", p->name);</p><p>  printf("ID: %s\n", p->ID);</p><p>  printf("消費: %.2lf", p->consum

133、e);</p><p>  printf("積分: %lf\n", p->integer);</p><p>  y = display_discount(p->integer);</p><p>  printf("折扣: %.1lf折\n", y);</p><p>  flag = t

134、rue;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if (!flag)</p><p><b>  {</b></p><p>  printf("\n該客戶不存在!\n")

135、;</p><p><b>  }</b></p><p><b>  }</b></p><p>  system("pause");</p><p><b>  }</b></p><p>  void Amend(cnode *

136、head, char name[])</p><p><b>  {</b></p><p><b>  cnode *p;</b></p><p>  double y, z;</p><p>  int choose, x;</p><p><b>  p =

137、head;</b></p><p>  if (p->next == NULL)</p><p><b>  {</b></p><p>  printf("\n沒有客戶!");</p><p><b>  }</b></p><p>&

138、lt;b>  else</b></p><p><b>  {</b></p><p>  while (p->next != NULL)</p><p><b>  {</b></p><p>  p = p->next;</p><p>  

139、if (strcmp(name, p->name) == 0)</p><p><b>  {</b></p><p>  printf("姓名: %s\n", p->name);</p><p>  printf("ID: %s\n", p->ID);</p><p

140、>  printf("消費: %.2lf\n", p->consume);</p><p>  printf("積分: %.lf\n", p->integer);</p><p>  y = display_discount(p->integer);</p><p>  printf("折扣:

141、 %.1lf", y);</p><p><b>  }</b></p><p><b>  }</b></p><p>  printf("\n請選擇您要修改的資料: 1.姓名 2.ID 3.消費金額");</p><p>  scanf("%d"

142、, &choose);</p><p>  switch (choose)</p><p><b>  {</b></p><p>  case 1:printf("請輸入修改后的姓名:");</p><p>  scanf("%s", &p->name);

143、break;</p><p>  case 2:printf("請輸入修改后的ID:");</p><p>  scanf("%s", p->ID);</p><p>  while(strlen(p->ID) != 4)</p><p><b>  {</b><

144、;/p><p>  printf("ID有誤,請重新輸入(4位):");</p><p>  scanf("%s", p->ID);</p><p><b>  }break;</b></p><p>  case 3:printf("請選擇1.覆蓋以前的消費 2.續(xù)

145、加上現(xiàn)在的消費:");</p><p>  scanf("%d", &x);</p><p>  switch(x) </p><p><b>  {</b></p><p>  case 1: printf("請輸入修改后的消費:");</p>&

146、lt;p>  scanf("%lf", &p->consume);break;</p><p>  case 2: printf("請輸入續(xù)加金額:");</p><p>  scanf("%lf", &z);</p><p>  p->consume += z;break

147、;</p><p><b>  }</b></p><p><b>  }</b></p><p>  printf("姓名:%s\n", p->name);</p><p>  printf("ID:%s\n", p->ID);</p>

溫馨提示

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

評論

0/150

提交評論