学院教职工工资管理系统C语言程序设计_第1页
学院教职工工资管理系统C语言程序设计_第2页
学院教职工工资管理系统C语言程序设计_第3页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学院教职工工资管理系统C语言程序设计#include<st d i o.h>#i n c Iud e <st d I i b. h>#includ estr in g.h>#defi ne N 1OOint n;/*职工总数*/s t ruet t e acherc har nam e 20 ; / *姓名*/cha r s e x 5 ; /*性别*/i n t yea r , mou n t h;/* 出生年月*/i n t age; / *年龄*/cha r marr ige5;/头婚姻状况*/char addr 3 0 ;/*家庭住址* /char eng

2、ine er 2 0; /* 职称 */float wage;/*工资级别*/)t eacN;f loa t s u m =0;/ 总工资*/void s a ve () ;/*数据输入函数*/voi d a I I (); / *计算工资总额函数*/void ave 0 ; / *计算平均工资函数*/void so r t1 () ; /*排序函数*/void s ort2 () ; / *排序函数*/vo i d sam e 0 : /*找工资级别相同职工名单函数* /v o i d re v i we();/* 修改函数*/void f i n d () ;/*查询函数*/vo i d

3、p r int() ; /*数据输出函数*/void mai n ()char c h :pCntfCn”);pr int f (“/*欢O进O院(工0资0仍O理统*次* *沃n ”);p r i ntf (”* 次 *O迎O入O职O工(管(系O* * */' 门");printf("p r int f (” n 请选择你所需要的服务,按回车确认、p r i nt f (” n t ts:菱攵据输入 t n t ta:总工资tnt t v :平均工资tn tt g :按工资排序t n tt x :按姓名排序t n t tm:工资级别相同职工名单t n ttr :修改

4、tnttf :查询 tn t t e :退出tn");scanf ( " %c", &ch);while (ch! =' e ')swi t c h (ch)c a se1 s ' : save () ; b r e a k;c a se1 a a I I () ;br e ak;case 1 v1 : a ve () ; b r eak;case1 g r: sor 0 : b r e ak;ca s e1 x1 : s o rt2 () ;br e a k ;ca s e m' : same () ;b r eak;ca

5、s e 1 r ':r e v iwe () ;br e ak;case f : f i n d ();pr i ntf(“ n请再次选择你所需要的服务,按回车确认 n");p r intf ("n tts:数据输入 t ntt a :总工资 tnttv:平均工资tntt g :按工资排序t nttx:按姓名排 序t nttm :工资级别相同职工名单t nt tr:修改 t nt tf:查询 tntte:退出 t n");getch a r ();sc a n f ("%c", & c h):/*函数功能:输入职工信息*/vo

6、i d s a ve ()FILE * fp;i n t j=0, i;char c h 2;int n=0;p r i n t f ("请选择输入方式: n ");pr i nt f ("1:向管理系统重新输入数据,并删除原有数据n2:向系 统增加数据nH);sea nf C%d“, &i) ;/*输入选项*/if (i = = 1)if (f p=f ope n( ”C: ”,”wb+”)二二NULL)/* 判断文件能否打开*/pr i ntf ("can not open t h i s f i len");e x i t (0)

7、;pr i n t f ("你是否要输入职工信息?(是:y/否:n)");s canf ("%s", ch);w h i I e ( s t rcmp (ch, "y " ) = = 01 | st r cmp (ch, "Y " ) =0) / 沃判断是否要录入新信息*/pr i ntf (" n 姓名 t ");s canf ("%s", teac );p r i ntf ("n 性别(男:b/女:g) t");sc anf ( "

8、; %s", teacj. se x );pr i ntf ( " n 生日:年t“);sc a nf ("%d", &t ea c j year);pr i n tf (" n 月 t ");scant ("%d ”,&teac j mo u nth);while (tea c j mounthV 1 | |t e acj. m o u n t h >12)p r intf ("输入月份有误请重输");seanf ( " %d " , &teac j.

9、m o u n t h):pri n t f ("n 年龄 t");sc a nf ("%d", &t e ac j. age);p r i n t f ("n 婚否(是 y/否 n) t");sea nf ("%s", t eacj. marr i g e);p r i n tf (” n 地址 t ");sc a nf ("%s”,t e ac j. addr);pr i n t f ("n 职称 t ");sc a nf ( " %s " ,

10、 t eac j.eng i neer);pr in t f ( " n 工资t ");s c anf ( " %f' &t eac j, w age);fw r it e (&teacj, s i zeo f ( s truet teac h e r),1, fp);/*信息写入磁盘*/j+;pr intf ("你是否要输入职工信息?(是:y/否:n) n ");getc h ar ();scanf ( " %c", & c h);fclo s e (fp) ; /*关闭文件*/i f (i

11、=2)if (fp=f open (” c: ”,” r b ”)=NUI_L)/* 判断文件能否打开*/pr i n tf ("cannot open t hi s f i 1 enu);for (n=0; (fre a d (&t e ac n, s i z e of ( s truct t eac h e r ), 1, fp) =1) ;n+) cont i n ue;/*将职工信息读入内存*/ fc I ose (fp);pr intf ("你是否要增加职工信息?(是:y/否:n)"):s c a nf ( H %s' ch);whi l

12、e (s t rcmp (c h , "y ,r )=0 I I strcmp (ch, n YH) =0 ) /* 判断是否要录入新信息*/pr i ntf ("n 姓名t");scanf ( n % s t eac j+ n n am e );pr i nt f (" n 性别(男:b/女:g) t");sea nf (” s ", tea c j+n .sex);p r i ntf ("n 生日:年t");sea nf (” d", & t eac j+ n. year);pr i ntf

13、(” n 月 t”);sea nf ("% d&t eacj+ n . mo u n th);whi Ie(teac j +n mou n th 1 | | t eac j+n. mounth>12)pr intf ("输入月份有误请重输”);sc a nf ("% d ",& t e a c j . mo u n th);pr intf ( " n 年龄 t ");scanf ("%d", &t e ac j+n .age);prin t f (" n 婚否(是 y/否 n

14、 ) t");sc a n f ("%s", t eacj+ n . m a rr i ge);p r in t f ("n 地址 t ");seanf ("%s", teac j+ n .addr);pri ntf (”n 职称t n );s c anf("%s " , teacj+n. eng in e e r);pr i n tf ( " n 工资t");sc a n f ("%f ",&teac j +n. wage);/ / f wr i t e

15、(&teacj+n, sizeof ( s t r u ct teacher), 1 , fp); /*信息写入磁盘*/n+;p r i ntf ("你是否要输入职工信息?(是:y/否:n) n");getcha r ();s canf ("% c " , &ch):i f(f p=f openC'c :“," wb H ) =NUL L) /* 判断文件能否打 开*/pr i ntf ("can not open t hi s f i lenu);e x it(0);for (j=0 ; J < n ;

16、 j+)fwr it e (&te a c j , sizeo f (stru c t t eac h e r ) , 1, fp) ;/*信息写入磁盘*/f c I o s e (f p );/*函数功能:计算总工资*/v o id al I ()n =0;s u m=O ;if ( ( f p= f o penC'c: ”,b+“)二二NULL)p r intf ("can not open t his f i I e n ");ex i t(0);pr in tf (“姓名t性别t生日:年 月t年龄t婚否 t地 址t职称t工资n");for

17、(n=0; (f r e ad (& t ea c n,sizeof (st rue t t e a ch er) , 1,fp) =1) ;n+)/*将职工信息读入内存*/p r i ntf ( " %st% s t %d %d t %dt% s t%st t%s t %f n", te ac n.n ame, t e a c n .sex, t e ac n . year, t eac n. m o unth, t eac n age, t eac n . ma r r i ge, t e a c n. a d dr, t eacn. e ngi n e e r

18、, teacn .wage) ;/* 将职 工信息输出到屏幕上*/s um=sum+ t eacn. w a ge;c o nt i n u e;)pr i ntf ("总工资为%fn", s um);f c I ose (fp);)/*函数功能:计算平均工资*/void ave ()f I oa t aver;n =0;allO ;/*调用计算总工资函数得到总工资*/(float) (aver=sum/n) ; /*计算平均工资*/pr i n tf ("平均工资为%fn", ave r );/*函数功能:按工资由低到高排序*/void s o r (

19、)FILE *fp;i n t i, j;s t rue t te a cher temp; / *定义一个结构体变量一边在交换 顺序是暂时存放数据*/if ( ( f p=f o p en ( " c:H, ”a b +")=二NU L l_ ) /* 以只读方 式打开一个二进制文件判断能否打开*/pr i ntf ("can n ot o pen t h i s file n");ex i t (0);/wh i I e (! f e of ( f p) / *检查文件是否结束*/for (n = 0; (f r e a d (&tea c

20、n , s i zeo f (strue t tea c her),1 , fp) =1); n+)cont inu e ;/*将职工信息读入内存头/*排序*/f o r( i =0;i<n;i+)fo r (jO; j Vn- ( i+1) ; j+)if(teac j . wa g e >t eac j+ 1 wage)t e m p 二te a cj;teac j =te acj+ 1 ;t eacj+ 1 emp;pCnt() ;/*调用数据输出函数,输出结果*/f c lose (f p );)void sort2 ()F ILE *fp;i nt i, j;struc

21、t te a ch e r t em p ;/*定义一个结构体变量一边在交换顺序是暂时存放数据*/i f (f p= f o pen(”c:", ” ab+“)= = NULL) /*以只读方式 打开一个二进制文件判断能否打开*/pr i ntf ("ca n notopent h i s f i I en"):e x i t (0);)for (n=0; (f r ead (&t eac n ,si z eof (s true t t e a c h e r),1 , f p ) =1) ; n +)c on t inu e ;/*将职工信息读入内存次/

22、*排序* /for ( i =0;i<n; i +)for (j=0; j<n- (i+1);j+)i f (str c mp (t eacj name,teac j+1 n am e ) >0)temp二teac j:te a cj=t e a cj+1;t e acj+ 1 二tem p ;p r i n t ();/*调用数据输出函数,输出结果*/fc I ose (fp);)/*函数功能:找工资级别相同的职工名单*/void same ()FILE * f p;static int t = 0; /*定义一个静态变量*/i nt i,j, k,m, a, I:s tr

23、uet teache r tem p N; / *定义一个结构体数组存放工资级 别相同的职工名单決/i f ( f p=f ope n ( " c: ”,“ab+“)二二 NULL) /* 以读写方式 打开一个文本文件并判断能否打开*/pr i n t f (“ can no t open th i s file n");e x i t (0);)pr i ntf ("姓名t性别 t生日:年 月 t年龄t婚否t地址t职 称t工资nn);for ( n 二 0; ( f r e a d (&t eacn, s i zeo f (st r uct te a c

24、 h e r ),1 ,fp)= 1 ) : n+) /次将职工信息读入内存*/p r i ntf ("%st%st% d % d t %dt%st%st%st% f n”,t e a cn nam e , t ea c n . s ex, teac n. yea r , tea c n . m o unth, t eacn.age, teacn. marr ig e , t e a cn . addr, tea c n. engin e er, teacnwa g e) ; /*将职工信息输出到屏幕上 */c o n t in u e;)/*找相同*/f o r ( i =0; i

25、 <n; i +)m 二 t;a = 0;if (i>0)f or(l = O;l<t; I+)i f (t e aci . wa g e二二t e mpl wa g e)a+;if (a>0)conti n u e; /*说明该数已在上一级比较中存入t组中了不需再比结束本次循环* /elsefor (j= i; j<n; j+)if(t eac i. w a g e =t eacj . wage)t emp t + =tea c j ;t empp r i n tf (Hn工资级别为f的名单为: t”, t-1. wage);for (k=m; k <t;

26、k+)p r i n tf ("%);fcl o s e (f p);/*函数功能:删除不需要的职工信息*/void reviwe() /*删除函数*/st rue t t eacher t em p ;int i, j, k =0;ch a r n am e 20;char ch 2;int a;i f ( ( f p=f open(H c: " , nrb")=NULL)/* 判断文件能否 打开* /p r i ntf ("can not open t his f i le n n);ex it (0);for ( n = 0 ;

27、 (f r e a d (&te ac n ,sizeof(s true t t eacher),1 , fp)=1) ; n +)con t inu e ;/次将职工信息读入内存* /fc I o s e (fp);i f (n =0)prin t f ("没有记录 n");e I sep r intf ( ”请输入姓名n ");s c anf ("%s H , nam e );fo r (i = 0; i<n; i +)if (s t r cmp (nam e,t e a c i.na me) = = 0) / *找与要修改的 信息相同

28、的姓名次/p r i ntf ("该职工信息为: n");pr i nt f ("%s t%st% d t %d %d t %st% s t%s t %fn" , tea c i . name, t ea c i . sex, teac i year, teac i. mounth, teaci. age, teac i . marr ige, te a c i . a ddr, teaci. engineer ,t eaci. wa g e);)bre a k;pr i ntf ("是否删除? (y/n)");scanf (&quo

29、t;%s", ch);i f ( s t rcmp(ch, " y ")= 0 | I s trcm p (ch, " Y") =0) / * 判断是否删除*/p r i n t f ("已成功删除信息nn");f o r ( j =i; j <n; j+)str c p y ( t ea c j. ad d r, teacj + 1. add r );st rc p y (t e a cj. eng in e er, t eacj+1 eng in e e r );st r cp y (te a c j. marr

30、i g e, teac j +1. ma r r ige);st r cpy (t eacj name, t e ac j + 1.n a me);s t rep y (teac j .sex,teac j+1. sex);t eac j age= t eacj+1. age;teac j. ye a r 二teacj+1 year;t e ac j moun t h 二teacj + 1 m o u n th;break;if(fp=f open(nc: n , H w b '*) =NU LL)/* 判断文件能否 打开*/pr i n tf (" c an not ope

31、 n thi s f i Ien n );exit (0);for (j=0; j< n -1; j+)f wr i t e (&t eac j , s i z e of ( s t rue t t eac he r), 1, fp) ;/*信息写入磁盘* /f cl o s e (fp);)/ *函数功能:查询*/void find ()i nt i ;char n am e 20;char c h 2 ;i f (fphopen Cc:”,”ab+”)= = NULL)/*判断文件能否打开p r i nt f (" c an n ot open t h is f i le n ");ex i t (0);for (n 二 0 ; ( f read (&te ac n , size of (s true t t eacher), 1, f p )=1) ;n+)c o nt in u e ;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论