c语言课程设计报告会员卡计费系统源代码Word格式文档下载.docx
- 文档编号:17419180
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:20
- 大小:19.54KB
c语言课程设计报告会员卡计费系统源代码Word格式文档下载.docx
《c语言课程设计报告会员卡计费系统源代码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《c语言课程设计报告会员卡计费系统源代码Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
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);
//调用按消费总额排序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 会员卡 计费 系统 源代码