国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C語言課設(shè)計劃】個人通訊錄管理系統(tǒng)(C語言大作業(yè) 鏈表 結(jié)構(gòu)體 運行截圖 完整代碼)

這篇具有很好參考價值的文章主要介紹了【C語言課設(shè)計劃】個人通訊錄管理系統(tǒng)(C語言大作業(yè) 鏈表 結(jié)構(gòu)體 運行截圖 完整代碼)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

hello 大家好呀 這里是布丁學(xué)姐~
今天給大家?guī)淼氖恰禖語言課設(shè)計劃》的第一篇,個人通訊錄管理系統(tǒng)

引言

通訊錄是當(dāng)前社會每個人不可缺少的信息系統(tǒng),利用C語言和Dve c++制作個人通訊錄管理系統(tǒng),從根本上改變紙質(zhì)通訊錄難以長久保存、容易丟失的弊端,從而提高信息管理和存儲效率。在對系統(tǒng)進(jìn)行分析和設(shè)計的基礎(chǔ)上,創(chuàng)建各種項目組件,若干個功能模塊連接成個人通訊錄管理系統(tǒng)。

功能及操作介紹

該系統(tǒng)可以簡單明了的通過用戶輸入的數(shù)據(jù)創(chuàng)建成通訊錄,實現(xiàn)最基本的新建、更改、查找、排序等功能。本系統(tǒng)通過鏈表和函數(shù)的調(diào)用,實現(xiàn)最基本的功能。
個人通訊錄管理系統(tǒng),C語言課設(shè)計劃,鏈表,c語言,課程設(shè)計
個人通訊錄管理系統(tǒng),C語言課設(shè)計劃,鏈表,c語言,課程設(shè)計

系統(tǒng)設(shè)計分析

本系統(tǒng)包括主函數(shù)和多個實現(xiàn)具體功能的函數(shù),現(xiàn)分別介紹如下。
(1)主函數(shù)模塊:主函數(shù)設(shè)計比較簡潔,只是提供輸入輸出和處理部分的函數(shù)調(diào)用,其中具體的功能模塊顯示為菜單之后由用戶進(jìn)行選擇。具體流程如下:
①顯示菜單
②用戶輸入操作選項
③通過switch語句進(jìn)行函數(shù)的調(diào)用
④運行g(shù)oto語句進(jìn)行循環(huán)
(2)新建通訊錄的功能模塊:通過提示讓用戶輸入聯(lián)系人的各類信息,然后用insert函數(shù)將各個聯(lián)系人的信息用鏈表進(jìn)行連接。具體流程如下;
①顯示適當(dāng)?shù)奶崾?,用戶輸入信?br> ②調(diào)用insert函數(shù)準(zhǔn)備進(jìn)行下一個聯(lián)系人的輸入和鏈接
③輸出提示創(chuàng)建成功
(3)顯示通訊錄的功能模塊:調(diào)用printff函數(shù)將通訊錄中的信息打印出來
(4)查找聯(lián)系人的功能模塊:調(diào)用search函數(shù)按照要求對通訊錄里的內(nèi)容進(jìn)行查找,并進(jìn)行輸出。
(5)修改通訊錄的功能模塊:調(diào)用change函數(shù)根據(jù)用戶需求對聯(lián)系人的信息進(jìn)行修改
(6)排序通訊錄的功能模塊:調(diào)用sortt函數(shù)根據(jù)分類對聯(lián)系人按照字典序升序進(jìn)行排序
(7)退出通訊錄的功能模塊:退出系統(tǒng)。
各個函數(shù)的流程介紹如下:
(1)insert函數(shù):插入函數(shù)的本質(zhì)是在頭結(jié)點后插入一個新結(jié)點,定義一個結(jié)構(gòu)體指針p,使p也指向head,當(dāng)p為空時,p指向下一個結(jié)點q,q的下一個結(jié)點為NULL,插入完成。
(2)search函數(shù):search函數(shù)的本質(zhì)是通過結(jié)構(gòu)體指針對單鏈表進(jìn)行遍歷,當(dāng)遇到與所查找信息相匹配的信息是跳出。這時候進(jìn)行判斷,如果相匹配就打印出所查找到的信息,如果不匹配就顯示未查找到該聯(lián)系人的信息。注意在此之前要先判斷通訊錄是否為空,如果為空,則顯示適當(dāng)?shù)奶崾拘畔⒉⑶彝V箞?zhí)行下面的語句。
(3)printff函數(shù):printff函數(shù)是將通訊錄中的所有信息打印到屏幕上。在執(zhí)行主體語句之前先對通訊錄進(jìn)行判斷,如果為空,則打印提示信息并且停止執(zhí)行函數(shù),否則則對鏈表進(jìn)行遍歷并且進(jìn)行打印的操作。執(zhí)行主體時,要判斷此個結(jié)點是否為最后一個結(jié)點。
(4)change函數(shù):change函數(shù)是根據(jù)用戶需求對聯(lián)系人的信息進(jìn)行更新。同樣先判斷通訊錄是否為空,如果非空則執(zhí)行后續(xù)操作。首先遍歷鏈表并且運用strcmp函數(shù)找到想要更改的聯(lián)系人的位置,并通過switch和goto語句進(jìn)行根據(jù)用戶需求更新甚至循環(huán)更新的功能。
(5)sortt函數(shù):sortt函數(shù)是將通訊錄中的全部聯(lián)系人按照分類根據(jù)字典序進(jìn)行排序。在此函數(shù)中,首先保證結(jié)構(gòu)體指針變量p有后續(xù)節(jié)點,然后構(gòu)造只有一個數(shù)據(jù)結(jié)點的有序表,然后通過循環(huán)和比較進(jìn)行排序。

測試運行結(jié)果

為了截圖運行結(jié)果,在本次測試過程中沒有調(diào)用cls,運行結(jié)果如下:
1.新建聯(lián)系人
個人通訊錄管理系統(tǒng),C語言課設(shè)計劃,鏈表,c語言,課程設(shè)計
2.顯示新建的聯(lián)系人
個人通訊錄管理系統(tǒng),C語言課設(shè)計劃,鏈表,c語言,課程設(shè)計
3.查找聯(lián)系人tom
個人通訊錄管理系統(tǒng),C語言課設(shè)計劃,鏈表,c語言,課程設(shè)計
4.修改聯(lián)系人tom的qq
個人通訊錄管理系統(tǒng),C語言課設(shè)計劃,鏈表,c語言,課程設(shè)計
5.顯示信息查看是否修改成功
個人通訊錄管理系統(tǒng),C語言課設(shè)計劃,鏈表,c語言,課程設(shè)計

6.對通訊錄中的聯(lián)系人進(jìn)行排序,然后顯示聯(lián)系人信息
個人通訊錄管理系統(tǒng),C語言課設(shè)計劃,鏈表,c語言,課程設(shè)計
7.退出系統(tǒng)
個人通訊錄管理系統(tǒng),C語言課設(shè)計劃,鏈表,c語言,課程設(shè)計

不足之處

原意是想用文件一次性讀入大量用戶的信息,然后結(jié)束時將通訊錄的最新狀態(tài)保存到新的文件中,但是失敗了,說明對文件的有關(guān)操作還是不夠熟練。在此系統(tǒng)的代碼書寫過程中,在一些地方遇到了困難,但已獲得老師和同學(xué)的幫助,都已解決。其中,在sortt函數(shù)的書寫過程中,最開始的思路僅僅將分類進(jìn)行了排序,而并沒有改變結(jié)構(gòu)體內(nèi)其他變量的順序,參考了博客上大佬的方法,對鏈表的排序又得到了新的認(rèn)知。而文件的輸入保存還是有待完善。還有search函數(shù)的書寫也是出現(xiàn)了問題,但最后已經(jīng)得到解決。具體的錯誤代碼依舊保留并且被注釋掉。

程序設(shè)計心得

在本次程序設(shè)計過程中,由于一開始的目的比較明確,而且系統(tǒng)主體用調(diào)用函數(shù)實現(xiàn)功能,所以最開始比較順利。但是在排序函數(shù)的書寫中以及保存通訊錄的過程中遇到了困難,說明自己對C語言的掌握能力以及對程序整體的認(rèn)知還不夠熟練,有待提高。這次程序設(shè)計也讓我懂得了一個基本的程序的基礎(chǔ)是框架的有序書寫,在以后的程序設(shè)計過程中,我會先構(gòu)建出一個框架,然后再去完善功能。文章來源地址http://www.zghlxwxcb.cn/news/detail-786666.html

代碼

#include<stdio.h>
#include<windows.h> 
#include<string.h>
#include<stdlib.h>
struct stu{
	char name[100];//學(xué)生姓名
	char postion[100];//家庭住址
	char tel[50];//電話
	char leibie[50];//類別
	char email[50];//電子郵件
	char qq[50];//QQ
	struct stu *next;//用指針處理鏈表,next是指針變量指向結(jié)構(gòu)體變量 
};
struct stu *head=NULL;
struct stu *insert(struct stu *head,struct stu *q){
	struct stu *p;
	for(p=head;p->next!=NULL;p=p->next);
	p->next=q;
	q->next=NULL;
	return head;
} 
void search(struct stu *head){
	struct stu *p;
	char a[100];
	if(head->next==NULL) 
		printf("通訊錄為空\n");
	else{	
		printf("   請輸入要查找的人的姓名:"); 
		scanf("%s",a);
	//	int flag=0;
		for(p=head->next;p->next!=NULL;p=p->next){
			if(strcmp(p->name,a)==0){
				//flag=1;
				/*printf("	要查找的人的信息如下:"); 
				printf("測試\n");
				printf("	*姓名:");printf("%s\n",p->name);
				printf("	*住址:");printf("%s\n",p->postion);
				printf("	*電話:");printf("%s\n",p->tel);
				printf("	*類別:");printf("%s\n",p->leibie);
				printf("	*電子郵件:"); printf("%s\n",p->email);
				printf("	*QQ:");printf("%s\n",p->qq);*/
				break;
			}
		}
		if(strcmp(p->name,a)==0){
				//flag==1;
				printf("	要查找的人的信息如下:\n"); 
				printf("	*姓名:");printf("%s\n",p->name);
				printf("	*住址:");printf("%s\n",p->postion);
				printf("	*電話:");printf("%s\n",p->tel);
				printf("	*類別:");printf("%s\n",p->leibie);
				printf("	*電子郵件:"); printf("%s\n",p->email);
				printf("	*QQ:");printf("%s\n",p->qq);
			//	break;
		}
	//	if(!flag) printf("未找到此人的信息\n");	
		else printf("未找到此人的信息\n");
	} 
}
void printff(struct stu *head){
	struct stu *p=head->next;
	while(1){
		if(p==NULL){
			printf("通訊錄為空\n");
			break;
		}
		else if(p->next==NULL){
			printf("	*姓名:");printf("%s\n",p->name);
			printf("	*住址:");printf("%s\n",p->postion);
			printf("	*電話:");printf("%s\n",p->tel);
			printf("	*類別:");printf("%s\n",p->leibie);
			printf("	*電子郵件:"); printf("%s\n",p->email);
			printf("	*QQ:");printf("%s\n",p->qq);
			printf("\n");
			break;
		}
		else{
			printf("	*姓名:");printf("%s\n",p->name);
			printf("	*住址:");printf("%s\n",p->postion);
			printf("	*電話:");printf("%s\n",p->tel);
			printf("	*類別:");printf("%s\n",p->leibie);
			printf("	*電子郵件:"); printf("%s\n",p->email);
			printf("	*QQ:");printf("%s\n",p->qq);
			printf("\n");
			p=p->next;
			continue;
		}
	}
} 
struct stu *change(struct stu *head){
	struct stu *p;
	char a1[100],b1[100],c1[100];
	int flag=1,x;
	if(head->next==NULL) printf("通訊錄為空\n");
	else{
		printf("請輸入您想要更新的人的姓名:"); scanf("%s",a1); 
		p=head->next;
		while(p!=NULL){
			if(strcmp(p->name,a1)==0){
				flag=0;
				B:
					printf("請輸入您想要更新的信息:\n");
					printf("	1.姓名:\n");
					printf("	2.住址:\n");
					printf("	3.電話:\n");
					printf("	4.類別:\n");
					printf("	5.電子郵件:\n"); 
					printf("	6.QQ:\n");
					printf("您選擇的是:\n"); 
					scanf("%d",&x);
					switch(x){
						case 1:
							printf("    請輸入新姓名:\n");
							scanf("%s",p->name);break; 
						case 2:
							printf("    請輸入新住址:\n");
							scanf("%s",p->postion);break;
						case 3:
							printf("    請輸入新電話:\n");
							scanf("%s",p->tel);break;
						case 4:
							printf("    請輸入新類別:\n");
							scanf("%s",p->leibie);break;
						case 5:
							printf("    請輸入新電子郵件:\n");
							scanf("%s",p->email);break;
						case 6:
							printf("    請輸入新qq:\n");
							scanf("%s",p->qq);break;
						default:
							printf("輸入不合法!請重新輸入:"); 
							break; 
					}
					printf("更新成功!\n"); 
					printf("是否繼續(xù)更新?1.是;2.否:\n"); 
					int y;
					C:scanf("%d",&y);
					switch(y){
						case 1:
							goto B;break;
						case 2:
							break;
						default:
							printf("輸入符號不合法,請重新輸入!");
							goto C;
							break; 
					}
				}
			p=p->next;
		}
		if(flag) printf("要更新的人的信息不存在!\n"); 
	} 
	return head;
}
void sortt(struct stu *l){
	struct stu *p,*r,*pre;
	p=l->next;
	r=p->next;//保證r是p的后續(xù)節(jié)點 
	p->next=NULL;//構(gòu)造一個只有一個數(shù)據(jù)結(jié)點的有序表 就是讓一個有序表的長度為1
	p=r;
	while(p){
		r=p->next;
		pre=l;
		while(pre->next!=NULL&&strcmp(pre->next->leibie,p->leibie)<0)
			pre = pre->next;
		p->next = pre->next;
		pre->next = p;
		p = r;  //掃描剩下的結(jié)點
	} 
}
/*struct stu *sortt(struct stu *head){
	struct stu *q,*p,*s;
	char temp[50];
	p=head->next;
	while(p->next){
		s=p;
		q=p->next;
		while(q){
			if(strcmp(q->leibie,s->leibie)<0)
				s=q;
			q=q->next;
		}
		if(s!=p){
			strcpy(temp,p->leibie);
			strcpy(p->leibie,s->leibie);
			strcpy(s->leibie,temp);
		}
		p=p->next;
	}
	return head;
}*/
void save(){
	struct stu *p=NULL;
	FILE *fp;
	char *book="list.txt";
	if(head==NULL){
		printf("通訊錄為空\n");
		return ;
	}
	else p=head->next;
	if((fp=fopen(book,"w+"))==NULL){
		printf("無法打開此文件\n");
		return ; 
	}
	while(p!=NULL){
		fwrite(p,sizeof(struct stu),1,fp);
		p=p->next;
	}
	printf("保存完成!\n");
	fclose(fp);
} 
int main(){
	//creat();
	system("color F4");//更改系統(tǒng)顏色 
	struct stu *q;
	head=(struct stu*)malloc(sizeof(struct stu));//動態(tài)分配內(nèi)存
	head->next=NULL;//完成構(gòu)建
	printf("*****個人通訊錄管理系統(tǒng)*****\n");
A:	printf("     **1.新建通訊錄**\n");
	printf("     **2.顯示通訊錄**\n");
	printf("     **3.查找通訊錄**\n");
	printf("     **4.修改通訊錄**\n");
	printf("     **5.排序通訊錄**\n");
	printf("     **6.保存并退出**\n");
	printf("****************************\n");
//A:
	printf("請輸入您想要進(jìn)行的操作序號:"); 
	int oper;
	scanf("%d",&oper);
	switch(oper){
		case 1:
		//	add();			
		q=(struct stu*)malloc(sizeof (struct stu));
			printf("請輸入姓名:");scanf("%s",q->name); 
			printf("請輸入住址:");scanf("%s",q->postion);
			printf("請輸入電話:");scanf("%s",q->tel);
			printf("請輸入類別:");scanf("%s",q->leibie);
			printf("請輸入郵件:");scanf("%s",q->email);
			printf("請輸入QQ:");scanf("%s",q->qq);
			insert(head,q);
			printf("建立成功!\n");
			break; 
		case 2:
			printff(head);
			Sleep(1000);
			break;
		case 3:
			search(head);
			Sleep(500);
			break;
		case 4:
			change(head);
			break;
		case 5:
			sortt(head);
			break; 
		case 6:
			//save(); 
			printf("謝謝您的使用!");
			return 0; 
		default:
			printf("輸入不合法!請重新輸入:"); 
	}
	Sleep(500);
	system("cls");//清屏 
	goto A;//循環(huán) 
	return 0;
}

到了這里,關(guān)于【C語言課設(shè)計劃】個人通訊錄管理系統(tǒng)(C語言大作業(yè) 鏈表 結(jié)構(gòu)體 運行截圖 完整代碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【C語言】優(yōu)化通訊錄管理系統(tǒng)

    【C語言】優(yōu)化通訊錄管理系統(tǒng)

    大家好,我是蘇貝,本篇博客帶大家優(yōu)化上一篇的通訊錄,如果你覺得我寫的還不錯的話,可以給我一個贊??嗎,感謝?? 在上一篇博文 實現(xiàn)通訊錄管理系統(tǒng) 的最后,我們了解了那段代碼的問題:通訊錄的大小是固定的100個元素,如果想要存放1000個人的信息,那么空間就

    2024年02月06日
    瀏覽(97)
  • c語言:通訊錄管理系統(tǒng)(文件版本)

    c語言:通訊錄管理系統(tǒng)(文件版本)

    前言: 本通訊錄管理系統(tǒng)一共三個版本,除此文章以外還有如下倆個版本,大家可以根據(jù)需求自?。?基礎(chǔ)增刪查改功能版本 :c語言:通訊錄管理系統(tǒng)(增刪查改)-CSDN博客 動態(tài)分配內(nèi)存版本 :c語言:通訊錄管理系統(tǒng)(動態(tài)分配內(nèi)存版)-CSDN博客 ? ? ? ? 本文是在基礎(chǔ)的通

    2024年02月07日
    瀏覽(90)
  • 【C語言】優(yōu)化通訊錄管理系統(tǒng)2

    【C語言】優(yōu)化通訊錄管理系統(tǒng)2

    本篇博客是基于上一篇博客寫出來的,了解上一篇博客 大家好,我是蘇貝,本篇博客帶大家再次優(yōu)化上一篇的通訊錄,實現(xiàn)將錄入的數(shù)據(jù)在程序退出后存儲到文件中,在下一次程序開始時打開文件獲取數(shù)據(jù),如果你覺得我寫的還不錯的話,可以給我一個贊??嗎,感謝?? 既

    2024年02月04日
    瀏覽(89)
  • 【C語言】通訊錄管理系統(tǒng)(附圖解、源碼)

    【C語言】通訊錄管理系統(tǒng)(附圖解、源碼)

    目錄 一.前言 二.準(zhǔn)備工作 三.ContactTest.c測試區(qū) 1.菜單 2.選擇功能 四.Contact.h頭文件引用區(qū) 1.通訊錄成員結(jié)構(gòu)體函數(shù)的創(chuàng)建 2.實現(xiàn)功能函數(shù)的創(chuàng)建 五.ContactRealize.c功能實現(xiàn)區(qū) 1.初始化成員信息 2.查找目標(biāo)成員位置 3.增加聯(lián)系人 4.刪除指定聯(lián)系人 5.查找指定聯(lián)系人 6.修改指定聯(lián)系

    2024年02月03日
    瀏覽(97)
  • C語言課程設(shè)計_通訊錄管理系統(tǒng)

    C語言課程設(shè)計_通訊錄管理系統(tǒng)

    以本班同學(xué)的具體數(shù)據(jù)為背景,設(shè)計一個本班同學(xué)通訊錄。 1)? 通訊錄編輯(添加、刪除)。 2)? 按不同的項進(jìn)行查找。 3)? 對已存在的通訊錄按不同的項排序。 4)? 將通訊錄寫入文件 5)從文件讀入通訊錄 備注:通訊錄至少應(yīng)該有以下數(shù)據(jù)項: 姓名,地址,電話,郵編,

    2024年02月06日
    瀏覽(93)
  • c語言:通訊錄管理系統(tǒng)(增刪查改)

    c語言:通訊錄管理系統(tǒng)(增刪查改)

    ? 前言: 本通訊錄管理系統(tǒng)一共三個版本,除此文章以外還有如下倆個版本,大家可以根據(jù)需求自?。?動態(tài)分配內(nèi)測版 :c語言:通訊錄管理系統(tǒng)(動態(tài)分配內(nèi)存版)-CSDN博客 文件版本 :c語言:通訊錄管理系統(tǒng)(文件版本)-CSDN博客 目錄 一.大體的框架 主函數(shù)初步設(shè)計 聯(lián)系

    2024年02月08日
    瀏覽(101)
  • c語言:通訊錄管理系統(tǒng)(動態(tài)分配內(nèi)存版)

    c語言:通訊錄管理系統(tǒng)(動態(tài)分配內(nèi)存版)

    前言: 本通訊錄管理系統(tǒng)一共三個版本,除此文章以外還有如下倆個版本,大家可以根據(jù)需求自?。?基礎(chǔ)增刪查改功能版本 :c語言:通訊錄管理系統(tǒng)(增刪查改)_luming.02的博客-CSDN博客 文件保存版本 :c語言:通訊錄管理系統(tǒng)(文件版本)-CSDN博客 ????????本文是在基

    2024年02月08日
    瀏覽(104)
  • 【C語言】通訊錄管理系統(tǒng)(保姆級教程+內(nèi)含源碼)

    目錄 C系列文章目錄 前言 一,模塊化編程 二,系統(tǒng)框架構(gòu)建 1.成員信息的創(chuàng)建 2.菜單實現(xiàn) 3.系統(tǒng)功能聲明 三、系統(tǒng)功能實現(xiàn) 1.初始化通訊錄 2.增加聯(lián)系人 3.顯示所有聯(lián)系人 4.根據(jù)姓名查找位置 5.刪除指定聯(lián)系人 6.查找指定聯(lián)系人 7.修改指定聯(lián)系人 8.清空所有聯(lián)系人 9.按照名

    2024年02月08日
    瀏覽(25)
  • 精通C語言:打造高效便捷的通訊錄管理系統(tǒng)

    精通C語言:打造高效便捷的通訊錄管理系統(tǒng)

    ?? 歡迎大家來到貝蒂大講堂?? ????養(yǎng)成好習(xí)慣,先贊后看哦~???? 所屬專欄:C語言項目 貝蒂的主頁:Betty‘s blog 在我們大致學(xué)習(xí)完C語言之后,我們就可以利用目前所學(xué)的知識去做一些有意思的項目,而今天貝蒂就帶大家完成一個通訊錄的簡易實現(xiàn), 本章你可能需要

    2024年02月19日
    瀏覽(94)
  • C語言用鏈表實現(xiàn)通訊錄管理系統(tǒng)

    C語言用鏈表實現(xiàn)通訊錄管理系統(tǒng)

    目錄 總體思路 具體代碼 編譯通過 總體代碼 一、創(chuàng)建一個結(jié)構(gòu)體保存通訊錄信息。 二、構(gòu)建鏈表,并存于文件中。 三、實現(xiàn)鏈表結(jié)點的增加、刪除、查詢、輸出。 一、創(chuàng)建一個結(jié)構(gòu)體,保存信息。 二、用尾插法創(chuàng)建一個鏈表,并讓用戶選擇是否輸入數(shù)據(jù)。 三、將鏈表數(shù)據(jù)

    2024年02月02日
    瀏覽(97)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包