版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- java課程設(shè)計(jì)---銀行賬戶管理系統(tǒng)
- 銀行賬戶管理系統(tǒng)-課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)---個(gè)人銀行賬戶管理系統(tǒng)
- c++課程設(shè)計(jì) 銀行賬戶管理系統(tǒng)
- c++課程設(shè)計(jì)報(bào)告---銀行賬戶管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---銀行賬戶管理系統(tǒng)
- c++課程設(shè)計(jì)---銀行賬戶管理系統(tǒng)程序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_銀行賬戶管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--個(gè)人銀行賬戶管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告(銀行賬戶信息管理系統(tǒng))
- c語(yǔ)言課程設(shè)計(jì)報(bào)告(銀行賬戶信息管理系統(tǒng))
- 銀行活期儲(chǔ)蓄賬戶管理課程設(shè)計(jì)
- web課程設(shè)計(jì)--課程管理系統(tǒng)
- 《面向?qū)ο笳n程設(shè)計(jì)》課程設(shè)計(jì)---媒體管理系統(tǒng)
- 課程設(shè)計(jì)---課程設(shè)計(jì)圖書管理系統(tǒng)
- c課程設(shè)計(jì)---圖書管理系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)-訂單式銷售管理系統(tǒng)課程設(shè)計(jì)
- 倉(cāng)庫(kù)管理系統(tǒng)課程設(shè)計(jì)
- 選課管理系統(tǒng)課程設(shè)計(jì)
- 倉(cāng)庫(kù)管理系統(tǒng)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論