當前位置:編程學習大全網 - 編程語言 - c語言程序設計、工資管理系統

c語言程序設計、工資管理系統

#include <stdio.h>

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

}

  • 上一篇:給女孩編程打扮

    親愛的女兒:

    妳好。

    別人都喜歡我的兒子,但我更喜歡我的女兒。從妳還沒出生開始,我就開始翻各種書,給妳起了很多名字。

    因為這個原因,妳媽嘲笑妳。妳的兒子和女兒不壹定。妳女兒還沒出生就成了女奴。

    雖然我遭受了妳媽的白眼,但我對此很開心。妳的未來也充滿了各種各樣的計劃。更是躍躍欲試。

    但是妳媽媽在懷孕期間總是喜歡吃酸的食物

  • 下一篇:急求壹篇關於單片機應用的英文文獻及翻譯。3000左右,中英文均要。
  • copyright 2024編程學習大全網