C語言實(shí)現(xiàn)企業(yè)員工管理系統(tǒng)開發(fā)
本文實(shí)例為大家分享了C語言實(shí)現(xiàn)企業(yè)員工管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
程序介紹
系統(tǒng)介紹
企業(yè)員工信息管理系統(tǒng)主要是對企業(yè)員工的基本信息進(jìn)行增、刪、改、查的相關(guān)操作,以便用戶可以快速地對這些信息進(jìn)行管理。本系統(tǒng)對管理者的控制更加嚴(yán)格,只設(shè)置一個管理賬號。
操作流程
用戶在編譯完成后會產(chǎn)生一個系統(tǒng)的可執(zhí)行文件,用戶只要雙擊可執(zhí)行文件就可以進(jìn)入系統(tǒng),如果是第一次進(jìn)入系統(tǒng),首先要對系統(tǒng)進(jìn)行初始化,如圖所示,初始化完成后,再次雙擊系統(tǒng)執(zhí)行文件,進(jìn)入如圖的界面。
用戶在輸入正確密碼后,進(jìn)入系統(tǒng)的功能選擇界面如圖所示。在這個界面用戶可以選擇相應(yīng)的操作。
代碼
//頭文件 #include <stdio.h> #include <stdlib.h> #include <string.h> //存儲員工信息的結(jié)構(gòu)體 typedef struct employee ? ? ? ??? ? { ? ? int num; ? ? ? ? ? ? ? ? ? ?? ?//員工號 ? ? char duty[10]; ? ? ? ? ? ? ?? ?//員工職務(wù) ? ? char name[10]; ? ? ? ? ? ? ?? ?//員工姓名 ? ? char sex[3]; ? ? ? ? ? ? ? ?? ?//員工性別 ? ? unsigned char age; ? ? ? ? ?? ?//員工年齡 ? ? char edu[10]; ? ? ? ? ? ? ??? ?//教育水平 ? ? int salary; ? ? ? ? ? ? ? ??? ?//員工工資 ? ? char tel_office[13]; ? ? ? ?? ?//辦公電話 ? ? char tel_home[13]; ? ? ? ? ?? ?//家庭電話 ? ? char mobile[13]; ? ? ? ? ? ?? ?//手機(jī) ? ? char qq[11]; ? ? ? ? ? ? ? ?? ?//qq號碼 ? ? char address[31]; ? ? ? ? ??? ?//家庭住址 ? ? struct employee *next; }EMP; //全局變量 char password[9]; ? ? ? ? ??? ??? ?//系統(tǒng)密碼 EMP *emp_first,*emp_end; ? ?? ??? ?//定義指向鏈表的頭結(jié)點(diǎn)和尾節(jié)點(diǎn)的指針 char gsave,gfirst; ? ? ? ? ?? ??? ?//判斷標(biāo)示 //自定義函數(shù)聲明 void addemp(void); ? ? ? ? ?? ? ?? ?//添加員工信息的函數(shù) void findemp(void); ? ? ? ??? ? ?? ?//查找員工信息的函數(shù) void listemp(void); ? ? ? ??? ??? ?//顯示員工信息列表的函數(shù) void modifyemp(void); ? ? ??? ? ?? ?//修改員工信息的函數(shù) void summaryemp(void); ? ? ?? ? ?? ?//統(tǒng)計(jì)員工信息的函數(shù) void delemp(void); ? ? ? ? ?? ? ?? ?//刪除員工信息的函數(shù) void resetpwd(void); ? ? ? ?? ??? ?//重置系統(tǒng)的函數(shù) void readdata(void); ? ? ? ?? ??? ?//讀取文件數(shù)據(jù)的函數(shù) void savedata(void); ? ? ? ?? ??? ?//保存數(shù)據(jù)的函數(shù) int modi_age(int s); ? ? ? ?? ??? ?//修改員工年齡的函數(shù) int modi_salary(int s); ? ??? ? ?? ?//修改員工工資的函數(shù) char *modi_field(char *field,char *s,int n); ? ? ??? ??? ?//修改員工其他信息的函數(shù) EMP *findname(char *name); ? ? ? ? ? ? ? ? ? ? ? ??? ??? ?//按員工姓名查找員工信息 EMP *findnum(int num); ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ?? ?//按員工工號查找員工信息 EMP *findtelephone(char *name); ? ? ? ? ? ? ? ? ? ?? ??? ?//按員工的通訊號碼查找員工信息 EMP *findqq(char *name); ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ?? ?//按員工的QQ號查找員工信息 void displayemp(EMP *emp,char *field,char *name); ?? ??? ?//顯示員工信息 void checkfirst(void); ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ??? ?//初始化檢測 void bound(char ch,int n); ? ? ? ? ? ? ? ? ? ? ? ??? ??? ?//畫出分界線 void login(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ??? ?//登錄檢測 void menu(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ??? ?//主菜單列表 /** * ?員工信息添加 */ void addemp() { ? ? FILE *fp; ? ? ? ? ? ? ? //聲明一個文件型指針 ? ? EMP *emp1; ? ? ? ? ? ? ?//聲明一個結(jié)構(gòu)型指針 ? ? int i=0; ? ? char choice='y'; ? ?? ? ? if((fp=fopen("employee.dat","ab"))==NULL) ? ? ? //判斷信息文件中是否有信息 ? ? { ? ? ? ? printf("打開文件employee.dat出錯!\n"); ? ? ? ? getch(); ? ? ? ? return; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? } ? ?? ? ?? ? ? do{ ? ? ? ? ?i++; ? ? ? ? ?emp1=(EMP *)malloc(sizeof(EMP)); ? ? ? ?? ?//申請一段內(nèi)存 ? ? ? ? ?if(emp1==NULL) ? ? ? ? ? ? ? ? ? ? ? ? ? ? //判斷內(nèi)存是否分配成功 ? ? ? ? ?{ ? ? ? ? ? ? ?printf("內(nèi)存分配失敗,按任意鍵退出!\n"); ? ? ? ? ? ? ?getch(); ? ? ? ? ? ? ?return; ? ? ? ? ? ? ? ? ? ? ? ?} ? ? ? ? ?printf("請輸入第%d個員工的信息,\n",i); ? ? ? ? ?bound('_',30); ? ? ? ? ?printf("工號:"); ? ? ? ? ?scanf("%d",&emp1->num); ? ? ? ? ? ? ? ? ? ?printf("職務(wù):"); ? ? ? ? ?scanf("%s",&emp1->duty); ? ? ? ? ? ? ? ? ? ?printf("姓名:"); ? ? ? ? ?scanf("%s",&emp1->name); ? ? ? ? ? ? ? ? ? ?printf("性別:"); ? ? ? ? ?scanf("%s",&emp1->sex); ? ? ? ? ? ? ? ? ? ?printf("年齡:"); ? ? ? ? ?scanf("%d",&emp1->age); ? ? ? ? ? ? ? ? ? ?printf("文化程度:"); ? ? ? ? ?scanf("%s",&emp1->edu); ? ? ? ? ? ? ? ? ? ?printf("工資:"); ? ? ? ? ?scanf("%d",&emp1->salary); ? ? ? ? ? ? ? ? ? ?printf("辦公電話:"); ? ? ? ? ?scanf("%s",&emp1->tel_office); ? ? ? ? ? ? ? ? ? ?printf("家庭電話:"); ? ? ? ? ?scanf("%s",&emp1->tel_home); ? ? ? ? ? ? ? ? ? ?printf("移動電話:"); ? ? ? ? ?scanf("%s",&emp1->mobile); ? ? ? ? ? ? ? ? ? ?printf("QQ:"); ? ? ? ? ?scanf("%s",&emp1->qq); ? ? ? ? ? ? ? ? ? ?printf("地址:"); ? ? ? ? ?scanf("%s",&emp1->address); ? ? ? ? ? ? ? ? ? ?emp1->next=NULL; ? ? ? ? ?if(emp_first==NULL) ? ? ? ? ? ?//判斷鏈表頭指針是否為空 ? ? ? ? ?{ ? ? ? ? ? ? ?emp_first=emp1; ? ? ? ? ? ? ?emp_end=emp1; ? ? ? ? ? ? ? ? ?? ? ? ? ? ?}else { ? ? ? ? ? ? ?emp_end->next=emp1; ? ? ? ? ? ? ?emp_end=emp1; ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ? ? ? ?fwrite(emp_end,sizeof(EMP),1,fp); ?//對數(shù)據(jù)流添加數(shù)據(jù)項(xiàng) ? ? ? ? ? ? ? ? ? ?gfirst=0; ? ? ? ? ?printf("\n"); ? ? ? ? ?bound('_',30); ? ? ? ? ?printf("\n是否繼續(xù)輸入?(y/n)"); ? ? ? ? ?fflush(stdin); ? ? ? ? ? ? ? ? ? ? //清除緩沖區(qū) ? ? ? ? ?choice=getch(); ? ? ? ? ? ? ? ? ? ?if(toupper(choice)!='Y') ? ? ? ? ? //把小寫字母轉(zhuǎn)換成大寫字母 ? ? ? ? ?{ ? ? ? ? ? ? ?fclose(fp); ? ? ? ? ? ? ? ? ? ?//關(guān)閉文件流 ? ? ? ? ? ? ?printf("\n輸入完畢,按任意鍵返回\n"); ? ? ? ? ? ? ?getch(); ? ? ? ? ? ? ?return; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?} ? ? ? ? ?system("cls"); ? ? ? ? ? }while(1); } void bound(char ch,int n) { ? ?while(n--) ? ? ? ?putch(ch); ? ? ? ? ? ?printf("\n"); ? ?return; ? ?? } /*首次使用,進(jìn)行用戶信息初始化*/ void checkfirst() { ? ? FILE *fp,*fp1; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//聲明文件型指針 ? ? char pwd[9],pwd1[9],pwd2[9],pwd3[9],ch; ? ? int i; ? ? char strt='8'; ? ? ? ?? ? ? if((fp=fopen("config.bat","rb"))==NULL) ? ? //判斷系統(tǒng)密碼文件是否為空 ? ? { ? ? ? ? printf("\n新系統(tǒng),請進(jìn)行相應(yīng)的初始化操作!\n"); ? ? ? ? bound('_',50); ? ? ? ? getch(); ? ? ? ?? ? ? ? ? do{ ? ? ? ? ? ? printf("\n設(shè)置密碼,請不要超過8位:"); ? ? ? ? ? ? for(i=0;i<8&&((pwd[i]=getch())!=13);i++) ? ? ? ? ? ? ? ? putch('*'); ? ? ? ? ? ? printf("\n再確認(rèn)一次密碼:"); ? ? ? ? ? ? for(i=0;i<8&&((pwd1[i]=getch())!=13);i++)? ? ? ? ? ? ? ? ? putch('*'); ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? pwd[i]='\0'; ? ? ? ? ? ? ? pwd1[i]='\0'; ? ? ? ? ? ?? ? ? ? ? ? ? if(strcmp(pwd,pwd1)!=0) ? ? ? ? ? ? //判斷兩次新密碼是否一致 ? ? ? ? ? ? { ? ? ? ? ? ? ? ? printf("\n兩次密碼輸入不一致,請重新輸入!\n\n"); ? ? ? ? ? ? } ? ? ? ? ? ? else break; ? ? ? ? ? ?? ? ? ? ? }while(1); ? ? ? ?? ? ? ? ? if((fp1=fopen("config.bat","wb"))==NULL) ? ? ? ? { ? ? ? ? ? ? printf("\n系統(tǒng)創(chuàng)建失敗,請按任意鍵退出!"); ? ? ? ? ? ? getch(); ? ? ? ? ? ? exit(1); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ?? ? ? ? ? i=0; ? ? ? ? while(pwd[i]) ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pwd2[i]=(pwd[i]^ strt); ? ? ? ? ? ? ? ? ? ? putw(pwd2[i],fp1); ? ? ? ? ? ? ? ? ?//將數(shù)組元素送入文件流中 ? ? ? ? ? ? i++; ? ? ? ? ? ?? ? ? ? ? } ? ? ? ?? ? ? ? ? fclose(fp1); ? ? ? ? ? ? ? ? ? ? ? ? ? ?//關(guān)閉文件流 ? ? ? ? printf("\n\n系統(tǒng)初始化成功,按任意鍵退出后,再重新進(jìn)入!\n"); ? ? ? ? getch(); ? ? ? ? exit(1); ? ? ? ?? ? ? }else{ ? ? ? ? i=0; ? ? ? ? while(!feof(fp)&&i<8) ? ? ? ? ? ? ? ? ? //判斷是否讀完密碼文件 ? ? ? ? ? ? pwd[i++]=(getw(fp)^strt); ? ? ? ? ? //從文件流中讀出字符賦給數(shù)組 ? ? ? ? ? ?? ? ? ? ? ? ?? ? ? ? ? pwd[i]='\0'; ? ? ? ?? ? ? ? ? if(i>=8) i--; ? ? ? ? while(pwd[i]!=-1&&i>=0) ? ? ? ? ? ? i--; ? ? ? ?? ? ? ? ? pwd[i]='\0'; ? ? ? ? ? ? ? ? ? ? ? ? ? ?//將數(shù)組最后一位設(shè)定為字符串的結(jié)束符 ? ? ? ? strcpy(password,pwd); ? ? ? ? ? ? ? ? ? //將數(shù)組pwd中的數(shù)據(jù)復(fù)制到數(shù)組password中 ? ? }? } void delemp() { ? ? int findok=0; ? ? EMP *emp1,*emp2; ? ? char name[10],choice; ? ? system("cls"); ? ? ? ? ? ? ?//對屏幕清屏 ? ? printf("\n輸入要刪除的員工姓名:"); ? ? scanf("%s",name); ? ?? ? ? emp1=emp_first; ? ? emp2=emp1; ? ? while(emp1) ? ? { ? ? ? ? if(strcmp(emp1->name,name)==0) ? ? ? ? { ? ? ? ? ? ? findok=1; ? ? ? ? ? ? system("cls"); ? ? ? ? ? ?? ? ? ? ? ? ? printf("員工:%s的信息如下:\n",emp1->name); ? ? ? ? ? ? bound('_',40); ? ? ? ? ? ? printf("工號:%d\n",emp1->num); ? ? ? ? ? ? printf("職務(wù):%s\n",emp1->duty); ? ? ? ? ? ? printf("姓名:%s\n",emp1->name); ? ? ? ? ? ? printf("性別:%s\n",emp1->sex); ? ? ? ? ? ? printf("年齡:%d\n",emp1->age); ? ? ? ? ? ? printf("文化程度:%s\n",emp1->edu); ? ? ? ? ? ? printf("工資:%d\n",emp1->salary); ? ? ? ? ? ? printf("辦公電話:%s\n",emp1->tel_office); ? ? ? ? ? ? printf("家庭電話:%s\n",emp1->tel_home); ? ? ? ? ? ? printf("移動電話:%s\n",emp1->mobile); ? ? ? ? ? ? printf("QQ號碼:%s\n",emp1->qq); ? ? ? ? ? ? printf("住址:%\n",emp1->address); ? ? ? ? ? ? bound('_',40); ? ? ? ? ? ? printf("您真的要刪除該員工嗎?(y/n)"); ? ? ? ? ? ?? ? ? ? ? ? ? fflush(stdin); ? ? ? ? ?//清除緩沖區(qū) ? ? ? ? ? ? choice=getchar(); ? ? ? ? ? ?? ? ? ? ? ? ? if(choice!='y' && choice!='Y') ? ? ? ? ? ? { ? ? ? ? ? ? ?? ?return; ?? ??? ??? ?} ? ? ? ? ? ? if(emp1==emp_first) ?? ??? ??? ?{ ?? ??? ??? ??? ?emp_first=emp1->next; ?? ??? ??? ?} ? ? ? ? ? ? else ?? ??? ??? ?{ ?? ??? ??? ??? ?emp2->next=emp1->next; ? ? ? ? ? ? } ? ? ? ? ? ? printf("員工%s已被刪除",emp1->name); ? ? ? ? ? ? getch(); ? ? ? ? ? ? free(emp1); ? ? ? ? ? ? gsave=1; ? ? ? ? ? ? savedata(); ? ? ? ? ? ? //保存數(shù)據(jù) ? ? ? ? ? ? return; ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? } ?else{ ? ? ? ? ? ? ? ? ? ? emp2=emp1; ? ? ? ? ? ? emp1=emp1->next; ? ? ? ? } ? ? } ? ? ? ? if(!findok) ? ? { ? ? ? ? bound('_',40); ? ? ? ? printf("\n沒有找到姓名是:%s的信息!\n",name); ?//沒找到信息后的提示 ? ? ? ? getch(); ? ? ? ? ?? ? ? }? ? ? return; } void displayemp(EMP *emp,char *field,char *name) { ? ? if(emp) ? ? { ? ? ? ? printf("\n%s:%s信息如下:\n",field,name); ? ? ? ? bound('_',30);? ? ? ? ? printf("工號:%d\n",emp->num); ? ? ? ? printf("職務(wù):%s\n",emp->duty); ? ? ? ? printf("姓名:%s\n",emp->name); ? ? ? ? printf("性別:%s\n",emp->sex); ? ? ? ? printf("年齡:%d\n",emp->age); ? ? ? ? printf("文化程度:%s\n",emp->edu); ? ? ? ? printf("工資:%d\n",emp->salary); ? ? ? ? printf("辦公電話:%s\n",emp->tel_office); ? ? ? ? printf("家庭電話:%s\n",emp->tel_home); ? ? ? ? printf("移動電話:%s\n",emp->mobile); ? ? ? ? printf("QQ號碼:%s\n",emp->qq); ? ? ? ? printf("住址:%s\n",emp->address); ? ? ? ? bound('_',30); ? ? ? ? ? }else { ? ? bound('_',40); ? ? printf("資料庫中沒有%s為:%s的員工!請重新確認(rèn)!",field,name); ? ? } ? ? return; } /** * 按照姓名查找員工信息 */ EMP *findname(char *name) { ? ? EMP *emp1; ? ? emp1=emp_first; ? ?? ? ? while(emp1) ? ? { ? ? ? ? if(strcmp(name,emp1->name)==0) ? ? ?//比較輸入的姓名和鏈表中的記載姓名是否相同 ? ? ? ? { ?? ??? ??? ?return emp1; ?? ??? ?} ? ? ? ? emp1=emp1->next; ? ? ? ? ? ? ? } ? ? ? ? return NULL; } /** * 按照員工號查詢 */ EMP *findnum(int num) ? ? ? ? ? ? ? ? ? //聲明一個結(jié)構(gòu)體指針 { ? ?EMP *emp1; ? ? ? ?emp1=emp_first; ? ?while(emp1) ? ?{ ? ? ? ?if(num==emp1->num) ?return emp1; ? ? ? ?emp1=emp1->next; ? ? ? ? ?? ? ?} ? ? ?return NULL; ? } /** * 按照通訊號碼查詢員工信息 */ EMP *findtelephone(char *name) { ? ? ?EMP *emp1; ? ? ? ? ? ?emp1=emp_first; ? ? ?while(emp1) ? ? ?{ ? ? ? ? ?if((strcmp(name,emp1->tel_office)==0)|| ? ? ? ? ?(strcmp(name,emp1->tel_home)==0)|| ? ? ? ? ?(strcmp(name,emp1->mobile)==0)) ? ? ? ?//使用邏輯或判斷通訊號碼 ? ? ? ? ?return emp1; ? ? ? ? ?emp1=emp1->next; ? ? ? ? ? ? ? ? ? ? ? ?} ? ? ? ? return NULL; ? ? ?? } /** * 按照員工QQ號查詢員工信息 */ EMP *findqq(char *name) { ? ? EMP *emp1; ? ?? ? ? emp1=emp_first; ? ? while(emp1) ? ? { ? ? ? ? if(strcmp(name,emp1->qq)==0) ?return emp1; ? ? ? ? emp1=emp1->next; ? ? ? ? ?? ? ? } ? ? ? return NULL; ? } /** * 查詢員工信息 */ void findemp() { ? ? ?int choice,ret=0,num; ? ? ?char str[13]; ? ? ?EMP *emp1; ? ? ? ? ? ?system("cls"); ? ? ? ? ? ?do{ ? ? ? ? ?printf("\t查詢員工信息\n"); ? ? ? ? ?bound('_',30); ? ? ? ? ?printf("\t1.按姓名查詢\n"); ? ? ? ? ?printf("\t2.按工號查詢\n"); ? ? ? ? ?printf("\t3.按電話查詢\n"); ? ? ? ? ?printf("\t4.按QQ號查詢\n"); ? ? ? ? ?printf("\t0.返回主菜單\n"); ? ? ? ? ?bound('_',30); ? ? ? ? ?printf("\n請選擇菜單:"); ? ? ? ? ? ? ? ? ? ?do{ ? ? ? ? ? ? ?fflush(stdin); ? ? ? ? ? ? ?choice=getchar(); ? ? ? ? ? ? ?system("cls"); ? ? ? ? ? ? ? ? ? ? ? ? ? ?switch(choice) ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ?case '1': ? ? ? ? ? ? ? ? ? ? ? printf("\n輸入要查詢的員工姓名:"); ? ? ? ? ? ? ? ? ? ? ? scanf("%s",str); ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? emp1=findname(str); ? ? ? ? ? ? ? ? ? ? ? displayemp(emp1,"姓名",str); ? ? ? ? ? ? ? ? ? ? ? getch(); ? ? ? ? ? ? ? ? ? ? ? break;? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ?case '2': ? ? ? ? ? ? ? ? ? ? ? printf("\n請輸入要查詢的員工的工號");? ? ? ? ? ? ? ? ? ? ? ? scanf("%d",&num);? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? emp1=findnum(num); ? ? ? ? ? ? ? ? ? ? ? itoa(num,str,10); ? ? ? ? ? ? ? ? ? ? ? displayemp(emp1,"工號",str); ? ? ? ? ? ? ? ? ? ? ? getch(); ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? case '3': ? ? ? ? ? ? ? ? ? ? ? ?printf("\n輸入要查詢員工的電話:"); ? ? ? ? ? ? ? ? ? ? ? ?scanf("%s",str); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?emp1=findtelephone(str);? ? ? ? ? ? ? ? ? ? ? ? ?displayemp(emp1,"電話",str); ? ? ? ? ? ? ? ? ? ? ? ?getch(); ? ? ? ? ? ? ? ? ? ? ? ?break; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case '4': ? ? ? ? ? ? ? ? ? ? ? ?printf("\n輸入要查詢的員工的QQ號:"); ? ? ? ? ? ? ? ? ? ? ? ?scanf("%s",str); ?? ??? ??? ??? ??? ? ? emp1=findqq(str); ? ? ? ? ? ? ? ? ? ? ? ?displayemp(emp1,"QQ號碼",str); ? ? ? ? ? ? ? ? ? ? ? ?getch(); ? ? ? ? ? ? ? ? ? ? ? ?break; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?case '0': ? ? ? ? ? ? ? ? ? ? ? ? ret=1; ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ?}while(choice<'0'||choice>'4'); ? ? ? ? ? ? ? ? ? ?system("cls"); ? ? ? ? ?if(ret) break; ? ? ?}while(1); ? ? ? ?? } void listemp() { ? ? EMP *emp1; ? ? printf("\n資料庫中的員工信息列表\n"); ? ? bound('_',40); ? ? emp1=emp_first; ? ? while(emp1)? ? ? { ? ? ? ? printf("工號:%d\n",emp1->num); ? ? ? ? printf("職務(wù):%s\n",emp1->duty); ? ? ? ? printf("姓名:%s\n",emp1->name); ? ? ? ? printf("性別:%s\n",emp1->sex); ? ? ? ? printf("年齡:%d\n",emp1->age); ? ? ? ? printf("文化程度:%s\n",emp1->edu); ? ? ? ? printf("工資:%d\n",emp1->salary); ? ? ? ? printf("辦公電話:%s\n",emp1->tel_office); ? ? ? ? printf("家庭電話:%s\n",emp1->tel_home); ? ? ? ? printf("移動電話:%s\n",emp1->mobile); ? ? ? ? printf("QQ號碼:%s\n",emp1->qq); ? ? ? ? printf("住址:%s\n",emp1->address); ? ? ? ? ? bound('_',40); ? ? ? ? emp1=emp1->next; ? ? ? ? ? } ? ? ? ? printf("\n顯示完畢,按任意鍵退出!\n"); ? ? getch(); ? ? return; } /*檢測登錄密碼*/ void login() { ? ? int i,n=3; ? ? char pwd[9]; ? ? do{ ? ? ? ? printf("請輸入密碼:"); ? ? ? ? for(i=0;i<8 && ((pwd[i]=getch())!=13);i++) ? ? ? ? ? ? putch('*'); ? ? ? ? pwd[i]='\0'; ? ? ? ?if(!strcmp(pwd,password)) ? ? ? ? { ? ? ? ? ? ? printf("\n密碼錯誤,請重新輸入!\n"); ? ? ? ? ? ? getch(); ? ? ? ? ? ? system("cls"); ? ? ? ? ? ? n--; ? ? ? ? } ?? ??? ?else ?? ??? ? break; ? ? } while(n>0); ? ? ? ? ? ? ? ? ? ? ? //密碼輸入三次的控制 ? ? if(!n) ? ? { ? ? ? ? printf("請退出,你已輸入三次錯誤密碼!"); ? ? ? ? getch(); ? ? ? ? exit(1); ? ? } } void menu() { ? ? char choice; ? ? system("cls"); ? ? do{ ? ? ?? ?printf("\n\t\t\t\t 企業(yè)員工管理系統(tǒng)\n\n"); ? ? ? ? printf("\t\t\t-------------------------------------\n"); ? ? ? ? printf("\t\t\t|\t\t\t\t ? ?|\n"); ? ? ? ? printf("\t\t\t| ?\t1、輸入員工信息\t\t ? ?|\n"); ? ? ? ? printf("\t\t\t|\t\t\t\t ? ?|\n"); ? ? ? ? printf("\t\t\t| ?\t2、查詢員工信息\t\t ? ?|\n"); ? ? ? ? printf("\t\t\t|\t\t\t\t ? ?|\n"); ? ? ? ? printf("\t\t\t| ?\t3、顯示員工信息\t\t ? ?|\n"); ? ? ? ? printf("\t\t\t|\t\t\t\t ? ?|\n"); ? ? ? ? printf("\t\t\t| ?\t4、修改員工信息\t\t ? ?|\n"); ? ? ? ? printf("\t\t\t|\t\t\t\t ? ?|\n"); ? ? ? ? printf("\t\t\t| ?\t5、刪除員工信息\t\t ? ?|\n"); ? ? ? ? printf("\t\t\t|\t\t\t\t ? ?|\n"); ? ? ? ? printf("\t\t\t| ?\t6、統(tǒng)計(jì)員工信息\t\t ? ?|\n"); ? ? ? ? printf("\t\t\t|\t\t\t\t ? ?|\n"); ? ? ? ? printf("\t\t\t| ?\t7、重置系統(tǒng)密碼\t\t ? ?|\n"); ? ? ? ? printf("\t\t\t|\t\t\t\t ? ?|\n"); ? ? ? ? printf("\t\t\t| ?\t0、退出系統(tǒng)\t\t ? ?|\n"); ? ? ? ? printf("\t\t\t|\t\t\t\t ? ?|\n"); ? ? ? ? printf("\t\t\t-------------------------------------\n"); ? ? ? ? printf("\n\t\t\t請選擇您需要的操作:"); ? ? ? ?? ? ? ? ? do{ ? ? ? ? ? ?? ?fflush(stdin); ? ? ? ? ? ? choice=getchar(); ? ? ? ? ? ? system("cls"); ? ? ? ? ? ? switch(choice) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? case '1': ? ? ? ? ? ? ? ? ? ?addemp(); ? ? ? ?//調(diào)用員工信息添加函數(shù) ? ? ? ? ? ? ? ? ? ?break; ? ? ? ? ? ? ? ? case '2': ? ? ? ? ? ? ? ? ? ?if(gfirst) ? ? ? ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ? ? ? ?printf("系統(tǒng)信息中無員工信息,請先添加員工信息!\n"); ? ? ? ? ? ? ? ? ? ? ? ?getch(); ? ? ? ? ? ? ? ? ? ? ? ?break; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ? ? ? ? ?findemp(); ? ? ? //調(diào)用員工信息查找函數(shù) ? ? ? ? ? ? ? ? ? ?break; ? ? ? ? ? ? ? ? case '3': ? ? ? ? ? ? ? ? ? ?if(gfirst) ? ? ? ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ? ? ? ?printf("系統(tǒng)信息中無員工信息,請先添加員工信息!\n"); ? ? ? ? ? ? ? ? ? ? ? ?getch(); ? ? ? ? ? ? ? ? ? ? ? ?break; ? ? ?? ? ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ? ? ? ?listemp(); ? ? ? //員工列表函數(shù) ? ? ? ? ? ? ? ? ? ?break; ? ? ? ? ? ? ? ?case '4': ? ? ? ? ? ? ? ? ? ?if(gfirst) ? ? ? ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ? ? ? ?printf("系統(tǒng)信息中無員工信息,請先添加員工信息!\n"); ? ? ? ? ? ? ? ? ? ? ? ?getch(); ? ? ? ? ? ? ? ? ? ? ? ?break; ? ? ?? ? ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ? ? ? ?modifyemp(); ? ? //員工信息修改函數(shù) ? ? ? ? ? ? ? ? ? ?break; ? ? ? ? ? ? ? ?case '5': ? ? ? ? ? ? ? ? ? ? if(gfirst) ? ? ? ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ? ? ? ?printf("系統(tǒng)信息中無員工信息,請先添加員工信息!\n"); ? ? ? ? ? ? ? ? ? ? ? ?getch(); ? ? ? ? ? ? ? ? ? ? ? ?break; ? ? ?? ? ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ? ? ? ?delemp(); ? ? ? ?//刪除員工信息的函數(shù) ? ? ? ? ? ? ? ? ? ?break; ? ? ? ? ? ? ? ?case '6': ? ? ? ? ? ? ? ? ? ? if(gfirst) ? ? ? ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ? ? ? ?printf("系統(tǒng)信息中無員工信息,請先添加員工信息!\n"); ? ? ? ? ? ? ? ? ? ? ? ?getch(); ? ? ? ? ? ? ? ? ? ? ? ?break; ? ? ?? ? ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ? ? ? ?summaryemp(); ? ? //統(tǒng)計(jì)函數(shù) ? ? ? ? ? ? ? ? ? ?break;? ? ? ? ? ? ? ? ?case '7': ? ? ? ? ? ? ? ? ? ?resetpwd(); ? ? ?//重置系統(tǒng)的函數(shù) ? ? ? ? ? ? ? ? ? ?break; ? ? ? ? ? ? ? ?case '0': ? ? ? ? ? ? ? ? ? ?savedata(); ? ? ?//保存數(shù)據(jù)的函數(shù) ? ? ? ? ? ? ? ? ? ?exit(0); ?? ??? ??? ??? ?default: ?? ??? ??? ??? ??? ?printf("請輸入0~7之間的數(shù)字"); ?? ??? ??? ??? ??? ?getch(); ?? ??? ??? ??? ??? ?menu(); ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? } while(choice<'0'||choice>'7'); ? ? ? ? ? system("cls"); ? ? }while(1); ? ? } int modi_salary(int salary) { ? ? int newsalary; ? ? printf("原來的工資數(shù)為:%d",salary); ? ? printf("新的工資數(shù):"); ? ? scanf("%d",&newsalary); ? ? ? ? return(newsalary); } int modi_age(int age) { ?? ?int newage; ? ? printf("原來的年齡為:%d",age); ? ? printf("新的年齡:"); ? ? scanf("%d",&newage); ? ? ? ? return(newage); } char *modi_field(char *field,char *content,int len) { ? ? ?char *str; ? ? ?str=malloc(sizeof(char)*len); ? ? ?if(str==NULL) ? ? ?{ ? ? ? ? ?printf("內(nèi)存分配失敗,按任意鍵退出!"); ? ? ? ? ?getch(); ? ? ? ? ?return NULL; ? ? ? ? ? ?? ? ? ?} ? ? ?printf("原來%s為:%s\n",field,content); ? ? ?printf("修改為(內(nèi)容不要超過%d個字符?。?,len); ? ? ?scanf("%s",str); ? ?? ? ? ?return str; } void modifyemp() { ? ? ?EMP *emp1; ? ? ?char name[10],*newcontent; ? ? ?int choice; ? ? ? ? ? ?printf("\n請輸入您要修改的員工的姓名:"); ? ? ?scanf("%s",&name); ? ? ? ? ? ?emp1=findname(name); ? ? ?displayemp(emp1,"姓名",name); ? ? ? ? ? ?if(emp1) ? ? ?{ ? ? ??? ? printf("\n 請輸入你要修改的內(nèi)容選項(xiàng)!\n"); ? ? ? ? ?bound('_',40); ? ? ? ? ?printf("1.修改職務(wù) ? ? ? ? ? ? ? ?2.修改年齡\n"); ? ? ? ? ?printf("3.修改文化程度 ? ? ? ? ? ?4.修改工資\n"); ? ? ? ? ?printf("5.修改辦公室電話 ? ? ? ? ?6.修改家庭電話\n"); ? ? ? ? ?printf("7.修改移動電話 ? ? ? ? ? ?8.修改QQ號碼 \n"); ? ? ? ? ?printf("9.修改住址 ? ? ? ? ? ? ? ?0.返回\n ?"); ? ? ? ? ?bound('_',40); ? ? ? ? ? ? ? ? ? ?do{ ? ? ? ? ? ? ?fflush(stdin); ? ? ? ? //清除緩沖區(qū) ? ? ? ? ? ? ?choice=getchar(); ? ? ? ? ? ? ?switch(choice) ? ? ? ? //操作選擇函數(shù) ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ?case '1': ? ? ? ? ? ? ? ? ? ? ? newcontent=modi_field("職務(wù)",emp1->duty,10); ?//調(diào)用修改函數(shù)修改基本信息 ? ? ? ? ? ? ? ? ? ? ? if(newcontent!=NULL) ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(emp1->duty,newcontent); ? ? ? ? ? ? ? ? ? ? ? ? ? free(newcontent); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ?case '2': ? ? ? ? ? ? ? ? ? ? ? emp1->age=modi_age(emp1->age); ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? case '3': ? ? ? ? ? ? ? ? ? ? ? newcontent=modi_field("文化程度",emp1->edu,10); ? ? ? ? ? ? ? ? ? ? ? if(newcontent!=NULL) ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(emp1->edu,newcontent); ? ? ? ? //獲取新信息內(nèi)容 ? ? ? ? ? ? ? ? ? ? ? ? ? free(newcontent); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? case '4': ? ? ? ? ? ? ? ? ? ? ? emp1->salary=modi_salary(emp1->salary); ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ?case '5': ? ? ? ? ? ? ? ? ? ? ? newcontent=modi_field("辦公室電話",emp1->tel_office,13); ? ? ? ? ? ? ? ? ? ? ? if(newcontent!=NULL) ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(emp1->tel_office,newcontent); ? ? ? ? ? ? ? ? ? ? ? ? ? free(newcontent); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ?case '6': ? ? ? ? ? ? ? ? ? ? ? newcontent=modi_field("家庭電話",emp1->tel_home,13); ? ? ? ? ? ? ? ? ? ? ? if(newcontent!=NULL) ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(emp1->tel_home,newcontent); ? ? ? ? ? ? ? ? ? ? ? ? ? free(newcontent); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? case '7': ? ? ? ? ? ? ? ? ? ? ? newcontent=modi_field("移動電話",emp1->mobile,12); ? ? ? ? ? ? ? ? ? ? ? if(newcontent!=NULL) ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(emp1->mobile,newcontent); ? ? ? ? ? ? ? ? ? ? ? ? ? free(newcontent); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? case '8': ? ? ? ? ? ? ? ? ? ? ? newcontent=modi_field("QQ號碼",emp1->qq,10); ? ? ? ? ? ? ? ? ? ? ? if(newcontent==NULL) ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(emp1->qq,newcontent); ? ? ? ? ? ? ? ? ? ? ? ? ? free(newcontent); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? case '9': ? ? ? ? ? ? ? ? ? ? ? newcontent=modi_field("住址",emp1->address,30); ? ? ? ? ? ? ? ? ? ? ? if(newcontent!=NULL) ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(emp1->address,newcontent); ? ? ? ? ? ? ? ? ? ? ? ? ? free(newcontent); ? ? ? ? ? ? ? ? //釋放內(nèi)存空間 ? ? ? ? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? ? ? break; ? ?? ? ? ? ? ? ? ? ? ? case '0': ? ? ? ? ? ? ? ? ? ? ? return; ? ? ? ? ? ?? ? ? ? ? ? ? ?} ? ? ? ? ? ?? ? ? ? ? ?}while(choice<'0' || choice>'9'); ? ? ? ? ? ? ? ? ? ?gsave=1; ? ? ? ? ?savedata(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//保存修改的數(shù)據(jù)信息 ? ? ? ? ?printf("\n修改完畢,按任意鍵退出!\n"); ? ? ? ? ?getch(); ? ? ?} ? ? ? ?return; ?? } /*讀取數(shù)據(jù)*/? void readdata(void) { ? ? FILE *fp; ? ? EMP *emp1; ? ?? ? ? if((fp=fopen("employee.dat","rb"))==NULL) ? ? { ? ? ? ? gfirst=1; ? ? ? ? return; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } ? ?? ? ?? ? ? while(!feof(fp)) ? ? { ? ? ? ? emp1=(EMP *)malloc(sizeof(EMP)); ? ? ? ? if(emp1==NULL) ? ? ? ? { ? ? ? ? ? ? printf("內(nèi)存分配失敗!\n"); ? ? ? ? ? ? getch(); ? ? ? ? ? ? return; ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ?? ? ? ? ? fread(emp1,sizeof(EMP),1,fp); ? ? ? ? if(feof(fp)) ?break; ? ? ? ?? ? ? ? ? if(emp_first==NULL) ? ? ? ? { ? ? ? ? ? ?emp_first=emp1; ? ? ? ? ? ?emp_end=emp1; ? ? ? ? ? ? ? ? ?? ? ? ? ? }else{ ? ? ? ? ? ? emp_end->next=emp1; ? ? ? ? ? ? emp_end=emp1; ?? ? ? ? ? } ? ? ? ? emp_end->next=NULL; ? ? } ? ? gfirst=0; ? ? fclose(fp); } void resetpwd() { ?? ?char pwd[9],pwd1[9],ch; ? ? int i; ? ? FILE *fp1; ? ?? ? ? system("cls"); ? ?? ? ? printf("\n請輸入舊密碼:\n"); ? ? ?for(i=0;i<8 && ((pwd[i]=getch())!=13);i++) ? ? ? ? ? ? putch('*'); ? ? ? ? ? ?? ? ? ? ? pwd[i]='\0'; ? ? ? ? if(strcmp(password,pwd)) ? ? ? ? { ? ? ? ? ? ? printf("\n密碼錯誤,請按任意鍵退出!\n"); ? ? ? //比較舊密碼,判斷用戶權(quán)限 ? ? ? ? ? ? getch(); ? ? ? ? ? ? return; ? ? ? ? ? ?? ? ? ? ? } ?? ? ? ?do{ ? ? ? ? ??? ?printf("\n設(shè)置新密碼,請不要超過8位:"); ? ? ? ? ? ? for(i=0;i<8&&((pwd[i]=getch())!=13);i++) ? ? ? ? ? ? ? ? putch('*'); ? ? ? ? ? ? printf("\n再確認(rèn)一次密碼:"); ? ? ? ? ? ? for(i=0;i<8&&((pwd1[i]=getch())!=13);i++)? ? ? ? ? ? ? ? ? putch('*'); ? ? ? ? ? ? ? ? ? ? ? ? ? ? //屏幕中輸出提示字符 ? ? ? ? ? ? ? ?? ? ? ? ? ? ? pwd[i]='\0'; ? ? ? ? ? ? ? pwd1[i]='\0'; ? ? ? ? ? ?? ? ? ? ? ? ? if(strcmp(pwd,pwd1)!=0) ? ? ? ? ? ? ? ? printf("\n兩次密碼輸入不一致,請重新輸入!\n\n"); ? ? ? ? ? ? else break; ? ? ? ? ? ?? ? ? }while(1); ? ? ? ?? ? ? if((fp1=fopen("config.bat","wb"))==NULL) ? ? ? ?//打開密碼文件 ? ? { ? ? ? ? printf("\n系統(tǒng)創(chuàng)建失敗,請按任意鍵退出!"); ? ? ? ? getch(); ? ? ? ? exit(1); ? ? } ? ? ? ?? ? ? i=0; ? ? while(pwd[i]) ? ? { ? ? ? ? putw(pwd[i],fp1); ? ? ? ? i++; ? ? } ? ? ? ?? ? ? fclose(fp1); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//關(guān)閉文件流 ? ? printf("\n密碼修改成功,按任意鍵退出!\n"); ? ? getch(); ? ? return; } void savedata() { ?? ?FILE *fp; ? ? EMP *emp1; ? ? ?? ? ? if(gsave==0) return; ? ? ?? ? ? if((fp=fopen("employee.dat","wb"))==NULL) ? ? { ? ? ? ? printf("打開文件employee.dat出錯!\n"); ? ? ? ? getch(); ? ? ? ? return; ? ? } ? ? ?? ? ? emp1=emp_first; ? ? while(emp1) ? ? { ? ? ? ? fwrite(emp1,sizeof(EMP),1,fp); ? ? ? ? emp1=emp1->next; ? ? } ? ? ?? ? ? gsave=0; ? ? ?fclose(fp); } void summaryemp() { ? ??? ?EMP *emp1; ? ??? ?int sum=0,num=0,man=0,woman=0; ? ? ? ??? ?emp1=emp_first; ? ??? ?while(emp1) ? ??? ?{ ? ? ? ??? ?num++; ? ? ? ??? ?sum+=emp1->salary; ? ? ? ??? ?char strw[2]; ? ? ? ??? ?strncpy(strw,emp1->sex,2); ? ? ? ??? ?if((strcmp(strw,"ma")==0)||(strcmp(emp1->sex,"男")==0)) man++; ? ? ? ??? ?else woman++; ? ? ? ??? ?emp1=emp1->next; ? ??? ?} ? ? ? ?? ?printf("\n下面是相關(guān)員工的統(tǒng)計(jì)信息!\n"); ? ??? ?bound('_',40); ? ??? ?printf("員工總數(shù)是:%d\n",num); ? ?? ?printf("員工的工資總數(shù)是:%d\n",sum); ? ?? ?printf("男員工數(shù)為:%d\n",man); ? ??? ?printf("女員工數(shù)為:%d\n",woman); ? ??? ?bound('_',40); ? ??? ?printf("按任意鍵退出!\n"); ? ??? ?getch(); ? ??? ?return; } int main(void) { ?? ?system("color f0\n");?? ??? ?//白底黑字 ? ?? ?emp_first=emp_end=NULL; ? ?? ?gsave=gfirst=0; ?? ? ?? ?checkfirst(); ? ?? ?login(); ? ?? ?readdata(); ? ?? ?menu(); ? ?? ?system("PAUSE"); ? ?? ?return 0; }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++實(shí)現(xiàn)LeetCode(84.直方圖中最大的矩形)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(84.直方圖中最大的矩形),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07淺析C++中strlen函數(shù)的使用與模擬實(shí)現(xiàn)strlen的方法
這篇文章主要介紹了strlen函數(shù)的使用與模擬實(shí)現(xiàn)strlen的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03C++簡明圖解分析靜態(tài)成員與單例設(shè)計(jì)模式
與靜態(tài)數(shù)據(jù)成員不同,靜態(tài)成員函數(shù)的作用不是為了對象之間的溝通,而是為了能處理靜態(tài)數(shù)據(jù)成員,靜態(tài)成員函數(shù)沒有this指針。既然它沒有指向某一對象,也就無法對一個對象中的非靜態(tài)成員進(jìn)行默認(rèn)訪問2022-06-06