2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩22頁(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></p><p><b>  第一部分</b></p><p>  個(gè)人帳簿管理系統(tǒng)設(shè)計(jì)------------------------------------------------------3</p><p>  問(wèn)題描述---------------------------

2、-----------------------------------------3</p><p>  需求分析--------------------------------------------------------------------3</p><p>  概要設(shè)計(jì)-------------------------------------------------------

3、-------------3</p><p>  詳細(xì)設(shè)計(jì)--------------------------------------------------------------------8</p><p>  調(diào)試分析(算法優(yōu)劣)--------------------------------------------------8</p><p>  源程序

4、-----------------------------------------------------------------------9</p><p><b>  第二部分</b></p><p>  心得體會(huì)-------------------------------------------------------------------23</p

5、><p>  項(xiàng)目分工--------------------------------------------------------------------24</p><p>  一.個(gè)人帳簿管理系統(tǒng)設(shè)計(jì)</p><p><b>  1.問(wèn)題描述</b></p><p>  個(gè)人帳簿管理系統(tǒng)記錄某人每月的全部收入及各項(xiàng)

6、開(kāi)支情況,包括食品消費(fèi),房租,子女教育費(fèi)用,水電費(fèi),醫(yī)療費(fèi),儲(chǔ)蓄等。進(jìn)入系統(tǒng)后可以輸入和修改某月的收支情況,可以對(duì)每月的開(kāi)支從小到大進(jìn)行排序,可以根據(jù)輸入的月份查詢每月的收支情況。</p><p><b>  2.需求分析</b></p><p> ?。?)需要建立一個(gè)賬戶,包括食品消費(fèi),房租,教育費(fèi)用,水電費(fèi),醫(yī)療費(fèi),儲(chǔ)蓄等開(kāi)支情況。</p><

7、p>  (2)對(duì)于輸入的每個(gè)月的開(kāi)支情況,可以保存并對(duì)其查詢,修改和對(duì)每月的開(kāi)支從小到大進(jìn)行排序。</p><p> ?。?)友好的用戶界面,可以實(shí)現(xiàn)用戶要求的各項(xiàng)功能。</p><p><b>  3.概要設(shè)計(jì)</b></p><p><b>  (1)設(shè)計(jì)思想</b></p><p>  

8、●通過(guò)程序建立個(gè)人賬簿信息(包括各個(gè)開(kāi)支的輸入,月份的輸入,并能保存新建的個(gè)人賬簿文件)并且建立查詢系統(tǒng)(能查看已有全部個(gè)人賬簿數(shù)據(jù)信息,對(duì)每月的開(kāi)支從小到大進(jìn)行排序,然后確定是否保存修改后的個(gè)人賬簿信息。能修改用戶指定的月份數(shù)據(jù)信息,并選擇是否保存修改的賬簿信息。能添加月份的數(shù)據(jù)信息,并選擇是否保存修改的賬簿信息)</p><p><b>  ●退出系統(tǒng)</b></p>&l

9、t;p><b> ?。?)實(shí)現(xiàn)方法</b></p><p>  通過(guò)主程序創(chuàng)建新文件,輸入信息并保存,讀出已保存文件并進(jìn)行添加,修改,排序等功能</p><p><b> ?。?)算法流程圖</b></p><p><b> ?。?)數(shù)據(jù)結(jié)構(gòu)定義</b></p><p>

10、  typedef struct</p><p><b>  { </b></p><p>  Int accountname;//賬戶名</p><p>  int month;// 月份</p><p>  int earning; //收入</p><p>  int food; //食

11、品消費(fèi)</p><p>  int rent; //房租</p><p>  int children; //子女教育</p><p>  int utilities; // 水電費(fèi)</p><p>  int medical;// 醫(yī)療費(fèi)</p><p>  int deposit;// 儲(chǔ)蓄費(fèi)用</p>

12、<p><b>  }account;</b></p><p>  用于保存每個(gè)月份的信息</p><p><b>  (5)功能模塊</b></p><p>  ● CountList.h 頭文件,定義數(shù)據(jù)結(jié)構(gòu),聲明子函數(shù)</p><p>  ● Count.()主函數(shù),各個(gè)功能模塊

13、的跳轉(zhuǎn)</p><p>  ● int MenuSlect() 主要功能菜單選擇</p><p>  ● NewCount() 新建賬戶</p><p>  InputData(int m) 輸入一個(gè)月的賬戶信息,返回輸入的信息一個(gè)賬戶信息</p><p>  ● LoadCount(char *name) 登錄賬戶</p>

14、<p><b>  查詢個(gè)人賬戶信息</b></p><p> ?。?)LookCount(char *name) 查看賬戶</p><p> ?。?)OutputCount(LinkList countlist)輸出賬戶信息 </p><p>  (3)IsCountExist(char* name)判斷輸入的賬戶名對(duì)應(yīng)的賬戶是否

15、存在</p><p><b>  添加個(gè)人賬戶信息</b></p><p> ?。?)AddMonthData在賬戶中添加月份賬戶信息</p><p>  (5)int IsMonthExist(char *name,int month) 判斷賬戶中輸入的月份是否存在</p><p> ?。?)ReadCount(ch

16、ar *name,LinkList *plist) 把文件中的賬戶信息讀出到鏈表中</p><p> ?。?)LinkList BubbleMonthSort(LinkList head) 把head鏈表按月份大小排序后返回排序后的head鏈表</p><p> ?。?)SaveToFile(char *name,LinkList plist) 把鏈表plist中的數(shù)據(jù)保存在name文件中

17、</p><p><b>  修改個(gè)人賬戶信息</b></p><p> ?。?)ResetMonthCount(char *name) 重置輸入月份的賬戶信息</p><p> ?。?0)IsMonthExist(char *name,int month) 判斷輸入的月份month在賬戶中是否存在</p><p>&

18、lt;b>  對(duì)每月總支出排序</b></p><p> ?。?1)SortCount(char *name)對(duì)賬戶中的總支出排序</p><p><b>  按月查詢賬戶信息</b></p><p> ?。?2)LookMonthCount.() 按輸入的月份查看相應(yīng)的月份賬戶信息</p><p>&

19、lt;b>  刪除某月賬戶信息</b></p><p>  (13)DltCount(char *name) </p><p><b>  ● 刪除賬戶信息</b></p><p>  RmCount()提示用戶的輸入要?jiǎng)h除的賬戶,如果賬戶存在就刪除,并返回刪除成功的信息, 如果賬戶不存在就返回刪除失敗信息</p>

20、<p>  ● AboutIt() 輸出本系統(tǒng)的相關(guān)介紹</p><p>  3.詳細(xì)設(shè)計(jì)(見(jiàn)源程序)</p><p>  4.調(diào)試分析(算法優(yōu)劣)</p><p>  (1)時(shí)間復(fù)雜度分析</p><p>  本算法的排序功能使用冒泡排序法。若文件初態(tài)為正態(tài),則一趟冒泡排序就可完成,排序碼比較次數(shù)為n-1,且無(wú)異動(dòng)記錄,時(shí)間

21、復(fù)雜度為O(n)。若文件的初態(tài)為逆序,則需要n-1次冒泡,每次進(jìn)行n-i次排序比較,且每次都移動(dòng)3次,比較和移動(dòng)次數(shù)均達(dá)到最大值。</p><p>  C(max)=O(n²),M(max)= O(n²)</p><p>  (2)算法優(yōu)缺點(diǎn):比較的需要的空間較大,算法中增加一個(gè)輔助空間temp,輔助空間S(n)=O(1)。冒泡排序法是穩(wěn)定的。</p>&

22、lt;p><b>  附 源代碼</b></p><p>  #include <stdio.h></p><p>  #include <stdlib.h></p><p>  #include <string.h></p><p>  #include <conio

23、.h></p><p>  #define MONTH 20</p><p>  /*賬戶開(kāi)支信息*/</p><p>  struct Count{</p><p>  int month; //月份</p><p>  float income; //總收入</p>&

24、lt;p>  float outcome; //總支出</p><p>  float food; //食品消費(fèi)</p><p>  float rent; //房租</p><p>  float education; //子女教育費(fèi)</p><p>  float water;

25、//水電費(fèi)</p><p>  float hospital; //醫(yī)療費(fèi)</p><p>  float save; //儲(chǔ)蓄</p><p>  float other; //其他</p><p><b>  };</b></p><p>  struct No

26、de {</p><p>  struct Count acount;</p><p>  struct Node *next; //指向下一個(gè)月的信息節(jié)點(diǎn)</p><p><b>  };</b></p><p>  typedef struct Node *PNode;</p><p>  

27、typedef struct Node *LinkList;</p><p>  typedef struct LinkList *PLinkList;</p><p>  int MenuSlect();</p><p>  int EndWithZero();</p><p>  int IsMonthExist(char *name,i

28、nt month);</p><p>  int IsCountExist(char* name);</p><p>  void AboutIt();</p><p>  void RmCount();</p><p>  void NewCount();</p><p>  void LoadCount(char*

29、);</p><p>  void SortCount(char *);</p><p>  void LookCount(char *);</p><p>  void DltCount(char *name);</p><p>  void LookMonthCount(char *,int);</p><p> 

30、 void ResetMonthCount(char *);</p><p>  void AddMonthData(char *name);</p><p>  void ReadCount(char *,LinkList *);</p><p>  void OutputCount(LinkList countlist);</p><p>

31、;  void SaveToFile(char *name,LinkList plist);</p><p>  struct Count InputData(int );</p><p>  LinkList BubbleMonthSort(LinkList head);</p><p>  int main() {</p><p>  s

32、ystem("color fd");</p><p>  char name[16];</p><p>  printf("歡迎使用天才賬戶管理系統(tǒng),祝你愉快!\n");</p><p>  while(1) {</p><p><b>  out:</b></p>

33、<p>  switch(MenuSlect()) {</p><p><b>  case 1:</b></p><p>  system("cls");</p><p>  NewCount(); //新建賬戶</p><p>  system("cls")

34、;</p><p><b>  break;</b></p><p><b>  case 2:</b></p><p>  system("cls");</p><p>  printf("請(qǐng)輸入你的賬戶名:");</p><p> 

35、 while(1) {</p><p>  scanf("%s",name);</p><p>  if (!IsCountExist(name)) {</p><p>  printf("賬戶不存在,請(qǐng)核對(duì)或者選擇1新建賬戶:");</p><p><b>  goto out;</b

36、></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  LoadCount(name); //登錄賬戶</p><p><b>  b

37、reak;</b></p><p><b>  case 3:</b></p><p>  RmCount();</p><p><b>  break;</b></p><p><b>  case 4:</b></p><p>  sys

38、tem("cls");</p><p>  AboutIt(); //關(guān)于我們</p><p><b>  break;</b></p><p><b>  case 0:</b></p><p>  exit(0); //退出</p&

39、gt;<p><b>  }</b></p><p><b>  }</b></p><p>  printf("\n退出系統(tǒng)!按任意鍵關(guān)閉窗口......");</p><p><b>  getch();</b></p><p><b

40、>  return 0;</b></p><p><b>  }</b></p><p>  int MenuSlect() {</p><p>  //char ch[4];</p><p><b>  int n;</b></p><p>  print

41、f("\n\t\t\t\t 主功能菜單 \t\t\t\t");</p><p>  printf("\n\t\t\t\t1.新建個(gè)人賬戶\t\t\t\t");</p><p>  printf("\n\t\t\t\t2.登錄個(gè)人賬戶\t\t\t\t");</p><p>  printf("\

42、n\t\t\t\t3.刪除個(gè)人賬戶\t\t\t\t");</p><p>  printf("\n\t\t\t\t4.關(guān)于我們 \t\t\t\t");</p><p>  printf("\n\t\t\t\t0.退出程序 \t\t\t\t");</p><p>  printf("\n根據(jù)功能菜單選擇相應(yīng)的

43、操作0--4:");</p><p>  while(1) {</p><p>  scanf("%d",&n);</p><p>  //n = atoi(ch);</p><p>  if(n>=0 && n<=4)</p><p><b>

44、;  break;</b></p><p><b>  else</b></p><p>  printf("選擇錯(cuò)誤,請(qǐng)重新選擇0--4:");</p><p><b>  }</b></p><p><b>  return n;</b>&l

45、t;/p><p><b>  }</b></p><p>  void NewCount(){</p><p><b>  FILE *fp;</b></p><p>  char name[10];</p><p>  printf("輸入賬戶名:");&l

46、t;/p><p>  scanf("%s",name);</p><p>  if (IsCountExist(name)){</p><p>  printf("賬戶已經(jīng)存在!請(qǐng)進(jìn)行其他操作!\n");</p><p><b>  return ;</b></p>&l

47、t;p><b>  }</b></p><p>  /*賬戶不存在新建賬戶*/</p><p>  fp = fopen(name,"w");</p><p>  fprintf( fp," %s你好!歡迎使用天才賬戶管理系統(tǒng),你的賬戶信息如下:\n",name);</p><

48、;p>  fputs( "月份 房 租 子女教育 水電費(fèi) 醫(yī) 療 儲(chǔ) 蓄 其 他 總支出\n",fp);</p><p>  fclose(fp);</p><p>  AddMonthData(name);</p><p>  printf("\n新建賬戶完成!按任意鍵繼續(xù).....&quo

49、t;);</p><p><b>  getch();</b></p><p><b>  }</b></p><p>  struct Count InputData(int m) {</p><p>  struct Count myCount;</p><p>  my

50、Count.month = m;</p><p>  printf("%20s","輸入房租:");</p><p>  scanf("%f",&myCount.rent);</p><p>  printf("%20s","輸入子女教育費(fèi):");</p

51、><p>  scanf("%f",&myCount.education);</p><p>  printf("%20s","輸入水電費(fèi):");</p><p>  scanf("%f",&myCount.water);</p><p>  prin

52、tf("%20s","輸入醫(yī)療費(fèi):");</p><p>  scanf("%f",&myCount.hospital);</p><p>  printf("%20s","輸入儲(chǔ)蓄費(fèi):");</p><p>  scanf("%f",&a

53、mp;myCount.save);</p><p>  printf("%20s","輸入其他費(fèi)用:");</p><p>  scanf("%f",&myCount.other);</p><p>  myCount.outcome = myCount.rent + myCount.educati

54、on + myCount.water</p><p>  + myCount.hospital + myCount.save + myCount.other;</p><p>  return myCount;</p><p><b>  }</b></p><p>  int LoadSlect() {</p&g

55、t;<p><b>  int n;</b></p><p>  char ch[4];</p><p>  //system("cls");</p><p>  printf("\n\t\t\t\t 查詢菜單 ");</p><p> 

56、 printf("\n\t\t\t\t1.查詢個(gè)人賬戶信息 ");</p><p>  printf("\n\t\t\t\t2.添加個(gè)人賬戶信息 ");</p><p>  printf("\n\t\t\t\t3.修改個(gè)人賬戶信息 ");</p><p>  printf("\n\t\t\

57、t\t4.對(duì)每月總支出排序");</p><p>  printf("\n\t\t\t\t5.查詢某月賬戶信息 ");</p><p>  printf("\n\t\t\t\t6.刪除某月賬戶信息 ");</p><p>  printf("\n\t\t\t\t0.返回

58、 ");</p><p>  printf("\n根據(jù)功能菜單選擇相應(yīng)的操作0--5:");</p><p>  while(1) {</p><p>  scanf("%s",ch);</p><p>  n = atoi(ch);</p><p>  i

59、f(n>=0 && n<=6)</p><p><b>  break;</b></p><p>  printf("選擇錯(cuò)誤,請(qǐng)重新選擇0--6:");</p><p><b>  }</b></p><p><b>  return n;

60、</b></p><p><b>  }</b></p><p>  void LoadCount(char *name) {</p><p>  int month;</p><p>  printf("\n登錄成功!歡迎你%s你可以對(duì)你的賬戶進(jìn)行如下管理:",name);</p&

61、gt;<p>  while(1) {</p><p>  switch(LoadSlect()) {</p><p><b>  case 1:</b></p><p>  system("cls");</p><p>  LookCount(name);</p><

62、;p><b>  break;</b></p><p><b>  case 2:</b></p><p>  system("cls");</p><p>  AddMonthData(name);</p><p>  printf("\n賬戶添加完成,請(qǐng)按任意

63、鍵繼續(xù)......");</p><p><b>  getch();</b></p><p>  system("cls");</p><p><b>  break;</b></p><p><b>  case 3:</b></p>

64、;<p>  system("cls");</p><p>  ResetMonthCount(name);</p><p><b>  break;</b></p><p><b>  case 4:</b></p><p>  system("cls&

65、quot;);</p><p>  SortCount(name);</p><p><b>  break;</b></p><p><b>  case 5:</b></p><p>  system("cls");</p><p>  printf(

66、"請(qǐng)輸入要查看的月:");</p><p>  scanf("%d",&month);</p><p>  LookMonthCount(name,month);</p><p>  printf("\n賬戶按月查看完成,請(qǐng)按任意鍵繼續(xù)......");</p><p>&l

67、t;b>  getch();</b></p><p>  system("cls");</p><p><b>  break;</b></p><p><b>  case 6:</b></p><p>  DltCount(name);</p>

68、<p>  system("cls");</p><p><b>  break;</b></p><p><b>  case 0:</b></p><p>  printf("\n 賬戶成功退出!");</p><p>  print

69、f("\n按任意鍵繼續(xù).......");</p><p><b>  getch();</b></p><p>  system("cls");</p><p><b>  return ;</b></p><p><b>  }</b>

70、;</p><p><b>  }</b></p><p><b>  }</b></p><p>  int LoadSlect() {</p><p><b>  int n;</b></p><p>  char ch[4];</p>

71、<p>  //system("cls");</p><p>  printf("\n\t\t\t\t 查詢菜單 ");</p><p>  printf("\n\t\t\t\t1.查詢個(gè)人賬戶信息 ");</p><p>  printf("\n\t\

72、t\t\t2.添加個(gè)人賬戶信息 ");</p><p>  printf("\n\t\t\t\t3.修改個(gè)人賬戶信息 ");</p><p>  printf("\n\t\t\t\t4.對(duì)每月總支出排序");</p><p>  printf("\n\t\t\t\t5.查詢某月賬戶信息 "

73、;);</p><p>  printf("\n\t\t\t\t6.刪除某月賬戶信息 ");</p><p>  printf("\n\t\t\t\t0.返回 ");</p><p>  printf("\n根據(jù)功能菜單選擇相應(yīng)的操作0--5:");</p

74、><p>  while(1) {</p><p>  scanf("%s",ch);</p><p>  n = atoi(ch);</p><p>  if(n>=0 && n<=6)</p><p><b>  break;</b></p&g

75、t;<p>  printf("選擇錯(cuò)誤,請(qǐng)重新選擇0--6:");</p><p><b>  }</b></p><p><b>  return n;</b></p><p><b>  }</b></p><p>  void Look

76、Count(char *name) {</p><p>  //FILE fp;</p><p>  LinkList countlist; //賬戶節(jié)點(diǎn)</p><p>  countlist = (LinkList) malloc (sizeof (struct Node));</p><p>  ReadCount(n

77、ame,&countlist);</p><p>  BubbleMonthSort(countlist);</p><p>  printf("\n %s你好!歡迎使用天才賬戶管理系統(tǒng),你的賬戶信息如下:",name);</p><p>  puts( "\n月份 房 租 子女教育 水電費(fèi) 醫(yī) 療

78、儲(chǔ) 蓄 其 他 總支出");</p><p>  SaveToFile(name,countlist);</p><p>  OutputCount(countlist);</p><p>  printf("\n賬戶查看完成,請(qǐng)按任意鍵繼續(xù)......");</p><p><b>  

79、getch();</b></p><p>  system("cls");</p><p><b>  }</b></p><p>  void LookCount(char *name) {</p><p>  //FILE fp;</p><p>  LinkL

80、ist countlist; //賬戶節(jié)點(diǎn)</p><p>  countlist = (LinkList) malloc (sizeof (struct Node));</p><p>  ReadCount(name,&countlist);</p><p>  BubbleMonthSort(countlist);</p>

81、<p>  printf("\n %s你好!歡迎使用天才賬戶管理系統(tǒng),你的賬戶信息如下:",name);</p><p>  puts( "\n月份 房 租 子女教育 水電費(fèi) 醫(yī) 療 儲(chǔ) 蓄 其 他 總支出");</p><p>  SaveToFile(name,countlist);<

82、/p><p>  OutputCount(countlist);</p><p>  printf("\n賬戶查看完成,請(qǐng)按任意鍵繼續(xù)......");</p><p><b>  getch();</b></p><p>  system("cls");</p><

83、;p><b>  }</b></p><p>  /*根據(jù)name判斷賬戶是否存在*/</p><p>  int IsCountExist(char* name) {</p><p><b>  FILE *fp;</b></p><p>  if((fp = fopen(name,&quo

84、t;r")) != NULL)</p><p><b>  return 1;</b></p><p><b>  else</b></p><p><b>  return 0;</b></p><p><b>  }</b></p>

85、;<p>  void AddMonthData(char *name) {</p><p><b>  FILE *fp;</b></p><p>  int mon,i;</p><p>  int month;</p><p>  LinkList countlist; //賬戶節(jié)點(diǎn)

86、</p><p>  struct Count myCount;</p><p>  printf("輸入要添加的月份數(shù)目:");</p><p>  scanf("%d",&mon);</p><p>  /*把剛添加的數(shù)據(jù)寫入到文件*/</p><p>  for(i

87、=0;i<mon;i++) {</p><p>  printf("輸入要添加的月份:");</p><p>  scanf("%d",&month);</p><p>  myCount.month = month;</p><p>  while(1) {</p><

88、;p>  if(IsMonthExist(name,month)){</p><p>  printf("月%d的賬戶信息已經(jīng)存!\n",month);</p><p><b>  break;</b></p><p><b>  }</b></p><p><b&g

89、t;  else {</b></p><p>  myCount = InputData(month);</p><p>  fp = fopen(name,"a");</p><p>  fprintf(fp,"%-4d%9.2f%9.2f%9.2f%9.2f%9.2f%9.2f%9.2f\n",</p&g

90、t;<p>  myCount.month,myCount.rent,myCount.education,</p><p>  myCount.water,myCount.hospital,myCount.save,</p><p>  myCount.other,myCount.outcome);</p><p>  fclose(fp);</

91、p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(i>0) {

92、//賬戶新添加后任保持賬戶有序</p><p>  countlist = (LinkList) malloc (sizeof (struct Node));</p><p>  ReadCount(name,&countlist);</p><p>  BubbleMonthSort(countlist);</p><p>  Sa

93、veToFile(name,countlist);</p><p><b>  }</b></p><p><b>  }</b></p><p>  /*判斷輸入的月份month賬戶是否存在*/</p><p>  int IsMonthExist(char *name,int month) {&

94、lt;/p><p>  LinkList countlist;</p><p>  PNode p; //賬戶節(jié)點(diǎn)</p><p>  countlist = (LinkList) malloc (sizeof (struct Node));</p><p>  ReadCount(name,&countlist);<

95、;/p><p>  p = countlist;</p><p>  p = p->next;</p><p>  while((p != NULL)) {</p><p>  if(p->acount.month == month)</p><p><b>  return 1;</b>

96、</p><p>  p = p->next;</p><p><b>  }</b></p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  /*將文件中的數(shù)據(jù)讀出到單鏈表中*/<

97、/p><p>  void ReadCount(char *name,LinkList *plist) {</p><p><b>  FILE *fp;</b></p><p><b>  char ch;</b></p><p>  PNode p,q,tp;</p><p>

98、;  tp = (PNode) malloc (sizeof (struct Node));</p><p>  q = (PNode) malloc (sizeof (struct Node));</p><p>  if(NULL == q) {</p><p>  printf("\n內(nèi)存錯(cuò)誤");</p><p>

99、<b>  return ;</b></p><p><b>  }</b></p><p>  *plist = q;</p><p>  q->next = NULL;</p><p>  fp = fopen(name,"r");</p><p&g

100、t;  while((ch=fgetc(fp)) != (int)'\n'); //跳過(guò)第一行</p><p>  while((ch=fgetc(fp)) != (int)'\n'); //跳過(guò)第二行</p><p>  while(1) {</p><p>  if((ch=fgetc(fp)) == EOF)</p&g

101、t;<p><b>  break;</b></p><p>  if((ch=fgetc(fp)) == EOF)</p><p><b>  break;</b></p><p><b>  else</b></p><p>  fseek(fp,-2,SEE

102、K_CUR);</p><p>  /*從文件中讀出數(shù)據(jù)到單鏈表中*/</p><p>  p = (PNode) malloc (sizeof (struct Node));</p><p>  if(NULL == p) {</p><p>  printf("\n2.內(nèi)存錯(cuò)誤");</p><p&

103、gt;<b>  exit(0);</b></p><p><b>  }</b></p><p>  fscanf(fp,"%d%f%f%f%f%f%f%f",</p><p>  &p->acount.month,</p><p>  //&p->

104、acount.food,</p><p>  &p->acount.rent,</p><p>  &p->acount.education,</p><p>  &p->acount.water,</p><p>  &p->acount.hospital,</p>&l

105、t;p>  &p->acount.save,</p><p>  &p->acount.other,</p><p>  &p->acount.outcome);</p><p>  p->next = q->next;</p><p>  q->next = p;</p

106、><p><b>  q = p;</b></p><p><b>  }</b></p><p>  fclose(fp);</p><p><b>  }</b></p><p>  /*把head鏈表按月份大小排序后返回排序后的head鏈表*/<

107、/p><p>  LinkList BubbleMonthSort(LinkList head) {</p><p>  struct Node *p,*q,*tail,*s;</p><p>  tail=NULL;</p><p>  while(head->next!=tail) {</p><p><b

108、>  p=head;</b></p><p>  q=p->next;</p><p>  while(q->next!=tail) {</p><p>  if(p->next->acount.month>q->next->acount.month) {</p><p>  s=q

109、->next;</p><p>  p->next=q->next;</p><p>  q->next=q->next->next;</p><p>  p->next->next=q;</p><p><b>  q=s;</b></p><p>

110、;<b>  }</b></p><p>  p=p->next;</p><p>  q=q->next;</p><p><b>  }</b></p><p><b>  tail=q;</b></p><p><b>  }

111、</b></p><p>  return head;</p><p><b>  }</b></p><p>  /*把head鏈表按月份大小排序后返回排序后的head鏈表*/</p><p>  LinkList BubbleMonthSort(LinkList head) {</p>&l

112、t;p>  struct Node *p,*q,*tail,*s;</p><p>  tail=NULL;</p><p>  while(head->next!=tail) {</p><p><b>  p=head;</b></p><p>  q=p->next;</p><

113、;p>  while(q->next!=tail) {</p><p>  if(p->next->acount.month>q->next->acount.month) {</p><p>  s=q->next;</p><p>  p->next=q->next;</p><p&g

114、t;  q->next=q->next->next;</p><p>  p->next->next=q;</p><p><b>  q=s;</b></p><p><b>  }</b></p><p>  p=p->next;</p><

115、;p>  q=q->next;</p><p><b>  }</b></p><p><b>  tail=q;</b></p><p><b>  }</b></p><p>  return head;</p><p><b>

116、;  }</b></p><p>  void ResetMonthCount(char *name) {</p><p>  PNode tp,p,temp;</p><p>  int month;</p><p>  LinkList countlist;</p><p>  ReadCount(na

117、me,&countlist);</p><p>  tp = (PNode) malloc (sizeof (struct Node));</p><p>  tp->next = NULL;</p><p>  /*判斷要重置的月份是否存在*/</p><p>  printf("輸入你要修改的月份:");

118、</p><p>  scanf("%d",&month);</p><p>  if(IsMonthExist(name,month)) {</p><p>  LookMonthCount(name,month);</p><p>  printf("\n開(kāi)始修改,請(qǐng)輸入修改后的信息:\n"

119、);</p><p>  tp->acount = InputData(month);</p><p>  p = countlist;</p><p>  while((p->next != NULL)) {</p><p>  if(p->next->acount.month == month) {</p&g

120、t;<p>  temp = p->next->next; //最容易有bug的地方</p><p>  p->next = tp;</p><p>  tp->next = temp;</p><p>  SaveToFile(name,countlist);</p><p><b> 

121、 break;</b></p><p><b>  }</b></p><p>  p = p->next;</p><p><b>  }</b></p><p>  printf("賬戶修改完成,");</p><p><b&g

122、t;  }</b></p><p><b>  else {</b></p><p>  printf("你需要修改的月份不存在,返回!");</p><p><b>  }</b></p><p>  printf("請(qǐng)按任意鍵繼續(xù)......"

123、);</p><p><b>  getch();</b></p><p>  system("cls");</p><p><b>  }</b></p><p>  /*判斷輸入的月份month賬戶是否存在*/</p><p>  int IsMont

124、hExist(char *name,int month) {</p><p>  LinkList countlist;</p><p>  PNode p; //賬戶節(jié)點(diǎn)</p><p>  countlist = (LinkList) malloc (sizeof (struct Node));</p><p>  Rea

125、dCount(name,&countlist);</p><p>  p = countlist;</p><p>  p = p->next;</p><p>  while((p != NULL)) {</p><p>  if(p->acount.month == month)</p><p>

126、;<b>  return 1;</b></p><p>  p = p->next;</p><p><b>  }</b></p><p><b>  return 0;</b></p><p><b>  }</b></p>&l

127、t;p>  LinkList BubbleOutcmeSort(LinkList head) {</p><p>  struct Node *p,*q,*tail,*s;</p><p>  tail=NULL; //排序區(qū)與為排序區(qū)的分界,前面為為排序區(qū)</p><p>  while(head->next!=tail) {<

128、;/p><p>  p=head; //每次循環(huán)從都節(jié)點(diǎn)開(kāi)始掃描一直到為排序區(qū)結(jié)束</p><p>  q=p->next;</p><p>  while(q->next!=tail) {</p><p>  if(p->next->acount.outcome>q->next->aco

129、unt.outcome) {</p><p>  s=q->next; //如果滿足條件就將相鄰兩個(gè)元素交換</p><p>  p->next=q->next;</p><p>  q->next=q->next->next;</p><p>  p->next->next=q;</

130、p><p><b>  q=s;</b></p><p><b>  }</b></p><p>  p=p->next; //步進(jìn)</p><p>  q=q->next;</p><p><b>  }</b></p>&

131、lt;p>  tail=q; //分區(qū)界限向前移動(dòng)</p><p><b>  }</b></p><p>  return head; //將排序的鏈表返回</p><p><b>  }</b></p><p>  void SortCount(char *name) {&

132、lt;/p><p>  LinkList countlist; //賬戶節(jié)點(diǎn)</p><p>  countlist = (LinkList) malloc (sizeof (struct Node));</p><p>  ReadCount(name,&countlist);</p><p>  BubbleOutc

133、meSort(countlist);</p><p>  printf(" %s你好!你的賬戶支出排序情況信息如下:\n",name);</p><p>  puts("月份 房 租 子女教育 水電費(fèi) 醫(yī) 療 儲(chǔ) 蓄 其 他 總支出\n");</p><p>  OutputCount(

134、countlist);</p><p>  printf("\n賬戶支出排序完成,請(qǐng)按任意鍵繼續(xù)......");</p><p><b>  getch();</b></p><p>  system("cls");</p><p><b>  }</b>&

135、lt;/p><p>  void LookMonthCount(char *name,int month) {</p><p>  //int month;</p><p><b>  PNode p;</b></p><p>  LinkList countlist; //賬戶節(jié)點(diǎn)</p>

136、<p>  countlist = (LinkList) malloc (sizeof (struct Node));</p><p>  ReadCount(name,&countlist);</p><p>  p = countlist;</p><p>  p = p->next;</p><p>  //pr

137、intf("請(qǐng)輸入要查看的月:");</p><p>  //scanf("%d",&month);</p><p>  while((p != NULL)) {</p><p>  if(month == p->acount.month) {</p><p>  printf("

138、; %s你好!你%d月的賬戶信息如下:",name,month);</p><p>  puts("\n月份 房 租 子女教育 水電費(fèi) 醫(yī) 療 儲(chǔ) 蓄 其 他 總支出");</p><p>  printf("%-4d%9.2f%9.2f%9.2f%9.2f%9.2f%9.2f%9.2f\n"

139、,</p><p>  p->acount.month,p->acount.rent,p->acount.education,</p><p>  p->acount.water,p->acount.hospital,p->acount.save,</p><p>  p->acount.other,p->acount

140、.outcome);</p><p><b>  return ;</b></p><p><b>  }</b></p><p><b>  else</b></p><p>  p = p->next;</p><p><b>  }

141、</b></p><p>  printf("對(duì)不起你要查看的月份不存在,你可以選擇2添加賬戶信息");</p><p><b>  }</b></p><p>  void DltCount(char *name) {</p><p>  //FILE *fp;</p>&

142、lt;p>  LinkList countlist,temp; //賬戶節(jié)點(diǎn)</p><p>  int month; //需要?jiǎng)h除的月份</p><p>  countlist = (LinkList) malloc (sizeof (struct Node));</p><p>  ReadCount(

溫馨提示

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