printf(\请输入需要删除的会员卡号(n返回菜单):\
p=search_id(p); //调用按号寻找函数 thelast=head; if(p==head)
{ //判断指针 head=p->next; money=p->money; free(p) ; } else { while(thelast) { if(thelast->next==p) break; else thelast=thelast->next; } thelast->next=p->next; money=p->money; free(p);
}
modify_file(q); printf(\退回余额%.2f元!\\n\ printf(\删除成功,按任意键继续!\ getch(); menu(); }
mem *sort_m()
{ mem *q,*tail,*p=(mem*)malloc(sizeof(mem)); p->next=head; head=p; tail=NULL; while(tail!=head->next) { p=head; q=p->next; while(q->next!=tail) { 空
if(p->next->money>q->next->money)
//调用保存函数 //显示退回的余额 //调用菜单函数 /*统计函数*/ //按缴费总额排序 //定义 tail //判断 q是否为 {
p->next=q->next; //比较大小,排序 q->next=q->next->next; p->next->next=q; } p=p->next; q=p->next; } tail=q; }
head=head->next;
free(p);
return head; }
mem* sort_c()
{ 序 mem *q,*tail,*p=(mem*)malloc(sizeof(mem)); p->next=head; head=p; tail=NULL; while(tail!=head->next) { p=head; q=p->next; while(q->next!=tail) { if(p->next->cost>q->next->cost)
{ 序 p->next=q->next; q->next=q->next->next; p->next->next=q; } p=p->next; q=p->next; } tail=q; }
head=head->next; free(p);
return head; //返回值//返回值 //按消费金额排 //定义 tail //比较大小,排
}
float summ(mem *p) {
//计算缴费总额 float summ=0; p=head; while(p)
{ //循环,实现求总额 summ+=p->money; p=p->next; }
return summ; //返回总额 }
float sumc(mem *p)
{ //计算消费总额 float sumc=0; p=head; while(p) { //循环,实现求总额 sumc+=p->cost; p=p->next; } return sumc; //返回总额 }
void statistics() { //统计会员信息函数 int f=0; mem *p; load(p); system(\ printf(\ \ \按缴费总额排序\\n\ \按消费总额排序\\n\ \返回菜单\\n\ \ \
}
) ;
printf(\请选择功能:\scanf(\switch(f)
{ //用switch语句选择功能 case 1: p=sort_m(p); //调用按缴费总额排序 display_statistics(p,summ(p),sumc(p)); //调用函数 getch(); menu(); break; }
case 2: p=sort_c(p); //调用按消费总额排序 display_statistics(p,summ(p),sumc(p)); //调用函数 getch(); menu();break; default : menu();break;
/*退出系统操作*/
void clear(mem *p)
{ //释放链表空间 if(p==NULL) { return; } if(p->next ==NULL) { free(p); } else { clear(p->next); free(p); p = NULL; } }
void quit()
{ //退出函数 clear(head);
exit(0); }
/*菜单信息*/
void menu_tile(char *title)
{ //菜单表头 printf(\ printf(\ printf(\}
void (* menu_main_func[])()= /*函数指针数组 menu_main_func[] 存储的是主菜单项中7个功能函数的地址, 分别对应1-7菜单项。例如用户选择1时,调用数组的第0个元素,即调用
newMember()函数,以此类推。*/ { newMember, modify_m, add, consume, delete_m, statistics, quit, };
char menu_main[] = //菜单主函数 \
\新会员登记\\n\\会员信息修改\\n\\会员续费\\n\\会员消费结算\\n\\会员退卡\\n\\统计功能\\n\\退出系统\\n\\void menu()
{ //菜单函数 int selected = 0; //初始化变量 system(\ //清屏
printf(\ 会员卡计费系统\ printf(menu_main); //输出菜单主函数
printf(\
while(!(selected >= 1 && selected <= MENU_MAIN_COUNT))
{ //判断初始值 printf(\请选择:\ scanf(\ if(selected >= 1 && selected <= MENU_MAIN_COUNT) { //判断输入值是否有效 break; } }
printf(\输入错误!(注:请选择 1 - %d)\\n\
menu_main_func[selected-1](); //调用相应的函数指针
数组中的函数,执行操作
}
int main() /*主函数*/ { menu(); //调用菜单函数 return 0; //返回值 }