#include<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>/*員工人數*/#define N 200/*一個員工變數所占位元組數*/#define LEN sizeof(struct employee)#define FILE_BUFFER_LENGTH 30000/*資料輸出格式*/#define FORMAT "%-10d%-10s%-10s%-10s%-10d%-14s%-10d%-10s\n"/*設定顯示內容*/#define DATA em[i].num,em[i].name,em[i].position,em[i].sex,em[i].age,em[i].cult,em[i].salary,em[i].statevoid input();/*輸入員工資訊函式*///王雷void display();/*顯示員工資訊函式*///王雷void change();/*修改員工資訊函式*///李乾void add();/*追加員工資訊函式*///李乾void del();/*洗掉員工資訊函式*///牛千龍void count();/*統計員工資訊函式*///牛千龍void searchnum();/*按員工號進行查詢員工資訊函式*///張志遠void searchname();/*按照工號進行查詢員工資訊函式*///張志遠void menu1();/*查詢主選單函式*/void menu2();/*第二程度函式*/char mima1[9] = "00000000";char mima2[9] = "12345678";/*定義資訊變數*/struct employee{ int num; char position[20]; char name[20]; char sex[2]; int age; char cult[10]; int salary; char state[8];}em[N];void input(){ FILE* fp; int i = 0; char choiceinput = 'y'; if ((fp = fopen("employee.txt", "a+")) == NULL) return; while (choiceinput == 'y' || choiceinput == 'Y') { i++; printf("第%d個職工\n", i); printf("\n"); printf("請你輸入五位工號:\n"); for (; (em[i].num) < 10000 || (em[i].num) > 99999;) { scanf("%d", &em[i].num); if ((em[i].num) < 10000 || (em[i].num) > 99999) { printf("工號格式錯誤,請重新輸入\n"); } } printf("\n"); printf("請你輸入職位(董事長/總經理/副總經理/經理/副經理/秘書/技術員/領班/員工):\n"); scanf("%s", em[i].position); printf("\n"); printf("請你輸入姓名:\n"); scanf("%s", em[i].name); printf("\n"); printf("請你輸入性別(男/女):\n"); scanf("%s", em[i].sex); printf("\n"); printf("請你輸入年齡:\n"); scanf("%d", &em[i].age); printf("\n"); printf("請你輸入文化程度(專家/博士/碩士/學士/其他):\n"); scanf("%s", em[i].cult); printf("\n"); printf("請你輸入工資:\n"); scanf("%d", &em[i].salary); printf("\n"); printf("請你輸入身體狀況(健康/良好/一般/差):\n"); scanf("%s", em[i].state); printf("\n"); printf("是否繼續輸入?(y/n)\n"); scanf("%s", &choiceinput); fwrite(&em[i], LEN, 1, fp); } if (toupper(choiceinput) == 'N') { fclose(fp); printf("輸入完畢,任意鍵回傳\n"); getch(); return; } return;}void display(){ FILE* fp; int i; if ((fp = fopen("employee.txt", "r")) == NULL) return; printf("輸出結果:\n"); printf("工號 姓名 職位 性別 年齡 文化程度 工資 身體狀況\t\n"); for (i = 0; fread(&em[i], LEN, 1, fp) != 0; i++) { printf(FORMAT, DATA); } printf("完畢按任意鍵回傳\n"); getch(); fclose(fp); return;}void change(){ FILE* fp; int i, j, m = 0, snum; if ((fp = fopen("employee.txt", "a+")) == NULL) { printf("系統出錯,請與開發人員聯系!\n"); return; } while (!feof(fp)) if (fread(&em[m], LEN, 1, fp) == 1) m++; if (m == 0) { printf("無記錄\n"); fclose(fp); return; } printf("請輸入你要修改的員工工號:\n"); scanf("%d", &snum); for (i = 0; i < m; i++) if (snum == em[i].num) break; if (i < m) { printf("請輸入你的姓名:\n"); scanf("%s", em[i].name); printf("請輸入職位(董事長/總經理/副總經理/經理/副經理/秘書/技術員/領班/員工):\n"); scanf("%s", em[i].position); printf("請輸入你的性別(男或女):\n"); scanf("%s", em[i].sex); printf("請輸入你的文化程度(專家/博士/碩士/學士/其他):\n"); scanf("%s", em[i].cult); printf("請輸入你的工資:\n"); scanf("%s", em[i].salary); printf("請輸入你的身體情況(健康/良好/一般/差):\n"); scanf("%s", em[i].state); } else { printf("沒有你要修改的員工資訊!"); return; } if ((fp = fopen("employee.txt", "w")) == NULL) { printf("系統出錯,請與開發人員聯系!\n"); return; } for (j = 0; j < m; j++) if (fwrite(&em[j], LEN, 1, fp) != 1) printf("更新失敗,請與開發人員聯系!\n"); fclose(fp); return;}void add(){ FILE* fp; int i, j, m = 0; if ((fp = fopen("employee.txt", "a+")) == NULL) { printf("系統出錯,請與開發人員聯系!\n"); return; } while (!feof(fp)) if (fread(&em[m], LEN, 1, fp) == 1) m++; if (m == 0) { printf("無記錄\n"); fclose(fp); return; } printf("請輸入你要增加的員工工號:\n"); scanf("%d", &em[m].num); for (i = 0; i < m; i++) if (em[m].num == em[i].num) { printf("你輸入的員工工號已存在!"); break; } if (i >= m) { printf("請你輸入職位(董事長/總經理/副總經理/經理/副經理/秘書/技術員/領班/員工):\n"); scanf("%s", em[m].position); printf("請輸入你的姓名:\n"); scanf("%s", em[m].name); printf("請輸入你的性別(男或女):\n"); scanf("%s", em[m].sex); printf("請輸入你的文化程度(專家/博士/碩士/學士/其他):\n"); scanf("%s", em[m].cult); printf("請輸入你的工資:\n"); scanf("%s", em[m].salary); printf("請輸入你的身體情況(健康/良好/一般/差):\n"); scanf("%s", em[m].state); } if ((fp = fopen("employee.txt", "w")) == NULL) { printf("系統出錯,請與開發人員聯系!\n"); return; } for (j = 0; j <= m; j++) if (fwrite(&em[j], LEN, 1, fp) != 1) printf("更新失敗,請與開發人員聯系!"); fclose(fp); return;}void del(){ FILE* fp; int snum, i, j, m = 0; char ch[2]; if ((fp = fopen("employee.txt", "a+")) == NULL) { printf("系統出錯,請與開發人員聯系!\n"); return; } while (!feof(fp)) if (fread(&em[m], LEN, 1, fp) == 1) m++; fclose(fp); if (m == 0) { printf("無記錄!\n"); return; } printf("請輸入您要洗掉的工號:"); scanf("%d", &snum); for (i = 0; i < m; i++) if (snum == em[i].num) break; if (i == m) { printf("對不起,沒有您要洗掉的員工資訊!"); getch(); return; } printf("確認洗掉?(y/n)"); scanf("%s", ch); if (strcmp(ch, "Y") == 0 || strcmp(ch, "y") == 0)/*判斷是否要進行洗掉*/ { for (j = i; j < m; j++) em[j] = em[j + 1];/*將后一個記錄移到前一個記錄的位置*/ m--;/*記錄的總數個數減一*/ printf("洗掉成功!\n"); getch(); } if ((fp = fopen("employee.txt", "w")) == NULL) { printf("系統出錯,請與開發人員聯系!\n"); return; } for (j = 0; j < m; j++)/*將更改后的記錄重新寫入指定的磁盤檔案中*/ if (fwrite(&em[j], LEN, 1, fp) != 1) { printf("更新失敗,請與開發人員聯系!\n"); } fclose(fp); return;}void count(){ { FILE* fp; int m = 0; if ((fp = fopen("employee.txt", "r")) == NULL) { printf("系統出錯,請與開發人員聯系!\n"); return; } while (!feof(fp)) if (fread(&em[m], LEN, 1, fp) == 1) m++;/*統計記錄個數及員工個數*/ if (m == 0) { printf("無記錄\n"); fclose(fp); return; } printf("本系統有%d條記錄!\n", m); getch(); fclose(fp); } return;}void searchnum()/*自定義函式實作員工資訊查詢*/{ FILE* fp; int snum, i, m = 0; char ch[2]; if ((fp = fopen("employee.txt", "r")) == NULL) { printf("系統出錯,請與開發人員聯系"); return; } while (!feof(fp)) if (fread(&em[m], LEN, 1, fp) == 1) m++; fclose(fp); if (m == 0) { printf("無記錄"); getch(); return; } printf("請輸入您要查詢的工號"); scanf("%d", &snum); for (i = 0; i < m; i++) if (snum == em[i].num)/*查找輸入的學號是否在記錄中*/ { printf("查詢成功,是否顯示?(y/n)"); scanf("%s", ch); if (strcmp(ch, "Y") == 0 || strcmp(ch, "y") == 0) { printf("工號 姓名 職位 性別 年齡 文化程度 工資 身體狀況\t\n"); printf(FORMAT, DATA);/*將查找出的結果按指定格式輸出*/ break; } else return; } if (i == m) printf("未能找到您要查詢的員工資訊"); getch();}void searchname()/*自定義函式實作按姓名查詢員工資訊*/{ int i, m = 0; char sname[20], ch[2]; FILE* fp; if ((fp = fopen("employee.txt", "a+")) == NULL) { printf("系統出錯,請與開發人員聯系!\n"); return; } while (!feof(fp)) if (fread(&em[m], LEN, 1, fp) == 1) m++; fclose(fp); if (m == 0) { printf("無記錄!"); getch(); return; } printf("請輸入您要查詢的姓名:"); scanf("%s", sname); for (i = 0; i < m; i++) if (strcmp(sname, em[i].name) == 0)/*查找輸入的工號是否在記錄中*/ { printf("查詢成功,是否顯示?(y/n)"); scanf("%s", ch); if (strcmp(ch, "Y") == 0 || strcmp(ch, "y") == 0) { printf("工號 姓名 職位 性別 年齡 文化程度 工資 身體狀況\t\n"); printf(FORMAT, DATA);/*將查出的結果按指定格式輸出*/ break; } else return; } if (i == m) printf("未找到該員工的資訊!\n");/*未找到要查找的資訊*/ getch();}void menu1(){ int m; char c = 'y'; while (c == 'y' || c == "Y") { system("cls");//清屏函式 printf("\n\n\n\n\n"); printf("\t\t|--------------企業員工管理系統----------------|\n"); printf("\t\t|\t 1.輸入員工資訊 |\n"); printf("\t\t|\t 2.員工資訊顯示 |\n"); printf("\t\t|\t 3.修改員工資訊 |\n"); printf("\t\t|\t 4.增加員工資訊 |\n"); printf("\t\t|\t 5.洗掉員工資訊 |\n"); printf("\t\t|\t 6.統計員工資訊 |\n"); printf("\t\t|\t 0.退出系統 |\n"); printf("\t\t|----------------------------------------------|\n\n"); printf("\t\t\t請選擇0-6\n"); scanf("%d", &m); switch (m) { case 1:input(); break; case 2:display(); break; case 3:change(); break; case 4:add(); break; case 5:del(); break; case 6:count(); break; case 0:printf("謝謝您的使用,再見!\n"); return; default:printf("你的輸入有誤,請重新輸入\n"); }printf("是否繼續管理?(y/n)"); scanf("%s", &c); } if (c == 'n' || c == 'N') { printf("輸出完畢,任意鍵回傳\n"); getch(); return; }}void menu2(){ int m; char c = 'y'; while (c == 'y' || c == "Y") { system("cls");//清屏函式 printf("\n\n\n\n\n"); printf("\t\t|-------------------企業員工資訊查詢---------------------|\n"); printf("\t\t|\t 1.按員工號進行查詢員工資訊函式 |\n"); printf("\t\t|\t 2.按照姓名進行查詢員工資訊函式 |\n"); printf("\t\t|\t 0.退出系統 |\n"); printf("\t\t|--------------------------------------------------------|\n\n"); scanf("%d", &m); switch (m) { case 1:searchnum(); break; case 2:searchname(); break; case 0:printf("謝謝您的使用,再見!\n"); default:printf("你的輸入有誤,請重新輸入\n"); }printf("是否繼續查詢?(y/n)"); scanf("%s", &c); } if (c == 'n' || c == 'N') { printf("輸出完畢,任意鍵回傳\n"); getch(); return; }}void main(){ int m = 2; char mima[10]; printf("請輸入賬號,以證明您的身份。\n"); for (m = 3; m; ) { gets(mima); if ((strcmp(mima, mima2) == 0) || (strcmp(mima, mima1) == 0))//若密碼正確 { if (strcmp(mima, mima2) == 0) { menu1(); break; } else { menu2(); break; } } else { printf("賬號不存在,你還有%d次機會\n", --m); } } printf("謝謝使用!"); return;}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/82337.html
標籤:疑難問題
上一篇:tmocat
下一篇:救救孩子,哪里錯了怎么改
