c语言课程设计报告 会员卡计费系统源代码.docx
- 文档编号:651808
- 上传时间:2022-10-11
- 格式:DOCX
- 页数:20
- 大小:19.99KB
c语言课程设计报告 会员卡计费系统源代码.docx
《c语言课程设计报告 会员卡计费系统源代码.docx》由会员分享,可在线阅读,更多相关《c语言课程设计报告 会员卡计费系统源代码.docx(20页珍藏版)》请在冰豆网上搜索。
c语言课程设计报告会员卡计费系统源代码
#include
#include
#include
#include
#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;//头指针为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);//运用指针输入卡号
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;//运用指针初始化消费额为0
printf("\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)
{//定义总计2
printf("|||||%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);//定义总计2
table_buttom();//定义表尾
}//文件相关操作
voidsave(mem*p)
{//保存函数
FILE*fp;//定义一个指向文件的指针变量
fp=fopen("member.dat","a");//将fopen函数的返回值赋给指针变量fp
while(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是否不为n
if(strcmp(p->id,id)==0)
{//找到
i=1;
break;
}
else
p=p->next;
}
if(strcmp(id,"n")==0)//输入n时返回菜单
menu();
if(p==NULL)
{//重新搜索卡号
printf("您查找的卡号不存在,请重新输入:
\n");
p=search_id(p);//调用寻找函数
}
else
returnp;//返回p
}
/*修改会员信息操作*/
voidmodif
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c语言课程设计报告 会员卡计费系统源代码 语言 课程设计 报告 会员卡 计费 系统 源代码