C語言職工信息管理系統(tǒng)源碼
本文實(shí)例為大家分享了C語言職工信息管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> struct worker { char ID[20];//工號(hào) char name[20];//姓名 char sex[5];//性別 char born[20];//生日 char edu[20];//學(xué)歷 char position[20];//職務(wù) char wage[10];//工資 char address[100];//住址 char tel[15];//電話 }work[1000]; int n ; //文件讀寫模塊 void read()//讀入數(shù)據(jù) { FILE *fp; int i = 0; if( (fp = fopen("d:\\date.txt","r")) == NULL ) { printf("請?jiān)贒盤根目錄下新建一個(gè)文本文件,文件名為date\n\n\n"); system("pause"); system("cls"); return ; } fscanf(fp,"%d\n",&n); while(i < n) { fscanf(fp,"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",work[i].ID,work[i].name,work[i].sex,work[i].born,work[i].edu,work[i].position,work[i].wage,work[i].address,work[i].tel); i ++; } fclose(fp); } void write()//寫入數(shù)據(jù) { FILE *fp; int i = 0; if( (fp = fopen("d:\\date.txt","w")) == NULL ) { printf("無法打開文件!\n"); return ; } fprintf(fp,"%d\n",n); while(i < n) { fprintf(fp,"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",work[i].ID,work[i].name,work[i].sex,work[i].born,work[i].edu,work[i].position,work[i].wage,work[i].address,work[i].tel); i ++; } fclose(fp); } //輸入模塊 void input()// 從鍵盤輸入 { int i; int flag;//標(biāo)記工號(hào)是否已存在 char c;//指令Y?N read();//輸入數(shù)據(jù)前先將文件中原有的數(shù)據(jù)讀入 do { flag = 0; printf("\t\t請輸入職工的工號(hào): \n\t\t"); scanf("%s",work[n].ID); for(i = 0 ; i < n ; i ++) { if(strcmp(work[i].ID,work[n].ID) == 0) { flag = 1; break; } } if(flag) { printf("該工號(hào)已存在!\n\n"); printf("\t\t是否繼續(xù)輸入?(Y/N): "); scanf("%*c%c",&c); if(c == 'N' || c == 'n') break; continue; } printf("\t\t請輸入職工的姓名: \n\t\t"); scanf("%s",work[n].name); printf("\t\t請輸入職工的性別: \n\t\t"); scanf("%s",work[n].sex); printf("\t\t請輸入職工的出生年月: \n\t\t"); scanf("%s",work[n].born); printf("\t\t請輸入職工的學(xué)歷: \n\t\t"); scanf("%s",work[n].edu); printf("\t\t請輸入職工的職務(wù): \n\t\t"); scanf("%s",work[n].position); printf("\t\t請輸入職工的工資: \n\t\t"); scanf("%s",work[n].wage); printf("\t\t請輸入職工的住址: \n\t\t"); scanf("%s",work[n].address); printf("\t\t請輸入職工的電話: \n\t\t"); scanf("%s",work[n].tel); printf("\t\t是否繼續(xù)輸入?(Y/N): "); scanf("%*c%c",&c); n ++; }while( c != 'N' && c != 'n'); write(); printf("\n\n數(shù)據(jù)已保存!\n\n"); } //顯示模塊 void output_inf(int id) { printf("\t\t 工號(hào): %s\n",work[id].ID); printf("\t\t 姓名: %s\n",work[id].name); printf("\t\t 性別: %s\n",work[id].sex); printf("\t\t出生年月: %s\n",work[id].born); printf("\t\t 學(xué)歷: %s\n",work[id].edu); printf("\t\t 職務(wù): %s\n",work[id].position); printf("\t\t 工資: %s\n",work[id].wage); printf("\t\t 住址: %s\n",work[id].address); printf("\t\t 電話: %s\n",work[id].tel); printf("\n\n\n"); } void show()//顯示所有職工信息 { int i; read(); if(n == 0) printf("無記錄!\n\n"); else for(i = 0 ; i < n ; i ++) { output_inf(i); } } //查詢模塊 void que()//查詢信息 { char num; int flag,i; char q_id[20] ;//查詢工號(hào) char q_name[20] ;//查詢姓名 char q_edu[20] ; //查詢學(xué)歷 char q_position[20] ;//查詢職位 char c;//指令Y?N read();//打開程序后,要查詢以前的數(shù)據(jù),要先讀入 while(1) { system("cls"); printf("\t\t******************查詢********************\n"); printf("\t\t* *\n"); printf("\t\t* 1.按工號(hào)查詢 *\n"); printf("\t\t* *\n"); printf("\t\t* 2.按姓名查詢 *\n"); printf("\t\t* *\n"); printf("\t\t* 3.按學(xué)歷查詢 *\n"); printf("\t\t* *\n"); printf("\t\t* 4.按職務(wù)查詢 *\n"); printf("\t\t* *\n"); printf("\t\t* 輸入其他任意鍵退出本模塊 *\n"); printf("\t\t******************************************\n"); printf("\t\t請輸入指令(1-4):"); scanf("%*c%c",&num); if(num < '1' || num > '4') { printf("錯(cuò)誤指令!\n\n"); system("pause"); continue; } system("cls"); flag = 0;//用來標(biāo)記職工信息是否存在 if(num == '1')//按工號(hào)查詢 { printf("\t\t請輸入您要查詢職工的工號(hào):"); scanf("%s",q_id); for(i = 0 ; i < n ;i ++) { if( strcmp(work[i].ID,q_id) == 0) { output_inf(i); flag = 1;//標(biāo)記 break; } } } else if(num == '2')//按姓名查詢 { printf("\t\t請輸入您要查詢職工的姓名:"); scanf("%s",q_name); for(i = 0 ; i < n ;i ++) { if( strcmp(work[i].name,q_name) == 0) { output_inf(i); flag = 1;//標(biāo)記 } } } else if(num == '3')//按學(xué)歷查詢 { printf("\t\t請輸入您要查詢職工的學(xué)歷:"); scanf("%s",q_edu); for(i = 0 ; i < n ;i ++) { if( strcmp(work[i].edu,q_edu) == 0) { output_inf(i); flag = 1;//標(biāo)記 } } } else if(num == '4')//按職務(wù)查詢 { printf("\t\t請輸入您要查詢職工的職務(wù):"); scanf("%s",q_position); for(i = 0 ; i < n ;i ++) { if( strcmp(work[i].position,q_position) == 0) { output_inf(i); flag = 1;//標(biāo)記 } } } if(!flag)//判斷是否有該職工信息 { printf("\n\n無該職工信息!\n\n"); } printf("\n\n是否繼續(xù)查詢(Y/N):"); scanf("%*c%c",&c); if(c == 'N' || c == 'n') break; } } //修改信息模塊 void mod()//修改職工信息 { char change_ID[20];//需修改的職工的工號(hào) int number;//職工信息在數(shù)據(jù)中的位置 char num;//指令 char message[100];//修改的信息 char c;//指令Y?N int flag; int i; read(); while(1) { flag = 0; system("cls"); printf("請輸入需修改的職工的工號(hào):"); scanf("%s",change_ID); for(i = 0 ; i < n ; i ++) { if( strcmp(work[i].ID,change_ID) == 0 ) { number = i; flag = 1; break; } } if(!flag) { printf("\n\n無此員工信息!!\n\n"); printf("\n\n是否繼續(xù)修改(Y/N):"); scanf("%*c%c",&c); if(c == 'N' || c == 'n') break; continue; } printf("\n\n\t\t******************修改********************\n"); printf("\t\t* *\n"); printf("\t\t* 1.修改姓名 *\n"); printf("\t\t* *\n"); printf("\t\t* 2.修改學(xué)歷 *\n"); printf("\t\t* *\n"); printf("\t\t* 3.修改職務(wù) *\n"); printf("\t\t* *\n"); printf("\t\t* 4.修改工資 *\n"); printf("\t\t* *\n"); printf("\t\t* 5.修改住址 *\n"); printf("\t\t* *\n"); printf("\t\t* 6.修改電話 *\n"); printf("\t\t* *\n"); printf("\t\t* 輸入其他任意鍵退出本模塊 *\n"); printf("\t\t******************************************\n"); printf("\t\t請輸入指令(1-6):"); scanf("%*c%c",&num); if(num < '1' || num > '6') { printf("錯(cuò)誤指令!\n\n"); system("pause"); continue; } system("cls"); printf("請輸入修改后的信息:"); scanf("%s",message); switch(num) { case '1' : strcpy(work[number].name,message); break; case '2' : strcpy(work[number].edu,message); break; case '3' : strcpy(work[number].position,message); break; case '4' : strcpy(work[number].wage,message); break; case '5' : strcpy(work[number].address,message); break; case '6' : strcpy(work[number].tel,message); break; } system("cls"); printf("\n\n是否繼續(xù)修改(Y/N):"); scanf("%*c%c",&c); if(c == 'N' || c == 'n') break; } write(); } //刪除信息模塊 void del()//刪除職工信息 { char delete_ID[20];//刪除職工工號(hào) int i,j; int flag;//標(biāo)記是否有該職工信息 char c; read(); while(1) { system("cls"); flag = 0; printf("請輸入需刪除職工信息的工號(hào):"); scanf("%s",delete_ID); for(i = 0 ; i < n ; i ++) { if( strcmp(work[i].ID,delete_ID) == 0) { n --; flag = 1; for(j = i ; j < n ; j ++) { work[j] =work[j + 1]; } break; } } if(!flag) printf("\n\n無此員工信息!\n\n"); else printf("\n\n刪除成功!\n"); printf("\n\n是否繼續(xù)刪除(Y/N):"); scanf("%*c%c",&c); if(c == 'N' || c == 'n') break; } write(); } //菜單模塊 void menu()//菜單 { printf("\t\t************職工信息管理系統(tǒng)菜單**********\n"); printf("\t\t* *\n"); printf("\t\t* 1.錄入職工信息 *\n"); printf("\t\t* *\n"); printf("\t\t* 2.顯示職工信息 *\n"); printf("\t\t* *\n"); printf("\t\t* 3.查詢職工信息 *\n"); printf("\t\t* *\n"); printf("\t\t* 4.修改職工信息 *\n"); printf("\t\t* *\n"); printf("\t\t* 5.刪除職工信息 *\n"); printf("\t\t* *\n"); printf("\t\t* 0.退出 *\n"); printf("\t\t* *\n"); printf("\t\t******************************************\n"); printf("\t\t請輸入指令(0-5): "); } int main() { int num; n = 0; system("color 0B"); while(1) { menu(); scanf("%d",&num); system("cls"); switch(num) { case 1: input(); break; case 2: show(); break; case 3: que(); break; case 4: mod(); break; case 5: del(); break; case 0: printf("謝謝使用!\n\n"); return 0; default :printf("\n--->無效的指令!\n\n\n"); } system("pause"); system("cls"); } }
更多學(xué)習(xí)資料請關(guān)注專題《管理系統(tǒng)開發(fā)》。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 學(xué)生信息管理系統(tǒng)C語言版
- C語言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(單鏈表)
- C語言數(shù)據(jù)結(jié)構(gòu)之學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)
- C語言實(shí)現(xiàn)歌曲信息管理系統(tǒng)
- C語言單鏈表版學(xué)生信息管理系統(tǒng)
- C語言學(xué)生信息管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- c語言實(shí)現(xiàn)的貨物管理系統(tǒng)實(shí)例代碼(增加刪除 查找貨物信息等功能)
- C語言版學(xué)生信息管理系統(tǒng)
- C語言學(xué)生信息管理系統(tǒng)小項(xiàng)目
- C語言鏈表實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)程序設(shè)計(jì)
相關(guān)文章
C語言實(shí)現(xiàn)簡單的控制臺(tái)三子棋游戲
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡單的控制臺(tái)三子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11淺析C++中strlen函數(shù)的使用與模擬實(shí)現(xiàn)strlen的方法
這篇文章主要介紹了strlen函數(shù)的使用與模擬實(shí)現(xiàn)strlen的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03C++ push方法與push_back方法的使用與區(qū)別
這篇文章主要介紹了C++ push方法與push_back方法的使用與區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12OpenCV實(shí)現(xiàn)鼠標(biāo)框選并顯示框選區(qū)域
這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)鼠標(biāo)框選并顯示框選區(qū)域,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08C語言深入分析數(shù)組指針和指針數(shù)組的應(yīng)用
在C語言和C++等語言中,數(shù)組元素全為指針變量的數(shù)組稱為指針數(shù)組,指針數(shù)組中的元素都必須具有相同的存儲(chǔ)類型、指向相同數(shù)據(jù)類型的指針變量。指針數(shù)組比較適合用來指向若干個(gè)字符串,使字符串處理更加方便、靈活2022-04-04Qt圖形圖像開發(fā)之QT滾動(dòng)區(qū)控件(滾動(dòng)條)QScrollArea的詳細(xì)方法用法圖解與實(shí)例
這篇文章主要介紹了Qt圖形圖像開發(fā),QT滾動(dòng)區(qū)控件(滾動(dòng)條)QScrollArea的詳細(xì)方法用法圖解與實(shí)例,需要的朋友可以參考下2020-03-03