# include & ltstdio.h & gt
# include & ltwindows.h & gt
# include & lttime.h & gt
# include & ltstring.h & gt
#定義編號100
結構員工
{
int num
字符名稱[10];
迷人的性愛;
int age
夏爾·李雪[30];
int工資;
char addr[30];
long int tel
} em[100];/*定義壹個結構*/
void menu();
void輸入();
void save(int);
void顯示();
void del();
void add();
void search();
void search _ num();
void search _李雪();
void search _ tel();
void modify();/*定義每個函數*/
Void menu() /*菜單功能*/
{
Printf ("☆☆☆計算機科學與技術系☆☆\ n ");
printf(" \ n ");
printf(“∮08802級關麗霞∮\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;
做
{
Printf("請選擇您需要操作的步驟(1-7):\ n ");
scanf("%d ",& ampn);
如果(n & gt=1。& ampn & lt=7)
{
flag = 1;
打破;
}
其他
{
flag = 0;
Printf("您輸入錯誤,請重新選擇!");
}
}
while(flag = = 0);
while(flag==1)
{
開關(n)
{
Case 1: printf ("◆◆◆◆輸入員工信息◆◆\ n ");printf(" \ n ");input();打破;
案例二:printf ("◆◆◆◆瀏覽員工信息◆◆\ n ");printf(" \ n ");顯示();打破;
案例三:printf ("◆◆◆◆按員工編號查詢員工信息◆◆\ n ");printf(" \ n ");search();打破;
案例四:printf ("◆◆◆◆刪除員工信息◆◆\ n ");printf(" \ n ");del();打破;
案例五:printf ("◆◆◆◆添加員工信息◆◆\ n ");printf(" \ n ");add();打破;
案例6: printf ("◆◆◆◆修改員工信息◆◆\ n ");printf(" \ n ");modify();打破;
案例7:出口(0);打破;
默認:break
}
getchar();
printf(" \ n ");
Printf("是否繼續(y或n):\ n ");
scanf("%c ",& ampa);
if(a=='y ')
{
flag = 1;
系統(“cls”);/*清空屏幕*/
menu();/*調用菜單功能*/
Printf("請重新選擇需要操作的步驟(1-6):\ n ");
scanf("%d ",& ampn);
printf(" \ n ");
}
其他
退出(0);
}
}
Void input() /*輸入函數*/
{
int i,m;
Printf("請輸入需要創建信息的員工人數(1-100):\ n ");
scanf("%d ",& ampm);
for(I = 0;我& ltm;i++)
{
Printf("員工號:");
srand((int)time(0));
em[i]。num = rand()% 10000+20000000;
if(em[i]。num!=em[i-1]。數字)
printf("%8d ",em[i]。num);
printf(" \ n ");
Printf("請輸入您的姓名:");
scanf("%s ",em[i]。姓名);
getchar();
Printf("請輸入性別(f-女m-男):");
scanf("%c ",& ampem[i]。性);
Printf("請輸入年齡:");
scanf("%d ",& ampem[i]。年齡);
Printf("請輸入學歷:");
scanf("%s ",em[i]。李雪);
Printf("請輸入薪資:");
scanf("%d ",& ampem[i]。工資);
Printf("請輸入地址:");
scanf("%s ",em[i]。addr);
Printf("請輸入電話號碼:");
scanf("%d ",& ampem[i]。電話);
printf(" \ n ");
}
printf(" \ n已創建!\ n ");
保存(m);
}
Void save(int m) /*保存文件函數*/
{
int I;
FILE * fp
If ((FP = fopen ("employee _ list "," WB ")= = null)/*創建壹個文件,判斷是否可以打開*/
{
printf("無法打開文件\ n ");
退出(0);
}
for(I = 0;我& ltm;I++) /*將內存中的員工信息輸出到磁盤文件*/
if(fwrite(& amp;em[i],sizeof(結構雇員),1,fp)!=1)
printf("文件寫入錯誤\ n ");
fclose(FP);
}
Int load() /*導入函數*/
{
FILE * fp
int I = 0;
if((fp=fopen("employee_list "," Rb ")= = NULL)
{
printf("無法打開文件\ n ");
退出(0);
}
其他
{
做
{
弗雷德(& ampem[i],sizeof(struct employee),1,FP);
i++;
}
while(feof(FP)= = 0);
}
fclose(FP);
返回(I-1);
}
Void display() /*瀏覽函數*/
{
int I;
int m = load();
printf(" \ n員工編號\ tName \ tSex \ tAge \教育\ tSalary \地址\ t電話\ n ");
for(I = 0;我& ltm;I++) /*m是輸入部分的員工數*/
printf(" \ n % d \ t % s \ t % c \ t % d \ t % s \ t % d \ t % s \ t % LD \ n ",em[i]。num,em[i]。姓名,em[i]。性,em[i]。年齡,em[i]。李雪,em[i]。工資,em[i]。地址,em[i]。電話);
}
Void del() /*刪除函數*/
{
int m = load();
int i,j,n,t,flag
char name[20];
printf(" \ n原始員工信息:\ n ");
顯示();/*調用瀏覽函數*/
printf(" \ n ");
Printf("請輸入要刪除的員工姓名:\ n ");
scanf("%s ",名稱);
for(flag=1,I = 0;旗幟& amp& amp我& ltm;i++)
{
if(strcmp(em[i].name,name)==0)
{
printf(" \ n此人已找到,原始記錄為:\ n ");
printf(" \ n員工編號\ tName \ tSex \ tAge \教育\ tSalary \地址\ t電話\ n ");
printf(" \ n % d \ t % s \ t % c \ t % d \ t % s \ t % d \ t % s \ t % LD \ n ",em[i]。num,em[i]。姓名,em[i]。性,em[i]。年齡,em[i]。李雪,em[i]。工資,em[i]。地址,em[i]。電話);
printf(" \ n按1刪除此人信息,或按0\n "不刪除);
scanf("%d ",& ampn);
If(n==1) /*如果刪除,所有其他信息將上移壹行*/
{
for(j = I;j & ltm-1;j++)
{
strcpy(em[j].姓名,em[j+1]。姓名);
em[j]。num=em[j+1]。num
em[j]。sex=em[j+1]。性;
em[j]。年齡=em[j+1]。年齡;
strcpy(em[j].李雪,東地中海。李雪);
em[j]。工資=em[j+1]。工資;
strcpy(em[j].地址,em[j+1]。addr);
em[j]。tel=em[j+1]。電話;
}
flag = 0;
}
}
}
如果(!旗幟)
m = m-1;
其他
printf(" \ n抱歉,沒有這個人!\ n ");
printf(" \ n瀏覽所有刪除的員工信息:\ n ");
保存(m);/*調用保存函數*/
顯示();/*調用瀏覽函數*/
printf(" \ n按1繼續刪除,按0停止刪除\ n ");
scanf("%d ",& ampt);
開關(t)
{
案例1:del();打破;
案例0:破;
默認:break
}
}
Voideadd ()/*添加函數*/
{
FILE * fp
int n;
int count = 0;
int I;
int m = load();
printf(" \ n原始員工信息:\ n ");
顯示();/*調用瀏覽函數*/
printf(" \ n ");
fp=fopen("emploee_list "," a ");
Printf("請輸入您要增加的員工人數:\ n ");
scanf("%d ",& ampn);
for(I = m;我& lt(m+n);i++)
{
printf(" \ n請輸入新增加員工的信息:\ n ");
Printf("請輸入員工編號:");
srand((int)time(0));
em[i]。num = rand()% 10000+20000000;
if(em[i]。num!=em[i-1]。數字)
printf("%8d ",em[i]。num);
printf(" \ n ");
Printf("請輸入您的姓名:");
scanf("%s ",em[i]。姓名);
getchar();
Printf("請輸入性別(f-女m-男):");
scanf("%c ",& ampem[i]。性);
Printf("請輸入年齡:");
scanf("%d ",& ampem[i]。年齡);
Printf("請輸入學歷:");
scanf("%s ",em[i]。李雪);
Printf("請輸入薪資:");
scanf("%d ",& ampem[i]。工資);
Printf("請輸入地址:");
scanf("%s ",em[i]。addr);
Printf("請輸入電話號碼:");
scanf("%d ",& ampem[i]。電話);
printf(" \ n ");
count = count+1;
Printf("人數增加:\ n ");
printf("%d\n ",count);
}
printf(" \ n添加完畢!\ n ");
m = m+計數;
printf(" \ n瀏覽所有添加的員工信息:\ n ");
printf(" \ n ");
保存(m);
顯示();
fclose(FP);
}
Void search()/*查詢函數*/
{
int t,flag
做
{
printf(" \ n按員工號查詢請按1;按學歷查詢請按2;電話號碼查詢按3,主功能按4 \ n ");
scanf("%d ",& ampt);
if(t & gt;=1。& ampt & lt=4)
{
flag = 1;
打破;
}
其他
{
flag = 0;
Printf("您輸入錯誤,請重新選擇!");
}
}
while(flag = = 0);
while(flag==1)
{
開關(t)
{
Case 1:printf("按員工編號查詢\ n ");search_num()。打破;
案例二:printf("按學歷查詢\ n ");search _李雪();打破;
案例三:printf("按電話號碼查詢\ n ");search _ tel();打破;
案例四:main();打破;
默認:break
}
}
}
void搜索數量()
{
int num
int i,t;
int m = load();
Printf("請輸入您要找的員工編號(20001111-2000999):\ n ");
scanf("%d ",& ampnum);
for(I = 0;我& ltm;i++)
if(num==em[i]。數字)
{
printf(" \ n已找到此人,其記錄為:\ n ");
printf(" \ n員工編號\ tName \ tSex \ tAge \教育\ tSalary \地址\ t電話\ n ");
printf(" \ n % d \ t % s \ t % c \ t % d \ t % s \ t % d \ t % s \ t % LD \ n ",em[i]。num,em[i]。姓名,em[i]。性,em[i]。年齡,em[i]。李雪,em[i]。工資,em[i]。地址,em[i]。電話);
打破;
}
如果(i==m)
printf(" \ n抱歉,沒有找到此人\ n ");
printf(" \ n ");
Printf("按1返回查詢功能,按2\n "繼續查詢員工號);
scanf("%d ",& ampt);
開關(t)
{
案例1:search();打破;
案例二:破;
默認:break
}
}
無效搜索_李雪()
{
夏爾·李雪[30];
int i,t;
int m = load();
Printf("請輸入妳想找的學歷:\ n ");
scanf("%s ",李雪);
for(I = 0;我& ltm;i++)
if(strcmp(em[i].李雪,李雪)==0)
{
printf(" \ n找到記錄:\ n ");
printf(" \ n員工編號\ tName \ tSex \ tAge \教育\ tSalary \地址\ t電話\ n ");
printf(" \ n % d \ t % s \ t % c \ t % d \ t % s \ t % d \ t % s \ t % LD \ n ",em[i]。num,em[i]。姓名,em[i]。性,em[i]。年齡,em[i]。李雪,em[i]。工資,em[i]。地址,em[i]。電話);
}
如果(i==m)
printf(" \ n抱歉,沒有找到此人\ n ");
printf(" \ n ");
Printf("按1返回查詢功能,按2\n "繼續學歷查詢);
scanf("%d ",& ampt);
開關(t)
{
案例1:search();打破;
案例二:破;
默認:break
}
}
void search_tel()
{
long int tel
int i,t;
int m = load();
Printf("請輸入您要查找的電話號碼:\ n ");
scanf("%ld ",& amp電話);
for(I = 0;我& ltm;i++)
if(tel==em[i]。電話)
{
printf(" \ n已找到此人,其記錄為:\ n ");
printf(" \ n員工編號\ tName \ tSex \ tAge \教育\ tSalary \地址\ t電話\ n ");
printf(" \ n % d \ t % s \ t % c \ t % d \ t % s \ t % d \ t % s \ t % LD \ n ",em[i]。num,em[i]。姓名,em[i]。性,em[i]。年齡,em[i]。李雪,em[i]。工資,em[i]。地址,em[i]。電話);
打破;
}
如果(i==m)
printf(" \ n抱歉,沒有找到此人\ n ");
printf(" \ n ");
Printf("按1返回查詢功能,按2\n "繼續查詢電話號碼);
scanf("%d ",& ampt);
開關(t)
{
案例1:search();打破;
案例二:破;
默認:break
}
}
Void modify() /*修改函數*/
{
int num
字符名稱[10];
迷人的性愛;
int age
夏爾·李雪[30];
int工資;
char addr[30];
long int tel
int b,c,I,n,t,flag
int m = load();/*導入文件中的信息*/
printf(" \ n原始員工信息:\ n ");
顯示();/*調用瀏覽函數*/
printf(" \ n ");
Printf("請輸入要修改的員工姓名:\ n ");
scanf("%s ",名稱);
for(flag=1,I = 0;旗幟& amp& amp我& ltm;i++)
{
if(strcmp(em[i].name,name)==0)
{
printf(" \ n此人已找到,原始記錄為:\ n ");
printf(" \ n員工編號\ tName \ tSex \ tAge \教育\ tSalary \地址\ t電話\ n ");
printf(" \ n % d \ t % s \ t % c \ t % d \ t % s \ t % d \ t % s \ t % LD \ n ",em[i]。num,em[i]。姓名,em[i]。性,em[i]。年齡,em[i]。李雪,em[i]。工資,em[i]。地址,em[i]。電話);
printf(" \ n請按1修改此人的信息;按0\n”)不加修改;
scanf("%d ",& ampn);
如果(n==1)
{
printf(" \ n要修改的選項\n 1。員工2號。名字3。性別4。5歲。教育。工資7。地址8。電話\ n ");
Printf("請輸入您要修改的序列號:\ n ");
scanf("%d ",& ampc);
if(c & gt;8 | | c & lt1)
printf(" \ n選擇錯誤,請重新選擇!\ n ");
}
flag = 0;
}
}
if(flag==1)
printf(" \ n抱歉,沒有這個人!\ n ");
做
{
Switch(c) /*因為在找到第I個雇員時,我在for語句後添加了1,所以應將以下信息分配給i-1人員*/
{
案例1:printf("員工號更改為");
scanf("%d ",& ampnum);
em[i-1]。num = num
打破;
案例二:printf(“名稱改為”);
scanf("%s ",名稱);
strcpy(em[i-1])。姓名、名稱);
打破;
案例三:printf("性別改為");
getchar();
scanf("%c ",& amp性);
em[i-1]。性=性;
打破;
案例四:printf("年齡改為:");
scanf("%d ",& amp年齡);
em[i-1]。年齡=年齡;
打破;
案例五:printf("學歷改為");
scanf("%s ",李雪);
strcpy(em[i-1])。李雪、李雪);
打破;
案例6:printf("薪資改為");
scanf("%d ",工資);
打破;
案例7:printf("地址改為");
scanf("%s ",addr);
strcpy(em[i-1])。addr,addr);
打破;
案例8:printf(“電話改為”);
scanf("%ld ",& amp電話);
em[i-1]。電話=電話;
打破;
}
printf(" \ n ");
printf(" \ n您確定要修改信息嗎?\是的,請按1;否,請按2再次修改:\ n”);
scanf("%d ",& ampb);
}
while(b = = 2);
printf(" \ n瀏覽所有修改後的員工信息:\ n ");
printf(" \ n ");
保存(m);
顯示();
printf(" \ n按1繼續修改,按0\n "停止修改);
scanf("%d ",& ampt);
開關(t)
{
案例1:modify();打破;
案例0:破;
默認:break
}
}