#include //编译预处理指令,引入头文件
#include
#include
#include
#define MAX 10 //自定义符号常量
#define MENU_MAIN_COUNT 7 //主菜单的选项个数
typedef struct member //定义结构体类型member,采用链式存储结构
{
char name[MAX]; //姓名
char id[MAX]; //卡号
char sex[2]; //性别
int age; //年龄
float money; //余额
char tel[12]; //电话
struct member *next; //定义一个指针指向下一个会员信息
float cost; //消费金额
}mem; //定义结构体变量mem
/*声明函数*/
void menu(); /*声明函数,声明菜单函数*/
void save(mem *p); //声明保存函数
mem *head=NULL; //头指针为NULL
mem* get_last(mem *p) //取得链表最后一个元素的节点指针并返回该指针
{
if(p->next == NULL)
{
return p;
}
else
{
get_last(p->next);
}
}
void creat_member(mem *pNew) //输入信息操作,会员登记函数
{ //创建一个新的会员
char s;
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");
goto a; //跳转至a,重新输入
}
printf("请输入年龄: "); scanf("%d",&(pNew->age)); //运用指针输入年龄
printf("请输入缴费金额: "); scanf("%f",&(pNew->money)); //运用指针输入余额
printf("请输入电话: "); scanf("%s",pNew->tel); //运用指针输入电话
pNew->cost=0; //运用指针初始化消费额为0
printf("\n创建完毕!\n");
}
void newMember() //会员登记函数
{ //添加会员信息
char con='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();
}
}
//显示信息操作
void table_head()
{ //定义表头
printf("+----------+------+------+------+--------+--------+-----------+\n");
printf("| 卡号 | 姓名 | 性别 | 年龄 | 余额 |累计消费| 电话 |\n");
printf("+----------+------+------+------+--------+--------+-----------+\n");
}
void table_buttom()
{ //定义底线
printf("+----------+------+------+------+--------+--------+-----------+\n");
}
void table_row(mem *p)
{ // 定义中间部分
printf("|%10s|%6s|%6s|%6d|%8.2f|%8.2f|%11s|\n",
p->id,p->name,p->sex,p->age,p->