C语言 职工信息管理系统
生活随笔
收集整理的這篇文章主要介紹了
C语言 职工信息管理系统
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C語言— —課程設計職工信息管理系統
文章目錄
- 項目要求
- 函數之間調用說明:
- 一,設定結構體
- 二,定義主函數
- 三,主菜單
- 四,錄入職工信息
- 五,文件操作
- 六,職工信息顯示
- 七,職工信息刪除
- 八,職工信息修改
- 九,職工信息查詢
- 十,職工信息排序
- 完整代碼
- 代碼運行檢測及結果:
項目要求
以菜單方式工作管理每個職工的個人信息。
(1)總共有職工10名,每個職工是一個記錄,包括的信息有: 職工號、姓名、性別、出生年月、學歷、職務、部門、工資、住址、電話并且可以對職工信息進行錄入、刪除、修改、瀏覽等操作。
(2)可以按姓名進行查詢。
(3)可以按工資排序并瀏覽。
函數之間調用說明:
一,設定結構體
代碼如下:
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代表職工學歷,字符型post代表職工職位,字符型department代表職工部門,字符型address代表職工住址,整型number代表職工編號,整型birth代表職工年齡,整型salary代表職工工資,結構體worker存儲了不同職工信息。
二,定義主函數
代碼如下:
int main() {char c;do{printf("\n\n\n");printf(" §§職工信息管理系統§§ \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.退出管理系統 *\n");printf("*****************************************************************\n");printf("\n 請輸入:");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編寫而成,版權所有侵權必究,感謝支持,再見。 ");exit(0);}default:{printf("\n請輸入有效數字:");c = getchar();}}} while (1);return 0; }三,主菜單
代碼如下:
int main() {char c;do{printf("\n\n\n");printf(" §§職工信息管理系統§§ \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.退出管理系統 *\n");printf("*****************************************************************\n");printf("\n 請輸入:");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編寫而成,版權所有侵權必究,感謝支持,再見。 ");exit(0);}default:{printf("\n請輸入有效數字:");c = getchar();}}} while (1);return 0; }四,錄入職工信息
代碼如下:
void input() {int i;for (i = 0; i < M; i++){printf("\n輸入第%d個職工信息", i + 1);printf("\n輸入職工號:");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輸入職工學歷:");scanf_s("%s", &worker[i].edu);printf("\n輸入職工職務:");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(); }五,文件操作
文件操作包括寫文件和讀文件:
//將職工數據寫到文件中 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); } //從文件中讀取職工數據并存入數組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職工號\t姓名\t性別\t年齡\t學歷\t職務\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("請輸入要刪除的職工的職工號:");scanf_s("%d", &Num);for (f = 1, i = 0; f && i < m; i++){if (worker[i].number == Num){printf("\n已找到此人,原始記錄為:\n");printf("\n職工號\t姓名\t性別\t年齡\t學歷\t職務\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確認刪除請按 1,取消刪除請按 0: ");scanf_s("%d", &n);if (n == 1) /*如果刪除,則其他的信息都向前移一行*/{for (j = i; j < m - 1; j++)worker[j] = worker[j + 1]; /*當找到第j個職工時,for語句后j自加了1,所以下面的應該把改后的 信息賦值給第j-1個人*/f = 0;}else f = 2;}}system("cls");switch (f) {case 0: m = m - 1;printf("\n刪除成功!\n");writeToFile(); /*調用保存函數*/display(); /*調用瀏覽函數*/break;case 1: printf("\n沒有該員工!\n");display(); /*調用瀏覽函數*/break;case 2: printf("\n取消刪除!\n");break;}//display(); /*調用瀏覽函數*/printf("\n繼續刪除請按1,返回主菜單請按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; /*導入文件內的信息*/printf("\n");printf("請輸入要修改的職工的職工號: ");scanf_s("%d", &number);system("cls");for (i = 0; i < m; i++){if (worker[i].number == number){k = 1;printf("\n已找到該職工號員工,其記錄為:\n");printf("\n職工號\t姓名\t性別\t年齡\t學歷\t職務\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確認修改請按1,取消修改請按0:");scanf_s("%d", &n);if (n == 1){printf("\n需要進行修改的選項\n 1.職工號 2.姓名 3.性別 4.年齡 5.學歷 6.職務 7.部門 8.工資 9.住址\n");printf("請輸入你想修改的那一項序號: ");scanf_s("%d", &c);do {switch (c){case 1: printf("職工號改為:");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("學歷改為:");scanf_s("%s", edu);strcpy_s(worker[i].edu, edu);break;case 6: printf("職務改為:");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確認修改 請按1,重新輸入 請按2: ");scanf_s("%d", &b);if (b == 1){system("cls");writeToFile();//儲存修改后的數據printf("\n");display();//瀏覽修改后的數據}} while (b == 2);}}else if (i == (m - 1)) i++;}if (k == 0) {printf("\n輸入有誤!\n");getchar();getchar();}else {printf("\n繼續修改請按 1,退出修改請按 0: ");scanf_s("%d", &t);}system("cls");switch (t){case 1: display();modify();//返回修改函數break;case 0: break;default:break;}system("cls"); }九,職工信息查詢
//信息查詢 void query() {char name1[15];int i, t, n = 0;int m = readFromFile();printf("\n請輸入要查找的姓名: ");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職工號\t姓名\t電話號\t性別\t年齡\t學歷\t職務\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 個員工符合要求。\n", n);printf("\n");printf("繼續查詢請按 1,,返回主菜單請按 0 :");scanf_s("%d", &t);switch (t){case 0: system("cls");break;case 1: break;default:break;}} }十,職工信息排序
這里的排序按照工資由高到低的排序
//信息排序 void order()//按工資排序函數// //瀏覽信息時按工資由大到小排序 {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職工號\t姓名\t性別\t年齡\t學歷\t職務\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];//引入一個中間變量方便后續排序 void input(); void input(); void display(); void dele(); void modify(); void query(); void order(); int readFromFile(); void writeToFile(); //職工數據錄入,將錄入的數據存到數組中 void input() {int i;for (i = 0; i < M; i++){printf("\n輸入第%d個職工信息", i + 1);printf("\n輸入職工號:");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輸入職工學歷:");scanf_s("%s", &worker[i].edu);printf("\n輸入職工職務:");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(); } //將職工數據寫到文件中 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); } //從文件中讀取職工數據并存入數組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職工號\t姓名\t性別\t年齡\t學歷\t職務\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("請輸入要刪除的職工的職工號:");scanf_s("%d", &Num);for (f = 1, i = 0; f && i < m; i++){if (worker[i].number == Num){printf("\n已找到此人,原始記錄為:\n");printf("\n職工號\t姓名\t性別\t年齡\t學歷\t職務\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確認刪除請按 1,取消刪除請按 0: ");scanf_s("%d", &n);if (n == 1) /*如果刪除,則其他的信息都向前移一行*/{for (j = i; j < m - 1; j++)worker[j] = worker[j + 1]; /*當找到第j個職工時,for語句后j自加了1,所以下面的應該把改后的 信息賦值給第j-1個人*/f = 0;}else f = 2;}}system("cls");switch (f) {case 0: m = m - 1;printf("\n刪除成功!\n");writeToFile(); /*調用保存函數*/display(); /*調用瀏覽函數*/break;case 1: printf("\n沒有該員工!\n");display(); /*調用瀏覽函數*/break;case 2: printf("\n取消刪除!\n");break;}//display(); /*調用瀏覽函數*/printf("\n繼續刪除請按1,返回主菜單請按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; /*導入文件內的信息*/printf("\n");printf("請輸入要修改的職工的職工號: ");scanf_s("%d", &number);system("cls");for (i = 0; i < m; i++){if (worker[i].number == number){k = 1;printf("\n已找到該職工號員工,其記錄為:\n");printf("\n職工號\t姓名\t性別\t年齡\t學歷\t職務\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確認修改請按1,取消修改請按0:");scanf_s("%d", &n);if (n == 1){printf("\n需要進行修改的選項\n 1.職工號 2.姓名 3.性別 4.年齡 5.學歷 6.職務 7.部門 8.工資 9.住址\n");printf("請輸入你想修改的那一項序號: ");scanf_s("%d", &c);do {switch (c){case 1: printf("職工號改為:");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("學歷改為:");scanf_s("%s", edu);strcpy_s(worker[i].edu, edu);break;case 6: printf("職務改為:");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確認修改 請按1,重新輸入 請按2: ");scanf_s("%d", &b);if (b == 1){system("cls");writeToFile();//儲存修改后的數據printf("\n");display();//瀏覽修改后的數據}} while (b == 2);}}else if (i == (m - 1)) i++;}if (k == 0) {printf("\n輸入有誤!\n");getchar();getchar();}else {printf("\n繼續修改請按 1,退出修改請按 0: ");scanf_s("%d", &t);}system("cls");switch (t){case 1: display();modify();//返回修改函數break;case 0: break;default:break;}system("cls"); } //信息查詢 void query() {char name1[15];int i, t, n = 0;int m = readFromFile();printf("\n請輸入要查找的姓名: ");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職工號\t姓名\t電話號\t性別\t年齡\t學歷\t職務\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 個員工符合要求。\n", n);printf("\n");printf("繼續查詢請按 1,,返回主菜單請按 0 :");scanf_s("%d", &t);switch (t){case 0: system("cls");break;case 1: break;default:break;}} } //信息排序 void order()//按工資排序函數// //瀏覽信息時按工資由大到小排序 {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職工號\t姓名\t性別\t年齡\t學歷\t職務\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(" §§職工信息管理系統§§ \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.退出管理系統 *\n");printf("*****************************************************************\n");printf("\n 請輸入:");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編寫而成,版權所有侵權必究,感謝支持,再見。 ");exit(0);}default:{printf("\n請輸入有效數字:");c = getchar();}}} while (1);return 0; }代碼運行檢測及結果:
1.信息錄入:
2.信息修改:
3.信息刪除:
4.信息查詢:
5.信息排序:
總結
以上是生活随笔為你收集整理的C语言 职工信息管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javascript 获取上一页的url
- 下一篇: 【ASP】简单Url编码和Url解码实例