借書證信息管理系統,C語言實現


自己實現的如有缺漏歡迎提出

/* 原創文章 轉載請附上原鏈接: https://www.cnblogs.com/jiujue/p/10325628.html   */

設計內容:

設計一個排序和查找系統。能夠實現對給定的一組學生的借書證信息(如:卡號、姓名、系別、班號等)進行排序和查找。

1)按照卡號順序進行排序;

2)能夠實現查找某個系的所有的借書卡號並輸出。

設計要求:

(1)建立關於借書證信息結點的結構體;

(2)定義借書證信息的記錄並錄入基本信息;

(3)寫出用某種排序算法(如冒泡排序)按關鍵字對記錄進行排序的算法函數;

  (4)對借書證信息的記錄按系名建立索引查找結構;

  (5)輸入某個要查找的系名,用索引查找方法查找並輸出該系的所有借書證信息。

是學期末的課程設計,自己弄完覺得還可以,提供給有需要的人做參考。

有圖萬歲:

下面是代碼實現:

1.頭文件:(my_head.h)

 1 #pragma once
 2 #define _CRT_SECURE_NO_WARNINGS
 3 #include<stdio.h>
 4 #include<windows.h>
 5 #include<stdlib.h>
 6 
 7 //這里改系別總個數
 8 #define depratment_number 3
 9 
10 typedef int once_sort;
11 
12 typedef struct card_node {
13 
14     once_sort is_sort;
15 
16     long long number;
17     char *name;
18     char *department;
19     long long  class_number;
20     struct card_node *next_node;
21     struct card_node *same_department_next_node;
22 }cr_node;
23 
24 
25 cr_node* initialize(cr_node** head);
26 int initialize_sort(cr_node *head);
27 //
28 int print(cr_node* head);
29 
30 int print_one(cr_node*node);
31 
32 int print_on_same_depart(cr_node *same_depaet_head);
33 
34 int print_same_depart(cr_node *index_list[depratment_number], char *str_depratment[depratment_number]);
35 
36 //
37 int input(cr_node*head);
38 
39 //
40 cr_node * find(cr_node * head, long long number);
41 
42 //
43 cr_node* delete_cr_crde(cr_node * head, long long number);
44 
45 //
46 cr_node *make_indexes_list(cr_node *head, char _str_depratment[]);
47 
48 cr_node *get_indexes_list(cr_node *head, char *department[], cr_node *index_list[depratment_number]);
49 
50 //
51 int sort_class_number(cr_node **head);
52 int get_class_sort_list(cr_node *head);
53 int sort_class_link(cr_node **head, int total);
54 
55 int sort_crad_number(cr_node **head);
56 int get_crad_number_sort_list(cr_node *head);
57 int sort_card_link(cr_node **head, int total);
View Code

2.main函數入口:(source_1.c)

  1 #include"my_head.h"
  2 
  3 int CARD_NUMBER = 0;
  4 
  5 //point menu
  6 void print_menu()
  7 {
  8     printf("                                                                 \n");
  9     printf("                /-----------------------------------------------/\n"); 
 10     printf("                / ***          借書證管理系統             ******/\n"); 
 11     printf("                /  -->選項 :                             ******/\n");
 12     printf("                / ***    1.按卡號排序並輸出前后結果   <    ******/\n"); 
 13     printf("                / ***    2.差找並輸一個系的所有借書卡號 <  ******/\n"); 
 14     printf("                / ***    3.錄入一個借書證   <              ******/\n"); 
 15     printf("                / ***    4.刪除一個借書證   <              ******/\n");
 16     printf("                / ***    5.按關鍵字(例如 班號)進行排序 <   ******/\n"); 
 17     printf("                / ***    6.建立索引表並用其查找 <          ******/\n"); 
 18     printf("                / ***    7.退出本程序   <                  ******/\n"); 
 19     printf("                / ***    8.打印現有的借書證信息   <        ******/\n");
 20     printf("                / ***    9.驚喜 最好不要選        <        ******/\n");
 21     printf("                /-----------------------------------------------/\n"); 
 22     printf("\n \a                    #_#  請輸入所要執行的操作 #_#\n");
 23     printf("\n                          (請輸入數字 1-8 選擇操作)\n"); Sleep(500);
 24 }
 25 
 26 int main()
 27 {
 28     system("color d");
 29 
 30     system("title .                                                                                          #借書證信息管理系統# ");
 31     
 32     cr_node* head=NULL;
 33     cr_node* temp_node = NULL;
 34     cr_node *index_list[depratment_number];
 35 
 36     cr_node *sort_list[10];
 37     int i = 0;
 38 
 39     char str_find_depart_temp[64];
 40 
 41     long long temp = 0;
 42     int i_find_same = 0;
 43 
 44     initialize(&head);
 45 
 46     //添加系別步驟 1.在下方字符串里添加系名 2。在頭文件定義里更改系別總個數 
 47     char *str_depratment[depratment_number] = { "計算機系","外語系","藝術系" };
 48 
 49 
 50     int operation;
 51     int exit_op;
 52     operation = 0;
 53 
 54     while (1)
 55     {
 56         print_menu();
 57         operation = 10;
 58         printf("\n請輸入你要進行的操作 (確認輸入時可能有時需兩次按下 Enter 鍵): \n");
 59 
 60         scanf("%d",&operation);
 61         
 62         {getchar(); getchar(); }
 63 
 64         switch (operation)
 65         {
 66         case 1:        //排序
 67 
 68             sort_crad_number(&head);
 69 
 70             system("pause");
 71             Sleep(200);
 72             system("cls");
 73             break;
 74 
 75         case 2:        //查找一個系的全部成員並輸出
 76 
 77             get_indexes_list(head, str_depratment, index_list);
 78 
 79             printf("請輸入你要查找的系的名稱 注: 先有 如下系名記錄在系統  \n");
 80 
 81             gets_s(str_find_depart_temp,sizeof(str_find_depart_temp));
 82             printf("%s\n", str_find_depart_temp);
 83             if ("\\0" == str_find_depart_temp||"" == str_find_depart_temp)
 84             {
 85                 printf("輸入的系別有誤 請重新輸入\n");
 86                 goto END;
 87             }
 88 
 89             {
 90                 int x=0;
 91 
 92                 while (x < depratment_number)
 93                 {
 94                     if (strstr(index_list[x]->department, str_find_depart_temp))
 95                     {
 96                         print_on_same_depart(index_list[x]);
 97                         goto END;
 98                     }
 99                     ++x;
100                 }
101                 if (x > depratment_number)
102                 {
103                     printf("輸入的系別有誤 請重新輸入\n");
104                     goto END;
105                 }
106             }
107             
108 
109 
110     
111 
112 
113 END:        system("pause");
114             Sleep(200);
115             system("cls");
116             break;
117 
118         case 3:        //錄入一個
119 
120             input(head);
121 
122             system("pause");
123             Sleep(200);
124             system("cls");
125             break;
126 
127         case 4:        //刪除
128 
129             printf("please input card_number : \n");
130             scanf("%lld", &temp);
131 
132             head = delete_cr_crde(head, temp);
133 
134             system("pause");
135             Sleep(200);
136             system("cls");
137             break;
138 
139         case 5:        //排序
140 
141             sort_class_number(&head);
142 
143             system("pause");
144             Sleep(200);
145             system("cls");
146             break;
147 
148         case 6:        //建立索引表並用其查找
149 
150             get_indexes_list(head, str_depratment,index_list);
151 
152             print_same_depart(index_list, str_depratment);
153 
154             system("pause");
155             Sleep(200);
156             system("cls");
157             break;
158 
159         case 7:        //exit()
160             
161             printf("\a");                            //are you want quit ?                    //warning you soon quit 
162             exit_op= MessageBox(NULL, "確認過眼神,是要退出的人 !! ", "挽留一下下可以嗎?", MB_YESNO);
163             if (6 == exit_op)
164             {
165                 exit(-1);
166             }
167             printf("\t    您已取消退出 請繼續使用 *_* \n\n");
168 
169             system("pause");
170             Sleep(200);
171             system("cls");
172             break;
173 
174         case 8:        //打印現有的
175 
176             print(head);
177 
178             system("pause");
179 
180             Sleep(200);
181             system("cls");
182             break;
183         case 9:    
184 
185             printf("\a People always have choicse。。。。\n");
186             printf("\n But always the wrong choice \n");
187             printf("\n Cherish what you have at the moment\n");
188             printf("\n");
189             Sleep(2000);
190 
191             system("cls");
192 
193             while (1)
194             {
195                 static int t = 0;
196                 if (t == 8)
197                 {
198                     t = 0;
199                 }
200                 char str[20];
201                 sprintf(str, "color %d%d", t, t + 1);
202                 if (0 == t % 2)
203                 {
204                     system("title .                                                                                          讓你亂點 哈哈哈 ");
205                 }
206                 else
207                 {
208                     system("title .                                                                                          下次記得做個乖寶寶 !!! ");
209                 }
210                 system(str);
211                 printf("%s\n","且行且珍惜");
212                 ++t;
213                 //Sleep(150);
214             }
215 
216             system("pause");
217 
218             Sleep(200);
219             system("cls");
220             break;
221 
222         default:
223                                     //please input select operation number of you
224             printf("\a                   !!!!請輸入 1 - 6 的數字來選擇你的操作!!!!!\n");
225             Sleep(500);
226                                     //tips : refresh after on 3 seconds ,again try input 
227             printf("\a                      *_* 提示: 2 秒后刷新 您可再次輸入選項 *_* \n");
228 
229             Sleep(2000);
230             system("cls");
231             break;
232         }
233     }
234     return 0;
235 }
View Code

3.刪除一個信息:(delete_cr_node.c)

 1 #include"my_head.h"
 2 
 3 extern CARD_NUMBER;
 4 
 5 cr_node* delete_cr_crde(cr_node * head,long long number)
 6 {
 7     cr_node *t1, *t2;
 8     t1 = head;
 9     t2 = head;
10     if (number == head->number)
11     {
12         t2 = head;
13         head = head->next_node;
14         free(t2);
15         return head;
16     }
17     while (t1 != NULL && t1->number != number)
18     {
19         t2 = t1;
20         t1 = t1->next_node;
21     }
22     if (NULL == t1)
23     {
24         printf("\n **** !!!!!!! key unexistent of in library_card_system !!!!!!! ****\n\n");
25         goto Exception;
26     }
27     if (number == t1->number)
28     {
29         t2->next_node = t1->next_node;
30         CARD_NUMBER--;
31         free(t1);
32 
33         return head;
34     }
35 
36     
37 
38 Exception:    return head;
39 
40 }
View Code

4.查找:(find.c)

 1 #include"my_head.h"
 2 
 3 extern CARD_NUMBER;
 4 
 5 cr_node * find(cr_node * head, long long number)
 6 {
 7     if (NULL == head)
 8     {
 9         return NULL;
10     }
11     else
12     {
13         while (head->number != number)
14         {
15             head = head->next_node;
16         }
17         if (NULL == head)
18         {
19             return NULL;
20         }
21         else
22         {
23             return head;
24         }
25     }
26     
27 }
View Code

5.獲取排序后的順序:(get_indexes_list.c)

 1 #include "my_head.h"
 2 extern CARD_NUMBER;
 3 cr_node *make_indexes_list(cr_node *head, char _str_depratment[])
 4 {
 5     cr_node *p1 = NULL;
 6     cr_node *p2 = head;
 7     if (NULL == head)
 8     {
 9         printf("輸入為空 請檢查 \n");
10         return NULL;
11     }
12     while (head)
13     {
14         if (strstr(head->department, _str_depratment))
15         {
16             p1 = head;
17             p2 = p1;
18             head = head->next_node;
19             break;
20         }
21         else
22         {
23             head = head->next_node;
24         }
25     }
26     while (head)
27     {
28         if (strstr(head->department, _str_depratment))
29         {
30             p2->same_department_next_node = head;
31             p2 = p2->same_department_next_node;
32             head = head->next_node;
33         }
34         else
35         {
36             head = head->next_node;
37         }
38     }
39     if (NULL == p1)
40     {
41         printf("提示:有未錄入的系 如有需要請添加 \n");
42         return NULL;
43     }
44     p2->same_department_next_node = NULL;
45     return p1;
46 }
47 cr_node*get_indexes_list(cr_node*head, char*department[],
48     cr_node *index_list[depratment_number])
49 {
50     int i = 0;
51     while (i < depratment_number)
52     {
53         index_list[i] = make_indexes_list(head, department[i]);
54         ++i;
55     }
56     return index_list;
57 }
View Code

6.初始化系統中的信息:(initialize.c)//這步可不執行 不影響使用

 1 #include"my_head.h"
 2 
 3 extern CARD_NUMBER;
 4 
 5 cr_node* initialize(cr_node** head) 
 6 {
 7     cr_node *p1=NULL, *p2 = NULL, *p3 = NULL;
 8 
 9     p1 = (cr_node*)malloc(sizeof(cr_node));
10     p2 = (cr_node*)malloc(sizeof(cr_node));
11     p3 = (cr_node*)malloc(sizeof(cr_node));
12 
13     p1->name = "張三";
14     p1->number = 1003;
15     p1->class_number = 2003;
16     p1->department = "計算機系";
17     p1->next_node = p2;
18     p1->same_department_next_node = NULL;
19     p1->is_sort = 0;
20     CARD_NUMBER++;
21 
22     p2->name = "王五";
23     p2->number = 1001;
24     p2->class_number = 2002;
25     p2->department = "外語系";
26     p2->next_node = p3;
27     p2->same_department_next_node = NULL;
28     p2->is_sort = 0;
29     CARD_NUMBER++;
30 
31     p3->name = "李四";
32     p3->number = 1002;
33     p3->class_number = 2001;
34     p3->department = "藝術系";
35     p3->next_node = NULL;
36     p3->same_department_next_node = NULL;
37     p3->is_sort = 0;
38     CARD_NUMBER++;
39 
40     *head = p1;
41 }
View Code

7. 初始化鏈表的順序:(init_sort.c)//博主的排序實現使用了和往常不一樣的方法 有興趣的可以好好研究哦 

 1 #include"my_head.h"
 2 
 3 
 4 int initialize_sort(cr_node *head)
 5 {
 6     while (head)
 7     {
 8         head->is_sort = 0;
 9         head = head->next_node;
10     }
11     return 1;
12 }
View Code

8.錄入一個信息的實現:(input_one.c):

 1 #include"my_head.h"
 2 
 3 extern CARD_NUMBER;
 4 
 5 int input(cr_node *head)
 6 {
 7     cr_node *p1 = NULL;
 8 
 9     char str[sizeof(cr_node)];
10 
11     static long long number;2
12     char *name = (char *)malloc(10);
13     char *department = (char *)malloc(64);
14     static long long  class_number;
15 
16     p1 = (cr_node *)malloc(sizeof(cr_node));
17     p1->next_node = NULL;
18 
19     while (head->next_node)
20     {
21         head = head->next_node;
22     }
23 
24     getchar();
25 
26     printf("請輸入需要錄入的信息  \n\n(輸入格式提示 \
27     例如:[卡號 姓名 系別 班號] \
28     中括號里面的為一次錄入,不用寫中括號。 )\n\n");
29 
30     gets_s(str, sizeof(cr_node));
31 
32     sscanf(str,"%lld %s %s %lld",
33         &number, name,
34         department,&class_number);
35 
36     p1->number = number;
37     p1->name= name;
38     p1->department = department;
39     p1->class_number = class_number;
40     p1->is_sort = 0;
41     p1->same_department_next_node = NULL;
42 
43     printf("你剛剛的輸入是:\n");
44     printf("card_number \tname \tdepartment \tclass_number\n\n\a");
45 
46     printf("%lld\t\t%s \t%s \t\t%lld\n\n",
47     p1->number, p1->name,
48     p1->department, p1->class_number);
49 
50     head->next_node=p1;
51     CARD_NUMBER++;
52 
53     system("pause");
54     return 0;
55 }
View Code

9.打印信息的實現: //由於要求打印實現了很多 有興趣的朋友可以用回調改一改 看起來會好一點

  (print_all.c):

 1 #include"my_head.h"
 2 
 3 extern CARD_NUMBER;
 4 
 5 int print(cr_node* head)
 6 {
 7     printf("當前系統共存儲 %d 個借書證信息,所有信息如下:\n\n", CARD_NUMBER);
 8     printf("card_number \tname \tdepartment \tclass_number\n\n\a");
 9     while (NULL!=head)
10     {
11         printf("  %lld\t\t%s \t%s \t%lld\n\n",
12                 head->number, head->name, 
13                 head->department, head->class_number);
14         head = head->next_node;
15     }
16     return 0;
17 }
View Code

  (print_all_same_depart.c):

 1 #include"my_head.h"
 2 
 3 extern CARD_NUMBER;
 4 
 5 int print_same_depart(cr_node *index_list[depratment_number], char *str_depratment[depratment_number])
 6 {
 7     cr_node *list_head = NULL;
 8 
 9     int i = 0;
10 
11     while (i < depratment_number)
12     {
13         list_head = index_list[i];
14         
15         
16         if (NULL == list_head)
17         {
18             printf("-->%s未錄入 :\n",str_depratment[i]);
19             
20             ++i;
21             break;
22         }
23         printf("-->%s有如下 :\n", str_depratment[i]);
24         printf("ncard_number \tname \tdepartment \tclass_number\n\n\a");
25         while (NULL != list_head)
26         {
27 
28             printf("  %lld\t\t%s \t%s \t\t%lld\n\n",
29                 list_head->number, list_head->name,
30                 list_head->department, list_head->class_number);
31 
32             list_head = list_head->same_department_next_node;
33 
34         }
35         ++i;
36     }
37 
38     
39     return 0;
40 }
View Code

  (print_on_same_department.c):

 1 #include"my_head.h"
 2 
 3 extern CARD_NUMBER;
 4 
 5 int print_on_same_depart(cr_node *same_depaet_head)
 6 {
 7         printf("ncard_number \tname \tdepartment \tclass_number\n\n\a");
 8         while (NULL != same_depaet_head)
 9         {
10             printf("  %lld\t\t%s \t%s \t\t%lld\n\n",
11                 same_depaet_head->number, same_depaet_head->name,
12                 same_depaet_head->department, same_depaet_head->class_number);
13             same_depaet_head = same_depaet_head->same_department_next_node;
14         }
15          return 0;
16 }
View Code

  (print_one.c):

 1 #include"my_head.h"
 2 
 3 extern CARD_NUMBER;
 4 
 5 int print_one(cr_node* head)
 6 {
 7     printf("card_number \tname \tdepartment \tclass_number\n\n\a");
 8 
 9         printf("  %lld\t\t%s \t%s \t%lld\n\n",
10             head->number, head->name,
11             head->department, head->class_number);
12     return 0;
13 }
View Code

10.兩個排序的實現:(分別按 班號 卡號 的排序)

  (sort_class_number.c):

  1 #include"my_head.h"
  2 
  3 static cr_node **array_save = NULL;
  4 
  5 int get_class_sort_list(cr_node *head)
  6 {
  7 
  8     int total = 0;
  9 
 10     int x_save = 0;
 11 
 12     int flag=0;
 13 
 14     cr_node *temp_total = head;
 15 
 16     cr_node *temp_2 = head;
 17     
 18     cr_node *min_node = NULL;
 19     cr_node *current_node = NULL;
 20     
 21     while (temp_total)
 22     {
 23         temp_total = temp_total->next_node;
 24         ++total;
 25     }
 26 
 27     flag = total;
 28 
 29     array_save = (cr_node **)malloc(sizeof(cr_node*)*total);
 30 
 31     for(int j=0;j<total;++j)
 32     { 
 33         min_node = NULL;
 34         current_node = head;
 35         while (!min_node)
 36         {
 37             if (flag < 0)
 38             {
 39                 goto END;
 40             }
 41             if (temp_2->is_sort == 0)
 42             {
 43                 min_node = temp_2;
 44             }
 45             else
 46             {
 47                 temp_2 = temp_2->next_node;
 48             }
 49         }
 50 
 51         
 52         for (int i=0; i < total; ++i)
 53         {
 54             
 55             if (min_node->class_number > current_node->class_number&&0==current_node->is_sort)
 56             {
 57                 min_node = current_node;
 58                 current_node = current_node->next_node;
 59             }
 60             else
 61             {
 62                 current_node = current_node->next_node;
 63             }
 64         }
 65         min_node->is_sort = 1;
 66          *(array_save+ x_save)= min_node;
 67         
 68         ++x_save;
 69         --flag;
 70 
 71         
 72     }
 73 
 74 
 75 END: return total;
 76     
 77 
 78 }
 79 
 80 
 81 int sort_class_number(cr_node **head)
 82 {
 83     printf(" 按班號排序前 : \n");
 84     print(*head);
 85 
 86     initialize_sort(*head);
 87 
 88     int total= get_class_sort_list(*head);
 89 
 90     sort_class_link(head, total);
 91 
 92     printf(" 按班號排序后 : \n");
 93 
 94     print(*head);
 95 }
 96 
 97 
 98 int sort_class_link(cr_node **head, int total)
 99 {
100     int flag__=0;
101 
102     cr_node *p1 = NULL;
103     cr_node *p2 = *head;
104     cr_node **p3 = NULL;
105     cr_node **p4 = NULL;
106 
107     p1 = p2;
108 
109     while (p1 != NULL && p2 != NULL)
110     {
111         p1 = p2;
112         p2 = p1->next_node;
113 
114         p1->next_node = NULL;
115 
116     }
117 
118     *head = array_save[0];
119     
120     p3 = array_save;
121     
122 
123     while (flag__<total-1)
124     {
125         //p4 = &(*p3)->next_node;
126         
127         (*p3)->next_node = *(p3+1);
128         ++p3;
129         ++flag__;
130     }
131 
132 
133 
134 }
View Code

  (sort_crad_number.c):

  1 #include"my_head.h"
  2 
  3 static cr_node **array_save = NULL;
  4 
  5 int get_crad_number_sort_list(cr_node *head)
  6 {
  7 
  8     int total = 0;
  9 
 10     int x_save = 0;
 11 
 12     int flag = 0;
 13 
 14     cr_node *temp_total = head;
 15 
 16     cr_node *temp_2 = head;
 17 
 18     cr_node *min_node = NULL;
 19     cr_node *current_node = NULL;
 20 
 21     while (temp_total)
 22     {
 23         temp_total = temp_total->next_node;
 24         ++total;
 25     }
 26 
 27     flag = total;
 28 
 29     array_save = (cr_node **)malloc(sizeof(cr_node*)*total);
 30 
 31     for (int j = 0; j < total; ++j)
 32     {
 33         min_node = NULL;
 34         current_node = head;
 35         while (!min_node)
 36         {
 37             if (flag < 0)
 38             {
 39                 goto END;
 40             }
 41             if (temp_2->is_sort == 0)
 42             {
 43                 min_node = temp_2;
 44             }
 45             else
 46             {
 47                 temp_2 = temp_2->next_node;
 48             }
 49         }
 50 
 51 
 52         for (int i = 0; i < total; ++i)
 53         {
 54 
 55             if (min_node->number > current_node->number && 0 == current_node->is_sort)
 56             {
 57                 min_node = current_node;
 58                 current_node = current_node->next_node;
 59             }
 60             else
 61             {
 62                 current_node = current_node->next_node;
 63             }
 64         }
 65         min_node->is_sort = 1;
 66         *(array_save + x_save) = min_node;
 67 
 68         ++x_save;
 69         --flag;
 70 
 71 
 72     }
 73 
 74 
 75 END: return total;
 76 
 77 }
 78 
 79 
 80 int sort_card_link(cr_node **head, int total)
 81 {
 82     int flag__ = 0;
 83 
 84     cr_node *p1 = NULL;
 85     cr_node *p2 = *head;
 86     cr_node **p3 = NULL;
 87     cr_node **p4 = NULL;
 88 
 89     p1 = p2;
 90 
 91     while (p1 != NULL && p2 != NULL)
 92     {
 93         p1 = p2;
 94         p2 = p1->next_node;
 95 
 96         p1->next_node = NULL;
 97 
 98     }
 99 
100     *head = array_save[0];
101 
102     p3 = array_save;
103 
104     while (flag__ < total - 1)
105     {
106 
107         (*p3)->next_node = *(p3 + 1);
108         ++p3;
109         ++flag__;
110     }
111 
112 }
113 
114 int sort_crad_number(cr_node **head)
115 {
116     printf(" 按卡號排序前 : \n");
117     print(*head);
118 
119     initialize_sort(*head);
120 
121     int total = get_crad_number_sort_list(*head);
122 
123     sort_card_link(head, total);
124 
125     printf(" 按卡號排序后 : \n");
126 
127     print(*head);
128 }
View Code

 

結語:有問題歡迎提在下方 ,本人在校學生,時間較為充裕, 有時間會回復的。

/* 原創文章 轉載請附上原鏈接: https://www.cnblogs.com/jiujue/p/10325628.html   */


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM