


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、#include<stdio.h>#include<stdlib.h>/編譯預處理指令,引入頭文件#include<string.h>#include<conio.h>#defineMAX10#defineMENU_MAIN_COUNT7typedefstructmember(charnameMAX;charidMAX;charsex2;intage;floatmoney;/自定義符號常量/主菜單的選項個數/定義結構體類型member,采用鏈式存儲結構/卡號/性別年齡余額chartel12;/structmember*next;floatcost
2、;mem;voidmenu();voidsave(mem*p);/定義一個指針指向下一個會員信息/消費金額/定義結構體變量mem/*聲明函數*/*聲明函數,聲明菜單函數*/聲明保存函數mem*head=NULL;mem*get_last(mem*p)指針(if(p->next=NULL)(returnp;else(get_last(p->next);頭指針為NULL/取得鏈表最后一個元素的節點指針并返回該scanf("%s”,pNew->id);scanf("%s”,pNew->name);voidcreat_member(mem*pNew)會員登記
3、函數(的會員chars;printf("卡號:");printf("請輸入:");/輸入信息操作,/創建一個新/運用指針輸入卡號運用指針輸入scanf("%d”,&(pNew->age);scanf("%f",&(pNew->money);scanf("%s”,pNew->tel);輸入男女/判斷是男是女/如果輸入錯/跳轉至a,重/運用指針輸入年齡/運用指針輸入余/運用指針輸入/運用指針/會員登記函/添加會員/按mem動/調用會員登a:getchar();printf(-請輸入性別
4、(f-女m-男):");s=getchar();if(s='f|s='m')(if(s='f|s='F')strcpy(pNew->sex,"女");if(s='M'|s='m')strcpy(pNew->sex,”男");else誤(printf(-輸入錯誤,請重新輸入.n");gotoa;新輸入printf("請輸入年齡:");printf("請輸入繳費金額:");額printf("請輸入:"
5、;);pNew->cost=0;初始化消費額為0printf("n創建完畢!n");voidnewMember()數(信息charcon='N'mem*pLast=NULL;mem*pNew=(mem*)malloc(sizeof(mem);態分配內存pNew->next=NULL;creat_member(pNew);記函數if(head=NULL)(head=pNew;else(pLast=get_last(head);pLast->next=pNew;/判斷是否繼續登printf(-繼續輸入會員信息?(Y繼續,N返回菜單)"
6、);getchar();con=getchar();if(con='n'|con='N')(save(pNew);menu();else(save(pNew);newMember();/顯示信息操作voidtable_head()(/定義表頭printf("+.+,+n");printf("|卡號|性別|年齡|余額|累計消費|n")printf("+,+_+n");voidtable_buttom()(/定義底線r>ri-L_L_l_l_l_l_i_,UiniTTTTTTT'llJ.voi
7、dtable_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);/顯示所有信息/調用表頭voiddisplay(mem*p)(p=head;table_head();while(p!=NULL)(調用中間部分/調用底線/只顯示一條信息table_row(p);p=p->next;table_buttom();voiddisplay_one(mem*p)(t
8、able_head();table_row(p);table_buttom();voidtable_sum()(/定義總計r>ri-L_L_l_l_l_l_i_,UiniTTTTTTT'llJ.printf("|IIII總計I總計I|n");r>ri-L_L_l_l_l_l_i_,UinLITTTTTTT'"1.voidtable_r(floatmoney,floatcost)(/定義總計2printf("IIIII%8.2fI%8.2fIIn”,money,cost);voiddisplay_statistics(mem*p
9、,floatmoney,floatcost)(息函數p=head;table_head();while(p!=NULL)(table_row(p);p=p->next;p=head;table_sum();table_r(money,cost);/顯示統計信/調用表頭/定義中間部分/定義總計/定義總計2table_buttom();作/定義表尾/文件相關操voidsave(mem*p)(FILE*fp;向文件的指針變量保存函數/定義一個指/將fopen函數fp=fopen("member.dat","a");的返回值賦給指針變量fpwhile(p!
10、=NULL)(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);getchar();/關閉指針voidmodify_file(mem*p)(會員信息函數/保存修改FILE*fp;p=head;if(fp=fopen("member.dat","w")=NULL)(文件的操作是否有錯printf(-文件不存在");getcha
11、r();menu();/檢查打開/調用菜單函while(p!=NULL)(fprintf(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);/從文件加載信息/檢查打開文件的/調用菜單函數/文件指針是否到/按mem動態分配內getchar();voidload(mem*p)(FILE*fp;mem*pLast=NULL;head=NULL;if(fp=fopen("member.dat”,&
12、quot;r")=NULL)(操作是否有錯printf("沒有會員信息,請錄入!");getch();menu();while(!feof(fp)(達末尾mem*pNew=(mem*)malloc(sizeof(mem);存pNew->next=NULL;fscanf(fp,"%s%s%s%d%f%s%fn",pNew->id,pNew->name,pNew->sex,&(pNew->age),&(pNew->money),pNew->tel,&(pNew->cost);i
13、f(head=NULL)(head=pNew;else(pLast=get_last(head);pLast->next=pNew;p=head;fclose(fp);/通過卡號搜索信息函mem*search_id(mem*p)/通過卡號搜索信息charidMAX;inti=0;p=head;scanf("%s",id);while(p&&(strcmp(id,"n")!=0)(if(strcmp(p->id,id)=0)(i=1;break;elsep=p->next;if(strcmp(id,"n"
14、;)=0)menu();if(p=NULL)(printf("您查找的卡號不存在,請重新輸入:p=search_id(p);elsereturnp;/判斷id是否不為n/找到/輸入n時返回菜單/重新搜索卡號n");/調用尋找函數/返回p/*修改會員信息操作*/voidmodify_m()(chars,fun='y'charpro="|n”"|1n""|2性別n”"|3年齡n”"|4n""|5返回n”"|n"mem*p;load(p);display(p);修改
15、會員的信息/調用顯示函數printf(-請輸入需要修改信息的會員卡號n返回菜單:,p=search_id(p);/調用按號尋找函數while(fun='y'|fun='Y')(/當繼續尋找時system("cls");/清屏display_one(p);/調用顯示一條函數printf("請選擇修改的項目:n");printf(pro);/輸出progetchar();scanf("%c”,&fun);switch(fun)(/用switch語句選擇修改內容case'1':printf(&q
16、uot;請輸入:");scanf("%s”,p->name);break;case'2':a: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,"男");else(gotoa;break;case'3':prin
17、tf("請輸入年齡scanf("%d",&(p->age);break;case'4':printf("請輸入default:break;printf("是否繼續修改Y/N?”);getchar();fun=getchar();modify_file(p);system("cls");display_one(p);printf(-n修改成功,按任意鍵繼續!");getchar();menu();printf("輸入錯誤,請重新輸入:");:");.n&qu
18、ot;);scanf("%s",p->tel);break/判斷是否繼續尋找/調用保存修改會員信息函數/清屏/調用顯示一條函數/調用菜單函數/會員續費函數voidadd()(floatmoney;mem*p;load(p);display(p);printf("n");printf(-請輸入需要續費的會員卡號p=search_id(p);system("cls");display_one(p);printf("請輸入續費金額:");scanf("%f",&money);p->
19、money+=money;modify_file(p);函數system("cls");display_one(p);printf(-續費成功,任意鍵繼續!");getchar();menu();/會員續費/調用瀏覽函數n返回菜單:”);/調用按號尋找函數/清屏/調用顯示一條函數續費/調用保存修改會員信息/清屏/調用顯示一條函數/調用菜單函數/會員結算函數voidconsume()(mem*p;floatcost;load(p);display(p);printf("n");printf("請輸入需要結算的會員卡號p=search_i
20、d(p);system("cls");display_one(p);printf("請輸入花費金額:");scanf("%f",&cost);if(p->cost>=1000)(/會員結算/*調用瀏覽函數*/n返回菜單:”);/調用按號尋找函數/清屏/調用顯示一條函數/判斷是否升級為vipprintf(-恭喜您已經升級為VIP,本次消費9折優惠。printf("本次實際消費%.2f元!",cost*0.9);cost*=0.9;if(p->money-cost)<0)n")
21、;升級為vip,消費打9折/判斷余額是否充printf("對不起,余額不足,請及時充值!");getchar();menu();p->cost+=cost;p->money-=cost;/消費getchar();elseif(p->money-cost)<0)/同上printf("對不起,余額不足,請及時充值!");getchar();menu();p->cost+=cost;p->money-=cost;modify_file(p);數system("cls");display_one(p);pr
22、intf(-結算成功,任意鍵繼續!");getch();menu();/調用保存修改會員信息函/清屏/調用顯示一條函數/調用菜單函數/*會員退出函數*/voiddelete_m()mem*p,*q=head,*thelast;floatmoney;load(p);display(p);printf("n");/刪除會員信息/*調用瀏覽函數*/調用按號尋找函數判斷指針/調用保存函數/顯示退回的余額/調用菜單函數/*統計函數*/按繳費總額排序/定義tail/判斷q是否為printf(-請輸入需要刪除的會員卡號n返回菜單:");p=search_id(p);t
23、helast=head;if(p=head)(head=p->next;money=p->money;free(p);else(while(thelast)(if(thelast->next=p)break;elsethelast=thelast->next;thelast->next=p->next;money=p->money;free(p);modify_file(q);printf("退回余額.2f元!n”,money);printf(-刪除成功,按任意鍵繼續!");getch();menu();mem*sort_m()(m
24、em*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->money>q->next->money)(p->next=q->next;q->next=q->next->next;p->next->next=q;p=p->next;q=p->next;tail=q
25、;head=head->next;free(p);returnhead;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->cost>q->next->cost)(序p->next=q->next;q->next=q->next->next;p-
26、>next->next=q;p=p->next;q=p->next;tail=q;head=head->next;free(p);returnhead;返回值/比較大小,排序返回值/按消費金額排/定義tail比較大小,排floatsumm(mem*p)(floatsumm=0;p=head;while(p)(summ+=p->money;p=p->next;returnsumm;/計算繳費總額循環,實現求總額/返回總額floatsumc(mem*p)(計算消費總額floatsumc=0;p=head;while(p)(循環,實現求總額sumc+=p-&
27、gt;cost;p=p->next;returnsumc;/返回總額voidstatistics()(/統計會員信息函數intf=0;mem*p;load(p);system("cls");printf("tt=n""tt|n""tt|1按繳費總額排序n”"tt|2按消費總額排序n”"tt|3返回菜單n”"tt|n""tt=n");printf("請選擇功能:");scanf("%d”,&f);switch(f)(/用sw
28、itch語句選擇功能case1:p=sort_m(p);/調用按繳費總額排序display_statistics(p,summ(p),sumc(p);/調用函數getch();menu();break;case2:p=sort_c(p);/調用按消費總額排序display_statistics(p,summ(p),sumc(p);/調用函數getch();menu();break;default:menu();break;/*退出系統操作*/voidclear(mem*p)(if(p=NULL)(return;if(p->next=NULL)(free(p);else(clear(p->next);free(p);p=NULL;voidquit()(/釋放鏈表空間/退出函數clear(head);exit(0);/*菜單信息*/voidmenu_tile(c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 歡樂喜劇人春分活動方案
- 植物線下活動方案
- 法治國庫建設年活動方案
- 植物涂鴉活動方案
- 夢想天堂音樂活動方案
- 汽車購車活動方案
- 棒球互動打卡活動方案
- 【高一下】湖北省武漢市常青聯合體2024-2025學年高一下學期期末考試語文試卷含答案
- 漢蘭達上市活動方案
- 桂林米粉活動方案
- m6A甲基化研究方法
- 梅毒螺旋體試驗活動風險評價報告
- 精裝房驗房項目表格
- 《有效溝通》培訓課件
- 汽車租賃項目可行性報告
- 礦井災變時期通風理論與技術及案例分析
- (蘇教 譯林版)三年級英語上冊同步預習練習
- 2021年新《建設工程施工合同司法解釋(一)》逐條解讀4課件
- 綠城物業工程承接查驗工作手冊
- Q∕GDW 12185-2021 輸變電設備物聯網邊緣計算應用軟件接口技術規范
- 幼兒園一日活動流程保教細則
評論
0/150
提交評論