附1、:使用說明
輸入1註冊信息:註冊職工信息時提示註冊員工的個數,且系統會自動給出職工編號,然後輸入職工姓名、性別、年齡、學歷、工資、地址、聯系電話。
輸入2瀏覽信息:操作後可以瀏覽該公司所有職工的信息。
輸入3查詢信息:可以根據不同的信息查詢公司職工的信息。如按照職工的編號、職工的學歷、職工的聯系電話。知道職工的其中壹個信息就可以查到他的其他信息。實現了掌握少量的信息就可以找到相關的信息。
輸入4刪除信息:介入這壹界面時,先顯示全部職工的信息,再輸入需要刪除職工的名字。操作後可顯示刪除後的全部職工的信息。
輸入5添加信息:進入這壹界面後,先顯示原來的職工的信息,再提示添加信息的人數,然後輸入新的職工的信息。操作完後可自動顯示添加完後的全部職工的信息。
輸入6修改信息:介入界面後,顯示全部職工的信息,再提示輸入需要修改的職工的姓名,輸入後顯示該職工原來的信息且提示是否修改:輸入1時修改,輸入0時不修改。需要修改時,提示需要修改的選項的序號,然後進行修改。修改後系統自動顯示修改後的職工的信息。
附件:職工信息管理系統代碼
file.c
此文件主要包含涉及文件讀寫功能的函數。
/************************************************************/?
/*?File:?file.c?*/?
/************************************************************/?
#include?<stdio.h>
#include?<windows.h>
#include?<time.h>
#include?<string.h>
#define?N?100?/*宏定義*/
struct?employee
{?int?num;?/*職工編號*/
char?name[10];/*職工姓名*/ char?sex[4];/*職工性別*/ char?bir[16];?/*職工出生年月*/char?xueli[30];/*職工學歷*/
int?wage;?/*職工工資*/ char?addr[30];?/*職工地址*/ char?tel[20];*職工電話*/}em[100];?/*定義壹個結構體*/
void?menu()?/*菜單函數*/
{
printf("?☆☆☆信息管理與信息系統☆☆☆\n");
printf("\n");
printf("B0902?李穎\n");
printf("\n");
printf("******************職工信息管理****************\n");printf("1.錄入職工信息");
printf("2.瀏覽職工信息\n"); printf("3.查詢職工信息"); printf("4.刪除職工信息\n"); printf("5.添加職工信息");printf("6.修改職工信息\n");
printf("7.退出管理系統\n"); printf("**********************************************\n");printf("\n");
printf("\n");
}
void?main()
{
menu();?/*調用菜單函數*/ int?n,flag; char?a; do {?printf("請選擇妳需要操作的步驟(1--7):\n");scanf("%d",&n);
if(n>=1&&n<=7)
{
flag=1;
break;
}
else
{
flag=0;
printf("您輸入有誤,請重新選擇!");
}
}while(flag==0);
while(flag==1)
{?switch(n) {case?1:printf("◆◆◆輸入職工信息◆◆◆\n");printf("\n");input();break;
case?2:printf("?◆◆◆瀏覽職工信息◆◆◆\n");printf("\n");display();break;
case?3:printf("?◆◆◆查詢職工信息◆◆◆\n");printf("\n");search();break;?
case?4:printf("?◆◆◆刪除職工信息◆◆◆\n");printf("\n");del();break;
case?5:printf("?◆◆◆添加職工信息◆◆◆\n");printf("\n");add();break;
case?6:printf("?◆◆◆修改職工信息◆◆◆\n");printf("\n");modify();break;
case?7:exit(0);break; default?:break; } getchar(); printf("\n"); printf("是否繼續進行(y?or?n):\n"); scanf("%c",&a); if(a=='y') { flag=1; system("cls");?/*清屏*/ menu();?/*調用菜單函數*/ printf("請再次選擇妳需要操作的步驟(1--6):\n"); scanf("%d",&n); printf("\n"); } else? exit(0); }}
void?input()/*錄入函數*/
{
int?i,m; printf("請輸入需要創建信息的職工人數(1--100):\n"); scanf("%d",&m); for?(i=0;i<m;i++) { printf("職工號:?"); srand((int)time(0)); em[i].num=rand()%10000+20000000; if(em[i].num!=em[i-1].num) printf("%8d?",em[i].num); printf("\n"); printf("請輸入姓名:?"); scanf("%s",&em[i].name); getchar(); printf("請輸入性別:?"); scanf("%s",&em[i].sex); printf("請輸入出生年月:?"); scanf("%s",&em[i].bir); printf("請輸入學歷:?"); scanf("%s",&em[i].xueli); printf("請輸入工資:?"); scanf("%d",&em[i].wage); printf("請輸入住址:?"); scanf("%s",&em[i].addr); printf("請輸入電話:?"); scanf("%s",&em[i].tel); printf("\n");}
printf("\n創建完畢!\n");
save(m);
}
void?save(int?m)/*保存文件函數*/
{
int?i; FILE*fp; if?((fp=fopen("employee_list","wb"))==NULL)?/*創建文件並判斷是否能打開*/ { printf?("cannot?open?file\n"); exit(0); } for?(i=0;i<m;i++)/*將內存中職工的信息輸出到磁盤文件中去*/if?(fwrite(&em[i],sizeof(struct?employee),1,fp)!=1)
printf("file?write?error\n");
fclose(fp);
}
int?load()/*導入函數*/
{
FILE*fp; int?i=0;if((fp=fopen("employee_list","rb"))==NULL)
{ printf?("cannot?open?file\n"); exit(0); } else? { do? {fread(&em[i],sizeof(struct?employee),1,fp);
i++; } while(feof(fp)==0); } fclose(fp); return(i-1);}
void?display()/*瀏覽函數*/{
int?i; int?m=load(); printf("\n?職工號\t姓名\t性別\t出生年月\t學歷\t工資\t住址\t電話\n"); for(i=0;i<m;i++)/*m為輸入部分的職工人數*/ printf("\n?%6d\t%s\t%4s\t%s\t%s\t%d\t%s\t%s\n",em[i].num,em[i].name,em[i].sex,em[i].bir,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);?}
void?del()?/*刪除函數*/
{?int?m=load();
int?i,j,n,t,flag; char?name[20]; printf("\n?原來的職工信息:\n");display();?/*?調用瀏覽函數*/
printf("\n");
printf("請輸入要刪除的職工的姓名:\n"); scanf("%s",name); for(flag=1,i=0;flag&&i<m;i++) { if(strcmp(em[i].name,name)==0) {printf("\n已找到此人,原始記錄為:\n");
printf("\n職工號\t姓名\t性別\t出生年月\t學歷\t工資\t住址\t電話\n");
printf("\n%d\t%s\t%s\t%s\t%s\t%d\t%s\t%s\n",em[i].num,em[i].name,em[i].sex,em[i].bir,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);?
printf("\n確實要刪除此人信息請按1,不刪除請按0\n");
scanf("%d",&n);
if(n==1)/*如果刪除,則其他的信息都往上移壹行*/
{
for(j=i;j<m-1;j++) {strcpy(em[j].name,em[j+1].name);
em[j].num=em[j+1].num;
strcpy(em[j].sex,em[j+1].sex);
strcpy(em[j].bir,em[j+1].bir);strcpy(em[j].xueli,em[j+1].xueli);
em[j].wage=em[j+1].wage;?
strcpy(em[j].addr,em[j+1].addr);
strcpy(em[j].tel,em[j+1].tel);
}flag=0;
}
} } if(!flag)m=m-1;
elseprintf("\n對不起,查無此人!\n");
printf("\n?瀏覽刪除後的所有職工信息:\n");
save(m);/*調用保存函數*/
display();?/*調用瀏覽函數*/
printf("\n繼續刪除請按1,不再刪除請按0\n"); scanf("%d",&t); switch(t) {case?1:del();break;
case?0:break;
default?:break;
}}
void?add()/*添加函數*/
{
FILE*fp; int?n;int?count=0;
int?i;
int?m=load();
printf("\n?原來的職工信息:\n");
display();?/*?調用瀏覽函數*/
printf("\n");
fp=fopen("emploee_list","a");
printf("請輸入想增加的職工數:\n");
scanf("%d",&n);for?(i=m;i<(m+n);i++)
{ printf("\n?請輸入新增加職工的信息:\n"); printf("請輸入職工號:?"); srand((int)time(0)); em[i].num=rand()%10000+20000000; if(em[i].num!=em[i-1].num)printf("%8d?",em[i].num);
printf("\n");printf("請輸入姓名:?");
scanf("%s",&em[i].name);getchar();
printf("請輸入性別:?");
scanf("%s",&em[i].sex);printf("請輸入出生年月:?");
scanf("%s",&em[i].bir); printf("請輸入學歷:?"); scanf("%s",&em[i].xueli); printf("請輸入工資:?"); scanf("%d",&em[i].wage); printf("請輸入住址:?"); scanf("%s",&em[i].addr);printf("請輸入電話:?");
scanf("%s",&em[i].tel);printf("\n");
count=count+1; printf("已增加的人數:\n"); printf("%d\n",count); }printf("\n添加完畢!\n");?
m=m+count;
printf("\n瀏覽增加後的所有職工信息:\n"); printf("\n"); save(m);display();
fclose(fp);
}
void?search()/*查詢函數*/
{
int?t,flag;
do {printf("\n按職工號查詢請按1?;?按學歷查詢請按2?;?按電話號碼查詢請按3,進入主函數按4\n");
scanf("%d",&t);
if(t>=1&&t<=4)
{
flag=1;
break;
}
else
{
flag=0;
printf("您輸入有誤,請重新選擇!");
}
}while(flag==0);
while(flag==1)
{switch(t)
{?
case?1:printf("按職工號查詢\n");search_num();break; case?2:printf("按學歷查詢\n");search_xueli();break; case?3:printf("按電話號碼查詢\n");search_tel();break; case?4:main();break; default:break;}
}
}
void?search_num()
{
int?num; int?i,t; int?m=load(); printf("請輸入要查找的職工號(20001111---20009999):\n"); scanf("%d",&num); for(i=0;i<m;i++)if(num==em[i].num)
{?printf("\n已找到此人,其記錄為:\n");
printf("\n職工號\t姓名\t性別\t出生年月\t學歷\t工資\t住址\t電話\n");
printf("\n%d\t%s\t%s\t%s\t%s\t%d\t%s\t%s\n",em[i].num,em[i].name,em[i].sex,em[i].bir,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);?
break;
}if(i==m)?
printf("\n對不起,查無此人\n");
printf("\n");
printf("返回查詢函數請按1,繼續查詢職工號請按2\n");
scanf("%d",&t);
switch(t)
{?
case?1:search();break;
case?2:?break;default:break;
}
}
void?search_xueli(){
char?xueli[30]; int?i,t; int?m=load(); printf("請輸入要查找的學歷:\n"); scanf("%s",xueli); for(i=0;i<m;i++)if(strcmp(em[i].xueli,xueli)==0)
{printf("\n已找到,其記錄為:\n");
printf("\n職工號\t姓名\t性別\t出生年月\t學歷\t工資\t住址\t電話\n");
printf("\n%d\t%s\t%s\t%s\t%s\t%d\t%s\t%s\n",em[i].num,em[i].name,em[i].sex,em[i].bir,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);?
} if(i==m)?printf("\n對不起,查無此人\n");
printf("\n");
printf("返回查詢函數請按1,繼續查詢學歷請按2\n");
scanf("%d",&t);
switch(t) {?case?1:search();break;
case?2:break;default?:break;
} }void?search_tel()
{
char?tel[20]; int?i,?t; int?m=load(); printf("請輸入要查找的電話號碼:\n"); scanf("%ld",&tel); for(i=0;i<m;i++)if(strcmp(em[i].tel,tel)==0)
{?printf("\n已找到此人,其記錄為:\n");
printf("\n職工號\t姓名\t性別\t出生年月\t學歷\t工資\t住址\t電話\n");
printf("\n%d\t%s\t%s\t%s\t%s\t%d\t%s\t%s\n",em[i].num,em[i].name,em[i].sex,em[i].bir,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);?
break;
}if(i==m)?
printf("\n對不起,查無此人\n");
printf("\n");
printf("返回查詢函數請按1,繼續查詢電話號碼請按2\n");
scanf("%d",&t);
switch(t) {?case?1:search();break;
case?2:break;default?:break;
} }void?modify()/*修改函數*/
{
int?num; char?name[10]; char?sex[4];? char?bir[20]; char?xueli[30]; int?wage; char?addr[30]; char?tel[20]; int?b,c,i,n,t,flag;?int?m=load();?/*導入文件內的信息*/
printf("\n?原來的職工信息:\n");
display();?/*?調用瀏覽函數*/
printf("\n");
printf("請輸入要修改的職工的姓名:\n");
scanf("%s",name);
for(flag=1,i=0;flag&&i<m;i++)
{
if(strcmp(em[i].name,name)==0)
{
printf("\n已找到此人,原始記錄為:\n");
printf("\n職工號\t姓名\t性別\t出生年月\t學歷\t工資\t住址\t電話\n");
printf("\n%d\t%s\t%s\t%s\t%s\t%d\t%s\t%s\n",em[i].num,em[i].name,em[i].sex,em[i].bir,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);?
printf("\n確實要修改此人信息請按1?;?不修改請按0\n");
scanf("%d",&n); if(n==1){
printf("\n需要進行修改的選項\n?1.職工號?2.姓名?3.性別?4.出生年月?5.學歷?6.工資?7.住址?8.電話\n");? printf("請輸入妳想修改的那壹項序號:\n");? scanf("%d",&c);? if(c>8||c<1)? printf("\n選擇錯誤,請重新選擇!\n");? } flag=0; } } if(flag==1) printf("\n對不起,查無此人!\n");? do? { switch(c)?/*因為當找到第i個職工時,for語句後i自加了1,所以下面的應該把改後的信息賦值給第i-1個人*/ {? case?1:printf("職工號改為:?"); scanf("%d",&num); em[i-1].num=num; break;? case?2:printf("姓名改為:?"); scanf("%s",name); strcpy(em[i-1].name,name);? break;? case?3:printf("性別改為:?");scanf("%s",sex);
strcpy(em[i-1].sex,sex);
break;?
case?4:printf("出生年月改為:?");
scanf("%s",bir);
strcpy(em[i-1].bir,bir);
break;?
case?5:printf("學歷改為:?");
scanf("%s",xueli);
strcpy(em[i-1].xueli,xueli);?
break;?
case?6:printf("工資改為:?");
scanf("%d",&wage);
break;?
case?7:printf("住址改為:?");
scanf("%s",addr);
strcpy(em[i-1].addr,addr);
break;?
case?8:printf("電話改為:?");
scanf("%s",tel);
strcpy(em[i-1].tel,tel);
break;?
}?printf("\n");
printf("\n是否確定所修改的信息?\n?是?請按1?;?不,重新修改?請按2:?\n");?
scanf("%d",&b);
}?
while(b==2);
printf("\n瀏覽修改後的所有職工信息:\n");
printf("\n");
save(m);
display();
printf("\n繼續修改請按1,不再修改請按0\n");
scanf("%d",&t);
switch(t)
{case?1:modify();break;
case?0:break;
default?:break;
}}