日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

C语言编写工资管理系统类似学生管理系统

發(fā)布時間:2023/12/18 windows 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言编写工资管理系统类似学生管理系统 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

C語言編寫工資管理系統(tǒng)類似學生管理系統(tǒng)

開始界面和菜單界面B

void start() //開始界面 { system("cls");//清屏 system("color 1E"); //設置文字顏色為黃色 背景色藍色 printf("\n\n\n\n\n\n"); printf("********************************************************************************"); printf("*****************************歡迎使用工資管理系統(tǒng)*****************************"); printf("*********************************************************************************\n\n\n\n\n"); printf("\t\t\t ***按任意鍵進入***\n"); }void menu() //菜單界面 { system("cls");system("color 1F");printf("***菜單***\n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 1 輸入 \n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 2 顯示 \n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 3 查找 \n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 4 刪除 \n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 5 添加 \n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 6 修改 \n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 7 統(tǒng)計 \n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 8 退出 \n\n");printf("說明:*如首次使用 尚未輸入數(shù)據(jù) 請先輸入數(shù)據(jù) \n *輸入的數(shù)據(jù)將自動保存 \n *再次選擇輸入功能時原數(shù)據(jù)將被覆蓋\n\n");}

主函數(shù)

void main()//主函數(shù){ int n,button;char a;start(); getch();menu(); do{printf("功能選擇(1--8):\n");scanf("%d",&n);if(n>=1&&n<=8){button=1;break;}else{button=0;printf("您輸入有誤,請重新選擇!");}}while(button==0);while(button==1){switch(n){ case 1: input();break;case 2: display();break;case 3: search();break;case 4:del();break;case 5: add();break;case 6:modify();break;case 7:sta();break;case 8:exit(0);break;default :break;}getchar();printf("\n");printf("按任意鍵繼續(xù)\n");getch();system("cls"); /*清屏*/menu(); /*調用菜單函數(shù)*/printf("功能選擇(1--8):\n");scanf("%d",&n);printf("\n");}}

函數(shù)頭和定義函數(shù)A

#include<stdio.h>
#include<windows.h>
#include<string.h>
#include<conio.h>
#define N 100
struct clerk
{
int num; //ID號
char name[20]; //姓名
int jbgz; //基本工資
int zwgz; //職務工資
int jt; // 津貼
int yb; //醫(yī)療保險
int gjj; /公積金/
int total; //總工資
}em[100];
void menu();
void input();
void save(int);
void display();
void del();
void add();
void search();
void search_num();
void search_name();
void modify();
void sta();
void start(); /定義各函數(shù)/

瀏覽函數(shù)

void display() /瀏覽函數(shù)/

{

int i,sum=0;

int m=load();

system(“cls”);

printf(“職工號 姓名 基本工資 職務工資 津貼 醫(yī)療保險 公積金 總工資 \n”);

for(i=0;i<m;i++) /m為輸入部分的職工人數(shù)/

{printf("\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total);

sum+=em[i].total;//計算員工總工資之和

}

printf("\n\n職工平均工資為:%d \n",sum/m);

}

錄入函數(shù)

void input() /錄入函數(shù)/

{

int i,m;

system(“cls”);

printf(“職工人數(shù)(1–100):\n”);

scanf("%d",&m);

for (i=0;i<m;i++)

{

printf("請輸入職工號: ");

scanf("%d",&em[i].num);

printf("請輸入姓名: ");

scanf("%s",&em[i].name);

getchar();

printf("請輸入基本工資: ");

scanf("%d",&em[i].jbgz);

printf("請輸入職務工資: ");

scanf("%d",&em[i].zwgz);

printf("請輸入津貼: ");

scanf("%d",&em[i].jt);

printf("請輸入醫(yī)療保險: ");

scanf("%d",&em[i].yb);

printf("請輸入公積金: ");

scanf("%d",&em[i].gjj);

em[i].total=((em[i].jbgz)+(em[i].zwgz)+(em[i].jt)-(em[i].yb)-(em[i].gjj));//計算總工資

printf("\n");//計算總工資

}

printf("\n創(chuàng)建完畢!\n");

save(m);//保存職工人數(shù)m

}

刪除函數(shù)

void del() /*刪除函數(shù) */

{

int m=load();

int i,j,n,t,button;

char name[20];

printf("\n 原來的職工信息:\n");

display(); //顯示刪除前的員工信息

printf("\n");

printf(“按姓名刪除:\n”);

scanf("%s",name);

for(button=1,i=0;button&&i<m;i++)//主函數(shù)中確定button==1時各函數(shù)才可以被調用

{

if(strcmp(em[i].name,name)==0)//按員工姓名查找到某員工 并調出其資料

{

printf("\n此人原始記錄為:\n");//顯示選定員工的信息

printf(“職工號 姓名 基本工資 職務工資 津貼 醫(yī)療保險 公積金 總工資 \n”);

printf("\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total);

printf("\n確定刪除 請按1,不刪除請按0\n");

scanf("%d",&n);

if(n==1)

{

for(j=i;j<m-1;j++)//從第i項開始 將后一項的各成員的值賦給前一項各對應的成員 完成對第i項的刪除

{

strcpy(em[j].name,em[j+1].name);

em[j].num=em[j+1].num;

em[j].jbgz=em[j+1].jbgz;

em[j].zwgz=em[j+1].zwgz;

em[j].jt=em[j+1].jt;

em[j].yb=em[j+1].yb;

em[j].gjj=em[j+1].gjj;

em[j].total=em[j+1].total;

}

. button=0;

}

}

}

if(!button)//button==0表明刪除已完成

m=m-1;//總員工數(shù)減少一人

else

printf("\n查無此人!\n");

printf("\n 刪除后的所有職工信息:\n");

save(m); //調用保存函數(shù)

display(); //調用瀏覽函數(shù)

printf("\n繼續(xù)刪除請按1,不再刪除請按0\n");

scanf("%d",&t);

switch(t)

{

case 1:del();break;

case 0:break;

default :break;

}

}

添加函數(shù)

void add()/添加函數(shù)/

{

FILE*fp;

int n;

int count=0;

int i;

int m=load();

printf("\n 原來的職工信息:\n");

display();

printf("\n");

fp=fopen(“emploee_list”,“a”);

printf(“請輸入想增加的職工數(shù):\n”);//確定要加入的職工數(shù)n

scanf("%d",&n);

for (i=m;i<(m+n);i++)//添加n名員工的信息

{

printf("\n 請輸入新增加職工的信息:\n");

printf("請輸入職工號: ");

scanf("%d",&em[i].num);

printf("\n");

printf("請輸入姓名: ");

scanf("%s",em[i].name);

getchar();

printf("請輸入基本工資: ");

scanf("\t%d",&em[i].jbgz);

printf("請輸入職務工資: ");

scanf("%d",&em[i].zwgz);

printf("請輸入津貼: ");

scanf("%d",&em[i].jt);

printf("請輸入醫(yī)療保險: ");

scanf("\t%d",&em[i].yb);

printf("請輸入公積金: ");

scanf("%d",&em[i].gjj);

em[i].total=( em[i].jbgz+ em[i].zwgz + em[i].jt- em[i].yb- em[i].gjj);//計算該員工總工資

printf("\n");

count=count+1;

printf(“已增加的人數(shù):\n”);

printf("%d\n",count);

}

printf("\n添加成功\n");

m=m+count;//將新添加員工的人數(shù)加到總員工人數(shù)中

printf("\n增加后的所有職工信息:\n");

printf("\n");

save(m);

display();//顯示添加后的信息

fclose(fp);

}

統(tǒng)計函數(shù)
void sta()//統(tǒng)計函數(shù)

{

int i;

int sum=0;

int a=0,b=0,c=0;

int m=load();

system(“cls”);//清屏函數(shù)

for(i=0;i<m;i++) /m為輸入部分的職工人數(shù)/

{sum+=em[i].total;

if((em[i].total)<=1500&&em[i].total>=1000)

{a++;}

if(em[i].total>1500&&em[i].total<=2000)

{b++;}

if(em[i].total>2000)

{c++;}

}

printf("\n\n工資總額為:%d\n",sum);

printf(“平均工資為:%d\n”,sum/m);

printf("\n基本工資、職務工資、津貼之和\n");

printf(“在1000-1500圓的員工占總員工的百分之%d\n”,a*100/m);

printf(“在1500-2000圓的員工占總員工的百分之%d\n”,b*100/m);

printf(“在2000圓以上的員工占總員工的百分之%d\n”,c*100/m);

printf("\n\n按任意鍵繼續(xù)");

getch();

menu();

}

修改函數(shù)

void modify() /修改函數(shù)/

{

int num;

char name[20];

int jbgz;

int zwgz;

int jt;

int yb;

int gjj;

int b,c,i,n,t,button;

int m=load();

system(“cls”);

printf("\n 原來的職工信息:\n");

display();

printf("\n");

printf(“請輸入要修改的職工的姓名:\n”);

scanf("%s",name);

for(button=1,i=0;button&&i<m;i++)

{

if(strcmp(em[i].name,name)==0)

{

printf("\n此人原始記錄為:\n");

printf(“職工號 姓名 基本工資 職務工資 津貼 醫(yī)療保險 公積金 總工資 \n”);

printf("\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total);

printf("\n確定 按1 ; 不修改請按0\n");

scanf("%d",&n);

if(n==1)

{

printf("\n需要進行修改的選項\n 1.職工號 2.姓名 3.基本工資 4.職務工資 5.津貼 6.醫(yī)療保險 7.公積金 8.返回上層\n");

printf(“請選擇序號1-8:\n”);

scanf("%d",&c);

if(c>8||c<1)

printf("\n選擇錯誤,請重新選擇!\n");

}

button=0;

}

}

if(button==1)

printf("\n查無此人\n");

do

{

switch? /因為當找到第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("%d",&jbgz);

em[i-1].jbgz=jbgz;

em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);

break;

case 4:printf("職務工資改為: ");

scanf("%d",&zwgz);

em[i-1].zwgz=zwgz;

em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);

break;

case 5:printf("津貼改為: ");

scanf("%d",&jt);

em[i-1].jt=jt;

em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);

break;

case 6:printf("醫(yī)療保險改為: ");

scanf("%d",&yb);

em[i-1].yb=yb;

em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);

break;

case 7:printf("公積金改為: ");

scanf("%d",&gjj);

em[i-1].gjj=gjj;

em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);

break;

case 8:modify();

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 繼續(xù)修改 ,不再修改請按0\n");

scanf("%d",&t);

switch(t)

{

case 1:modify();break;

case 0:break;

default :break;

}

}

查詢函數(shù)

void search()/查詢函數(shù)/

{

int t,button;

system(“cls”);//清屏

do

{

printf("\n按1 按工號查詢\n按2 按姓名查詢\n按3 回主菜單\n");

scanf("%d",&t);

if(t>=1&&t<=3)

{

button=1;

break;

}

else

{

button=0;

printf(“輸入錯誤”);

}

}

while(button==0);//回到查詢選擇項

while(button==1)

{

switch(t)//選擇查詢方式

{

case 1:printf(“按工號查詢\n”);search_num();break;

case 2:printf(“按姓名查詢\n”);search_name();break;

case 3:button=2,menu();

default:break;

}

}

}

void search_num()//按職工號查詢

{

int a;

int i,t;

int m=load();

printf(“請輸入要查找的職工號:\n”);

scanf("%d",&a);

for(i=0;i<m;i++)

if(a==em[i].num)

{

printf(“職工號 姓名 基本工資 職務工資 津貼 醫(yī)療保險 公積金 總工資 \n”);

printf("\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total);

break;

}

if(i==m)

printf("\n對不起,查無此人\n");
printf("\n");

printf(“返回查詢函數(shù)請按1,繼續(xù)查詢職工號請按2\n”);

scanf("%d",&t);

switch(t)

{

case 1:search();break;

case 2: break;

default:break;

}

}

void search_name()

{

char name[30];

int i,t;

int m=load();

printf(“請輸入姓名:\n”);

scanf("%s",name);

for(i=0;i<m;i++)

if(strcmp(em[i].name,name)==0)

{

printf("\n已找到,其記錄為:\n");

printf(“職工號 姓名 基本工資 職務工資 津貼 醫(yī)療保險 公積金 總工資 \n”);

printf("\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total);

}

if(i==m)

printf("\n\n");

printf("\n");

printf(“返回查詢菜單請按1,繼續(xù)查詢姓名請按2\n”);

scanf("%d",&t);

switch(t)

{

case 1:search();break;

case 2:break;

default :break;

}

}

保存文件

void save(int m) /保存文件函數(shù)/

{

int i;

FILE*fp; //聲明fp是指針,用來指向FILE類型的對象

if ((fp=fopen(“clerk_list”,“wb”))==NULL) //打開職工列表文件為空

{

printf (“打開失敗\n”);

exit(0);

}

for (i=0;i<m;i++) /將內存中職工的信息輸出到磁盤文件中去/
if (fwrite(&em[i],sizeof(struct clerk),1,fp)!=1)//寫入數(shù)據(jù)塊 &em[i]:是要輸出數(shù)據(jù)的地址 sizeof(struct clerk):獲取一個單體的長度 1:數(shù)據(jù)項的個數(shù) fp:目標文件指針

printf(“文件讀寫錯誤\n”);

fclose(fp);// 緩沖區(qū)內最后剩余的數(shù)據(jù)輸出到磁盤文件中,并釋放文件指針和有關的緩沖區(qū)

}

int load() /導入函數(shù) int型/

{

FILE*fp;

int i=0;

if((fp=fopen(“clerk_list”,“rb”))==NULL)

{

printf (“cannot open file\n”);

exit(0);

}

else

{

do

{

fread(&em[i],sizeof(struct clerk),1,fp); //讀取

i++;

}

while(feof(fp)==0); //檢測流上的文件結束符

}

fclose(fp);

return(i-1);//返回人數(shù)

}

總結

以上是生活随笔為你收集整理的C语言编写工资管理系统类似学生管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。