C語(yǔ)言員工信息管理系統(tǒng)源代碼
更新時(shí)間:2020年12月27日 12:42:26 投稿:daisy
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言員工信息管理系統(tǒng)源代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
今天分享: C語(yǔ)言員工信息管理系統(tǒng)源代碼,供大家參考,具體內(nèi)容如下
/*******************************************************************************
* 文件名:UI.Cpp *
* *
* 文件功能: 該文件主要是定義(實(shí)現(xiàn))和用戶操作有關(guān)的一些函數(shù),之所以把和用戶 *
* 操作有關(guān)的函數(shù)單獨(dú)放到ui.c中,是為了使程序結(jié)構(gòu)更加清晰,源代碼更 *
* 容易管理,這也是遵循結(jié)構(gòu)化程序設(shè)計(jì)的要求(模塊化、層次化) *
* *
* 作者: *
* *
*******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "ui.h"
//選擇身份
void UserOperateChoose(ListType L)
{
int option = 0;
do
{
//提示用戶操作選擇
PrintOptionChoose( );
scanf("%d", &option );
//根據(jù)用戶選擇調(diào)用相關(guān)函數(shù)完成指定的操作
switch(option )
{
//添加一個(gè)員工
/* case 1:
UserOperateOne(L);
break;*/
//刪除員工
/* case 2:
DelStu(L);
break;
//修改員工
case 3:
ModifyStu(L);
break; */
//查詢某個(gè)員工
case 1:
UserOperatemanager(L);
break;
//排序
/* case 3:
UserOperateThree(L);
break;*/
//打印所有員工信息
case 2:
UserOperateVisitor(L);
break;
default: break;
}
}while(option );
//程序退出時(shí),顯示BYEBYE
PrintHello( );
}
//該函數(shù)根據(jù)管理員的選擇,完成指定的操作
void UserOperateVisitor(ListType L)
{
int option = 0;
//顯示歡迎信息
do
{
//提示用戶操作選擇
PrintOptionVisitor( );
scanf("%d", &option );
//根據(jù)用戶選擇調(diào)用相關(guān)函數(shù)完成指定的操作
switch(option )
{
//添加一個(gè)員工
/* case 1:
UserOperateOne(L);
break;*/
//刪除員工
/* case 2:
DelStu(L);
break;
//修改員工
case 3:
ModifyStu(L);
break; */
//查詢某個(gè)員工
case 1:
UserOperateTwo(L);
break;
//排序
/* case 3:
UserOperateThree(L);
break;*/
//打印所有員工信息
case 2:
PrntAll(L);
break;
default: break;
}
}while(option );
//程序退出時(shí),顯示BYEBYE
}
//該函數(shù)根據(jù)管理員的選擇,完成指定的操作
void UserOperatemanager(ListType L)
{
int option = 0;
//用密碼進(jìn)入系統(tǒng)
password();
do
{
//提示用戶操作選擇
PrintOption( );
scanf("%d", &option );
//根據(jù)用戶選擇調(diào)用相關(guān)函數(shù)完成指定的操作
switch(option )
{
//添加一個(gè)員工
case 1:
UserOperateOne(L);
break;
//刪除員工
/* case 2:
DelStu(L);
break;
//修改員工
case 3:
ModifyStu(L);
break; */
//查詢某個(gè)員工
case 2:
UserOperateTwo(L);
break;
//排序
case 3:
UserOperateThree(L);
break;
//打印所有員工信息
case 4:
PrntAll(L);
break;
default: break;
}
}while(option );
//程序退出時(shí),顯示BYEBYE
}
//該函數(shù)為基本操作的二級(jí)菜單,完成指定的操作
void UserOperateOne(ListType L)
{
int option = 0;
do
{
//提示用戶操作選擇
PrintOptionOne( );
scanf("%d", &option );
//根據(jù)用戶選擇調(diào)用相關(guān)函數(shù)完成指定的操作
switch(option )
{
//添加一個(gè)員工
case 1:
AddStu(L);
break;
//刪除員工
case 2:
DelStu(L);
break;
//修改員工
case 3:
ModifyStu(L);
break;
//返回上級(jí)菜單
case 0:
return;
break;
/* //查詢某個(gè)員工
case 5:
chkStuname(L);
break;
//打印所有員工信息
case 6:
PrntAll(L);
break;
//按ID號(hào)排序
case 7:
sortbyID(L);
break;
case 8:
//按姓名排序
sortbyname(L);
break;
case 9:
//按部門(mén)分類(lèi)顯示信息
sortbyoffice(L);
break;*/
default: break;
}
}while(option );
//程序退出時(shí),顯示BYEBYE
//PrintHello( );
}
//該函數(shù)為基本操作的第二個(gè)二級(jí)菜單,完成指定的操作
void UserOperateTwo(ListType L)
{
int option = 0;
do
{
//提示用戶操作選擇
PrintOptionTwo( );
scanf("%d", &option );
//根據(jù)用戶選擇調(diào)用相關(guān)函數(shù)完成指定的操作
switch(option )
{
//查詢某個(gè)員工
case 1:
chkStu(L);
break;
//查詢某個(gè)員工
case 2:
chkStuname(L);
break;
//返回上級(jí)菜單
case 0:
return;
break;
/* //查詢某個(gè)員工
case 5:
chkStuname(L);
break;
//打印所有員工信息
case 6:
PrntAll(L);
break;
//按ID號(hào)排序
case 7:
sortbyID(L);
break;
case 8:
//按姓名排序
sortbyname(L);
break;
case 9:
//按部門(mén)分類(lèi)顯示信息
sortbyoffice(L);
break;*/
default: break;
}
}while(option );
//程序退出時(shí),顯示BYEBYE
//PrintHello( );
}
//該函數(shù)為基本操作的第三個(gè)二級(jí)菜單,完成指定的操作
void UserOperateThree(ListType L)
{
int option = 0;
do
{
//提示用戶操作選擇
PrintOptionThree( );
scanf("%d", &option );
//根據(jù)用戶選擇調(diào)用相關(guān)函數(shù)完成指定的操作
switch(option )
{
//按ID號(hào)排序
case 1:
sortbyID(L);
break;
case 2:
//按姓名排序
sortbyname(L);
break;
case 3:
//按部門(mén)分類(lèi)顯示信息
sortbyoffice(L);
break;
//按性別排序顯示信息
case 4:
sortbysex(L);
break;
//按年齡排序顯示信息
case 5:
sortbyage(L);
break;
//按電話排序顯示信息
case 6:
sortbyphone( L);
break;
//按地址排序顯示信息
case 7:
sortbyaddress( L);
break;
//按工資排序顯示信息
case 8:
sortbypay( L);
break;
//按電子郵件排序顯示信息
case 9:
sortbyemil( L);
break;
//返回上級(jí)菜單
case 0:
return;
break;
/* //查詢某個(gè)員工
case 5:
chkStuname(L);
break;
//打印所有員工信息
case 6:
PrntAll(L);
break;
//按ID號(hào)排序
case 7:
sortbyID(L);
break;
case 8:
//按姓名排序
sortbyname(L);
break;
case 9:
//按部門(mén)分類(lèi)顯示信息
sortbyoffice(L);
break;*/
default: break;
}
}while(option );
//程序退出時(shí),顯示BYEBYE
//PrintHello( );
}
/* 用戶操作界面啟動(dòng)時(shí),在顯示器上顯示一些歡迎信息 */
void PrintWelcome( )
{
puts(" ");
puts("********************************************************************" );
puts(" 歡迎使用員工管理系統(tǒng)!" );
puts("********************************************************************" );
puts(" 若有有問(wèn)題請(qǐng)?jiān)诹粞詤^(qū)交流");
puts("********************************************************************" );
}
/* 在顯示器上顯示用戶可以進(jìn)行的操作,以及操作的方法 */
void PrintOption( )
{
puts(" ");
puts("請(qǐng)選擇操作:" );
puts("0:返回 " );
puts("1:進(jìn)入基本操作菜單");
puts("2:進(jìn)入員工查詢系統(tǒng)");
puts("3:進(jìn)入信息排序系統(tǒng)");
puts("4:打印員工信息");
}
//選擇身份
void PrintOptionChoose( )
{
puts(" ");
puts("請(qǐng)選擇身份:" );
puts("0:退出系統(tǒng) " );
puts("1:以管理員身份進(jìn)入 " );
puts("2:以游客身份進(jìn)入 " );
}
//顯示第一個(gè)二級(jí)的提示信息
void PrintOptionOne( )
{
puts(" ");
puts("請(qǐng)選擇操作:" );
puts("0:返回 " );
puts("1:添加員工 2:刪除員工 3:修改員工信息" );
}
//顯示第二個(gè)二級(jí)的提示信息
void PrintOptionTwo( )
{
puts(" ");
puts("請(qǐng)選擇操作:" );
puts("0:返回 " );
puts("1:按員工ID號(hào)查詢 2:按員工姓名查詢" );
}
//顯示第三個(gè)二級(jí)的提示信息
void PrintOptionThree( )
{
puts(" ");
puts("請(qǐng)選擇操作:" );
puts("0:返回 " );
puts("1:按ID號(hào)排序顯示信息 2:按姓名排序顯示信息 3:按部門(mén)分類(lèi)顯示信息");
puts("4:按性別排序顯示信息 5:按年齡排序顯示信息 6:按電話排序顯示信息");
puts("7:按地址排序顯示信息 8:按工資排序顯示信息 9:按電子郵件排序顯示信息");
}
//顯示游客查詢系統(tǒng)
void PrintOptionVisitor( )
{
puts(" ");
puts("請(qǐng)選擇操作:" );
puts("0:返回 " );
puts("1:進(jìn)入員工查詢系統(tǒng)");
puts("2:打印員工信息");
}
/* 程序退出時(shí),在顯示器上顯示一些感謝語(yǔ)言,以給使用者一個(gè)好印象 */
void PrintHello( )
{
puts("********************************************************************" );
puts(" 謝謝使用員工管理系統(tǒng),再見(jiàn)!" );
puts("********************************************************************" );
puts(" ");
}
//比較兩個(gè)員工信息的學(xué)號(hào)是否相等
//若相等則返回TRUE,否則返回FALSE
//當(dāng)調(diào)用線性表操作函數(shù)int LocateElem(ListType L, ElemType e, STATUS (*compare)(ElemType e1, ElemType e2)
//的時(shí)候,將該函數(shù)名作為第三個(gè)參數(shù)傳遞給compare
STATUS IsEqual(ElemType e1, ElemType e2 )
{
if( strcmp(e1.ID, e2.ID)==0 )
return TRUE;
return FALSE;
}
STATUS IsEqual2(ElemType e1, ElemType e2 )
{
if( strcmp(e1.name, e2.name)==0 )
return TRUE;
return FALSE;
}
//往線性表中添加一個(gè)員工
void AddStu(ListType L)
{
ElemType stu;
printf("請(qǐng)輸入員工的ID號(hào)(不超過(guò)15位):" );
getchar(); //吃掉前面的回車(chē)鍵,否則后面的字符串輸入時(shí)會(huì)出錯(cuò)
gets(stu.ID );
printf("請(qǐng)輸入員工的姓名(不超過(guò)15位):" );
gets(stu.name );
printf("請(qǐng)輸入員工的性別(輸入M/W):" );
stu.sex=getchar();
printf("請(qǐng)輸入員工的年齡:" );
scanf("%d",&stu.age);
printf("請(qǐng)輸入員工的電話(不超過(guò)20位):" );
getchar(); //吃掉前面的回車(chē)鍵,否則后面的字符串輸入時(shí)會(huì)出錯(cuò)
gets(stu.phone);
printf("請(qǐng)輸入員工的地址(不超過(guò)100位):" );
gets(stu.address);
printf("請(qǐng)輸入員工的電子郵件(不超過(guò)50位):" );
gets(stu.email);
printf("請(qǐng)輸入員工的工資(不超過(guò)10位):" );
gets(stu.pay);
printf("請(qǐng)輸入員工的工齡:" );
scanf("%d",&stu.workingyears);
getchar(); //吃掉前面的回車(chē)鍵,否則后面的字符串輸入時(shí)會(huì)出錯(cuò)
printf("請(qǐng)輸入員工的所在部門(mén)(不超過(guò)100位):" );
gets(stu.office);
//判斷線性表中是否已經(jīng)存在該ID號(hào)的員工,如果已經(jīng)存在,則放棄插入操作
if( LocateElem(L, stu, IsEqual) )
{
puts("操作失敗,該員工已經(jīng)存在" );
return ;
}
//將該學(xué)生放入線性表中
//為簡(jiǎn)單起見(jiàn),我們把新添加的結(jié)點(diǎn)放到線性表的前面
if( ListInsert(L, 1, stu ) )
puts("操作成功" );
else
puts("操作失敗" );
}
//從線性表中刪除一個(gè)員工,根據(jù)員工的ID號(hào)決定刪除哪個(gè)員工
void DelStu(ListType L)
{
ElemType stu;
int pos;
printf("請(qǐng)輸入員工的ID號(hào)(不超過(guò)15位):" );
getchar(); //吃掉前面的回車(chē)鍵,否則后面的字符串輸入時(shí)會(huì)出錯(cuò)
gets(stu.ID );
pos = LocateElem(L, stu, IsEqual ); //如果存在該ID號(hào)的V,則返回其在線性表中的位序,如果不存在返回0
if(pos )
{
if(ListDelete(L, pos, stu) )
{
puts("操作成功");
return;
}
}
puts("操作失敗" );
}
//修改員工成績(jī),根據(jù)ID號(hào)決定修改哪個(gè)員工的成績(jī)
void ModifyStu(ListType L)
{
int pos;
ElemType stu;
printf("請(qǐng)輸入員工的ID號(hào)(不超過(guò)15位):" );
getchar(); //吃掉前面的回車(chē)鍵,否則后面的字符串輸入時(shí)會(huì)出錯(cuò)
gets(stu.ID );
printf("請(qǐng)輸入員工的姓名(不超過(guò)15位):" );
gets(stu.name );
printf("請(qǐng)輸入員工的性別(輸入M/W):" );
scanf("%c",&stu.sex);
printf("請(qǐng)輸入員工的年齡:" );
scanf("%d",&stu.age);
printf("請(qǐng)輸入員工的電話(不超過(guò)20位):" );
getchar(); //吃掉前面的回車(chē)鍵,否則后面的字符串輸入時(shí)會(huì)出錯(cuò)
gets(stu.phone);
printf("請(qǐng)輸入員工的地址(不超過(guò)100位):" );
gets(stu.address);
printf("請(qǐng)輸入員工的電子郵件(不超過(guò)50位):" );
gets(stu.email);
printf("請(qǐng)輸入員工的工資(不超過(guò)10位):" );
gets(stu.pay);
printf("請(qǐng)輸入員工的工齡:" );
scanf("%d",&stu.workingyears);
getchar(); //吃掉前面的回車(chē)鍵,否則后面的字符串輸入時(shí)會(huì)出錯(cuò)
printf("請(qǐng)輸入員工的所在部門(mén):" );
gets(stu.office);
pos = LocateElem(L, stu, IsEqual );
if(pos > 0 )
{
ListModify(L, pos, stu );
puts("操作成功" );
}
else
{
puts("操作失敗" );
}
}
//根據(jù)學(xué)號(hào)查詢某個(gè)員工的成績(jī)
void chkStu(ListType L)
{
int pos;
ElemType stu;
printf("請(qǐng)輸入員工的ID號(hào)(不超過(guò)15位):" );
getchar(); //吃掉前面的回車(chē)鍵,否則后面的字符串輸入時(shí)會(huì)出錯(cuò)
gets(stu.ID );
if(pos = LocateElem(L, stu, IsEqual) )
{
GetElem(L, pos, stu );
PrntOneStu(stu );
}
else
{
puts("操作失敗" );
}
}
//根據(jù)姓氏查詢某個(gè)員工的成績(jī)
void chkStuname(ListType L)
{
int pos;
ElemType stu;
printf("請(qǐng)輸入員工的姓氏(不超過(guò)15位):" );
getchar(); //吃掉前面的回車(chē)鍵,否則后面的字符串輸入時(shí)會(huì)出錯(cuò)
gets(stu.name);
if(pos = LocateElem(L, stu, IsEqual2) )
{
GetElem(L, pos, stu );
PrntOneStu(stu );
}
else
{
puts("操作失敗" );
}
}
//成績(jī)統(tǒng)計(jì),統(tǒng)計(jì)全體員工的平均成績(jī)
/*void StateScore(ListType L)
{
float total[2] = {0.0, 0.0};
int num = 0;
ElemType e;
while(GetElem(L, num+1, e ) ) //GetElem(...)返回值為FALSE時(shí)說(shuō)明沒(méi)有位序?yàn)閚um+1的數(shù)據(jù)
{
num++;
total[0] += e.score[0];
total[1] += e.score[1];
}
if(num > 0 )
{
printf("平均成績(jī)分別為:%.2f, %.2f\n", total[0]/num, total[1]/num );
}
else
{
puts("沒(méi)有數(shù)據(jù)信息" );
}
}*/
//打印一個(gè)員工的信息
//調(diào)用ListTraverse()函數(shù)的時(shí)候,將該函數(shù)的名字作為第二個(gè)參數(shù)傳遞給visit
STATUS PrntOneStu(ElemType stu )
{
printf("ID號(hào):%s 姓名:%s 性別:%c 年齡:%d 電話:%s 地址:%s 電子郵件:%s 工資:%s 工齡:%d 所在部門(mén):%s\n", stu.ID, stu.name, stu.sex,stu.age,stu.phone,stu.address,
stu.email,stu.pay, stu.workingyears ,stu.office);
return OK;
}
//打印所有學(xué)生信息
void PrntAll(ListType L)
{
ListTraverse(L, PrntOneStu );
}
//用于做新的鏈表
//按ID排序
void sortbyID(struct lnode *head)
{
struct lnode *p1,*p2,*l;
l=(struct lnode *)malloc(sizeof(struct lnode));
l->next=NULL;
for (p1=head;p1->next!=NULL;p1=p1->next)
{
for (p2=p1->next;p2!=NULL;p2=p2->next)
{
if (strcmp(p1->data.ID,p2->data.ID)==-1)
{
l->data=p1->data;
p1->data=p2->data;
p2->data=l->data;
}
}
}
printf("降序排序成功\n");
PrntAll(head);
}
//按姓名排序
void sortbyname(struct lnode *head)
{
struct lnode *p1,*p2,*l;
l=(struct lnode *)malloc(sizeof(struct lnode));
l->next=NULL;
for (p1=head;p1->next!=NULL;p1=p1->next)
{
for (p2=p1->next;p2!=NULL;p2=p2->next)
{
if (strcmp(p1->data.name,p2->data.name)==-1)
{
l->data=p1->data;
p1->data=p2->data;
p2->data=l->data;
}
}
}
printf("降序排序成功\n");
PrntAll(head);
}
//按性別分類(lèi)顯示信息
void sortbysex(struct lnode *head)
{
struct lnode *p1,*p2,*l;
l=(struct lnode *)malloc(sizeof(struct lnode));
l->next=NULL;
for (p1=head;p1->next!=NULL;p1=p1->next)
{
for (p2=p1->next;p2!=NULL;p2=p2->next)
{
if (p1->data.sex>p2->data.sex)
{
l->data=p1->data;
p1->data=p2->data;
p2->data=l->data;
}
}
}
PrntAll(head);
}
//按年齡分類(lèi)顯示信息
void sortbyage(struct lnode *head)
{
struct lnode *p1,*p2,*l;
l=(struct lnode *)malloc(sizeof(struct lnode));
l->next=NULL;
for (p1=head;p1->next!=NULL;p1=p1->next)
{
for (p2=p1->next;p2!=NULL;p2=p2->next)
{
if (p1->data.age>p2->data.age)
{
l->data=p1->data;
p1->data=p2->data;
p2->data=l->data;
}
}
}
PrntAll(head);
}
//按電話分類(lèi)顯示信息
void sortbyphone(struct lnode *head)
{
struct lnode *p1,*p2,*l;
l=(struct lnode *)malloc(sizeof(struct lnode));
l->next=NULL;
for (p1=head;p1->next!=NULL;p1=p1->next)
{
for (p2=p1->next;p2!=NULL;p2=p2->next)
{
if (strcmp(p1->data.phone,p2->data.phone)==-1)
{
l->data=p1->data;
p1->data=p2->data;
p2->data=l->data;
}
}
}
PrntAll(head);
}
//按地址分類(lèi)顯示信息
void sortbyaddress(struct lnode *head)
{
struct lnode *p1,*p2,*l;
l=(struct lnode *)malloc(sizeof(struct lnode));
l->next=NULL;
for (p1=head;p1->next!=NULL;p1=p1->next)
{
for (p2=p1->next;p2!=NULL;p2=p2->next)
{
if (strcmp(p1->data.address,p2->data.address)==-1)
{
l->data=p1->data;
p1->data=p2->data;
p2->data=l->data;
}
}
}
PrntAll(head);
}
//按工資分類(lèi)顯示信息
void sortbypay(struct lnode *head)
{
struct lnode *p1,*p2,*l;
l=(struct lnode *)malloc(sizeof(struct lnode));
l->next=NULL;
for (p1=head;p1->next!=NULL;p1=p1->next)
{
for (p2=p1->next;p2!=NULL;p2=p2->next)
{
if (strcmp(p1->data.pay,p2->data.pay)==-1)
{
l->data=p1->data;
p1->data=p2->data;
p2->data=l->data;
}
}
}
PrntAll(head);
}
//按郵件地址分類(lèi)顯示信息
void sortbyemil(struct lnode *head)
{
struct lnode *p1,*p2,*l;
l=(struct lnode *)malloc(sizeof(struct lnode));
l->next=NULL;
for (p1=head;p1->next!=NULL;p1=p1->next)
{
for (p2=p1->next;p2!=NULL;p2=p2->next)
{
if (strcmp(p1->data.email,p2->data.email)==-1)
{
l->data=p1->data;
p1->data=p2->data;
p2->data=l->data;
}
}
}
PrntAll(head);
}
//按部門(mén)分類(lèi)顯示信息
void sortbyoffice(struct lnode *head)
{
struct lnode *p1,*p2,*l;
l=(struct lnode *)malloc(sizeof(struct lnode));
l->next=NULL;
for (p1=head;p1->next!=NULL;p1=p1->next)
{
for (p2=p1->next;p2!=NULL;p2=p2->next)
{
if (strcmp(p1->data.office,p2->data.office)==-1)
{
l->data=p1->data;
p1->data=p2->data;
p2->data=l->data;
}
}
}
PrntAll(head);
}
//按密碼進(jìn)入系統(tǒng)
void password()
{
char password[7]="123456";
int choice;
char s[7];
int flag=0;
int n=3;
do
{
printf("請(qǐng)你輸入密碼:\n");
scanf("%s",s);
if(strcmp(s,password)==0)//若密碼正確
{
printf("恭喜你成功登陸了\n\n\n");
flag=1;
break;
}
else
{
printf("輸入有錯(cuò)誤請(qǐng)重新輸入:\n");
n--;
}
}while(n>0);
if(!flag)
{
printf("哈哈,O(∩_∩)O哈!,想暴力破解是行不通的\n");
puts("若有有問(wèn)題留言區(qū)交流");
exit(0);
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
相關(guān)文章
C語(yǔ)言單雙線性及循環(huán)鏈表與實(shí)例
這篇文章主要介紹了C語(yǔ)言的單鏈表、雙鏈表和循環(huán)鏈表,還有一些相關(guān)的實(shí)例,感興趣的同學(xué)可以借鑒一下2023-03-03
C語(yǔ)言實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲完整代碼
大家好,本篇文章主要講的是C語(yǔ)言實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲完整代碼,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01
C++知識(shí)點(diǎn)之成員函數(shù)中const的用法
這篇文章主要介紹了C++知識(shí)點(diǎn)之成員函數(shù)中const的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
VS+QT編譯環(huán)境中字符亂碼問(wèn)題解決方法
編碼就是把?個(gè)字符編碼成二進(jìn)制碼存起來(lái)的方式,而解碼就是把這個(gè)二進(jìn)制碼按照原本編碼的規(guī)則還原成原來(lái)的字符,這篇文章主要介紹了VS+QT編譯環(huán)境中字符亂碼問(wèn)題詳解,需要的朋友可以參考下2024-01-01

