c语言课程设计报告会员卡计费系统源代码Word格式文档下载.docx

上传人:b****5 文档编号:19443068 上传时间:2023-01-06 格式:DOCX 页数:21 大小:19.60KB
下载 相关 举报
c语言课程设计报告会员卡计费系统源代码Word格式文档下载.docx_第1页
第1页 / 共21页
c语言课程设计报告会员卡计费系统源代码Word格式文档下载.docx_第2页
第2页 / 共21页
c语言课程设计报告会员卡计费系统源代码Word格式文档下载.docx_第3页
第3页 / 共21页
c语言课程设计报告会员卡计费系统源代码Word格式文档下载.docx_第4页
第4页 / 共21页
c语言课程设计报告会员卡计费系统源代码Word格式文档下载.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

c语言课程设计报告会员卡计费系统源代码Word格式文档下载.docx

《c语言课程设计报告会员卡计费系统源代码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《c语言课程设计报告会员卡计费系统源代码Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。

c语言课程设计报告会员卡计费系统源代码Word格式文档下载.docx

chars;

printf("

卡号:

"

);

scanf("

%s"

pNew->

id);

//运用指针输入卡号

请输入姓名:

"

scanf("

name);

//运用指针输入姓名

a:

请输入性别(f--女m--男):

getchar();

//输入男女

s=getchar();

if(s=='

f'

||s=='

m'

)//判断是男是女

{

if(s=='

||s=='

F'

)strcpy(pNew->

sex,"

女"

M'

男"

else//如果输入错误

printf("

输入错误,请重新输入...\n"

gotoa;

//跳转至a,重新输入

请输入年龄:

%d"

&

(pNew->

age));

//运用指针输入年龄

请输入缴费金额:

scanf("

%f"

money));

//运用指针输入余额

请输入电话:

tel);

//运用指针输入电话

pNew->

cost=0;

//运用指针初始化消费额为0

\n创建完毕!

\n"

}

voidnewMember()//会员登记函数

{//添加会员信息

charcon='

N'

;

mem*pLast=NULL;

mem*pNew=(mem*)malloc(sizeof(mem));

//按mem动态分配内存

next=NULL;

creat_member(pNew);

//调用会员登记函数

if(head==NULL)

head=pNew;

else

pLast=get_last(head);

pLast->

next=pNew;

继续输入会员信息?

(Y继续,N返回菜单)"

//判断是否继续登记

con=getchar();

if(con=='

n'

||con=='

save(pNew);

menu();

else{

newMember();

}

//显示信息操作

voidtable_head()

{//定义表头

+----------+------+------+------+--------+--------+-----------+\n"

|卡号|姓名|性别|年龄|余额|累计消费|电话|\n"

voidtable_buttom()

{//定义底线

voidtable_row(mem*p)

{//定义中间部分

|%10s|%6s|%6s|%6d|%8.2f|%8.2f|%11s|\n"

p->

id,p->

name,p->

sex,p->

age,p->

money,p->

cost,p->

voiddisplay(mem*p)

{//显示所有信息

p=head;

table_head();

//调用表头

while(p!

=NULL)

table_row(p);

//调用中间部分

p=p->

next;

table_buttom();

//调用底线

voiddisplay_one(mem*p)

{//只显示一条信息

table_row(p);

voidtable_sum()

{//定义总计

|||||总计|总计||\n"

voidtable_r(floatmoney,floatcost)

{//定义总计2

|||||%8.2f|%8.2f||\n"

money,cost);

voiddisplay_statistics(mem*p,floatmoney,floatcost)

{//显示统计信息函数

=NULL)

//定义中间部分

p=head;

table_sum();

//定义总计

table_r(money,cost);

//定义总计2

//定义表尾

}//文件相关操作

voidsave(mem*p)

{//保存函数

FILE*fp;

//定义一个指向文件的指针变量

fp=fopen("

member.dat"

"

a"

//将fopen函数的返回值赋给指针变量fp

fprintf(fp,"

%s%s%s%d%f%s%d\n"

p->

id,p->

name,p->

sex,p->

age,p->

money,p->

tel,p->

cost);

fclose(fp);

//关闭指针

voidmodify_file(mem*p)

{//保存修改会员信息函数

p=head;

if((fp=fopen("

w"

))==NULL)

{//检查打开文件的操作是否有错

文件不存在"

getchar();

//调用菜单函数

{

%s%s%s%d%f%s%f\n"

voidload(mem*p)

{//从文件加载信息

mem*pLast=NULL;

head=NULL;

"

r"

没有会员信息,请录入!

getch();

while(!

feof(fp))

{//文件指针是否到达末尾

mem*pNew=(mem*)malloc(sizeof(mem));

pNew->

next=NULL;

fscanf(fp,"

pNew->

id,pNew->

name,pNew->

sex,&

age),&

money),pNew->

tel,&

cost));

if(head==NULL)

head=pNew;

}

pLast=get_last(head);

pLast->

}

//通过卡号搜索信息函数

mem*search_id(mem*p)

{//通过卡号搜索信息

inti=0;

scanf("

id);

while(p&

&

(strcmp(id,"

n"

)!

=0))

{//判断id是否不为n

if(strcmp(p->

id,id)==0)

{//找到

i=1;

break;

p=p->

if(strcmp(id,"

)==0)//输入n时返回菜单

if(p==NULL)

{//重新搜索卡号

您查找的卡号不存在,请重新输入:

p=search_id(p);

//调用寻找函数

returnp;

//返回p

/*修改会员信息操作*/

voidmodify_m()

{//修改会员的信息

chars,fun='

y'

charpro[]=

|\n"

|1姓名\n"

|2性别\n"

|3年龄\n"

|4电话\n"

|5返回\n"

mem*p;

load(p);

display(p);

//调用显示函数

请输入需要修改信息的会员卡号(n返回菜单):

p=search_id(p);

//调用按号寻找函数

while(fun=='

||fun=='

Y'

{//当继续寻找时

system("

cls"

//清屏

display_one(p);

//调用显示一条函数

请选择修改的项目:

printf(pro);

//输出pro

scanf("

%c"

fun);

switch(fun)

{//用switch语句选择修改内容

case'

1'

:

break;

2'

printf("

s=getchar();

if(s=='

{

if(s=='

)strcpy(p->

}

else

printf("

>

gotoa;

break;

3'

(p->

4'

break;

default:

是否继续修改Y/N?

//判断是否继续寻找

fun=getchar();

modify_file(p);

//调用保存修改会员信息函数

system("

display_one(p);

\n修改成功,按任意键继续!

menu();

//会员续费函数

voidadd()

{//会员续费

//调用浏览函数

请输入需要续费的会员卡号(n返回菜单):

请输入续费金额:

money);

p->

money+=money;

//续费

续费成功,任意键继续!

//会员结算函数

voidconsume()

{//会员结算

floatcost;

/*调用浏览函数*/

请输入需要结算的会员卡号(n返回菜单):

//调用按号寻找函数

请输入花费金额:

if(p->

cost>

=1000)

{//判断是否升级为vip

恭喜您已经升级为VIP,本次消费9折优惠。

本次实际消费%.2f元!

cost*0.9);

//升级为vip,消费打9折

cost*=0.9;

if((p->

money-cost)<

0)

{//判断余额是否充足

printf("

对不起,余额不足,请及时充值!

getchar();

menu();

p->

cost+=cost;

money-=cost;

//消费

{//同上

结算成功,任意键继续!

getch();

/*会员退出函数*/

voiddelete_m()

{//删除会员信息

mem*p,*q=head,*thelast;

请输入需要删除的会员卡号(n返回菜单):

thelast=head;

if(p==head)

{//判断指针

head=p->

money=p->

money;

free(p);

while(thelast)

if(thelast->

next==p)

break;

else

thelast=thelast->

thelast->

next=p->

free(p);

modify_file(q);

//调用保存函数

退回余额%.2f元!

money);

删除成功,按任意键继续!

//显示退回的余额

}/*统计函数*/

mem*sort_m()

{//按缴费总额排序

mem*q,*tail,*p=(mem*)malloc(sizeof(mem));

next=head;

head=p;

tail=NULL;

//定义tail

while(tail!

=head->

next)

p=head;

q=p->

while(q->

next!

=tail)

{//判断q是否为空

if(p->

next->

money>

q->

money)

{

p->

next=q->

//比较大小,排序

q->

next=q;

}

q=p->

tail=q;

}

head=head->

free(p);

returnhead;

//返回值

mem*sort_c()

{//按消费金额排序

//定义tail

cost)

{//比较大小,排序

floatsumm(mem*p)

{//计算缴费总额

floatsumm=0;

while(p)

{//循环,实现求总额

summ+=p->

p=p->

returnsumm;

//返回总额

floatsumc(mem*p)

{//计算消费总额

floatsumc=0;

sumc+=p->

cost;

returnsumc;

voidstatistics()

{//统计会员信息函数

intf=0;

\t\t=======================================\n"

\t\t|\n"

\t\t|1按缴费总额排序\n"

\t\t|2按消费总额排序\n"

\t\t|3返回菜单\n"

);

请选择功能:

f);

switch(f)

{//用switch语句选择功能

case1:

p=sort_m(p);

//调用按缴费总额排序

display_statistics(p,summ(p),sumc(p));

//调用函数

getch();

menu();

case2:

p=sort_c(p);

//调用按消费总额排序

display_statistics

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 建筑土木

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

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