c语言课程设计报告_第1页
c语言课程设计报告_第2页
c语言课程设计报告_第3页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论