C语言 职工信息管理系统
生活随笔
收集整理的這篇文章主要介紹了
C语言 职工信息管理系统
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
C語(yǔ)言— —課程設(shè)計(jì)職工信息管理系統(tǒng)
文章目錄
- 項(xiàng)目要求
- 函數(shù)之間調(diào)用說(shuō)明:
- 一,設(shè)定結(jié)構(gòu)體
- 二,定義主函數(shù)
- 三,主菜單
- 四,錄入職工信息
- 五,文件操作
- 六,職工信息顯示
- 七,職工信息刪除
- 八,職工信息修改
- 九,職工信息查詢
- 十,職工信息排序
- 完整代碼
- 代碼運(yùn)行檢測(cè)及結(jié)果:
項(xiàng)目要求
以菜單方式工作管理每個(gè)職工的個(gè)人信息。
(1)總共有職工10名,每個(gè)職工是一個(gè)記錄,包括的信息有: 職工號(hào)、姓名、性別、出生年月、學(xué)歷、職務(wù)、部門、工資、住址、電話并且可以對(duì)職工信息進(jìn)行錄入、刪除、修改、瀏覽等操作。
(2)可以按姓名進(jìn)行查詢。
(3)可以按工資排序并瀏覽。
函數(shù)之間調(diào)用說(shuō)明:
一,設(shè)定結(jié)構(gòu)體
代碼如下:
struct worker {int number;char name[15];char sex[15];int birth;char edu[15];char post[15];char department[15];int salary;char address[15]; }字符型name代表職工姓名,字符型sex代表職工性別,字符型edu代表職工學(xué)歷,字符型post代表職工職位,字符型department代表職工部門,字符型address代表職工住址,整型number代表職工編號(hào),整型birth代表職工年齡,整型salary代表職工工資,結(jié)構(gòu)體worker存儲(chǔ)了不同職工信息。
二,定義主函數(shù)
代碼如下:
int main() {char c;do{printf("\n\n\n");printf(" §§職工信息管理系統(tǒng)§§ \n");printf("\n"); printf("*****************************************************************\n");printf("* § *\n");printf("* 1.錄入職工信息"); printf(" § 2.顯示職工信息 *\n");printf("* § *\n");printf("* 3.修改職工信息"); printf(" § 4.刪除職工信息 *\n");printf("* § *\n");printf("* 5.查詢職工信息"); printf(" § 6.職工信息排序 *\n");printf("* *\n");printf("* 0.退出管理系統(tǒng) *\n");printf("*****************************************************************\n");printf("\n 請(qǐng)輸入:");c = getchar();switch (c){case '1': {input(); getchar(); break; }case '2': {display(); getchar(); break; }case '3': {modify(); getchar(); break; }case '4': {dele(); getchar(); break; }case '5': {query(); getchar(); break; }case '6': {order(); getchar(); break; }case '0':{printf("\n感謝使用,本程序由Mi-ronin編寫而成,版權(quán)所有侵權(quán)必究,感謝支持,再見。 ");exit(0);}default:{printf("\n請(qǐng)輸入有效數(shù)字:");c = getchar();}}} while (1);return 0; }三,主菜單
代碼如下:
int main() {char c;do{printf("\n\n\n");printf(" §§職工信息管理系統(tǒng)§§ \n");printf("\n"); printf("*****************************************************************\n");printf("* § *\n");printf("* 1.錄入職工信息"); printf(" § 2.顯示職工信息 *\n");printf("* § *\n");printf("* 3.修改職工信息"); printf(" § 4.刪除職工信息 *\n");printf("* § *\n");printf("* 5.查詢職工信息"); printf(" § 6.職工信息排序 *\n");printf("* *\n");printf("* 0.退出管理系統(tǒng) *\n");printf("*****************************************************************\n");printf("\n 請(qǐng)輸入:");c = getchar();switch (c){case '1': {input(); getchar(); break; }case '2': {display(); getchar(); break; }case '3': {modify(); getchar(); break; }case '4': {dele(); getchar(); break; }case '5': {query(); getchar(); break; }case '6': {order(); getchar(); break; }case '0':{printf("\n感謝使用,本程序由Mi-ronin編寫而成,版權(quán)所有侵權(quán)必究,感謝支持,再見。 ");exit(0);}default:{printf("\n請(qǐng)輸入有效數(shù)字:");c = getchar();}}} while (1);return 0; }四,錄入職工信息
代碼如下:
void input() {int i;for (i = 0; i < M; i++){printf("\n輸入第%d個(gè)職工信息", i + 1);printf("\n輸入職工號(hào):");scanf_s("%d", &worker[i].number);printf("\n輸入職工姓名:");scanf_s("%s", &worker[i].name);printf("\n輸入職工性別:");scanf_s("%s", &worker[i].sex);printf("\n輸入職工年齡:");scanf_s("%d", &worker[i].birth);printf("\n輸入職工學(xué)歷:");scanf_s("%s", &worker[i].edu);printf("\n輸入職工職務(wù):");scanf_s("%s", &worker[i].post);printf("\n輸入職工部門:");scanf_s("%s", &worker[i].department);printf("\n輸入職工工資:");scanf_s("%d", &worker[i].salary);printf("\n輸入職工住址:");scanf_s("%s", &worker[i].address);}writeToFile(); }五,文件操作
文件操作包括寫文件和讀文件:
//將職工數(shù)據(jù)寫到文件中 void writeToFile() {int i;FILE* fp;fopen_s(&fp, "worker", "wb");if (!fp){printf("cannot open the file\n");return;}for (i = 0; i < 10; i++){if (fwrite(&worker[i], sizeof(struct worker), 1, fp) != 1){printf("file write error\n");return;}}fclose(fp); } //從文件中讀取職工數(shù)據(jù)并存入數(shù)組stu[M] int readFromFile() {int i = 0;FILE* fp;fopen_s(&fp, "worker", "rb");if (!fp){printf("cannot open the file\n");exit(0);}else{do {fread(&worker[i], sizeof(struct worker), 1, fp);i++;} while (feof(fp) == 0);}fclose(fp);return(i - 1); }六,職工信息顯示
代碼如下:
void display() {int i;int m = readFromFile();printf("\n公司職工信息:\n");printf("\n職工號(hào)\t姓名\t性別\t年齡\t學(xué)歷\t職務(wù)\t部門\t工資\t住址\n");for (i = 0; i < M; i++)printf("\n %d\t %s\t %s\t %d\t %s\t %s\t %s\t %d\t %s\n", worker[i].number, worker[i].name, worker[i].sex, worker[i].birth, worker[i].edu, worker[i].post, worker[i].department, worker[i].salary, worker[i].address);printf("\n"); }七,職工信息刪除
代碼如下:
void dele() {int m = readFromFile();int i, j, t, n, f, Num;display();printf("請(qǐng)輸入要?jiǎng)h除的職工的職工號(hào):");scanf_s("%d", &Num);for (f = 1, i = 0; f && i < m; i++){if (worker[i].number == Num){printf("\n已找到此人,原始記錄為:\n");printf("\n職工號(hào)\t姓名\t性別\t年齡\t學(xué)歷\t職務(wù)\t部門\t工資\t住址\n"); printf("\n %d\t %s\t %s\t %d\t %s\t %s\t %s\t %d\t %s\n", worker[i].number, worker[i].name, worker[i].sex, worker[i].birth, worker[i].edu, worker[i].post, worker[i].department, worker[i].salary, worker[i].address);printf("\n確認(rèn)刪除請(qǐng)按 1,取消刪除請(qǐng)按 0: ");scanf_s("%d", &n);if (n == 1) /*如果刪除,則其他的信息都向前移一行*/{for (j = i; j < m - 1; j++)worker[j] = worker[j + 1]; /*當(dāng)找到第j個(gè)職工時(shí),for語(yǔ)句后j自加了1,所以下面的應(yīng)該把改后的 信息賦值給第j-1個(gè)人*/f = 0;}else f = 2;}}system("cls");switch (f) {case 0: m = m - 1;printf("\n刪除成功!\n");writeToFile(); /*調(diào)用保存函數(shù)*/display(); /*調(diào)用瀏覽函數(shù)*/break;case 1: printf("\n沒有該員工!\n");display(); /*調(diào)用瀏覽函數(shù)*/break;case 2: printf("\n取消刪除!\n");break;}//display(); /*調(diào)用瀏覽函數(shù)*/printf("\n繼續(xù)刪除請(qǐng)按1,返回主菜單請(qǐng)按0:");scanf_s("%d", &t);system("cls");switch (t){case 1: dele();break;case 0: system("cls");break;default: break;}system("cls"); }八,職工信息修改
代碼如下
//信息修改 void modify() {int m = readFromFile();int number;char name[15];char sex[15];int birth;char edu[15];char post[15];char department[15];int salary;int tel[15];char address[15];int b = 1, c, i, n, t, k = 0; /*導(dǎo)入文件內(nèi)的信息*/printf("\n");printf("請(qǐng)輸入要修改的職工的職工號(hào): ");scanf_s("%d", &number);system("cls");for (i = 0; i < m; i++){if (worker[i].number == number){k = 1;printf("\n已找到該職工號(hào)員工,其記錄為:\n");printf("\n職工號(hào)\t姓名\t性別\t年齡\t學(xué)歷\t職務(wù)\t部門\t工資\t住址\n");printf("\n %d\t %s\t %s\t %d\t %s\t %s\t %s\t %d\t %s\n", worker[i].number, worker[i].name, worker[i].sex, worker[i].birth, worker[i].edu, worker[i].post, worker[i].department, worker[i].salary, worker[i].address);printf("\n確認(rèn)修改請(qǐng)按1,取消修改請(qǐng)按0:");scanf_s("%d", &n);if (n == 1){printf("\n需要進(jìn)行修改的選項(xiàng)\n 1.職工號(hào) 2.姓名 3.性別 4.年齡 5.學(xué)歷 6.職務(wù) 7.部門 8.工資 9.住址\n");printf("請(qǐng)輸入你想修改的那一項(xiàng)序號(hào): ");scanf_s("%d", &c);do {switch (c){case 1: printf("職工號(hào)改為:");scanf_s("%d", &number);worker[i].number = number;break;case 2: printf("姓名改為:");scanf_s("%s", name);strcpy_s(worker[i].name, name);break;case 3: printf("性別改為:");scanf_s("%s", &sex);strcpy_s(worker[i].sex, sex);break;case 4: printf("年齡改為:");scanf_s("%d", &birth);worker[i].birth = birth;break;case 5: printf("學(xué)歷改為:");scanf_s("%s", edu);strcpy_s(worker[i].edu, edu);break;case 6: printf("職務(wù)改為:");scanf_s("%s", &post);strcpy_s(worker[i].post, post);break;case 7: printf("部門改為:");scanf_s("%s", department);strcpy_s(worker[i].department, department);break;case 8: printf("工資改為:");scanf_s("%d", &salary);worker[i].salary = salary;break;case 9:printf("住址改為:");scanf_s("%s", &address);strcpy_s(worker[i].address, address);break;}printf("\n確認(rèn)修改 請(qǐng)按1,重新輸入 請(qǐng)按2: ");scanf_s("%d", &b);if (b == 1){system("cls");writeToFile();//儲(chǔ)存修改后的數(shù)據(jù)printf("\n");display();//瀏覽修改后的數(shù)據(jù)}} while (b == 2);}}else if (i == (m - 1)) i++;}if (k == 0) {printf("\n輸入有誤!\n");getchar();getchar();}else {printf("\n繼續(xù)修改請(qǐng)按 1,退出修改請(qǐng)按 0: ");scanf_s("%d", &t);}system("cls");switch (t){case 1: display();modify();//返回修改函數(shù)break;case 0: break;default:break;}system("cls"); }九,職工信息查詢
//信息查詢 void query() {char name1[15];int i, t, n = 0;int m = readFromFile();printf("\n請(qǐng)輸入要查找的姓名: ");scanf_s("%s", name1);for (i = 0; i < m; i++)if (strcmp(name1, worker[i].name) == 0){if (n == 0){printf("\n已找到以下信息:\n");printf("\n職工號(hào)\t姓名\t電話號(hào)\t性別\t年齡\t學(xué)歷\t職務(wù)\t部門\t工資\t住址\n");}n++; printf("\n %d\t %s\t %s\t %d\t %s\t %s\t %s\t %d\t %s\n", worker[i].number, worker[i].name, worker[i].sex, worker[i].birth, worker[i].edu, worker[i].post, worker[i].department, worker[i].salary, worker[i].address);}if (n == 0){printf("\n沒有該員工!\n");getchar(); getchar();}else{printf("\n查詢到有 %d 個(gè)員工符合要求。\n", n);printf("\n");printf("繼續(xù)查詢請(qǐng)按 1,,返回主菜單請(qǐng)按 0 :");scanf_s("%d", &t);switch (t){case 0: system("cls");break;case 1: break;default:break;}} }十,職工信息排序
這里的排序按照工資由高到低的排序
//信息排序 void order()//按工資排序函數(shù)// //瀏覽信息時(shí)按工資由大到小排序 {int i, j, k;for (i = 0; i < M - 1; i++){k = i;for (j = i + 1; j < M; j++)if (worker[j].salary > worker[k].salary){k = j;t[k] = worker[k];worker[k] = worker[i];worker[i] = t[k]; //選擇法排序 }}for (i = 0; i < M; i++){printf("\n職工號(hào)\t姓名\t性別\t年齡\t學(xué)歷\t職務(wù)\t部門\t工資\t住址\n");printf("\n %d\t %s\t %s\t %d\t %s\t %s\t %s\t %d\t %s\n", worker[i].number, worker[i].name, worker[i].sex, worker[i].birth, worker[i].edu, worker[i].post, worker[i].department, worker[i].salary, worker[i].address);printf("\n");} }完整代碼
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<windows.h> #define N 10 #define M 10 struct worker {int number;char name[15];char sex[15];int birth;char edu[15];char post[15];char department[15];int salary;char address[15]; } worker[M], t[M];//引入一個(gè)中間變量方便后續(xù)排序 void input(); void input(); void display(); void dele(); void modify(); void query(); void order(); int readFromFile(); void writeToFile(); //職工數(shù)據(jù)錄入,將錄入的數(shù)據(jù)存到數(shù)組中 void input() {int i;for (i = 0; i < M; i++){printf("\n輸入第%d個(gè)職工信息", i + 1);printf("\n輸入職工號(hào):");scanf_s("%d", &worker[i].number);printf("\n輸入職工姓名:");scanf_s("%s", &worker[i].name);printf("\n輸入職工性別:");scanf_s("%s", &worker[i].sex);printf("\n輸入職工年齡:");scanf_s("%d", &worker[i].birth);printf("\n輸入職工學(xué)歷:");scanf_s("%s", &worker[i].edu);printf("\n輸入職工職務(wù):");scanf_s("%s", &worker[i].post);printf("\n輸入職工部門:");scanf_s("%s", &worker[i].department);printf("\n輸入職工工資:");scanf_s("%d", &worker[i].salary);printf("\n輸入職工住址:");scanf_s("%s", &worker[i].address);}writeToFile(); } //將職工數(shù)據(jù)寫到文件中 void writeToFile() {int i;FILE* fp;fopen_s(&fp, "worker", "wb");if (!fp){printf("cannot open the file\n");return;}for (i = 0; i < 10; i++){if (fwrite(&worker[i], sizeof(struct worker), 1, fp) != 1){printf("file write error\n");return;}}fclose(fp); } //從文件中讀取職工數(shù)據(jù)并存入數(shù)組stu[M] int readFromFile() {int i = 0;FILE* fp;fopen_s(&fp, "worker", "rb");if (!fp){printf("cannot open the file\n");exit(0);}else{do {fread(&worker[i], sizeof(struct worker), 1, fp);i++;} while (feof(fp) == 0);}fclose(fp);return(i - 1); } //信息顯示 void display() {int i;int m = readFromFile();printf("\n公司職工信息:\n");printf("\n職工號(hào)\t姓名\t性別\t年齡\t學(xué)歷\t職務(wù)\t部門\t工資\t住址\n");for (i = 0; i < M; i++)printf("\n %d\t %s\t %s\t %d\t %s\t %s\t %s\t %d\t %s\n", worker[i].number, worker[i].name, worker[i].sex, worker[i].birth, worker[i].edu, worker[i].post, worker[i].department, worker[i].salary, worker[i].address);printf("\n"); } //信息刪除 void dele() {int m = readFromFile();int i, j, t, n, f, Num;display();printf("請(qǐng)輸入要?jiǎng)h除的職工的職工號(hào):");scanf_s("%d", &Num);for (f = 1, i = 0; f && i < m; i++){if (worker[i].number == Num){printf("\n已找到此人,原始記錄為:\n");printf("\n職工號(hào)\t姓名\t性別\t年齡\t學(xué)歷\t職務(wù)\t部門\t工資\t住址\n"); printf("\n %d\t %s\t %s\t %d\t %s\t %s\t %s\t %d\t %s\n", worker[i].number, worker[i].name, worker[i].sex, worker[i].birth, worker[i].edu, worker[i].post, worker[i].department, worker[i].salary, worker[i].address);printf("\n確認(rèn)刪除請(qǐng)按 1,取消刪除請(qǐng)按 0: ");scanf_s("%d", &n);if (n == 1) /*如果刪除,則其他的信息都向前移一行*/{for (j = i; j < m - 1; j++)worker[j] = worker[j + 1]; /*當(dāng)找到第j個(gè)職工時(shí),for語(yǔ)句后j自加了1,所以下面的應(yīng)該把改后的 信息賦值給第j-1個(gè)人*/f = 0;}else f = 2;}}system("cls");switch (f) {case 0: m = m - 1;printf("\n刪除成功!\n");writeToFile(); /*調(diào)用保存函數(shù)*/display(); /*調(diào)用瀏覽函數(shù)*/break;case 1: printf("\n沒有該員工!\n");display(); /*調(diào)用瀏覽函數(shù)*/break;case 2: printf("\n取消刪除!\n");break;}//display(); /*調(diào)用瀏覽函數(shù)*/printf("\n繼續(xù)刪除請(qǐng)按1,返回主菜單請(qǐng)按0:");scanf_s("%d", &t);system("cls");switch (t){case 1: dele();break;case 0: system("cls");break;default: break;}system("cls"); } //信息修改 void modify() {int m = readFromFile();int number;char name[15];char sex[15];int birth;char edu[15];char post[15];char department[15];int salary;int tel[15];char address[15];int b = 1, c, i, n, t, k = 0; /*導(dǎo)入文件內(nèi)的信息*/printf("\n");printf("請(qǐng)輸入要修改的職工的職工號(hào): ");scanf_s("%d", &number);system("cls");for (i = 0; i < m; i++){if (worker[i].number == number){k = 1;printf("\n已找到該職工號(hào)員工,其記錄為:\n");printf("\n職工號(hào)\t姓名\t性別\t年齡\t學(xué)歷\t職務(wù)\t部門\t工資\t住址\n");printf("\n %d\t %s\t %s\t %d\t %s\t %s\t %s\t %d\t %s\n", worker[i].number, worker[i].name, worker[i].sex, worker[i].birth, worker[i].edu, worker[i].post, worker[i].department, worker[i].salary, worker[i].address);printf("\n確認(rèn)修改請(qǐng)按1,取消修改請(qǐng)按0:");scanf_s("%d", &n);if (n == 1){printf("\n需要進(jìn)行修改的選項(xiàng)\n 1.職工號(hào) 2.姓名 3.性別 4.年齡 5.學(xué)歷 6.職務(wù) 7.部門 8.工資 9.住址\n");printf("請(qǐng)輸入你想修改的那一項(xiàng)序號(hào): ");scanf_s("%d", &c);do {switch (c){case 1: printf("職工號(hào)改為:");scanf_s("%d", &number);worker[i].number = number;break;case 2: printf("姓名改為:");scanf_s("%s", name);strcpy_s(worker[i].name, name);break;case 3: printf("性別改為:");scanf_s("%s", &sex);strcpy_s(worker[i].sex, sex);break;case 4: printf("年齡改為:");scanf_s("%d", &birth);worker[i].birth = birth;break;case 5: printf("學(xué)歷改為:");scanf_s("%s", edu);strcpy_s(worker[i].edu, edu);break;case 6: printf("職務(wù)改為:");scanf_s("%s", &post);strcpy_s(worker[i].post, post);break;case 7: printf("部門改為:");scanf_s("%s", department);strcpy_s(worker[i].department, department);break;case 8: printf("工資改為:");scanf_s("%d", &salary);worker[i].salary = salary;break;case 9:printf("住址改為:");scanf_s("%s", &address);strcpy_s(worker[i].address, address);break;}printf("\n確認(rèn)修改 請(qǐng)按1,重新輸入 請(qǐng)按2: ");scanf_s("%d", &b);if (b == 1){system("cls");writeToFile();//儲(chǔ)存修改后的數(shù)據(jù)printf("\n");display();//瀏覽修改后的數(shù)據(jù)}} while (b == 2);}}else if (i == (m - 1)) i++;}if (k == 0) {printf("\n輸入有誤!\n");getchar();getchar();}else {printf("\n繼續(xù)修改請(qǐng)按 1,退出修改請(qǐng)按 0: ");scanf_s("%d", &t);}system("cls");switch (t){case 1: display();modify();//返回修改函數(shù)break;case 0: break;default:break;}system("cls"); } //信息查詢 void query() {char name1[15];int i, t, n = 0;int m = readFromFile();printf("\n請(qǐng)輸入要查找的姓名: ");scanf_s("%s", name1);for (i = 0; i < m; i++)if (strcmp(name1, worker[i].name) == 0){if (n == 0){printf("\n已找到以下信息:\n");printf("\n職工號(hào)\t姓名\t電話號(hào)\t性別\t年齡\t學(xué)歷\t職務(wù)\t部門\t工資\t住址\n");}n++; printf("\n %d\t %s\t %s\t %d\t %s\t %s\t %s\t %d\t %s\n", worker[i].number, worker[i].name, worker[i].sex, worker[i].birth, worker[i].edu, worker[i].post, worker[i].department, worker[i].salary, worker[i].address);}if (n == 0){printf("\n沒有該員工!\n");getchar(); getchar();}else{printf("\n查詢到有 %d 個(gè)員工符合要求。\n", n);printf("\n");printf("繼續(xù)查詢請(qǐng)按 1,,返回主菜單請(qǐng)按 0 :");scanf_s("%d", &t);switch (t){case 0: system("cls");break;case 1: break;default:break;}} } //信息排序 void order()//按工資排序函數(shù)// //瀏覽信息時(shí)按工資由大到小排序 {int i, j, k;for (i = 0; i < M - 1; i++){k = i;for (j = i + 1; j < M; j++)if (worker[j].salary > worker[k].salary){k = j;t[k] = worker[k];worker[k] = worker[i];worker[i] = t[k]; //選擇法排序 }}for (i = 0; i < M; i++){printf("\n職工號(hào)\t姓名\t性別\t年齡\t學(xué)歷\t職務(wù)\t部門\t工資\t住址\n");printf("\n %d\t %s\t %s\t %d\t %s\t %s\t %s\t %d\t %s\n", worker[i].number, worker[i].name, worker[i].sex, worker[i].birth, worker[i].edu, worker[i].post, worker[i].department, worker[i].salary, worker[i].address);printf("\n");} } int main() {char c;do{printf("\n\n\n");printf(" §§職工信息管理系統(tǒng)§§ \n");printf("\n"); printf("*****************************************************************\n");printf("* § *\n");printf("* 1.錄入職工信息"); printf(" § 2.顯示職工信息 *\n");printf("* § *\n");printf("* 3.修改職工信息"); printf(" § 4.刪除職工信息 *\n");printf("* § *\n");printf("* 5.查詢職工信息"); printf(" § 6.職工信息排序 *\n");printf("* *\n");printf("* 0.退出管理系統(tǒng) *\n");printf("*****************************************************************\n");printf("\n 請(qǐng)輸入:");c = getchar();switch (c){case '1': {input(); getchar(); break; }case '2': {display(); getchar(); break; }case '3': {modify(); getchar(); break; }case '4': {dele(); getchar(); break; }case '5': {query(); getchar(); break; }case '6': {order(); getchar(); break; }case '0':{printf("\n感謝使用,本程序由Mi-ronin編寫而成,版權(quán)所有侵權(quán)必究,感謝支持,再見。 ");exit(0);}default:{printf("\n請(qǐng)輸入有效數(shù)字:");c = getchar();}}} while (1);return 0; }代碼運(yùn)行檢測(cè)及結(jié)果:
1.信息錄入:
2.信息修改:
3.信息刪除:
4.信息查詢:
5.信息排序:
總結(jié)
以上是生活随笔為你收集整理的C语言 职工信息管理系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: javascript 获取上一页的url
- 下一篇: windows自带黑体_微软黑体下载-微