#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "time.h"
#include"windows.h"
#define MAX 50
typedef struct LNode {
char name[MAX];
int id;
int VIP_level;
int length;
int expense ;
struct LNode* next;
}LNode, * LinkList;
int t = 0;
char reward[MAX][2*MAX]{
"Billbill年度大会员",
"网易云会员一年",
"QQ音乐会员一年",
"特等奖!程序设计大礼包!(包含35RMB的数据结构教材)",
};
int products[MAX]{
{1000},{2000} ,{3000}, {5000},{10000}
};
void init(LinkList& L) {
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
L->length = 0;
L->expense = 0;
}
void Creat(LinkList& L) {
init(L);
LNode* p, * r = L;
int n, i = 0; L->length = 0;
printf("录入信息人数: ");
scanf("%d",
printf("\n");
printf("客户信息客户姓名 ID VIP等级: \n");
for (; i < n; i++, L->length++) {
p = (LNode*)malloc(sizeof(LNode));
p->next = r->next;
r->next = p;
r = p;
scanf("%s %d %d", &p->name, &p->id, &p->VIP_level);
printf("\n");
}
}
void insert(LinkList& L) {
LNode* p, * r = L;
int n;
printf("输入新增客户信息(姓名 ID VIP等级): ");
printf("\n");
p = (LNode*)malloc(sizeof(LNode));
p->next = r->next;
r->next = p;
r = p;
scanf("%s %d %d", &p->name, &p->id, &p->VIP_level);
L->length++;
printf("\n");
}
void delete_(LinkList& L) {
LNode* p= L,*q = p;
int id;
printf("输入删除客户信息(ID): ");
scanf("%d",
printf("\n");
for (;p->id !=idNULL;) {
q = p;
p = p->next;
}
q->next = p->next;
delete(p);
L->length--;
printf("\n");
}
void lottery(LinkList &L) {
srand(time(NULL));
int n = ((int)rand() % L->length);
LNode* p = L->next;
for (int i = 0; i< n NULL; p = p->next) {
if (p->VIP_level < 6) {
srand(time(NULL));
n = (rand() % L->length);
}
else break;
}
int m = (rand() % 4);
printf("恭喜姓名为%s的幸运客户,中奖了!\n", p->name);
printf("您获得的奖品是 %s\n",reward[m] );
printf("\n");
}
void buy_products(LinkList& L) {
char quire[MAX];
int id;
int n;
double payment;
printf("输入本人信息(ID)\n");
scanf("%ld",
printf("请输入购买产品编号(0-4)\n");
scanf("%d",
printf("确认阅读注意事项,承诺遵守以上条约(yes / no)\n");
scanf("%s", quire);
if (strcmp(quire ,"yes")== 0 ) {
printf("购买成功!\n");
LNode* p = L->next;
for (; p != NULL; ) {
if (p->id == id)
{
p->expense = 0;
p->expense += products[n];
p->VIP_level += ((p->expense) / 1000 + 1);
payment = products[n] * (1 - 0.001 * p->VIP_level);
printf("尊敬的客户%s,您现在的VIP等级是: %d\n", p->name, p->VIP_level);
printf("本次您需要付款的金额为:%lf\n", payment);
}
p = p->next;
}
if (strcmp(quire, "no") == 0){ printf("无法购买!\n"); return; }
}
}
void show(LinkList &L) {
LNode* p = L->next;
printf("客户姓名 ID VIP等级 \n ");
for (; p != NULL; ) {
printf(" %s \t %d\t %d\t\n\n", p->name, p->id, p->VIP_level);
p = p->next;
}
}
void search_name(LinkList &L) {
LNode* p = L->next;
char name[MAX] ;
printf("请输入客户姓名\n");
scanf(" %s",
for (;p != NULL; ) {
if (strcmp(p->name, name)==0)
{
printf("客户信息:\n");
printf(" %s %d %d\n\n", p->name, p->id, p->VIP_level);
}
p = p->next;
}
}
void search_id(LinkList &L) {
LNode* p = L->next;
int id;
printf("请输入查找ID:\n");
scanf("%d",
for (;p != NULL;p = p->next) {
if (p->id == id) {
printf(" %s %d %d\n\n", p->name, p->id, p->VIP_level);
}
}
}
void sort_VIP_level_max(LinkList &L) {
int i, j, temp; char t[MAX];
printf("客户等级排行:\n");
LNode* q = L->next, * p = L->next;
for (int i = 0; i < L->length - 1; i++){
for (j = 0; j < L->length - i - 1; j++) {
if (p->VIP_level < p->next->VIP_level) {
temp = p->VIP_level;
p->VIP_level = p->next->VIP_level;
p->next->VIP_level = temp;
temp = p->id;
p->id = p->next->id;
p->next->id = temp;
strcpy(t, p->name);
strcpy(p->name, p->next->name);
strcpy(p->next->name, t);
}
p = p->next;
}
q = q->next;
p = q;
}
show(L);
printf("\n");
}
void discount(LinkList& L) {
srand(time(NULL));
int n = (rand() %11);
}
void menu() {
printf("******①录入客户信息***************\n\n");
printf("******②展示客户信息****************\n\n");
printf("******③删除客户信息***************\n\n");
printf("******④添加客户信息**************\n\n");
printf("******⑤查找客户信息**************\n\n");
printf("******⑥保存客户信息**************\n\n");
printf("******⑦购买产品**************\n\n");
printf("******⑧抽奖活动*****************\n\n");
printf("******⑨VIP排名***********\n\n");
printf("******⑩退出系统*****************\n\n");
}
void Function() {
menu();
LinkList L;
int n;
for (;;)
{
printf("请选择功能:\n");
scanf("%d",
switch (n)
{
case 1:Creat(L); break;
case 2:show(L); break;
case 3:delete_(L); break;
case 4:insert(L); break;
case 5:search_name(L);break;
case 6:system("cls"); break;
case 7:buy_products(L); break;
case 8:lottery(L); break;
case 9:sort_VIP_level_max(L); break;
case 10:printf("已退出...\n"); exit(0); break;
default:
break;
}
if (n == 10)break;
}
}
int main() {
system("color 02");
Function();
return 0;
}