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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

职工工资文件

發(fā)布時(shí)間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 职工工资文件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一.前言

C語(yǔ)言譚書中文件一章,不錯(cuò)的題目。

二.題目

9.有一磁盤文件employee,內(nèi)存放職工的數(shù)據(jù)。每個(gè)職工的數(shù)據(jù)包括職工姓名、職工號(hào)、性別、年齡、住址、工資、健康狀況、文化程度。今要求將職工名、工資的信息單獨(dú)抽出來(lái)另建一個(gè)簡(jiǎn)明的職工工資文件。

由于一開始沒有employee文件,需要自己創(chuàng)建一下:

#include<stdio.h> #include<stdlib.h> typedef struct{char name[20];//職工姓名int num;//職工號(hào)char gender[10];//性別int age;char address[30];//住址 int wage;char h_condition[10];//健康狀況 char edu_degree[10];//文化程度 }Staff;int main(){//創(chuàng)造一個(gè)employee文件 Staff staffs[4];FILE*fp;int i;int count=0;Staff*p=staffs;if((fp=fopen("C:\\Users\\17604\\Desktop\\employee.dat","wb"))==NULL){printf("打開文件失敗!!");exit(0); }//從鍵盤輸入職工數(shù)據(jù) for(p=staffs;p<staffs+4;p++){count++;printf("請(qǐng)輸入第%d個(gè)職工的職工號(hào),姓名,性別,年齡,住址,工資,健康狀況,文化程度:\n",count);scanf("%d%s%s%d%s%d%s%s",&p->num,p->name,p->gender,&p->age,p->address,&p->wage,p->h_condition,p->edu_degree);} // fclose(fp);//打印職工數(shù)據(jù)printf("職工號(hào) 姓名 性別 年齡 住址 工資 健康狀況 文化程度:\n");for(p=staffs;p<staffs+4;p++){printf("%-4d%8s%4s%6d%10s%6d%10s%10s\n",p->num,p->name,p->gender,p->age,p->address,p->wage,p->h_condition,p->edu_degree);} //寫入 p=staffs;for(i=0;i<4;i++){if(fwrite(p,sizeof(Staff),1,fp)!=1){printf("寫入文件失敗!!\n");}p++; }fclose(fp);return 0; }

程序執(zhí)行效果圖:(在我的計(jì)算機(jī)中C:\Users\17604\Desktop\employee.dat,文件就生成了)

可以開始干題目了!!!

#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct{char name[20];//職工姓名int num;//職工號(hào)char gender[10];//性別int age;char address[30];//住址 int wage;char h_condition[10];//健康狀況 char edu_degree[10];//文化程度 }Staff;typedef struct{char name[20];//職工姓名int wage; } StaffWage; int main(){Staff staffs[4];StaffWage staffwages[4];StaffWage*pt=staffwages;FILE*fp;int i;Staff*p=staffs;if((fp=fopen("C:\\Users\\17604\\Desktop\\employee.dat","rb"))==NULL){printf("打開文件失敗!!");exit(0); }//讀入 p=staffs;for(i=0;i<4;i++){if(fread(p,sizeof(Staff),1,fp)!=1){printf("讀入文件失敗!!\n");}p++; }fclose(fp);//打印職工數(shù)據(jù)同時(shí)給職工工資表賦值 printf("職工號(hào) 姓名 性別 年齡 住址 工資 健康狀況 文化程度:\n");for(p=staffs;p<staffs+4;p++){printf("%-4d%8s%4s%6d%10s%6d%10s%10s\n",p->num,p->name,p->gender,p->age,p->address,p->wage,p->h_condition,p->edu_degree);strcpy(pt->name,p->name);pt->wage=p->wage;pt++; } //將職工工資表寫入文件 if((fp=fopen("C:\\Users\\17604\\Desktop\\employeeWage.dat","wb"))==NULL){printf("打開文件失敗!!");exit(0); }pt=staffwages;for(i=0;i<4;i++){if(fwrite(pt,sizeof(StaffWage),1,fp)!=1){printf("寫入文件失敗!!\n");}pt++; }fclose(fp);return 0; }

效果圖:

驗(yàn)證,由于是二進(jìn)制文件,用記事本無(wú)法查看,所以寫一個(gè)程序查看一下是否正確(是否為題目所求)

#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct{char name[20];//職工姓名int num;//職工號(hào)char gender[10];//性別int age;char address[30];//住址 int wage;char h_condition[10];//健康狀況 char edu_degree[10];//文化程度 }Staff;typedef struct{char name[20];//職工姓名int wage; } StaffWage; int main(){Staff staffs[4];StaffWage staffwages[4];StaffWage*pt=staffwages;FILE*fp;int i;Staff*p=staffs;if((fp=fopen("C:\\Users\\17604\\Desktop\\employee.dat","rb"))==NULL){printf("打開文件失敗!!");exit(0); }//讀入 p=staffs;for(i=0;i<4;i++){if(fread(p,sizeof(Staff),1,fp)!=1){printf("讀入文件失敗!!\n");}p++; }fclose(fp);//打印職工數(shù)據(jù)同時(shí)給職工工資表賦值 printf("職工號(hào) 姓名 性別 年齡 住址 工資 健康狀況 文化程度:\n");for(p=staffs;p<staffs+4;p++){printf("%-4d%8s%4s%6d%10s%6d%10s%10s\n",p->num,p->name,p->gender,p->age,p->address,p->wage,p->h_condition,p->edu_degree);strcpy(pt->name,p->name);pt->wage=p->wage;pt++; } //將職工工資表寫入文件 if((fp=fopen("C:\\Users\\17604\\Desktop\\employeeWage.dat","wb"))==NULL){printf("打開文件失敗!!");exit(0); }pt=staffwages;for(i=0;i<4;i++){if(fwrite(pt,sizeof(StaffWage),1,fp)!=1){printf("寫入文件失敗!!\n");}pt++; }fclose(fp);return 0; }

效果圖:

附加題:
10.從第9題的“職工工資文件”中刪去一個(gè)職工的數(shù)據(jù),再存回原文件。

#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct{char name[20];//職工姓名int wage; } StaffWage;int main(){FILE*fp;int i;StaffWage staffwages[4];StaffWage*pt=staffwages;char temp[20];//存放要?jiǎng)h除的職工名int position;//記錄位置 if((fp=fopen("C:\\Users\\17604\\Desktop\\employeeWage.dat","rb"))==NULL){printf("打開文件失敗!!");exit(0); }pt=staffwages;for(i=0;i<4;i++){if(fread(pt,sizeof(StaffWage),1,fp)!=1){printf("讀入文件失敗!!\n");}pt++; }fclose(fp);//打印數(shù)據(jù)printf("原始數(shù)據(jù):\n"); printf("姓名 工資:\n"); for(pt=staffwages;pt<staffwages+4;pt++){printf("%-6s%-4d\n",pt->name,pt->wage);}printf("請(qǐng)輸入你要?jiǎng)h除的職工的職工名:\n");scanf("%s",temp);pt=staffwages; for(i=0;i<4;i++){if(strcmp((pt+i)->name,temp)==0){break;//找了要?jiǎng)h除的職工 }}position=i;//刪除for(i=position;i<3;i++){staffwages[i]=staffwages[i+1];} //打印數(shù)據(jù)printf("刪除后數(shù)據(jù):\n"); printf("姓名 工資:\n"); for(pt=staffwages;pt<staffwages+3;pt++){printf("%-6s%-4d\n",pt->name,pt->wage);}if((fp=fopen("C:\\Users\\17604\\Desktop\\employeeWage.dat","wb"))==NULL){printf("打開文件失敗!!");exit(0); }pt=staffwages;for(i=0;i<4;i++){if(fwrite(pt+i,sizeof(StaffWage),1,fp)!=1){printf("寫入文件失敗!!\n");}}fclose(fp);return 0; }

效果圖:

再使用上述程序查看文件效果圖:

后記:
由于今天時(shí)間有點(diǎn)匆忙,任務(wù)有點(diǎn)多,擼碼,沒有考慮很多細(xì)節(jié)。只是為完成和實(shí)現(xiàn)。代碼寫的有點(diǎn)死。很多代碼塊可以寫成函數(shù)模塊。
呃呃。。對(duì)就是這樣。頭疼…擼碼擼的有點(diǎn)多。

總結(jié)

以上是生活随笔為你收集整理的职工工资文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。