c語言課程設(shè)計(論文)-購物卡管理系統(tǒng)_第1頁
已閱讀1頁,還剩13頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  C語言課程設(shè)計報告</b></p><p><b>  班學(xué)號: 1</b></p><p><b>  姓名: </b></p><p><b>  指導(dǎo)老師: </b></p><p>  日期: 201

2、0年6月</p><p>  中國地質(zhì)大學(xué)(武漢)</p><p><b>  計算機(jī)學(xué)院</b></p><p><b>  一、題目要求</b></p><p><b>  系統(tǒng)主要功能模塊:</b></p><p>  1,實(shí)現(xiàn)系統(tǒng)內(nèi)制卡,發(fā)卡功能

3、。</p><p>  2,實(shí)現(xiàn)系統(tǒng)內(nèi)購物卡帳戶及相關(guān)帳戶管理。</p><p>  3,實(shí)現(xiàn)購物卡交易和合法性檢查。</p><p>  4,實(shí)現(xiàn)購物卡交易積分功能。</p><p>  5,實(shí)現(xiàn)購物卡報表功能。</p><p>  6,數(shù)據(jù)以文件形式存儲。</p><p>  提示:制卡:指

4、申請一個購物卡,但還沒有使用。發(fā)卡:指該卡已經(jīng)起用。實(shí)現(xiàn)卡交易:指從卡中消費(fèi)掉一定金額。</p><p><b>  二、需求分析</b></p><p>  根據(jù)題目要求,由于購物卡信息是存放在文件中,所以應(yīng)提供文件的輸入、輸出等操作;在程序中需瀏覽購物卡的信息,應(yīng)提供報表、查詢等操作;另外還應(yīng)提供鍵盤式選擇菜單實(shí)現(xiàn)功能選擇。</p><p>

5、;<b>  三、總體設(shè)計</b></p><p>  根據(jù)需求分析,可以將系統(tǒng)分為五大模塊:制卡、發(fā)卡、登陸、報表、積分。</p><p><b>  四、詳細(xì)設(shè)計</b></p><p><b>  1、主函數(shù)</b></p><p>  將main()函數(shù)體內(nèi)的界面選擇部

6、分語句單獨(dú)抽取出來作為一獨(dú)立函數(shù),目的在于系統(tǒng)執(zhí)行完每部分功能模塊后能夠方便返回到系統(tǒng)界面。</p><p>  void menu()</p><p><b>  {</b></p><p><b>  int v,w1;</b></p><p><b>  do</b>&l

7、t;/p><p><b>  {</b></p><p>  printf("\t\t*********************MENU*********************\n\n");</p><p>  printf("\t\t\t\t 1.card-made\n");</p><

8、;p>  printf("\t\t\t\t 2.card-life\n");</p><p>  printf("\t\t\t\t 3.card-enter\n");</p><p>  printf("\t\t\t\t 4.card-browse\n");</p><p>  printf(&quo

9、t;\t\t\t\t 5.exit\n");</p><p>  printf("\n\n\t\t **********************************************\n");</p><p>  printf("Choice your number(1-5):[]\b\b");</p><p&

10、gt;  scanf("%d",&v);</p><p>  if(v<1||v>5)</p><p><b>  { </b></p><p><b>  w1=1;</b></p><p>  getchar();</p><p

11、><b>  }</b></p><p>  else w1=0;</p><p><b>  }</b></p><p>  while(w1==1);</p><p><b>  switch(v)</b></p><p><b> 

12、 {</b></p><p>  case 1:made();break; </p><p>  case 2:life();break; </p><p>  case 3:enter();break; </p><p>  case 4:browse();break;</p><p>

13、  case 5:exit(0); </p><p><b>  }</b></p><p><b>  }</b></p><p><b>  2、各功能模塊設(shè)計</b></p><p><b>  (1)制卡模塊</b></p

14、><p><b>  【數(shù)據(jù)結(jié)構(gòu)】</b></p><p>  struct credicard </p><p><b>  {</b></p><p>  int number;</p><p>  char name[20];</p><p

15、>  char ID[20];</p><p>  char word[8];</p><p><b>  int flag;</b></p><p>  float account; </p><p>  int integal; </p><p><b>  }card[M];

16、</b></p><p>  /*card[M]中每個數(shù)組元素對應(yīng)一個運(yùn)動員信息* /</p><p><b>  【程序】</b></p><p>  void made() </p><p><b>  {</b></p><

17、;p><b>  int i;</b></p><p>  char h[20];</p><p><b>  do</b></p><p><b>  {</b></p><p>  printf("\n\n\t Input your number:<\

18、t\t\t>\b\b\b\b\b\b\b");</p><p>  scanf("%s",h);</p><p>  if(strlen(h)!=6)</p><p><b>  {</b></p><p>  printf("\n\n\n\t\t**************

19、*Wrong!Input again****************\n\n");</p><p><b>  continue;</b></p><p><b>  }</b></p><p>  for(i=0;i<n;i++)</p><p>  if(strcmp(card[

20、i].ID,h)==0)</p><p><b>  {</b></p><p>  printf("\n\n\t\t***********The number exist,input again************\n\n");</p><p><b>  break;</b></p>

21、<p><b>  }</b></p><p><b>  }</b></p><p>  while(((strlen(h))!=6)||strcmp(card[i].ID,h)==0);</p><p>  card[n].number=n;</p><p>  strcpy(ca

22、rd[n].name,"***");</p><p>  strcpy(card[n].ID,h);</p><p>  strcpy(card[n].word,"000000");</p><p>  card[n].flag=0;</p><p>  card[n].account=0.00;<

23、;/p><p>  card[n].integal=0;</p><p>  printf("\n\n\n\t\t********************The card is made!**********************\n\n");</p><p>  print_one(n);</p><p><b>

24、;  n++;</b></p><p><b>  add();</b></p><p><b>  menu();</b></p><p><b>  }</b></p><p>  print_one(n):顯示一張卡信息的函數(shù)。</p><

25、p><b>  【程序】</b></p><p>  void print_one(int j) </p><p><b>  {</b></p><p>  printf("\n|----|--------------------|--------------------|-

26、---|----------|----------|");</p><p>  printf("\n|NO. | name | ID |flag| account | integal |");</p><p>  printf("\n|----|--------------------|

27、--------------------|----|----------|----------|");</p><p>  printf("\n|%4d|%20s|%20s|%4d|%10.2f|%10d|",</p><p>  card[j].number,card[j].name,card[j].ID,card[j].flag,card[j].accou

28、nt,card[j].integal);</p><p>  printf("\n|----|--------------------|--------------------|----|----------|----------|");</p><p><b>  }</b></p><p><b>  (2)發(fā)

29、卡模塊</b></p><p>  void life() </p><p><b>  {</b></p><p><b>  int k=-1;</b></p><p>  char h[20];</p><p&g

30、t;<b>  if(n==0)</b></p><p>  printf("\n\n\t\t****************Make card first*********************\n");</p><p><b>  else</b></p><p><b>  {<

31、/b></p><p>  printf("\n\n\t Input your applied number:<\t\t\t>\b\b\b\b\b\b\b");</p><p>  scanf("%s",h);</p><p>  k=search(h);</p><p><b&

32、gt;  if(k==-1)</b></p><p>  printf("\n\n\t\t\t*****************Wrong number!****************\n");</p><p><b>  else</b></p><p><b>  {</b></

33、p><p>  if(card[k].flag==1)</p><p>  printf("\n\n\t\t****************Life already!*****************\n");</p><p>  else huo(k);</p><p><b>  }</b></

34、p><p><b>  }</b></p><p><b>  menu();</b></p><p><b>  }</b></p><p>  huo(k):激活一張卡的函數(shù)。</p><p>  void huo(int k)

35、 </p><p><b>  {</b></p><p>  char m[20],p[8];</p><p><b>  int x,w2;</b></p><p><b>  do</b></p><p><b>  {<

36、;/b></p><p>  printf("\n\n\t\t Life? (1) Yes (2) No \n");</p><p>  printf("\n\t\t Chioce your number:< >\b\b");</p><p>  scanf("%d",&

37、;x);</p><p>  if(x<1||x>2)</p><p>  {w2=1;getchar();}</p><p>  else w2=0;</p><p><b>  }</b></p><p>  while(w2==1);</p><p>&l

38、t;b>  if(x==1)</b></p><p><b>  {</b></p><p>  printf("\n\n\t\tInput your name:<\t\t\t>\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");</p><p>  scanf

39、("%s",m);</p><p>  strcpy(card[k].name,m);</p><p>  printf("\n\n\t\tInput six-number code :< >\b\b\b\b\b\b\b");</p><p>  scanf("%s",p);</

40、p><p>  strcpy(card[k].word,p);</p><p>  card[k].flag=1;</p><p>  printf("\n\n\n\t\t********************Life!**********************\n\n");</p><p>  print_one(k);

41、</p><p><b>  add();</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b> ?。?)登陸模塊</b></p><p>  void enter()

42、 </p><p><b>  {</b></p><p><b>  int k=-1;</b></p><p>  char h[20];</p><p><b>  if(n==0)</b></p><p

43、>  printf("\n\n\t\t****************Make card first*********************\n");</p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("\n\n\t

44、Input your applied number:<\t\t\t>\b\b\b\b\b\b\b");</p><p>  scanf("%s",h);</p><p>  k=search(h);</p><p><b>  if(k==-1)</b></p><p>  pr

45、intf("\n\n\t\t\t*****************Wrong number!****************\n");</p><p><b>  else</b></p><p><b>  {</b></p><p>  if(card[k].flag=0)</p>&

46、lt;p>  printf("\n\n\t\t************LIFE FIRST!************\n");</p><p><b>  else</b></p><p><b>  hedui(k);</b></p><p><b>  }</b><

47、/p><p><b>  }</b></p><p><b>  menu();</b></p><p><b>  }</b></p><p>  hedui(k):登陸信息。</p><p>  void hedui(int k)

48、 </p><p><b>  {</b></p><p>  int c=0,w3=0;</p><p>  char p[8];</p><p><b>  do</b></p><p><b>  { </b></p>

49、;<p>  printf("\n\n\t\t*******Input your code:< >\b\b\b\b\b\b\b");</p><p>  scanf("%s",p);</p><p>  if(strcmp(card[k].word,p)!=0)</p><p><b&

50、gt;  {</b></p><p>  printf("\n\n\t\t********Wrong code!**********\n");</p><p><b>  c++;</b></p><p><b>  continue;</b></p><p><

51、;b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("\n\n\t\t**********Right code!***********\n");</p><p><b

52、>  w3=1;</b></p><p><b>  menu1(k);</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  while(w3==0&&c<3);</p>

53、<p><b>  }</b></p><p><b>  子菜單設(shè)計如下:</b></p><p>  void menu1(int k) </p><p><b>  {</b></p><p><b>  

54、int v,w4;</b></p><p><b>  {</b></p><p>  printf("\t\t*********************MENU********************\n\n");</p><p>  printf("\t\t\t\t 1.Inquire\n"

55、;);</p><p>  printf("\t\t\t\t 2.Deposit\n");</p><p>  printf("\t\t\t\t 3.fetch\n");</p><p>  printf("\t\t\t\t 4.change code\n");</p><p>  

56、printf("\t\t\t\t 5.back to menu\n");</p><p>  printf("\n\n\t\t *********************************************\n");</p><p>  printf("Choice your number(1--5):< >\b\b

57、");</p><p>  scanf("%d",&v);</p><p>  if(v<1||v>5)</p><p>  {w4=1;getchar();}</p><p>  else w4=0;</p><p><b>  }</b><

58、;/p><p>  while(w4==1);</p><p><b>  switch(v)</b></p><p><b>  {</b></p><p>  case 1:stat_one(k);break;</p><p>  case 2:deposit(k);brea

59、k;</p><p>  case 3:fetch(k);break;</p><p>  case 4:change(k);break;</p><p>  case 5:menu();</p><p><b>  }</b></p><p><b>  }</b><

60、;/p><p><b>  子模塊設(shè)計如下</b></p><p><b>  查詢模塊:</b></p><p>  void stat_one(int k)</p><p><b>  {</b></p><p>  printf("\n\n\

61、t\t*************Operate successfully!***************");</p><p>  print_one(k);</p><p><b>  menu1(k);</b></p><p><b>  }</b></p><p><b>

62、  儲蓄模塊</b></p><p>  void deposit(int k)</p><p><b>  {</b></p><p>  float a=0.00;</p><p>  printf("\n\n\t\tInput your amount:<\t\t>\b\b\b\b\

63、b\b\b\b\b\b\b");</p><p>  scanf("%f",&a);</p><p>  card[k].account+=a;</p><p>  printf("\n\n\t\t**********deposit successfully!***********");</p>

64、<p>  print_one(k);</p><p><b>  add();</b></p><p><b>  menu1(k);</b></p><p><b>  } </b></p><p><b>  消費(fèi)模塊:</b></

65、p><p>  void fetch(int k) </p><p><b>  {</b></p><p>  float b=0.00;</p><p>  printf("\n\n\t\tInput your amount:<\t\t>\b\b\b\b\b\b

66、\b\b\b\b\b");</p><p>  scanf("%f",&b);</p><p>  if(b>card[k].account)</p><p>  printf("\n\n\t\t**********Remaining sum is not enough !*************")

67、;</p><p><b>  else</b></p><p><b>  {</b></p><p>  card[k].account-=b;</p><p>  card[k].integal=b;</p><p>  printf("\n\n\t\t***

68、*******Your patronage !***********");</p><p>  print_one(k);</p><p><b>  add();</b></p><p><b>  }</b></p><p><b>  menu1(k);</b>

69、</p><p><b>  }</b></p><p><b>  修改密碼模塊:</b></p><p>  void change(int k) </p><p><b>  {</b></p><p>  

70、char a[8],b[8];</p><p>  printf("\n\n\t\tInput new six-number code:< >\b\b\b\b\b\b\b");</p><p>  scanf("%s",a);</p><p>  printf("\n\t\tInput new

71、code again:< >\b\b\b\b\b\b\b");</p><p>  scanf("%s",b);</p><p>  if(strcmp(a,b)==0)</p><p><b>  {</b></p><p>  printf("\n\n\t

72、\t**********Code change!*************");</p><p><b>  add();</b></p><p><b>  }</b></p><p><b>  else</b></p><p>  printf("\n

73、\n\t\tDifferent codes,code change failed!");</p><p><b>  menu1(k);</b></p><p><b>  }</b></p><p><b>  (4)報表模塊:</b></p><p>  void

74、 browse()</p><p><b>  {</b></p><p><b>  int i;</b></p><p><b>  if(n==0)</b></p><p>  printf("\n\n\t\t**********Make card first!

75、***********");</p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("\n\n\t\t*************Operate successfully!**************\n");</p>

76、<p>  printf("\n|----|--------------------|--------------------|----|----------|----------|");</p><p>  printf("\n|NO. | name | ID |flag| account | integ

77、al |");</p><p>  printf("\n|----|--------------------|--------------------|----|----------|----------|");</p><p>  for(i=0;i<n;i++)</p><p>  printf("\n|%4d|%2

78、0s|%20s|%4d|%10.2f|%10d|",</p><p>  card[i].number,card[i].name,card[i].ID,card[i].flag,card[i].account,card[i].integal);</p><p>  printf("\n|----|--------------------|----------------

79、----|----|----------|----------|");</p><p><b>  }</b></p><p><b>  menu( );</b></p><p><b>  } </b></p><p><b>  3、公共函數(shù)<

80、/b></p><p><b> ?。?)保存函數(shù)</b></p><p>  void add() </p><p><b>  {</b></p><p><b>  int i;</b></p><

81、p><b>  FILE *fp;</b></p><p>  if((fp=fopen("score.txt","wb"))==NULL)</p><p><b>  {</b></p><p>  printf("\t\t Can not open the fil

82、e \n");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  for(i=0;i<n;i++)</p><p>  if(fwrite(&card[i],sizeof(struct credicard),1,f

83、p)!=1)</p><p><b>  {</b></p><p>  printf("\t\t File write error \n");</p><p><b>  return;</b></p><p><b>  }</b></p>

84、<p>  fclose(fp);</p><p>  printf("\n\n\n\t\t************Keep!!!************\n");</p><p><b>  }</b></p><p><b> ?。?)查找函數(shù)</b></p><p&

85、gt;  int search(char h[20])</p><p><b>  {</b></p><p>  int i,k=-1;</p><p>  for(i=0;i<n;i++)</p><p>  if(strcmp(card[i].ID,h)==0)k=i;</p><p>

86、;  return(k);</p><p><b>  }</b></p><p><b>  五、運(yùn)行結(jié)果</b></p><p><b> ?。?)主菜單</b></p><p>  (2)制卡模塊:輸入卡號</p><p><b> ?。?/p>

87、3)制卡成功</b></p><p><b> ?。?)發(fā)卡模塊</b></p><p><b>  (5)發(fā)卡成功</b></p><p><b> ?。?)登錄模塊</b></p><p><b> ?。?)儲蓄成功</b></p&g

88、t;<p><b>  (8)修改密碼</b></p><p><b> ?。?)報表功能</b></p><p><b>  六、總結(jié)</b></p><p>  以前在沒有做課程設(shè)計的時候,總覺得自己編寫一個程序那簡直就是天方夜譚,自己怎么可能寫的出來。可是現(xiàn)在,照著書本一點(diǎn)點(diǎn)模仿設(shè)

89、計,自己竟然也可以寫個大概,雖然過程不是很順利,有些部分還需要學(xué)長的指點(diǎn),但是,我覺得已經(jīng)有很大的收獲了。對于有些部分,可能還是不會寫,最起碼可以看懂了,不會像以前一樣,只是能做一兩道題目,寫個三四十行程序,現(xiàn)在是對于程序有了一個整體的把握。雖然花費(fèi)了很多時間和精力,但是可以學(xué)到很多東西,現(xiàn)在自己對于C語言有了更深一點(diǎn)的理解和認(rèn)識。</p><p>  我知道,現(xiàn)在只是學(xué)了一點(diǎn)皮毛而已,離熟練掌握C語言還有很大一

溫馨提示

  • 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

提交評論