ImageVerifierCode 换一换
格式:DOCX , 页数:37 ,大小:20.34KB ,
资源ID:8300661      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8300661.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c语言课程设计报告会员卡计费系统源代码.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

c语言课程设计报告会员卡计费系统源代码.docx

1、c语言课程设计报告会员卡计费系统源代码#include / 编译预处理指令,引入头文件#include #include #include #define MAX 10#define MENU_MAIN_COUNT 7/ 自定义符号常量/ 主菜单的选项个数typedef struct member/ 定义结构体类型member ,采用链式存储结构char nameMAX; / 姓名char idMAX; / 卡号char sex2; / 性别int age; / 年龄float money; / 余额char tel12; / 电话struct member *next; / 定义一个指针指向

2、下一个会员信息float cost; / 消费金额mem; / 定义结构体变量 mem/* 声明函数 */void menu();void save(mem *p);/* 声明函数,声明菜单函数/ 声明保存函数*/mem *head=NULL;/ 头指针为NULLmem* get_last(mem*p)/ 取得链表最后一个元素的节点指针并返回该指针if(p-next = NULL)return p;elseget_last(p-next);void creat_member(mem*pNew)/ 输入信息操作,会员登记函数/ 创建一个新的会员char s;printf(printf(卡号 :)

3、;请输入姓名: );scanf(%s,pNew-id); scanf(%s,pNew-name);/ 运用指针输入卡号/ 运用指针输入姓名a:printf( 请输入性别s = getchar();if(s=f|s=m)(f-女m-男 ): );getchar();/ 输入男女/ 判断是男是女if (s = f | s = F) strcpy(pNew-sex, 女 );if (s = M | s = m) strcpy(pNew-sex, 男 );else/ 如果输入错误printf( 输入错误,请重新输入goto a;.n);/ 跳转至a,重新输入printf(printf(请输入年龄 :

4、); 请输入缴费金额: );scanf(%d,&(pNew-age); scanf(%f,&(pNew-money);/ 运用指针输入年龄/ 运用指针输入余额printf(请输入电话: );scanf(%s,pNew-tel);/ 运用指针输入电话pNew-cost=0;/ 运用指针初始化消费额为0printf(n 创建完毕 !n);void newMember()/ 会员登记函数/ 添加会员信息char con=N;mem *pLast= NULL;mem *pNew=(mem*)malloc(sizeof(mem);/ 按mem动态分配内存pNew-next=NULL;creat_memb

5、er(pNew);/ 调用会员登记函数if(head = NULL)head = pNew;elsepLast = get_last(head);pLast-next = pNew;printf(继续输入会员信息?(Y继续,N返回菜单);/ 判断是否继续登记getchar();con = getchar();if (con = n | con = N)save(pNew);menu();elsesave(pNew);newMember();/ 显示信息操作void table_head()/ 定义表头printf(+-+-+-+-+-+-+-+n);printf(| 卡号 | 姓名 | 性别

6、| 年龄 | 余额 |累计消费|电话|n);printf(+-+-+-+-+-+-+-+n);void table_buttom()/ 定义底线printf(+-+-+-+-+-+-+-+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);void display(mem *p)/ 显示所有信息p = head;table_head();/ 调用表头while(p != NULL)table_row(

7、p);p = p-next;/ 调用中间部分table_buttom();/ 调用底线void display_one(mem *p)/ 只显示一条信息table_head();table_row(p);table_buttom();void table_sum() / 定义总计printf(+-+-+-+-+-+-+-+n);printf(| | | | | 总计 |printf(+-+-+-+-+-+-+-+n);总计|n);void table_r(float money,float cost)printf(|/ 定义总计|2|%8.2f|%8.2f|n,money,cost);void

8、 display_statistics(mem *p,float money,float cost)/ 显示统计信息函数p = head;table_head();while(p != NULL)/ 调用表头table_row(p);p = p-next;/ 定义中间部分p=head;table_sum();/ 定义总计table_r(money,cost);/ 定义总计2table_buttom();/ 定义表尾/ 文件相关操作void save(mem *p)/ 保存函数FILE *fp;/ 定义一个指向文件的指针变量fp=fopen(member.dat,a);/ 将 fopen 函数的

9、返回值赋给指针变量fpwhile(p != 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();/ 关闭指针void modify_file(mem *p)/保存修改会员信息函数FILE *fp;p= head;if(fp=fopen(member.dat, w)=NULL)/ 检查打开文件的操作是否有错printf( 文件不存在);getchar();menu();/ 调用菜单函数while(p != N

10、ULL)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);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) / 文件指针是

11、否到达末尾mem *pNew = (mem *)malloc(sizeof(mem); / 按 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);if(head = NULL)head = pNew;elsepLast = get_last(head);pLast-next = pNew;p = head;fclose(fp);/ 通过卡号搜索信息函数mem* sea

12、rch_id(mem *p)/ 通过卡号搜索信息char idMAX;int i=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);/ 调用寻找函数elsereturn p;/ 返回p/* 修改会员信息操作*/void modify_m()/

13、 修改会员的信息char s,fun=y;char pro =|n| 1 姓名 n| 2 性别 n| 3 年龄 n| 4 电话 n| 5 返回 n|n;mem *p;load(p);display(p);/ 调用显示函数printf( 请输入需要修改信息的会员卡号(p=search_id(p);n 返回菜单): );/ 调用按号寻找函数while(fun=y|fun=Y)/ 当继续寻找时system(cls);display_one(p);printf( 请选择修改的项目: n);printf(pro);getchar();scanf(%c,&fun);switch(fun)case 1: p

14、rintf( 请输入姓名: );/ 清屏/ 调用显示一条函数/ 输出 pro/ 用 switch 语句选择修改内容scanf(%s,p-name);break;case 2: a:printf( 请输入性别s = getchar();if(s=f|s=m)(f-女m-男 ): );getchar();if (s = f | s = F) strcpy(p-sex, 女 );if (s = M | s = m) strcpy(p-sex, 男 );elseprintf( 输入错误,请重新输入 .n);goto a;break;case 3: printf( 请输入年龄: );scanf(%d,&

15、(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();/ 调用菜单函数/ 会员续费函数void add()/ 会员续费float money;mem *p;load(p);

16、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();/ 调用菜单函数/

17、 会员结算函数void consume() / 会员结算mem *p;float cost;load(p);display(p);/*调用浏览函数*/printf(n);printf(请输入需要结算的会员卡号(n 返回菜单): );p=search_id(p);/ 调用按号寻找函数system(cls);display_one(p);/ 清屏/ 调用显示一条函数printf(请输入花费金额:);scanf(%f,&cost);if(p-cost=1000)/ 判断是否升级为vipprintf( 恭喜您已经升级为 VIP,本次消费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);/ 调用保存修改会员信息函数system(cls);display_one(p);/清屏调用显示一条函数printf( 结算成功,任意键继续!);getch();menu();/ 调用菜单函数/* 会员退出函数*/void delete_m()/ 删除会员信息mem *p,*q=head,*thelast;float money;load(p)

19、;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(q);printf( 退回余额 %.2f 元! n,

20、money);printf( 删除成功,按任意键继续! );getch();menu();/ 调用保存函数/ 显示退回的余额/ 调用菜单函数/* 统计函数 */mem *sort_m()/ 按缴费总额排序mem *q,*tail,*p=(mem*)malloc(sizeof(mem);p-next=head;head=p;tail=NULL;/ 定义tailwhile(tail!=head-next)p=head;q=p-next;while(q-next!=tail)/ 判断q 是否为空if(p-next-moneyq-next-money)p-next=q-next;q-next=q-ne

21、xt-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;/ 定义tailwhile(tail!=head-next)p=head;q=p-next;while(q-next!=tail)if(p-next-costq-next-cost)/ 比较大小,排序p-next=q-nex

22、t;q-next=q-next-next;p-next-next=q;p=p-next;q=p-next;tail=q;head=head-next;free(p);return head;/ 返回值float summ(mem *p)/ 计算缴费总额float summ=0;p=head;while(p)/ 循环,实现求总额summ+=p-money;p=p-next;return summ;/ 返回总额float sumc(mem *p)/ 计算消费总额float sumc=0;p=head;while(p)/ 循环,实现求总额sumc+=p-cost;p=p-next;return sumc;/ 返回总额void statistics()/ 统计会员信息函数int f=0;mem *p;load(p);system(cls);printf(tt=ntt|ntt|1 按缴费总额排序 ntt|2 按消费总额排序 ntt|3 返回菜单 ntt|ntt=

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1