c語言課程設計報告(答辯上交)_第1頁
c語言課程設計報告(答辯上交)_第2頁
c語言課程設計報告(答辯上交)_第3頁
c語言課程設計報告(答辯上交)_第4頁
已閱讀5頁,還剩5頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、青島理工大學C 語言程序設計題目家庭財務管理系統指導教師:王金龍姓名:吳瑋學號:201007133班級:網絡 102專業:網絡工程地點:多媒體樓 207時間:6.27至 7.01一、內容家庭財務管理系統主要是對家庭成員的收入,支出,進行添加,刪除,查詢等操作,并能統計總收入和總支出。該軟件給家庭成員提供了一個管理家庭財務的平臺。1) 菜單設計: 本系統提供簡單易操作的界面。 有提示, 幫助用戶根據需要對家庭財務管理系統進行操作。2) 添加模塊:根據實際的收入或支出,添加相應的記錄,條數不限。3) 查詢模塊:可以選擇不同關鍵字輸入,查找該條記錄。4) 刪除模塊:若某條記錄錯誤或者不需要則可以刪除

2、。5) 顯示模塊: 按照添加的先后順序依次把記錄顯示在屏幕上,并顯示總收入和總支出以及余額。6) 退出模塊:退出財務管理系統并保存文件。)二、上機環境操作系統: windows XP開發工具: VC6.0+三、函數調用關系圖1添加聯系開始打開文件,載入信息菜單界面2340查刪顯退詢除示出聯聯聯系系系保存結束四、各函數功能說明1系統主要函數及功能。1. ) add 函數:功能為添加收入或支出的記錄2. ) search 函數:功能為查找聯系人輸入關鍵字,從文件中搜索相應的記錄并顯示出來。3. ) delete_rec 函數:功能為刪除記錄若某條記錄錯誤或者不需要則可以刪除。4. ) show 函

3、數:功能為顯示記錄,將添加的記錄顯示在屏幕上。5. ) quit 函數:功能為保存信息退出系統。五、算法描述添加: 在主菜單選擇添加選項后,系統會依次讓用戶輸入年月日,并且限定月份輸入時要在1 至 12 內,如果符合要求則繼續執行,輸完整條記錄。動態鏈表會根據用戶的使用情況動態調整內存大小。插入一個結點到已有鏈表后,head 指向插入的結點,該結點指向head 原來所指的結點。每添加一條記錄后接點隨即加一。查詢 :在主菜單選擇查詢選項后,選擇查詢方式,1. 按姓名查2. 按備注查。然后按提示輸入相應的信息姓名(或備注) ,系統會根據信息用一個指針從這個鏈表的第一個結點依次往后開始查詢,若某個結

4、點符合則輸出該記錄的信息,若指向NULL即最后一個結點也查詢完畢依然沒找到,則返回主菜單。刪除:輸入需要刪除的姓名和金額,系統會根據信息用一個q 指針從這個鏈表的第一個結點依次往后開始查詢, 并將已查詢過的結點賦給另一個p 指針。若某個結點符合則顯示該記錄的信息, 并讓用戶再次確認是否刪除。 若指向 NULL即最后一個結點也查詢完畢依然沒找到,則則返回主菜單。如果確定刪除該結點,則q 所指的結點的前一個結點(即p 所指的結點)指向該接點所指向的下一個結點,也就是將 q 所指的結點從原來的鏈表中分離出來。每刪除一條記錄后接點隨即減一。六、程序運行效果圖1. 添加聯系人添加記錄時限定月份在 112

5、 月之間,否則無法添加,每添加一條記錄后就返回主菜單,鏈表中插入了該結點。2 查詢聯系人查詢記錄時, 可以選擇備注或者姓名進行查找。 若選擇按姓名查找, 則在輸入名字后,系統會根據添加的先后順序,在屏幕上依次顯示出該聯系人的全部記錄。3 刪除聯系人選擇刪除選項后, 界面會讓使用者輸入要刪除者的姓名及金額, 并根據輸入的信息顯示該條記錄, 并且為了防止意外刪除而有提示是否刪除, 經使用者再三確認后便刪除該記錄。4 顯示聯系人在菜單中選擇顯示選項后, 系統會把所有的記錄按照先后順序依次逐條顯示在界面上,還計算出了一共的收入,一共的支出及當前余額。并且5 退出在菜單中選中該選項后,系統會把所有的資料

6、都保存到文件中,然后關閉該系統。七、總結本次對家庭財務管理系統的編寫,我遇到了許多困難。 主要原因不怎么擅長使用“指針”。在添加模塊中, 由于沒有很好的理解指針中插入的專用句子, 所以脫離書本的時候根本不知怎么開始, 自己想了很久也沒想出來, 后面翻了書, 把相關的句子抄上去后死記硬背了下來。 p->next=head;head=p; 在添加節點數是, 未強調 Recordcount 數據類型。 在寫刪除模塊是也遇到了類似的問題。 看了書上的一個例題,里面有兩個指針, 可是我的代碼中只有一個,怎么辦呢?模仿了書上的寫法, 第一次以失敗告終, 經過很多種修改后總結出失敗的原因是該指針定義錯

7、誤, 針對該錯誤,經過很多的嘗試終成功了。在顯示函數中,自我感覺沒有錯誤了,可是每次在“一共收入,一共支出, 當前余額” 后面都顯示了一長串數字,在快放棄時終于發現自己犯了一個很可笑的錯, printf 語言中居然用了取地址符。在保存函數中也犯了一些常見的錯,在寫入文件中居然用了fscanf語句。八、參考文獻譚浩強 C 程序設計(第四版) 清華大學出版社。九、程序清單(雙列排版,小五號字 )#include <stdio.h>case 1:add();break;#include<stdlib.h>case 2:search();break;#include<st

8、ring.h>case 3:delete_rec();break;struct F_Datacase 4:show();break;int year;/年int month;/月int data;/日期float amout;/金額char name20;/姓名int type;/收入或支出類型char comment100;/備注struct F_Data*next;/定義一個指針;void main()int i,w=1;while(w=1);void add()system("cls");/*清屏*/int Recordcount;struct F_Data*h

9、ead;struct F_Data *p=NULL;/*定義pNode為 struct F_Data類型指針 */p=(structF_Data*)malloc(sizeof(structF_Data);/* 運 行 時 動 態 調 整 所 占 內 存void add();的大小 */void search();printf("請輸入年份:");void delete_rec();scanf("%d",&p->year);void show();printf("請輸入月份:");doscanf("%d"

10、;,&p->month);if(p->month>0)&&(p->month<13)/*限定月份為112 */printf("*n");printf("歡迎使用家庭財務管理系統printf("1:添加記錄 n");printf("2:查詢記錄 n");printf("3:刪除記錄 n");printf("4:顯示所有記錄n");printf("0:退出 n");scanf("%d",&

11、i);switch(i)n");printf("請輸入日期 :");scanf("%d",&p->data);printf("請輸入金額 :");scanf("%f",&p->amout);printf("請輸入姓名 :");scanf("%s",p->name);printf("收入按 1,支出按scanf("%d",&p->type);0:");printf("請輸

12、入類型 :");scanf("%s",p->comment);p->next=head;/*插入一個結點*/head=p;Recordcount+;/*結點數加一*/system("PAUSE");/*停頓 */void search()system("cls");/* 清屏 */struct F_Data*head;char name20;int type;int choice;structF_Data*p=NULL;/* 定義 pNode 為 struct F_Data類型指針 */printf("

13、1按姓名查找 n2 按備注查找 n ");printf("請輸入你的選擇:");scanf("%d",&choice);if(choice=1)printf("請輸入姓名: ");scanf("%s",name);for(p=head;p!=NULL;p=p->next)/*從鏈表的第一個結點到尾結點*/if(strcmp(p->name,name)=0)/*如果輸入的name 和結點中的name一樣 */printf("%dt",p->year);print

14、f("%dt",p->month);printf("%dt",p->data);printf("%.2ft",p->amout);printf("%st",p->name);printf("%dt",p->type);printf("%sn",p->comment);if(choice=2)printf("請輸入類型:1收入 0支出 n");scanf("%d",&type);for(p=he

15、ad;p!=NULL;p=p->next);if(p->type=type)/*如果輸入的 type 和結點中的type 一樣 */printf("%dt",p->year);printf("%dt",p->month);printf("%dt",p->data);printf("%.2ft",p->amout);printf("%st",p->name);printf("%dt",p->type);printf("%

16、sn",p->comment);system("PAUSE");/*停頓 */void delete_rec()system("cls");/*清屏 */struct F_Data*head;int Recordcount;char name20;float amout;int choice;structF_Data *p=NULL,*q=NULL;/* 定義 p 和 q都為 struct F_Data類型指針 */p=head;/*p指向第一個結點*/q=head;/*q指向第一個結點*/printf("請輸入要刪除者的姓名:

17、");scanf("%s",name);printf("請輸入金額: ");scanf("%f",&amout);for(;q!=NULL;q=q->next)/*q指針從鏈表的第一個結點到尾結點*/if(head->amout=amout)&&(strcmp(head->name,name)=0) /*如果頭結點符合要求*/printf("%dt",q->year);printf("%dt",q->month);printf(&q

18、uot;%dt",q->data);printf("%.2ft",q->amout);printf("%st",q->name);printf("%dt",q->type);printf("%sn",q->comment);printf("確認刪除?n 1是 n 2否n");scanf("%d",&choice);if(choice=1)head=q->next;/*刪除頭結點 */Recordcount-;/*結點數減一

19、 */else break;elseif(q->amout=amout)&&(strcmp(q->name,name)=0) /*如果結點符合要求*/printf("%dt",q->year);printf("%dt",q->month);printf("%dt",q->data);printf("%.2ft",q->amout);printf("%st",q->name);printf("%dt",q->type);printf("%sn",q->comment);printf("確認刪除? n 1是 n 2否n");scanf("%d",&choice);if(choice=1)p->next=q->next; /*刪除一個結點*/Recordcount-;/*結點數減一*/else break;elsep=q;/*p后移一個位子 */system("PAUSE");/* 停頓 */void show()system("cls"

溫馨提示

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

評論

0/150

提交評論