c语言课程设计报告 会员卡计费系统源代码Word格式.docx
《c语言课程设计报告 会员卡计费系统源代码Word格式.docx》由会员分享,可在线阅读,更多相关《c语言课程设计报告 会员卡计费系统源代码Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
![c语言课程设计报告 会员卡计费系统源代码Word格式.docx](https://file1.bdocx.com/fileroot1/2022-10/11/3af3f4c8-1e82-46de-947f-aae1ea6aed5b/3af3f4c8-1e82-46de-947f-aae1ea6aed5b1.gif)
//定义结构体变量mem
/*声明函数*/
voidmenu();
/*声明函数,声明菜单函数*/
voidsave(mem*p);
//声明保存函数
mem*head=NULL;
//头指针为NULL
mem*get_last(mem*p)//取得链表最后一个元素的节点指针并返回该指针
if(p->
next==NULL)
{
returnp;
}
else
get_last(p->
next);
}
voidcreat_member(mem*pNew)//输入信息操作,会员登记函数
{//创建一个新的会员
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
/*修改会员信息操作*/
voidmodif