#include <windows.h>
#include <time.h>
#include <string.h>
#define N 100
struct employee
{
int num;
char name[10];
char zhicheng;
int jiben;
int jiangjin;
int baoxian;
int zafei;
int shiji;
}em[100]; /*定義壹個結構體*/
void menu();
void input();
void save(int);
void display();
void del();
void search();
void search_zhicheng();
void search_name();
void modify(); /*定義各函數*/
void menu() /*菜單函數*/
{
printf("\n");
printf(" 網計091 第7小組\n");
printf("\n");
printf(" ******************職工信息管理****************\n");
printf(" 1.錄入職工信息");
printf(" 2.瀏覽職工信息\n");
printf(" 3.查詢職工信息");
printf(" 4.刪除職工信息\n");
printf(" 5.修改職工信息\n");
printf(" 6.退出\n");
printf(" ********************謝謝使用******************\n");
printf("\n");
printf("\n");
}
void main()
{
int n,flag;
char a;
while(1)
{
do
{
menu(); /*調用菜單函數*/
printf("請選擇妳需要操作的步驟(1--6):\n");
scanf("%d",&n);
if(n>=1&&n<=6)
{
flag=1;
break;
}
else
{
flag=0;
printf("您輸入有誤,請重新選擇!");
}
}while(flag==0);
switch(n)
{
case 1:printf(" 輸入職工信息\n");printf("\n");input();break;
case 2:printf(" 瀏覽職工信息\n");printf("\n");system("cls");display();break;
case 3:printf(" 按職工號查詢職工信息\n");printf("\n");system("cls");search();break;
case 4:printf(" 刪除職工信息\n");printf("\n");system("cls");del();break;
case 5:printf(" 修改職工信息\n");printf("\n");system("cls");modify();break;
case 6:goto la;
default :break;
}
}
la:
system("cls");
printf("\n\n\n\n\n 謝謝使用!\n");
}
void input() /*錄入函數*/
{
int i,m;
printf("請輸入需要創建信息的職工人數(1--100):\n");
scanf("%d",&m);
for (i=0;i<m;i++)
{
printf("請輸入職工號: ");
scanf("%d",&em[i].num); //這裏的代碼錯,要用數組下標
printf("\n");
printf("請輸入姓名: ");
scanf("%s",em[i].name);//這裏的代碼錯,要用數組下標
getchar();
printf("請輸入職稱: ");
scanf("%c",&em[i].zhicheng);//這裏的代碼錯,要用數組下標
printf("請輸入基本工資: ");
scanf("%d",&em[i].jiben);//這裏的代碼錯,要用數組下標
printf("請輸入獎金: ");
scanf("%d",&em[i].jiangjin);//這裏的代碼錯,要用數組下標
printf("請輸入保險: ");
scanf("%d",&em[i].baoxian);//這裏的代碼錯,要用數組下標
printf("請輸入雜費: ");
scanf("%d",&em[i].zafei);//這裏的代碼錯,要用數組下標
em[i].shiji=em[i].jiben + em[i].jiangjin - em[i].baoxian - em[i].zafei;//這裏的代碼錯,要用數組下標
printf("\n");
}
printf("\n創建完畢!\n");system("cls");
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,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,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 %d\t %s\t %c\t %d\t %d\t %d\t %d\t %d\n",em[i].num,em[i].name,em[i].zhicheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji); //這裏的代碼錯,要用數組下標
printf("按任意鍵繼續\n");
getchar();getchar();system("cls");
}
void del() /*刪除函數*/
{
int m=load();
int i,j,n,t,flag;
char name1[10];
printf("\n 原來的職工信息:\n");
display(); /* 調用瀏覽函數*/
printf("\n");
printf("請輸入要刪除的職工的姓名:\n");
scanf("%s",name1);
for(flag=1,i=0;flag&&i<m;i++)
{
if(strcmp(em[i].name,name1)==0)
{
printf("\n已找到此人,原始記錄為:\n");
printf("\n職工號\t姓名\t職稱\t基本工資\t獎金\t保險\t雜費\t實際工資 \n");
printf("\n%d\t%s\t%c\t%d\t%d\t%d\t%d\t%d\n",em[i].num,em[i].name,em[i].zhicheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji);
printf("\n確實要刪除此人信息請按1,不刪除請按0\n");
scanf("%d",&n);
if(n==1) /*如果刪除,則其他的信息都往上移壹行*/
{
for(j=i;j<m-1;j++)
{
em[j]=em[j+1];
}
flag=0;
}
}
}
if(!flag)
m=m-1;
else
printf("\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;
}system("cls");
}
void search()/*查詢函數*/
{
int t,flag;
do
{
printf("\n按姓名查詢請按1 ; 按職稱查詢請按2 ; 進入主函數按3\n");
scanf("%d",&t);
if(t>=1&&t<=3)
{
flag=1;
break;
}
else
{
flag=0;
printf("您輸入有誤,請重新選擇!");
}
}while(flag==0);system("cls");
while(flag==1)
{
switch(t)
{
case 1:printf("按姓名查詢\n");search_name();break;
case 2:printf("按職稱查詢\n");search_zhicheng();break;
case 3:main();break;
default:break;
}
system("cls");
}
}
void search_name()
{
char name1[10];
int i,t;
int m=load();
printf("請輸入要查找的姓名:\n");
scanf("%s",name1);
for(i=0;i<m;i++)
if(strcmp(name1,em[i].name)==0)
{
printf("\n已找到此人,其記錄為:\n");
printf("\n職工號\t姓名\t職稱\t基本工資\t獎金\t保險\t雜費\t實際工資 \n");
printf("\n%d\t%s\t%c\t%d\t%d\t%d\t%d\t%d\n",em[i].num,em[i].name,em[i].zhicheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji);
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_zhicheng()
{
char zhicheng;
int i,t=0;
int m=load();
system("cls");
printf("請輸入要查找的職稱:\n");
scanf("%c",&zhicheng); //這裏要用地址
for(i=0;i<m;i++)
if(em[i].zhicheng==zhicheng)
{
printf("\n已找到,其記錄為:\n");
printf("\n職工號\t姓名\t職稱\t基本工資\t獎金\t保險\t雜費\t實際工資 \n");
printf("\n%d\t%s\t%c\t%d\t%d\t%d\t%d\t%d\n",em[i].num,em[i].name,em[i].zhicheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji);
}
if(i==m)
printf("\n對不起,查無此人\n");
printf("\n");
printf("返回查詢函數請按1,繼續查詢學歷請按2\n");
scanf("%d",&t);
switch(t)
{
case 1:system("cls");search();break;
case 2:break;
default :break;
}
}
void modify() /*修改函數*/
{
int num;
char name[10];
char zhicheng;
int jiben;
int jiangjin;
int baoxian;
int zafei;
int shiji;
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%c\t%d\t%d\t%d\t%d\t%d\n",em[i].num,em[i].name,em[i].zhicheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji);
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("職稱改為: ");
getchar();
scanf("%c",&zhicheng);
em[i-1].zhicheng=zhicheng;
break;
case 4:printf("基本工資改為: ");
scanf("%d",&jiben);
em[i-1].jiben=jiben;
break;
case 5:printf("獎金改為: ");
scanf("%d",&jiangjin); //這裏要用地址
em[i-1].jiangjin=jiangjin;
break;
case 6:printf("保險改為: ");
scanf("%d",&baoxian);//這裏要用地址
break;
case 7:printf("雜費改為: ");
scanf("%d",&zafei);//這裏要用地址
em[i-1].zafei=zafei;
break;
case 8:printf("實際工資改為: ");
scanf("%d",&shiji);
em[i-1].shiji=shiji;
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;
}system("cls");
}
親愛的女兒:
妳好。
別人都喜歡我的兒子,但我更喜歡我的女兒。從妳還沒出生開始,我就開始翻各種書,給妳起了很多名字。
因為這個原因,妳媽嘲笑妳。妳的兒子和女兒不壹定。妳女兒還沒出生就成了女奴。
雖然我遭受了妳媽的白眼,但我對此很開心。妳的未來也充滿了各種各樣的計劃。更是躍躍欲試。
但是妳媽媽在懷孕期間總是喜歡吃酸的食物