ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据结构作业

2022-01-29 13:33:04  阅读:131  来源: 互联网

标签:LNode level 作业 next VIP printf 数据结构 id


#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;
	//LinkList* L = new LinkList;
	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", &n);
	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", &id);
	printf("\n");
	//p = (LNode*)malloc(sizeof(LNode));
	for (;p->id !=id&&p!=NULL;) {
		q = p;
		p = p->next;
	}
	q->next = p->next;
	
	delete(p);
	/*
	q = q->next;
	printf("被删除客户信息:\n ");
	printf("%s %d %d", q->name, q->id, q->VIP_level);
	*/
	L->length--;
	printf("\n");
}

/*
void sort_id(LinkList L) {
	LNode* q, * p = L;
	q = (LNode*)malloc(sizeof(LNode));
	for (; p != NULL; ) {
		printf(" %s %d %d\n\n", p->name, p->id, p->VIP_level);
		p = p->next;
	}
}*/
void lottery(LinkList &L) {//抽奖
	srand(time(NULL));//每次随机不同
	int n = ((int)rand() % L->length);
	LNode* p = L->next;
	
	for (int i = 0; i< n &&p != 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", &id);
	printf("请输入购买产品编号(0-4)\n");
	scanf("%d", &n);
	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);  //% products[n]   //小折扣不亏
			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", &name);
	for (;p != NULL; ) {
		if (strcmp(p->name, name)==0)
		{
			//printf(" 查找成功!\n");
			printf("客户信息:\n");
			printf(" %s %d %d\n\n", p->name, p->id, p->VIP_level); 
		}
		p = p->next;
		//if (p = NULL) { printf(" 查找失败!\n"); }
	}
}
void search_id(LinkList &L) {
	LNode* p = L->next;
	int id;
	printf("请输入查找ID:\n");
	scanf("%d", &id);
	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);//改变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", &n);
		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();
	/*
	int n; scanf("%d", &n);//调试会不会异常终止退出
	*/
	return 0;
}



   

/*
test:


6

大李 3549   1
小魏 1426   1
小陈 7359   1
小李 2100   1
小傅 7531   1
大陈 2847   1
   
②show(L)

④insert(L)

大白 7777 1 

②show(L)

③delete_(L)

1426

②show(L)

⑦buy_products(L)

3549
0
no

⑦

7777
4
yes

⑦

7359
3
yes

⑦

7359
0
yes

⑦

7359
0
yes


⑨VIP排行

⑧抽奖活动

⑤search_name(L)

小李



*/


















/*

void swap(char** p1, char** p2)
{
	char* p;
	p = *p1;
	*p1 = *p2;
	*p2 = p;
}
*/
/*
void sort_VIP_level(LinkList& L) {
	LNode* q, * p = L->next;
	q = (LNode*)malloc(sizeof(LNode));
	int i, j; string s;
	printf("按阅读书籍数量排序(冒泡从小到大):\n ");
	for (i = 0; i < L->length; i++)
		for (j = 0; j < L->length - i; j++) {
			if (p->VIP_level > p->next->VIP_level) {
				q->VIP_level = p->VIP_level; q->id = p->id;
				p->VIP_level = p->next->VIP_level; p->id = p->next->id;
				p->next->VIP_level = q->VIP_level; p->next->id = q->id;
				swap(p->name, p->next->name);
			}
		}
	for (; p != NULL; ) {
		printf(" %s %d %d\n\n", p->name, p->id, p->VIP_level);
		p = p->next;
	}

}
*/
/*
double show_count_expense(LinkList &L) {
	double count = 0;
	LNode* p = L->next;

	for (; p != NULL; ) {
		if (p->VIP_level != 1&&p->expense > 0) {
		count += p->expense;
		}
		p = p->next;
		//printf("业绩:%lf\n", count);
	}
	t = count;
	printf("季度总销售业绩:%lf\n", count);
	return count;
}

void salary(LinkList &L) {
	double n ;
	n = 3500 + t/20; //show_count_expense(L)
	printf("本季度工资为%d", n);
	printf("\n");
}
*/

标签:LNode,level,作业,next,VIP,printf,数据结构,id
来源: https://blog.csdn.net/m0_58466526/article/details/121343176

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有