C语言课程设计-工资管理系统 第3页
C语言课程设计-工资管理系统 第3页
while(bioskey(1)==0); /*查询是否压下了一个键*/
key=bioskey(0); /*返回下一个在键盘压下的键*/
key=key&0xff?key&0xff:key>>8; /*对所压的键进行判断*/
gotoxy(10,i+1);
textbackground(BLUE); /*设置背景颜色为蓝色*/
cprintf("%s",f[i]); /*输出菜单项*/
if(key==72) i=i==1?17:i-1; /*如压向上光标键↑,i减1,如已到第一行再上移,则到最后一行*/
if(key==80)i=i==17?1:i+1; /*如压向下光标键↓,i加1,如已到最后一行再下移,则到第一行*/
gotoxy(10,i+1); /*光标移动i的下一项*/
textbackground(LIGHTGREEN); /*将背景颜色设为浅绿*/
cprintf("%s",f[i]); /*输出菜单项*/
c=i-1; /*给代表菜单选项的整数赋值*/
}
textbackground(BLACK); /*设置背景颜色为黑色*/
window(1,1,80,25); /*恢复原窗口大小*/
return c; /*返回代表菜单选项的整数值*/
}
/*计算实发工资*/
void calc()
{
int x; /*行坐标*/
int i=0; /*记录数*/
float temp; /*临时变量扣款*/
SALARY *p; /*移动指针*/
clrscr(); /*清屏*/
p=First; /*从头指针开始*/
while(p!=NULL) /*当p不为空时,也就是有记录时,外循环控制换页*/
{
x=0;
clrscr();
gotoxy(1,3);
printf("***************************gongziguanli************************************"); /*输出标题*/
gotoxy(1,5);
printf("|--------------------------------------------------------------------------|");
gotoxy(1,6); /*下面输出字段标题*/
printf("| no | name | jbgz | koukuan | yfgz |shuijin | sfgz |");
while(p!=NULL) /*当p不为空时,也就是有记录时,内循环控制处理9条*/
{
gotoxy(1,7+x);
printf("|----------|----------------|--------|----------|--------|--------|--------|");
gotoxy(1,8+x);printf("|");
gotoxy(12,8+x);printf("|");
gotoxy(29,8+x);printf("|");
gotoxy(38,8+x);printf("|");
gotoxy(49,8+x);printf("|");
gotoxy(58,8+x);printf("|");
gotoxy(67,8+x);printf("|");
gotoxy(76,8+x);printf("|");
gotoxy(2,8+x);
printf("%-10s",p->no); /*输出编号*/
gotoxy(13,8+x);
printf("%-15s",p->name); /*输出姓名*/
gotoxy(30,8+x);
printf("%.2f",p->jbgz); /*输出基本工资*/
gotoxy(39,8+x);
scanf("%f",&temp); /*输入扣款*/
p->koukuan=temp; /*扣款字段赋值*/
p->yfgz=p->jbgz-p->koukuan; /*计算应发工资=基本工资-扣款*/
gotoxy(50,8+x);
printf("%.2f",p->yfgz); /*输出应发工资*/
gotoxy(59,8+x);
p->shuijin=(p->yfgz-1000)*fax(p->yfgz); /*否则按税率计算税金*/
printf("%.2f",p->shuijin); /*输出税金*/
gotoxy(68,8+x);
p->sfgz=p->yfgz-p->shuijin; /*计算实发工资*/
printf("%-8.2f",p->sfgz); /*输出实发工资*/
x+=2; /*行坐标下移两行*/
i++; /*记录数加1*/
if(i%9==0)break; /*记录数超过9条,跳出内循环*/
p=p->next; /*指针后移,处理下一条*/
}
gotoxy(1,7+x);
printf("|----------|----------------|--------|----------|--------|--------|--------|\n"); /*输出结束行*/
printf("Press any key congtinue...\n");
getch();
}
}
/*按编号查找记录*/
SALARY *find(char *no)
{
SALARY *p; /*定义移动指针*/
p=First; /*从头指针开始*/
while(p) /*当p不为空时*/
{
if(!strcmp(no,p->no))
return p; /*比较相等,查找成功,返回指针*/
p=p->next; /*不相等指针后移*/
}
printf("not found\n"); /*没有找到*/
return NULL; /*返回为空指针*/
}
/*删除结点*/
void delete()
{
SALARY *p; /*定义临时变量,p指向要删除的结点p*/
char s[11]; /*要删除结点的编号*/
clrscr(); /*清屏*/
printf("please deleted no\n"); /*提示输入信息*/
scanf("%s",s); /*输入要删除的职工编号*/
if((p=find(s))!=NULL) /*调用查找函数,如果找到做下面的处理*/
{
if(First==p) /*如果是第一个结点*/
{
First=p->next; /*将头指针指向其后继结点*/
if(First) /*如头指针不为空*/
First->prior=NULL; /*将头结点的前驱设为空*/
else
Last=NULL; /*否则头为空,尾也为空*/
}
else /*删除的不是第一个结点*/
{
p->prior->next=p->next; /*p的前驱的后继指向p原来的后继*/
751com.cn
void search()
{
SALARY *p; /*移动指针*/
char s[15]; /*保存姓名*/
clrscr(); /*清屏*/
printf("please enter name for search\n"); /*提示输入*/
scanf("%s",s); /*输入要查找人的姓名*/
p=First; /*移动指针从头指针开始*/
while(strcmp(p->name,s)&&p!=NULL) /*做比较判断*/
p=p->next; /*没找到,指针后移继续查找*/
if(p==NULL) /*指针为空,说明没有找到*/
printf("\nlist no %s SALARY\n",s); /*显示没找到信息*/
else
{
printf("\n\n"); /*换行*/
print(p); /*查找成功,调用输出函数输出指针p所指记录*/
}
}
/*插入结点*/
void insert()
{
SALARY *p,*info; /* info为新结点,p为新结点的后继*/
char s[11]; /*保存查找的姓名*/
float temp; /*临时变量*/
clrscr(); /*清屏*/
printf("please enter location before the no\n"); /*提示输入在哪个结点之前插入*/
scanf("%s",s); /*输入指定结点的编号*/
printf("\nplease new record\n"); /*提示输入记录*/
clrscr(); /*清屏*/
gotoxy(1,3); /*定位光标,按表格形式输入新结点信息*/
printf("**************gongziguanli************");
gotoxy(1,5);
printf("|------------------------------------|");
gotoxy(1,6);
printf("| no | name | jbgz | ");
gotoxy(1,7);
printf("|----------|----------------|--------|");
info=(SALARY *)malloc(sizeof(SALARY)); /*申请空间*/
if(!info)
上一页 [1] [2] [3] [4] [5] [6] 下一页