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

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

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

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

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

请输入姓名:

name);

//运用指针输入姓名

a:

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

);

getchar();

//输入男女

s=getchar();

if(s=='

f'

||s=='

m'

)//判断是男是女

f||s=='

F'

)strcpy(pNew->

sex,"

女"

if(s=='

M'

男"

else//如果输入错误

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

gotoa;

//跳转至a,重新输入

请输入年龄:

%d"

&

(pNew->

age));

〃运用指针输入年龄

请输入缴费金额:

%f"

money));

〃运用指针输入余

请输入电话:

tel);

〃运用指针输入电话

pNew->

cost=0;

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

\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;

pLast=get_last(head);

pLast->

next=pNew;

继续输入会员信息?

(Y继续,N返回菜单门;

〃判断是否继续登记getchar();

con=getchar();

if(con=='

n'

||con=='

save(pNew);

menu();

else{

newMember();

//显示信息操作voidtable_head(){//定义表头

++++++++\n"

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

printf("

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_head();

table_row(p);

table_buttom();

voidtable_sum()

{//定义总计

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

}voidtable_r(floatmoney,floatcost)

{//定义总计2

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

money,cost);

}voiddisplay_statistics(mem*p,floatmoney,floatcost){//显示统计信息函数

//定义中间部分p=p->

table_sum();

//定义总计table_r(money,cost);

//定义总计2table_buttom();

//定义表尾

}//文件相关操作voidsave(mem*p){//保存函数

FILE*fp;

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

fp=fopen("

member.dat"

"

a"

//将fopen函数的返回值赋给指针变量fpwhile(p!

fprintf(fp,"

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

p->

tel,p->

cost);

p=p->

fclose(fp);

//关闭指针

getchar();

voidmodify_file(mem*p)

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

if((fp=fopen("

w"

))==NULL)

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

文件不存在"

menu();

//调用菜单函数

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

}voidload(mem*p)

{//从文件加载信息

mem*pLast=NULL;

head=NULL;

r"

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

没有会员信息,请录入!

"

getch();

menu();

//调用菜单函数

}while(!

feof(fp))

{//文件指针是否到达末尾mem*pNew=(mem*)malloc(sizeof(mem));

fscanf(fp,"

id,pNew->

name,pNew->

sex,&

age),&

money),pNew->

tel,&

(pNew->

cost));

if(head==NULL){head=pNew;

}else{pLast=get_last(head);

fclose(fp);

//通过卡号搜索信息函数mem*search_id(mem*p){//通过卡号搜索信息

charid[MAX];

inti=0;

scanf("

id);

while(p&

&

(strcmp(id,"

n"

)!

=0))

{//判断id是否不为n

if(strcmp(p->

id,id)==0)

{//找到

i=1;

break;

elsep=p->

}if(strcmp(id,"

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

if(p==NULL)

{//重新搜索卡号

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

\n"

p=search_id(p);

〃调用寻找函数

elsereturnp;

//返回p

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

voidmodify_m()

{//修改会员的信息

chars,fun='

y'

charpro[]=

|\n"

|1姓名\n"

|2性别\n"

|3年龄\n"

|4电话\n"

|5返回\n"

mem*p;

load(p);

display(p);

//调用显示函数printf("

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

//调用按号寻找函数while(fun=='

||fun=='

Y'

{//当继续寻找时

system("

cls"

〃清屏

display_one(p);

〃调用显示一条函数printf("

请选择修改的项目:

printf(pro);

//输出progetchar();

%c"

fun);

switch(fun)

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

break;

case'

1'

:

请输入姓名:

2'

a

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

)strcpy(p->

>

gotoa;

3'

请输入年龄:

(p->

4'

请输入电话:

default:

是否继续修改Y/N?

);

//判断是否继续寻找

fun=getchar();

modify_file(p);

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

〃调用显示一条函数

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

menu();

}//会员续费函数voidadd()

{//会员续费

//调用浏览函数

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

p=search_id(p);

〃调用按号寻找函数

请输入续费金额:

money);

p->

money+=money;

〃续费modify_file(p);

续费成功,任意键继续!

//会员结算函数

voidconsume()

{//会员结算

floatcost;

/*调用浏览函数*/

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

//调用按号寻找函数

//清屏

请输入花费金额:

cost);

cost>

=1000)

{//判断是否升级为vip

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

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

cost*0.9);

〃升级为vip,消费打9折cost*=0.9;

if((p->

money-cost)<

0)

{//判断余额是否充足

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

cost+=cost;

money-=cost;

//消费getchar();

{//同上

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

p->

}modify_file(p);

结算成功,任意键继续!

getch();

/*会员退出函数*/

voiddelete_m()

{//删除会员信息

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

floatmoney;

display(p);

/*调用浏览函数*/printf("

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

thelast=head;

if(p==head)

{//判断指针

head=p->

money=p->

money;

free(p);

while(thelast)

if(thelast->

next==p)

elsethelast=thelast->

}thelast->

next=p->

}modify_file(q);

//调用保存函数printf("

退回余额%.2f元!

money);

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

//显示退回的余额getch();

}/*统计函数*/

mem*sort_m()

{//按缴费总额排序mem*q,*tail,*p=(mem*)malloc(sizeof(mem));

next=head;

head=p;

tail=NULL;

〃定义tail

while(tail!

=head->

next)

q=p->

while(q->

next!

=tail){//判断q是否为空if(p->

next->

money>

q->

money){

next=q->

next;

//比较大小,排序q->

next=q->

next=q;

q=p->

}tail=q;

}head=head->

returnhead;

//返回值

}mem*sort_c(){//按消费金额排序

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

while(q->

=tail)

cost)

{//比较大小,排序p->

q->

tail=q;

head=head->

free(p);

floatsumm(mem*p)

{//计算缴费总额

floatsumm=0;

while(p)

{//循环,实现求总额

summ+=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();

case2:

p=sort_c(p);

〃调用按消费总额排序

default:

/*退出系统操作*/

voidclear(mem*p)

{//释放链表空间

return;

}else{clear(p->

p=NULL;

}voidquit(){//退出函数clear(head);

exit(0);

/*菜单信息*/voidmenu_tile(char*title){//菜单表头

\t\t|%s\n"

title);

\t\t\n"

void(*menu_main_func[])()=/*函数指针数组menu_main_func[]存储的是主菜单项中7个功能函数的地址,

分别对应1-7菜单项。

例如用户选择1时,调用数组的第0个元素,即调用newMember()函数,以此类推。

*/

{newMember,modify_m,add,consume,delete_m,statistics,quit,

};

charmenu_main[]=//菜单主函数

\t\t\n"

\t\t|1新会员登记\n"

\t\t|2会员信息修改\n"

\t\t|3会员续费\n"

\t\t|4会员消费结算\n"

\t\t|5会员退卡\n"

\t\t|6统计功能\n"

\t\t|7退出系统\n"

voidmenu()

{//菜单函数

intselected=0;

//初始化变量

会员卡计费系统"

printf(menu_main);

//输出菜单主函数

while(!

(selected>

=1&

selected<

=MENU_MAIN_COUNT))

{//判断初始值

请选择:

selected);

if(selected>

=MENU_MAIN_COUNT)

{//判断输入值是否有效

\n>

输入错误!

(注:

请选择1-%d)\n"

MENU_MAIN_COUNT);

menu_main_func[selected-1]();

〃调用相应的函数指针数组中的函数,执行操作

intmain()/*主函数*/

//调用菜单函数return0;

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

当前位置:首页 > 高等教育 > 其它

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

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