/*用户数据输出模块*/ void output() {
short sel,flag,month; float min,max; do { do {
printf(\请选择您的列表方式:\\n\ printf(\全部清单\\n\ printf(\按月输出\\n\ printf(\按工资段输出\\n\ printf(\返回\\n\ scanf(\
}while(sel!=1&&sel!=2&&sel!=3&&sel!=0); head=open(); if(head==NULL) return; else
switch(sel) {
case 1:
printf(\ ******全部清单******\\n\ printf(TITLE); p1=head; do {
printf(DATA); p1=p1->next; }while(p1!=NULL); break; case 2: flag=0;
printf(\输入要查的月份:\ scanf(\
printf(\第%d月工资清单******\\n\ printf(TITLE); p1=head; do {
if(p1->month==month) {
21
printf(DATA); p1=p1->next; flag=1; } else
p1=p1->next; }while(p1!=NULL); if(flag==0)
printf(\没有该月清单\\n\ break; case 3: flag=0;
printf(\输入最低工资:\ scanf(\
printf(\输入最高工资:\ scanf(\
printf(\ ******%5.1f到%5.1f工资的名单******\\n\ printf(TITLE); p1=head; do {
if(p1->actual_pay>min&&p1->actual_pay printf(DATA); p1=p1->next; flag=1; } else p1=p1->next; }while(p1!=NULL); if(flag==0) printf(\没有该工资段的职工\\n\ break; case 0: break; } }while(sel!=0); } /*打开文件*/ PAY *open() { short n=1,read; fp=fopen(\ 22 if(fp==NULL) { printf(\无法打开档案文件!\ getch(); return NULL; } if((p1=p2=(PAY*)malloc(sizeof(PAY)))==NULL) { printf(\内存不足!\ getch(); return NULL; } read=fread(p1,sizeof(PAY),1,fp); if(!read) { printf(\文件读取出错!1\ getch(); return NULL; } if(p1->next==NULL) head=p1; else { do { if(n==1) head=p1; else p2->next=p1; n++; p2=p1; if((p1=(PAY*)malloc(sizeof(PAY)))==NULL) { printf(\内存不足!\ getch(); return NULL; } read=fread(p1,sizeof(PAY),1,fp); if(!read) { printf(\文件读取出错!2\ getch(); return NULL; } 23 }while(p1->next!=NULL); p2->next=p1; } return head; fclose(fp); } /*用户数据插入模块*/ PAY *insert() { PAY *p3=NULL; char sel; head=open(); if(head==NULL) return NULL; else do { printf(\请输入要插入的职工信息:\\n\ p3=(PAY*)malloc(sizeof(PAY)); if(p3==NULL) { printf(\内存不足,无法创建链表!\ getch(); } printf(\ 工号:\ scanf(\ getchar(); printf(\ 姓名:\ gets(p3->name); printf(\ 工资月份:\ scanf(\ printf(\ 基本工资,级别工资,职务津贴,工龄津贴,其他津贴,绩效奖励 :\\n\ scanf(\ printf(\ 房租扣款,公积金,水电费,其它扣款:\\n\ scanf(\ p3->should_pay=p3->gw+p3->jn+p3->zw+p3->zl+p3->jt+p3->yj; p3->rebate=p3->fz+p3->gj+p3->sd+p3->others; p3->actual_pay=p3->should_pay-p3->rebate; p1=head; while(p1!=NULL) { p2=p1; p1=p1->next; 24
相关推荐: