| 導購 | 订阅 | 在线投稿
分享
 
 
 

改編 的 C版 職工管理系統

來源:互聯網  2008-06-01 02:10:43  評論

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

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);

}

/*八、簡單的職工治理系統 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); }
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有