您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 薪酬管理 > c语言课程设计报告-会员卡计费系统源代码
#includestdio.h//编译预处理指令,引入头文件#includestdlib.h#includestring.h#includeconio.h#defineMAX10//自定义符号常量#defineMENU_MAIN_COUNT7//主菜单的选项个数typedefstructmember//定义结构体类型member,采用链式存储结构{charname[MAX];//姓名charid[MAX];//卡号charsex[2];//性别intage;//年龄floatmoney;//余额chartel[12];//电话structmember*next;//定义一个指针指向下一个会员信息floatcost;//消费金额}mem;//定义结构体变量mem/*声明函数*/voidmenu();/*声明函数,声明菜单函数*/voidsave(mem*p);//声明保存函数mem*head=NULL;//头指针为NULLmem*get_last(mem*p)//取得链表最后一个元素的节点指针并返回该指针{if(p-next==NULL){returnp;}else{get_last(p-next);}}voidcreat_member(mem*pNew)//输入信息操作,会员登记函数{//创建一个新的会员chars;printf(卡号:);scanf(%s,pNew-id);//运用指针输入卡号printf(请输入姓名:);scanf(%s,pNew-name);//运用指针输入姓名a:printf(请输入性别(f--女m--男):);getchar();//输入男女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;//跳转至a,重新输入}printf(请输入年龄:);scanf(%d,&(pNew-age));//运用指针输入年龄printf(请输入缴费金额:);scanf(%f,&(pNew-money));//运用指针输入余额printf(请输入电话:);scanf(%s,pNew-tel);//运用指针输入电话pNew-cost=0;//运用指针初始化消费额为0printf(\n创建完毕!\n);}voidnewMember()//会员登记函数{//添加会员信息charcon='N';mem*pLast=NULL;mem*pNew=(mem*)malloc(sizeof(mem));//按mem动态分配内存pNew-next=NULL;creat_member(pNew);//调用会员登记函数if(head==NULL){head=pNew;}else{pLast=get_last(head);pLast-next=pNew;}printf(继续输入会员信息?(Y继续,N返回菜单));//判断是否继续登记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(){//定义底线printf(+----------+------+------+------+--------+--------+-----------+\n);}voidtable_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){//只显示一条信息table_head();table_row(p);table_buttom();}voidtable_sum(){//定义总计printf(+----------+------+------+------+--------+--------+-----------+\n);printf(|||||总计|总计||\n);printf(+----------+------+------+------+--------+--------+-----------+\n);}voidtable_r(floatmoney,floatcost){//定义总计2printf(|||||%8.2f|%8.2f||\n,money,cost);}voiddisplay_statistics(mem*p,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;//定义一个指向文件的指针变量fp=fopen(member.dat,a);//将fopen函数的返回值赋给指针变量fpwhile(p!=NULL){fprintf(fp,%s%s%s%d%f%s%d\n,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(文件不存在);getchar();menu();//调用菜单函数}while(p!=NULL){fprintf(fp,%s%s%s%d%f%s%f\n,p-id,p-name,p-sex,p-age,p-money,p-tel,p-cost);p=p-next;}fclose(fp);getchar();}voidload(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));//按mem动态分配内存pNew-next=NULL;fscanf(fp,%s%s%s%d%f%s%f\n,pNew-id,pNew-name,pNew-sex,&(pNew-age),&(pNew-money),pNew-tel,&(pNew-cost));if(head==NULL){head=pNew;}else{pLast=get_last(head);pLast-next=pNew;}}p=head;fclose(fp);}//通过卡号搜索信息函数mem*search_id(mem*p){//通过卡号搜索信息charid[MAX];inti=0;p=head;scanf(%s,id);while(p&&(strcmp(id,n)!=0)){//判断id是否不为nif(strcmp(p-id,id)==0){//找到i=1;break;}elsep=p-next;}if(strcmp(id,n)==0)//输入n时返回菜单menu();if(p==NULL){//重新搜索卡号printf(您查找的卡号不存在,请重新输入:\n);p=search_id(p);//调用寻找函数}elsereturnp;//返回p}/*修改会员信息操作*/voidmodify_m(){//修改会员的信息chars,fun='y';charpro[]=|\n|1姓名\n|2性别\n|3年龄\n|4电话\n|5返回\n|\n;mem*p;load(p);display(p);//调用显示函数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(请输入姓名:);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{printf(输入错误,请重新输入...\n);gotoa;}break;case'3':printf(请输入年龄:);scanf(%d,&(p-age));break;case'4':printf(请输入电话:);scanf(%s,p-tel);break;default:break;}printf(是否继续修改Y/N?);//判断是否继续寻找getchar();fun=getchar();}modify_file(p);//调用保存修改会员信息函数system(cls);//清屏display_one(p);//调用显示一条函数printf(\n修改成功,按任意键继续!);getchar();menu();//调用菜单函数}//会员续费函数voidadd(){//会员续费floatmoney;mem*p;load(p);display(p);//调用浏览函数printf(\n);printf(请输入需要续费的会员卡号(n返回菜单):);p=search_id(p);//调用按号寻找函数system(cls);//清屏display_one(p);//调用显示一条函数printf(请输入续费金额:);scanf(%f,&money);p-money+=money;//续费modify_file(p);//调用保存修改会员信息函数system(cls);//清屏display_one(p);//调用显示一条函数printf(续费成功,任意键继续!);getchar();menu
本文标题:c语言课程设计报告-会员卡计费系统源代码
链接地址:https://www.777doc.com/doc-5202555 .html