


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、#include #include #include #include #define MAX 10#define MENU_MAIN_COUNT 7typedef struct memberchar nameMAX;char idMAX;char sex2;int age;float money;char tel12; struct member *next;float cost;mem;void menu();void save(mem *p);/ 編譯預處理指令,引入頭文件mem *head=NULL;mem* get_last(mem *p) 指針if(p-next = NULL)re
2、turn p;elseget_last(p-next);/ 頭指針為 NULL/ 取得鏈表最后一個元素的節(jié)點指針并返回該void creat_member(mem *pNew) 會員登記函數(shù)/ 輸入信息操作,的會員/ 創(chuàng) 建一個 新/ 自定義符號常量/ 主菜單的選項個數(shù)/ 定義結(jié)構(gòu)體類型 member ,采用鏈式存儲結(jié)構(gòu)/ 卡號/ 性別/ 年齡/ 余額/ 定義一個指針指向下一個會員信息/ 消費金額/ 定義結(jié)構(gòu)體變量 mem/* 聲明函數(shù) */* 聲明函數(shù),聲明菜單函數(shù) */ 聲明保存函數(shù)char s; printf( 卡號 :); printf( 請輸入 : );scanf(%s,pNew-i
3、d);/ 運用指針輸入卡號scanf(%s,pNew-name); / 運用指針輸入a:printf( 請輸入性別 (f-女 m-男): ); s = getchar();if(s=f|s=m) else 誤 printf( 輸入錯誤,請重新輸入 goto a; 新輸入printf( 請輸入年齡 : );printf( 請輸入繳費金額 : ); 額printf( 請輸入 : ); pNew-cost=0;初始化消費額為 0printf(n 創(chuàng)立完畢 !n);getchar();/ 輸入男女/ 判斷是 男 是 女if (s = f | s = F) strcpy(pNew-sex, 女 ); i
4、f (s = M | s = m) strcpy(pNew-sex, 男 );/ 如果輸入錯.n);II跳轉(zhuǎn)至a,重scanf(%d,&(pNew-age); / 運用指針輸入年齡scanf(%f,&(pNew-money); II 運用指針輸入余scanf(%s,pNew-tel);II 運用指針輸入II運用指針void newMember()數(shù) 信息char con=N;mem *pLast= NULL;mem *pNew=(mem *)malloc(sizeof(mem); 態(tài)分配內(nèi)存pNew-next=NULL; creat_member(pNew); 記函數(shù)II 會員登記函II 添
5、加 會 員II 按 mem 動II 調(diào)用會員登if(head = NULL)head = pNew;elsepLast = get_last(head); pLast-next = pNew; printf( 繼續(xù)輸入會員信息? (Y 繼續(xù), N 返回菜單 );記/ 判斷是否繼續(xù)登getchar();con = getchar();if (con = n | con = N) save(pNew); menu();elsesave(pNew); newMember();操作void table_head()printf(+-printf(| 卡號printf(+-void table_butt
6、om()printf(+-| 性別 |年齡 |余額+n);| 累計消費 |+n);+n);void table_row(mem *p)局部printf(|%10s|%6s|%6s|%6d|%8.2f|%8.2f|%11s|n, p-id,p-name,p-sex,p-age,p-money,p-cost,p-tel);/ 顯示信息/ 定義表頭|n);/ 定義底線/ 定義中間void display(mem *p) p = head;table_head();/ 顯示所有信息/ 調(diào)用表頭while(p != NULL)table_row(p); p = p-next; table_buttom(
7、);/ 調(diào)用中間局部/ 調(diào)用底線void display_one(mem *p)table_head();table_row(p); table_buttom();/ 只顯示一條信息void table_sum() / 定義總計 printf(+n);printf(| | | | | 總計 | 總計 | printf(+n);void table_r(float money,float cost) / 定義總計 2printf(| | | | |%8.2f|%8.2f| |n);|n,money,cost);void display_statistics(mem *p,float money,
8、float cost) 息函數(shù)/ 顯示統(tǒng)計信p = head; table_head(); while(p != NULL)table_row(p); p = p-next;p=head; table_sum(); table_r(money,cost);/ 調(diào)用表頭/ 定義中間局部/ 定義總計/ 定義總計 2/ 定義表尾/ 文件相關(guān)操table_buttom(); 作void save(mem *p) / 保存函數(shù) FILE *fp; / 定義一個指 向文件的指針變量fp=fopen(member.dat, a); / 將 fopen 函數(shù) 的返回值賦給指針變量 fpwhile(p != N
9、ULL)fprintf(fp, %s %s %s %d %f %s %dn,p-id, p-name, p-sex, p-age, p-money, p-tel,p-cost);p = p-next;fclose(fp); / 關(guān)閉指針 getchar();/ 保 存 修 改/ 檢查翻開/ 調(diào)用菜單函void modify_file(mem *p) 會員信息函數(shù)FILE *fp;p= head;if(fp=fopen(member.dat, w)=NULL) 文件的操作是否有錯printf( 文件不存在 );getchar();menu();數(shù) while(p != NULL)fprintf(
10、fp, %s %s %s %d %f %s %fn,p-id, p-name, p-sex, p-age, p-money, p-tel,p-cost);p = p-next; fclose(fp);getchar();void load(mem *p)FILE *fp; mem *pLast = NULL; head=NULL; if(fp=fopen(member.dat,r)=NULL) 操作是否有錯printf( 沒有會員信息,請錄入! ); getch();menu(); while(!feof(fp) 達末尾mem *pNew = (mem *)malloc(sizeof(mem)
11、; 存pNew-next = NULL; fscanf(fp, %s %s %s %d %f %s %fn,/ 從文件加載信息/ 檢查翻開文件的/ 調(diào)用菜單函數(shù)/ 文件指針是否到/ 按 mem 動態(tài)分配內(nèi)pNew-id, pNew-name, pNew-sex, &(pNew-age), &(pNew-money),pNew-tel,&(pNew-cost);if(head = NULL)head = pNew; elsepLast = get_last(head); pLast-next = pNew;p = head;fclose(fp);數(shù)mem* search_id(mem *p)/
12、通過卡號搜索信息char idMAX;int i=0;p = head;scanf(%s,id); while(p&(strcmp(id,n)!=0) if(strcmp(p-id,id)=0) i=1; break;else p=p-next; if(strcmp(id,n)=0) menu();if(p=NULL)printf( 您查找的卡號不存在,請重新輸入: p=search_id(p);else return p;/ 判斷 id 是否不為 n/ 找到/ 輸入 n 時返回菜單/ 重新搜索卡號n);/ 調(diào)用尋找函數(shù)/ 返回 p/* 修改會員信息操作 */void modify_m()/
13、修改會員的信息char s,fun=y; char pro = |n| 1 n| 2 性別 n | 3 年齡 n| 4n| 5 返回 n |n;mem *p; load(p); display(p);/ 調(diào)用顯示函數(shù)printf( 請輸入需要修改信息的會員卡號 p=search_id(p);while(fun=y|fun=Y) system(cls); display_one(p);printf( 請選擇修改的工程: n); printf(pro);getchar(); scanf(%c,&fun); switch(fun)case 1: printf( 請輸入 : ); case 2: a:
14、n 返回菜單: );/ 調(diào)用按號尋找函數(shù)/ 當繼續(xù)尋找時/ 清屏/ 調(diào)用顯示一條函數(shù)/ 輸出 pro/ 用 switch 語句選擇修改內(nèi)容 scanf(%s,p-name);break;printf( 請輸入性別 (f-女 m-男): ); getchar(); s = getchar();if(s=f|s=m)if (s = f | s = F) strcpy(p-sex, 女 );if (s = M | s = m) strcpy(p-sex, 男 );elsegoto a; break;case 3: printf( 請輸入年齡 scanf(%d,&(p-age);break;case
15、4: printf( 請輸入 default : break;printf( 是否繼續(xù)修改 Y/N?); getchar();fun=getchar(); modify_file(p); system(cls); display_one(p);printf(n 修改成功 ,按任意鍵繼續(xù) !); getchar();menu();printf( 輸入錯誤,請重新輸入: );: );.n);scanf(%s,p-tel); break/ 判斷是否繼續(xù)尋找/ 調(diào)用保存修改會員信息函數(shù)/ 清屏/ 調(diào)用顯示一條函數(shù)/ 會員續(xù)費函數(shù)void consume()mem *p;float cost; load
16、(p); display(p); printf(n);printf( 請輸入需要結(jié)算的會員卡號 n 返回菜單: ); p=search_id(p);system(cls); display_one(p);printf( 請輸入花費金額: ); scanf(%f,&cost); if(p-cost=1000)/ 會員結(jié)算/* 調(diào)用瀏覽函數(shù) */ 調(diào)用按號尋找函數(shù)/ 清屏/ 調(diào)用顯示一條函數(shù)vipvoid add()/ 會員續(xù)費float money;mem *p;load(p);display(p);/ 調(diào)用瀏覽函數(shù)printf(n);printf 請輸入需要續(xù)費的會員卡號n 返回菜單: ;p=
17、search_id(p);/ 調(diào)用按號尋找函數(shù)system(cls);/ 清屏display_one(p);/ 調(diào)用顯示一條函數(shù)printf 請輸入續(xù)費金額: ;scanf(%f,&money);p-money+=money;/ 續(xù)費modify_file(p);/ 調(diào)用保存修改會員信息函數(shù)system(cls);/ 清屏display_one(p);/ 調(diào)用顯示一條函數(shù)printf 續(xù)費成功,任意鍵繼續(xù) !;getchar();menu();/ 調(diào)用菜單函數(shù)/ 會員結(jié)算函數(shù)printf(恭喜您已經(jīng)升級為VIP,本次消費9折優(yōu)惠。printf( 本次實際消費 .2f 元! ,cost*0.9)
18、; cost*=0.9;if(p-money-cost)cost+=cost;p-money-=cost;getchar();elseif(p-money-cost)cost+=cost;p-money-=cost;modify_file(p);數(shù)system(cls); display_one(p);printf( 結(jié)算成功,任意鍵繼續(xù) !);getch();menu();void delete_m()mem *p,*q=head,*thelast; float money;n);/升級為vip,消費打9折/ 判斷余額是否充/ 消費/ 調(diào)用保存修改會員信息函/ 清屏/ 調(diào)用顯示一條函數(shù)/ 調(diào)
19、用菜單函數(shù)/* 會員退出函數(shù) */刪除會員信息/* 調(diào)用瀏覽函數(shù) */load(p); display(p); printf(n);printf( 請輸入需要刪除的會員卡號 n 返回菜單: ); p=search_id(p);thelast=head; if(p=head) head=p-next; money=p-money; free(p) ;elsewhile(thelast)if(thelast-next=p) break;elsethelast=thelast-next; thelast-next=p-next; money=p-money; free(p); modify_file
20、(q);printf( 退回余額 %.2f 元! n,money);printf( 刪除成功,按任意鍵繼續(xù)! );getch();menu();mem *sort_m()mem *q,*tail,*p=(mem*)malloc(sizeof(mem); p-next=head;head=p; tail=NULL;while(tail!=head-next) p=head; q=p-next; while(q-next!=tail) 空/ 調(diào)用按號尋找函數(shù)/ 判斷指針/ 調(diào)用保存函數(shù)/ 顯示退回的余額/ 調(diào)用菜單函數(shù)/* 統(tǒng)計函數(shù) */ 按繳費總額排序/ 定義 tailif(p-next-mon
21、eyq-next-money)p-next=q-next;q-next=q-next-next;p-next-next=q;p=p-next;q=p-next;tail=q;head=head-next;free(p);return head;/ 比擬大小,排序/ 返回值mem* sort_c() 序mem *q,*tail,*p=(mem*)malloc(sizeof(mem); p-next=head;head=p;tail=NULL; while(tail!=head-next) p=head; q=p-next; while(q-next!=tail) if(p-next-costq-
22、next-cost) 序p-next=q-next; q-next=q-next-next; p-next-next=q;p=p-next;q=p-next; tail=q; head=head-next; free(p);return head;/ 返回值/ 按消費金額排/ 定義 tail/ 比擬大小,排float summ(mem *p)float summ=0;p=head;while(p)summ+=p-money; p=p-next;/ 計算繳費總額/ 循環(huán),實現(xiàn)求總額return summ; / 返回總額float sumc(mem *p)float sumc=0;p=head;w
23、hile(p)sumc+=p-cost; p=p-next;/ 計算消費總額/ 循環(huán),實現(xiàn)求總額return sumc; / 返回總額void statistics() / 統(tǒng)計會員信息函數(shù)int f=0;mem *p;load(p);system(cls); printf(tt=n tt|ntt|1 按繳費總額排序 ntt|2 按消費總額排序 ntt|3 返回菜單 n tt|n tt=n/ 釋放鏈表空間/ 退出函數(shù)) ;printf( 請選擇功能: );scanf(%d,&f);switch(f) / 用 switch 語句選擇功能 case 1: p=sort_m(p); / 調(diào)用按繳費總額排序 display_statistics(p,summ(p),sumc(p);/ 調(diào)用函數(shù)getch();menu();break;case 2: p=sort_c(p); / 調(diào)用按消費總額排序 display_statistics(p,summ(p),sumc(p); / 調(diào)用函數(shù) getch();menu();break;default : menu();break;/* 退出系統(tǒng)操作 */void clear(mem *p) if(p=NULL) return;if(p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 南京社保代理合同范本
- 班級安全教育工作計劃
- 七年級語文上冊《朝花夕拾》名著導讀+導學案
- 完善流程合規(guī)性的工作策略計劃
- 課堂互動與參與度提升策略計劃
- 倉庫服務質(zhì)量的提升路徑計劃
- 跨境電商平臺法律法規(guī)與風險管理
- 跨國公司投資決策的全球性財務分析案例
- 廣西2025年02月廣西貴港市覃塘區(qū)融媒體中心公開招考2名編外工作人員筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 2025年安慶市大觀控股集團有限公司校園招聘3人筆試參考題庫附帶答案詳解
- 水工-建筑物課件
- EBS-發(fā)運管理操作實例
- 中職生心理特征和常見心理問題
- 北京商用密碼應用方案集錦
- 晉中信息學院基本信息登記表
- 旋挖樁施工工藝
- 全國商用密碼應用優(yōu)秀案例匯編
- 護理安全警示教育ppt
- 老年人醫(yī)養(yǎng)結(jié)合服務記錄表單
- GB/T 5392-2004林業(yè)機械油鋸技術(shù)條件
- 食品安全 PPT課件7農(nóng)獸藥化學性污染對食品安全性的影響
評論
0/150
提交評論