改編 的 C版 職工管理系統

/*八、簡單的職工治理系統

1.問題描述

對單位的職工進行治理,包括插入、刪除、查找、排序等功能。

2.要求

職工對象包括姓名、性別、出生年月、工作年月、學曆、職務、住址、電話等信息。

(1)新增一名職工:將新增職工對象按姓名以字典方式職工治理文件中。

(2)刪除一名職工:從職工治理文件中刪除一名職工對象。

(3)查詢:從職工治理文件中查詢符合某些條件的職工。

(4)修改:檢索某個職工對象,對其某些屬性進行修改。

(5)排序:按某種需要對職工對象文件進行排序。

3.實現提示

職工對象數不必很多,便于一次讀入內存,所有操作不經過內外存交換。

(1)由鍵盤輸入職工對象,以文件方式保存。程序執行時先將文件讀入內存。

(2)對職工對象中的"姓名"按字典順序進行排序。

(3)對排序後的職工對象進行增、刪、查詢、修改、排序等操作。

4.選做內容

將職工對象按散列法存儲,並設計解決沖突的方法。在此基礎上實現增、刪、查詢、修改、排序等操作。

*/

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <conio.h>

#define N 100

typedef strUCt employee//職工基本情況

{

int num;//工號

int position;//職位1爲董事長2爲總經理3爲副總經理等

char name[8];//姓名

char sex[2];//性別f爲女m爲男

int age;//年齡

int cult;//文化程度1爲專家2爲博士3爲碩士4爲學士5爲其他

int salary;//工資

int state;//健康情況分爲good,general,bad

char day[10];//工作年月

}ro;

ro em[N];

typedef struct communication//職工通訊錄

{

char name[8];

char Officetel[13];

char hometel[13];

char handtel[13];

char address[13];

char time[13];

}el;

el empc[N];

void manage();

void query();

void communicate();

void input();

void display();

void change();

void del();

void add();

int changeposition();

int changecult();

int changesalary();

int changestate();

void inputcommunicate();

void querycommunicate();

void changecommunicate();

char *changetel1();

char *changetel2();

char *changetel3();

int total;

int p;

char passWord[10]="talentxch";

void main()

{

int choice;

char s[10];

int flag=0;

int n=3;

do

{

printf("請你輸入密碼: ");

scanf("%s",s);

if(!strcmp(s,password))//若密碼正確

{

printf("恭喜你成功登陸了 ");

flag=1;

break;

}

else

{

printf("輸入有錯誤請重新輸入: ");

n--;

}

}while(n>0);

if(!flag)

{

printf("你的輸入次數已到再見 ");

}

do

{

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ");

printf(" 歡迎進入職工治理系統中文版 ");

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ");

printf(" 請你選擇操作類型: ");

printf("====================================================== ");

printf(" 1進入治理系統 ");

printf(" 2進入查詢系統 ");

printf(" 3進入通訊錄 ");

printf(" 0退出系統 ");

printf("====================================================== ");

scanf("%d",&choice);

switch(choice)

{

case 1:manage();

break;

case 2:query();

break;

case 3:communicate();

break;

case 0:

{

printf("謝謝使用再見 ");

exit(0);

}

default:

{

printf("輸入有錯誤請重新輸入: ");

return;

}

}

}while(1);

}

void manage()

{

int choicemanage;

char choice='y';

while(choice=='y'choice=='Y')

{

printf(" 歡迎進入治理系統 ");

printf("====================================================== ");

printf(" 請你選擇操作類型: ");

printf(" 1輸入職工信息 ");

printf(" 2顯示職工信息 ");

printf(" 3修改職工信息 ");

printf(" 4追加一個職工信息 ");

printf(" 5刪除一個職工信息 ");

printf(" 0返回 ");

printf("====================================================== ");

scanf("%d",&choicemanage);

switch(choicemanage)

{

case 1: input();//輸入職工信息

break;

case 2:display();//顯示職工信息

break;

case 3:change();//修改職工信息

break;

case 4:add();//追加一個職工信息

break;

case 5:del();//刪除一個職工信息

break;

case 0:

printf("謝謝你的使用再見 ");

return;

default:printf("你的輸入有錯請重新輸入 ");

}

printf("是否繼續治理?(y/n)");

scanf("%s",&choice);

}

if(toupper(choice)=='N'(choice)=='n')

{

printf("輸入完畢,任意鍵返回 ");

getch();

return;

}

}

void input()

{

FILE *fp;

int i=0;

char choiceinput='y';

if((fp=fopen("employee.txt","w"))==NULL)

return;

while(choiceinput=='y'choiceinput=='Y')

{

i++;

total++;

printf("第%d個職工 ",i);

printf(" ");

printf("請你輸入工號: ");//輸入工號

scanf("%d",&em[i].num);

printf(" ");

printf("請你輸入職位: ");//輸入職位

printf("1董事長 2總經理 3副總經理 ");

printf("4部門經理 5工程師 6秘書 ");

printf("7技術員 8領班 9員工 ");

scanf("%d",&em[i].position);

printf(" ");

printf("請你輸入姓名: ");//輸入姓名

scanf("%s",em[i].name);

printf(" ");

printf("請你輸入性別以(m男f女): ");//輸入性別

scanf("%s",em[i].sex);

printf(" ");

printf("請你輸入文化程度: ");//輸入文化程度

printf("1專家 2博士 3碩士 4學士 5其他 ");

scanf("%d",&em[i].cult);

printf(" ");

printf("請你輸入工資: ");//輸入工資

scanf("%d",&em[i].salary);

printf(" ");

printf("請你輸入身體情況: ");//身體情況

printf("1好 2一般 3差 ");

scanf("%d",&em[i].state);

printf("請你輸入工作年月: ");

scanf("%s",em[i].day);

printf(" ");

printf("是否繼續輸入?(y/n) ");

scanf("%s",&choiceinput);

fwrite(&em[i],sizeof(struct employee),1,fp);

}

if(toupper(choiceinput)=='N') //字符大小寫轉換

{

fclose(fp);

printf("輸入完畢,任意鍵返回 ");

getch();

return;

}

}

void display()//顯示職工信息

{

FILE *fp;

int i;

if((fp=fopen("employee.txt","r"))==NULL)

return;

printf("輸出結果: ");

printf("工號 職位 姓名 性別 文化程度 工資 身體情況 ");

printf(" ");

for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)

{

printf(" ");

printf("工號: %d ",em[i].num);

printf("職位: %d ",em[i].position);

printf("1董事長 2總經理 3副總經理 ");

printf("4部門經理 5工程師 6秘書 ");

printf("7技術員 8領班 9員工 ");

printf("姓名: %s ",em[i].name);

printf("性別: %s ",em[i].sex);

printf("其中(m男f女) ");

printf("文化程度: %d ",em[i].cult);

printf("1專家 2博士 3碩士 4學士 5其他 ");

printf("工資: %d ",em[i].salary);

printf("身體情況: %d ",em[i].state);

printf("1好 2一般 3差 ");

printf("工作年月: %s",em[i].day);

printf(" ");

}

printf(" ");

printf("完畢按任意鍵返回 ");

getch(); //文件裏用

fclose(fp);

return;

}

void change()

{

FILE *fp;

int i;

char chname[8];

int choicechange;

ro a[N];

printf("請你輸入要修改的人的姓名: ");

scanf("%s",&chname);

if((fp=fopen("employee.txt","w+"))==NULL)

{

printf("不能夠打開這個文件 ");

return;

}

for(i=0;i<N;i++)

{

if(strcmp(chname,em[i].name)==0)

{

printf("這是你要修改的人的信息 ");

printf("工號:%d 職位:%d 姓名:%s 性別:%s 文化程度:%d 工資:%d 身體:%d ",em[i].num,em[i].position,em[i].name,em[i].sex,em[i].cult,em[i].salary,em[i].state);

printf("-------------------------------------------------------- ");

printf("請你輸入要修改的部分: ");

printf("======================================================== ");

printf("1修改職位 ");

printf("2修改文化程度 ");

printf("3修改工資 ");

printf("4修改身體情況 ");

printf("0退出系統 ");

printf("======================================================== ");

printf("請選擇 ");

scanf("%d",&choicechange);

switch(choicechange)

{

case 1:

em[i].position=changeposition();

break;

case 2:

em[i].cult=changecult();

break;

case 3:

em[i].salary=changesalary();

break;

case 4:

em[i].state=changestate();

break;

case 0:

return;

default :

printf("輸入有錯誤");

}

a[i]=em[i];

}

else

{

a[i]=em[i];

}

}

for(i=0;i<total;i++)

{

em[i]=a[i];

}

i=0;

fwrite(&em[i],sizeof(struct employee),total,fp);

fclose(fp);

printf("操作完成按任意鍵返回 ");

getch();

return;

}

int changeposition()

{

int newposition;

printf("請你輸入新職位: ");

printf("1董事長 2總經理 3副總經理 ");

printf("4部門經理 5工程師 6秘書 ");

printf("7技術員 8領班 9員工 ");

scanf("%d",&newposition);

return(newposition);

}

int changecult()

{

int newcult;

printf("請你輸入新的文憑: ");

printf("1專家 2博士 3碩士 4學士 5其他 ");

scanf("%d",&newcult);

return(newcult);

}

int changesalary()

{

int newsalary;

printf("請你輸入新的工資: ");

scanf("%d",&newsalary);

return(newsalary);

}

int changestate()

{

int newstate;

printf("請你輸入現在的身體情況: ");

printf("1好 2一般 3差 ");

scanf("%d",&newstate);

return(newstate);

}

void add()//追加一個職工信息

{

struct employee emp;

FILE *fp;

int i=0;

if((fp=fopen("employee.txt","ab+"))==NULL)

{

printf("不能夠打開這個文件 ");

getch();

return;

}

printf("請你輸入新人的內容: ");

printf("請你輸入工號: ");//輸入工號

scanf("%d",&emp.num);

printf("請你輸入職位: ");//輸入職位

printf("1董事長 2總經理 3副總經理 ");

printf("4部門經理 5工程師 6秘書 ");

printf("7技術員 8領班 9員工 ");

scanf("%d",&emp.position);

printf("請你輸入姓名: ");//輸入姓名

scanf("%s",emp.name);

printf("請你輸入性別以(m男f女): ");//輸入性別

scanf("%s",emp.sex);

printf("請你輸入文化程度: ");//輸入文化程度

printf("1專家 2博士 3碩士 4學士 5其他 ");

scanf("%d",&emp.cult);

printf("請你輸入工資: ");//輸入工資

scanf("%d",&emp.salary);

printf("請你輸入身體情況: ");//身體情況

printf("1好 2一般 3差 ");

scanf("%d",&emp.state);

printf("請你輸入工作年月: ");

scanf("%s",emp.day);

fwrite(&emp,sizeof(struct employee),1,fp);

rewind(fp);

printf("插入完畢,按任意鍵返回 ");

getch();

total=total+1;

fclose(fp);

return;

}

void del()//刪除一個職工信息

{

int i=0;

char delname[8];

FILE *fp;

if((fp=fopen("employee.txt","w"))==NULL)

{

printf("文件爲空,不能夠打開 ");

printf("按任意鍵返回 ");

getch();

return;

}

printf("請你輸入要刪除的人的姓名: ");//刪除的職工的信息

scanf("%s",delname);

for(i=0;i<N;i++)

{

if(strcmp(em[i].name,delname)==0)

{

total--;

for(;i<N;i++)

{

em[i]=em[i+1];

}

}

}

i=0;

fwrite(&em[i],sizeof(struct employee),total,fp);

fclose(fp);

}

void query()

{

FILE *fp;

int i=0;

char quename[8];

if((fp=fopen("employee.txt","r"))==NULL)

{

printf("不能夠打開文件,按任意鍵返回 ");

getch();

return;

}

printf("請你輸入要查詢的人的姓名 ");

scanf("%s",quename);

for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)

{

if(strcmp(em[i].name,quename)==0) /*找到,並顯示該職工記錄*/

{

printf(" 查詢到的職工號或姓名爲的信息如下: ");

printf("以下是你要查詢的人的信息 ");

printf("工號: %d ",em[i].num);

printf("職位: %d ",em[i].position);

printf("1董事長 2總經理 3副總經理 ");

printf("4部門經理 5工程師 6秘書 ");

printf("7技術員 8領班 9員工 ");

printf("姓名: %s ",em[i].name);

printf("性別: %s ",em[i].sex);

printf("其中(m男f女) ");

printf("文化程度: %d ",em[i].cult);

printf("1專家 2博士 3碩士 4學士 5其他 ");

printf("工資: %d ",em[i].salary);

printf("身體情況: %d ",em[i].state);

printf("1好 2一般 3差 ");

printf("工作年月: %s ",em[i].day);

printf(" ");

printf("查詢完畢,按任意鍵返回 ");

getch();

fclose(fp);

return;

}

}

printf("沒有這樣的人,按任意鍵返回 ");

getch();

fclose(fp);

return;

}

void communicate()

{

int choicecommunicate;

printf("歡迎進入通訊錄系統 ");

printf("請你選擇操作類型: ");

printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ");

printf("1爲輸入通訊錄信息 ");

printf("2爲查詢通訊錄信息 ");

printf("3爲修改通訊錄信息 ");

printf("0爲退出通訊錄系統 ");

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ");

scanf("%d",&choicecommunicate);

switch(choicecommunicate)

{

case 1:inputcommunicate();

break;

case 2:querycommunicate();

break;

case 3:changecommunicate();

break;

case 0:

{

printf("謝謝使用再見 ");

printf("按任意鍵返回 ");

getch();

return;

}

default:

printf("輸入有錯 ");

}

}

void inputcommunicate()

{

FILE *fp;

int choiceincom='y';

int i=0;

if((fp=fopen("empcom.txt","w"))==NULL)

{

printf("不能夠打開文件 ");

printf("任意鍵返回 ");

getch();

return;

}

printf("請你輸入通訊錄的信息: ");

while(choiceincom=='y'choiceincom=='Y')

{

p++;

i++;

printf("第%d個職工 ",i);

printf("請你輸入姓名: ");

scanf("%s",empc[i].name);

printf("請你輸入生日: ");

scanf("%s",empc[i].time);

printf("請你輸入辦公室電話號碼: ");

scanf("%s",empc[i].officetel);

printf("請你輸入家庭電話號碼: ");

scanf("%s",empc[i].hometel);

printf("請你輸入手機號碼: ");

scanf("%s",empc[i].handtel);

printf("請你輸入地址: ");

scanf("%s",empc[i].address);

printf("是否繼續輸入?(y/n) ");

choiceincom=getch();

fwrite(&empc[i],sizeof(struct communication),1,fp);

}

if(toupper(choiceincom)=='N')

{

fclose(fp);

printf("輸入完畢,任意鍵返回 ");

return;

}

}

void querycommunicate()

{

FILE *fp;

int i=0;

char qcname[8];

if((fp=fopen("empcom.txt","r"))==NULL)

{

printf("不能夠打開文件,按任意鍵返回 ");

getch();

return;

}

printf("請你輸入要查詢的人的姓名: ");

scanf("%s",qcname);

for(i=0;fread(&empc[i],sizeof(struct communication),1,fp)!=0;i++)

{

if(strcmp(empc[i].name,qcname)==0)

{

printf("以下爲您所要求的信息: ");

printf("姓名: %s ",empc[i].name);

printf("生日: %s ",empc[i].time);

printf("辦公室電話號碼: %s ",empc[i].officetel);

printf("家庭電話號碼: %s ",empc[i].hometel);

printf("手機號碼: %s ",empc[i].handtel);

printf("家庭地址: %s ",empc[i].address);

printf("查詢完畢,按任意鍵返回 ");

getch();

fclose(fp);

return;

}

}

printf("沒有這樣的人,按任意鍵返回 ");

getch();

fclose(fp);

return;

}

void changecommunicate()

{

FILE *fp;

int i=0;

char chcname[8];

int choicecom;

el b[N];

if((fp=fopen("empcom.txt","w+"))==NULL)

{

printf("打不開文件按任意鍵返回 ");

getch();

return;

}

printf("請你輸入你要修改的人的姓名: ");

scanf("%s",chcname);

for(i=0;i<p;i++)

{

if(strcmp(empc[i].name,chcname)==0)

{

printf("以下爲您所要修改的人的信息: ");

printf("姓名:%s ",empc[i].name);

printf("生日: %s ",empc[i].time);

printf("辦公室電話號碼: %s ",empc[i].officetel);

printf("家庭電話號碼: %s ",empc[i].hometel);

printf("手機號碼: %s ",empc[i].handtel);

printf("家庭地址: %s ",empc[i].address);

printf("請你選擇要修改的東西: ");

printf("$$$$$$$$$$$$$$$$$$$$$$ ");

printf("1修改辦公室電話號碼 ");

printf("2修改家庭電話號碼 ");

printf("3修改手機電話號碼 ");

printf("0退出系統 ");

printf("$$$$$$$$$$$$$$$$$$$$$$ ");

scanf("%d",&choicecom);

switch(choicecom)

{

case 1:strcpy(empc[i].officetel,changetel1());

break;

case 2:strcpy(empc[i].hometel,changetel2());

break;

case 3:strcpy(empc[i].handtel,changetel3());

break;

case 0:

return;

default:

printf("輸入有錯 ");

}

b[i]=empc[i];

}

else

}

for(i=0;i<p;i++)

i=0;

fwrite(&empc[i],sizeof(struct communication),p,fp);

fclose(fp);

printf("操作完成按任意鍵返回 ");

getch();

return;

}

char *changetel1()

{

char newofficetel[13];

printf("請你輸入新辦公室電話號碼: ");

scanf("%s",newofficetel);

return(newofficetel);

}

char *changetel2()

{

char newhometel[13];

printf("請你輸入新家庭電話號碼: ");

scanf("%s",newhometel);

return(newhometel);

}

char *changetel3()

{

char newhandtel[13];

printf("請你輸入新手機電話號碼: ");

scanf("%s",newhandtel);

return(newhandtel);

}

 
職工管理系統(系統密碼:123456 修改數據密碼:12345)
#include"stdio.h"#include"string.h"void shUChu(void);void shuju(void),jisuan(void),chaxun(void);void renyuan(void),tuichu(void),xiugai(void);int s=0,cs=0,us=3;char x={'1','2','3','4','5','6'};char yy...查看完整版>>職工管理系統(系統密碼:123456 修改數據密碼:12345)
 
簡單的職工管理系統(V1.1修改版)內含中文注釋
/*------------------------------------------------------------------------ * filename - workmanagerment.c * * written by * 沈豪傑(01213229)&&王鵬(01213208) *---------------------------...查看完整版>>簡單的職工管理系統(V1.1修改版)內含中文注釋
 
知識型職工培訓讀本|報價¥15.20|圖書,經濟與管理,人力資源管理,人員培訓,張雲初
目錄:圖書,經濟與管理,人力資源管理,人員培訓,品牌:張雲初基本信息·出版社:中國工人出版社·頁碼:247 頁碼·出版日:2005年·ISBN:7500835361·條碼:9787500835363·版次:2005年7月第1版·裝幀:平裝·開本:...查看完整版>>知識型職工培訓讀本|報價¥15.20|圖書,經濟與管理,人力資源管理,人員培訓,張雲初
 
當 Siri 遇上 Crestron 家居管理系統,會有什麽火花呢?(影片)
當 Siri 遇上 Crestron 家居管理系統,會有什麽火花呢?(影片)
文章分類: 智能手機 相信 Apple 的 Siri 有什麽功能,不用多說吧?早前曾經有開發者將 Siri 連接到代理服務器,用以調整家裏的空調溫度,不過只是流于開發的階段而已,而這次 Carnes Audio Visual 則爲大家帶來一...查看完整版>>當 Siri 遇上 Crestron 家居管理系統,會有什麽火花呢?(影片)
 
Linux 系統核心 3.2 版發布,新增多項電源管理改進項目
Linux 系統核心 3.2 版發布,新增多項電源管理改進項目
文章分類: 互聯網絡 雖然比預期要來的稍晚些,但 Linux 最新的 3.2 版核心總算是釋出了,它帶來了許多系統的增進與改善項目 -- 首先,最令人注意到的應該是針對顯示適配器電源管理相關的改進項目,而這樣的進步應該足...查看完整版>>Linux 系統核心 3.2 版發布,新增多項電源管理改進項目
 
· 臨近國慶,李小璐與女兒在天安門前合影

http://image.wangchao.net.cn/users/...

· 震驚!原來酒駕處罰這麽嚴重

酒駕處罰標准 不要有任何一絲僥幸心理! http://image....

· 把年齡相仿的獅虎熊放一起,誰更厲害?結果出人意料

很多人都想知道獅子、老虎和熊打起來誰最厲害,于是便有好事之人把這三種動物關在一起...