工资管理2.docx

上传人:b****5 文档编号:6472808 上传时间:2023-01-06 格式:DOCX 页数:19 大小:106.55KB
下载 相关 举报
工资管理2.docx_第1页
第1页 / 共19页
工资管理2.docx_第2页
第2页 / 共19页
工资管理2.docx_第3页
第3页 / 共19页
工资管理2.docx_第4页
第4页 / 共19页
工资管理2.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

工资管理2.docx

《工资管理2.docx》由会员分享,可在线阅读,更多相关《工资管理2.docx(19页珍藏版)》请在冰豆网上搜索。

工资管理2.docx

工资管理2

辽宁工业大学

C语言程序设计课程设计(论文)

 

题目:

工资管理

 

院(系):

软件学院

专业班级:

汽车电子技术093班

学号:

091408070

学生姓名:

刘一男

指导教师:

闫海龙

教师职称:

助教

起止时间:

2009.12.14至2009.12.26

 

课程设计(报告)任务及评语

院(系):

软件学院教研室:

软件教研室

学号

091408070

学生姓名

刘一男

专业班级

汽车电子技术093班

程序设计(报告)题目

工资管理

程序设计(报告)任务

程序设计的任务与要求:

(1)掌握C语言编程的基础知识。

(2)较熟练地编写C语言应用程序。

(3)了解C语言的常用标准函数、编程技巧、异常处理。

(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。

(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。

(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。

课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。

正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。

指导教师评语及成绩

成绩:

指导教师签字:

2009年12月31日

目录

第1章课程设计的目的与要求1

1.1课程设计目的1

1.2课程设计的实验环境1

1.3课程设计的预备知识1

1.4课程设计要求1

第2章课程设计内容2

2.1程序功能介绍2

2.2程序整体设计说明2

2.2.1设计思路2

2.2.2数据结构设计及用法说明2

2.2.3程序结构(流程图)3

2.2.4各模块的功能及程序说明4

2.2.5程序结果4

2.3程序源代码及注释5

第3章课程设计总结14

参考资料15

第1章课程设计的目的与要求

1.1课程设计目的

本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》课程后进行的一次全面的综合练习。

本课程设计的目的和任务:

1.巩固和加深学生对C语言课程的基本知识的理解和掌握

2.掌握C语言编程和程序调试的基本技能

3.利用C语言进行基本的软件设计

4.掌握书写程序设计说明文档的能力

5.提高运用C语言解决实际问题的能力

1.2课程设计的实验环境

硬件要求能运行Windows2000/XP操作系统的微机系统。

C语言程序设计及相应的开发环境。

1.3课程设计的预备知识

熟悉C语言及C语言开发工具。

1.4课程设计要求

1.分析课程设计题目的要求

2.写出详细设计说明

3.编写程序代码,调试程序使其能正确运行

4.设计完成的软件要便于操作和使用

5.设计完成后提交课程设计报告

第2章课程设计内容

2.1程序功能介绍

(1)能完成对工资的录入、修改。

(2)能统计工资,计算工资,并能根据工资数额进行排序。

(3)能查询工资,分类合计。

2.2程序整体设计说明

应用c语言程序设计知识对该工资管理程序进行编写,对问题整体了解的同时,进行分析,然后算法设计,应用所需算法对程序进行精心设计。

使知识点与问题相结合按部就班的编写,最后进行完善,做到系统运行时无漏洞。

2.2.1设计思路

录用职工信息,能够按主要数据项查询某职工的信息;对职工求平均工资并显示。

其所有文件作为工资数据的保存介质,能将所有输入的员工工资数据保存到文件中,并可选择继续输入或退出。

2.2.2数据结构设计及用法说明

工资管理系统是企、事业单位常见的计算机信息管理系统。

它的主要任务是对各种工资信息进行日常的管理,如工资信息的输入、查询、修改、增加、删除,迅速准确地完成各种工资信息的统计计算和汇总,快速打印出报表。

2.2.3程序结构(流程图)

2.2.4各模块的功能及程序说明

部门管理模块:

可进行部门浏览以及部门信息的添加,删除。

职工信息模块:

可查看职工信息和工资信息,对管理人员来说,可对职工信息进行更新,对职工来说查询自己的信息或是知道姓名和密码的其他职工的信息。

工资信息管理模块:

只对管理员有用,进行新工资的添加和旧工资删除,对信息进行及时的更新。

浏览员工信息模块:

只对管理员有用,浏览所有的职工的信息,工资的信息。

2.2.5程序结果

2.3程序源代码及注释

/*12.3.2源程序*/

/******头文件(.h)***********/

#include"stdio.h"/*I/O函数*/

#include"bios.h"/*ROM基本输入输出函数*/

#include"dos.h"/*dos接口函数*/

#include"conio.h"/*屏幕操作函数*/

#include"stdlib.h"/*其它说明*/

#include"string.h"/*字符串函数*/

#include"mem.h"/*内存操作函数*/

#include"ctype.h"/*字符操作函数*/

#include"alloc.h"/*动态地址分配函数*/

/****变量定义*******/

typedefstructz1/*定义数据结构*/

{

charno[11];/*编号*/

charname[15];/*姓名*/

floatjbgz;/*基本工资*/

floatkoukuan;/*扣款*/

floatyfgz;/*应发工资*/

floatshuijin;/*税金*/

floatsfgz;/*实发工资*/

structz1*prior;/*前驱指针*/

structz1*next;/*后继指针*/

}SALARY;/*结构体类型名*/

structz1*First;/*双链表头指针*/

structz1*Last;/*双链表尾指针*/

/******函数原型*********/

voidinit();/*初始化*/

voidcreate();/*创建链表*/

voidcalc();/*计算应发工资*/

voiddelete();/*删除*/

voidsearch();/*查找*/

voidsave();/*保存文件*/

voidload();/*读取文件*/

voidcomputer();/*计算所需各种票面张数*/

voidinsert();/*插入*/

voidappend();/*追加*/

voidcopy();/*复制文件*/

voidsort();/*排序*/

voidindex();/*索引*/

voidtotal();/*分类合计*/

voidlist();/*显示所有数据*/

voidprint(SALARY*p);/*输出单条记录*/

voiddisplay();/*随意逐条显示*/

floatfax(floatx);/*计算税金*/

intmenu_select();/*主菜单*/

/*******主函数开始**********/

main()

{

inti;

clrscr();

for(;;)

{

switch(menu_select())/*调用菜单函数返回一个整数值*/

{case0:

init();break;/*初始化*/case1:

create();break;/*输入数据创建双链表*/case2:

list();break;/*显示所有数据*/case3:

display();break;/*单条显示*/case4:

calc();break;/*计算实发工资*/case5:

search();break;/*查找职工信息数据*/case6:

delete();break;/*删除记录*/case7:

insert();break;/*插入记录*/case8:

append();break;/*追加记录*/case9:

save();break;/*保存文件*/case10:

load();break;/*读取文件*/case11:

copy();break;/*复制文件*/case12:

sort();break;/*按实发工资升序排序*/case13:

computer();break;/*计算所需票面数*/case14:

index();break;/*按职工号索引*/case15:

total();break;/*按部门求合计*/case16:

exit(0);/*退出*/

}

}

}

/*菜单函数,函数返回值为整型,代表所选的菜单项*/

menu_select()

{

char*f[]={/*定义菜单字符串数组*/

"**************MENU*************",/*菜单的标题行*/

"0.initlist",/*初始化双链表*/

"1.Enterlist",/*输入数据,创建双链表*/

"2.Listall\n",/*显示所有记录*/

"3.Displayrecordbystep",/*显示单条记录*/

"4.Calcthesalary",/*计算实发工资*/

"5.Searchrecordonname",/*查找记录*/

"6.Deletearecord",/*删除记录*/

"7.Insertrecordtolist",/*插入记录*/

"8.Appendrecordtofile",/*追加记录*/

"9.Savedatatothefile",/*保存文件*/

"10.Loaddatafromthefile",/*读取文件*/

"11.Copythefiletonewfile",/*复制文件*/

"12.Sortonsfgz",/*排序*/

"13.Computerticketnumber",/*计算所需票面数*/

"14.Indexonnumber",/*索引*/

"15.Totalonnumber",/*分类合计*/

"16.Quit"};/*退出*/

chars[80];

inti;

intkey=0;/*记录所压键值*/

intc=0;

gotoxy(1,25);/*移动光标*/

printf("pressanykeyentermenu......\n");/*压任意键进入主菜单*/

getch();

clrscr();/*清屏*/

textcolor(YELLOW);/*设置文本颜色为黄色*/

textbackground(BLUE);/*设置背景颜色为兰色*/

gotoxy(10,2);

putch(0xda);/*输出左上角边框┏*/

for(i=1;i<44;i++)

putch(0xc4);/*输出上边框水平线*/

putch(0xbf);/*输出右上角边框┓*/

for(i=3;i<22;i++)/*输出左右两边的垂直线*/

{

gotoxy(10,i);putch(0xb3);

gotoxy(54,i);putch(0xb3);

}

gotoxy(10,22);putch(0xc0);/*输出左上角边框┗*/

for(i=1;i<44;i++)

putch(0xc4);/*输出下边框水平线*/

putch(0xd9);/*输出右下角边框┛*/

window(11,3,53,21);/*制作显示菜单的窗口,大小根据菜单条数设计*/

clrscr();/*清屏*/

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

{

gotoxy(10,i+1);

cprintf("%s",f[i]);/*输出菜单项数组*/

}

i=1;

gotoxy(10,2);/*设置默认选项在第一项*/

textbackground(LIGHTGREEN);/*设置背景颜色为浅绿*/

cprintf("%s",f[1]);/*输出菜单项,表示选中*/

gotoxy(10,2);/*移动光标到菜单的第一项*/

while(key!

=13)/*所压键不是回车键时*/

/*输入数据,创建双链表*/

voidcreate()

{

intx;/*记录行坐标*/

inti;/*记录输入记录数*/

intflag=0;/*做结束标记*/

floattemp;/*定义临时变量*/

SALARY*info,*p;/*定义临时变量*/

if(First!

=NULL)

init();/*如果头指针为空,调用初始化函数*/

p=First;/*从头指针开始*/

for(;;)

gotoxy(1,8+x);

}

printf("|----------|----------------|--------|");/*输出结尾水平线*/

}

/*字符串输入和验证函数*/

inputs(char*s,intcount)

{

charp[255];

do{

scanf("%s",p);/*输入字符串*/

if(strlen(p)>count)printf("\ntoolong!

\n");/*进行长度校验,超过count值重输入*/

}while(strlen(p)>count);

strcpy(s,p);/*将输入的字符串拷贝到字符串s中*/

}

/*单条显示记录*/

voiddisplay()

{

intch;/*菜单选项字符*/

SALARY*p;/*定义临时指针*/

clrscr();/*清屏*/

p=First;/*从头指针开始*/

if(p==NULL)/*指针为空,即链表为空,返回主函数*/

}

/*输出指针所指结点信息*/

voidprint(SALARY*p)

{

if(p)/*如果指针不为空,则显示信息*/

{

clrscr();/*清屏*/

printf("\n\n\n");/*换行*/

printf("************************************SALARY************************************\n");/*输出标题信息*/

printf("|no|name|jbgz|koukuan|yfgz|shuijin|sfgz|\n");/*输出字段标题*/

printf("|----------|---------------|---------|---------|---------|---------|---------|\n");/*输出分割线*/

printf("|%-10s|%-15s|%9.2f|%9.2f|%9.2f|%9.2f|%9.2f|\n",p->no,p->name,

p->jbgz,p->koukuan,p->yfgz,p->shuijin,p->sfgz);/*输出结点信息*/

printf("***************************************end************************************\n");

/*根据应发工资,计算税率*/

floatfax(floatx)

{

floatf1;

if(x<1000)

return0;/*小于1000,返回0*/

switch((int)(x/1000))

{

case1:

f1=0.05;break;/*1000~1999,返回0.05*/

case2:

f1=0.1;break;/*2000~2999,返回0.1*/

case3:

f1=0.15;break;/*3000~3999,返回0.15*/

case4:

f1=0.2;break;/*4000~4999,返回0.2*/

/*保存文件*/

voidsave()

{

FILE*fp;/*定义指向文件的指针*/

SALARY*p;/*定义移动指针*/

charoutfile[10];/*保存输出文件名*/

clrscr();/*清屏*/

printf("Enteroutfilename,forexamplec:

\\f1\\te.txt:

\n");/*提示输入文件名格式信息*/

scanf("%s",outfile);

if((fp=fopen(outfile,"wb"))==NULL)/*为输出打开一个二进制文件*/

info->next=NULL;/*新信息的后继为空*/

info->prior=NULL;/*新信息的前驱为空*/

gotoxy(1,8);printf("|");

gotoxy(12,8);printf("|");

gotoxy(29,8);printf("|");

gotoxy(38,8);printf("|");

gotoxy(2,8);

inputs(info->no,10);/*输入编号并校验*/

gotoxy(13,8);

inputs(info->name,14);/*输入姓名并校验*/

gotoxy(30,8);

scanf("%f",&temp);/*输入基本工资*/

info->jbgz=temp;

info->koukuan=0;/*扣款为0*/

info->yfgz=0;/*应发工资为0*/

info->shuijin=0;/*税金为0*/

info->sfgz=0;/*实发工资为0*/

printf("|----------|----------------|--------|");

printf("\n\n\nEnterinfilename,forexamplec:

\\f1\\te.txt:

\n");/*提示输入文件名*/

scanf("%s",infile);

if((fp=fopen(infile,"ab"))==NULL)/*打开文件*/

/*文件复制*/

voidcopy()

printf("Enteroutfilename,forexamplec:

\\f1\\te.txt:

\n");/*提示输入目标文件名*/

scanf("%s",outfile);/*输入目标文件名*/

if((tfp=fopen(outfile,"wb"))==NULL)/*二进制写方式打开目标文件*/

{

printf("cannotopenoutputfile\n");

return;

}

while(!

feof(sfp))/*读文件直到文件尾*/

{

if(1!

=fread(p,sizeof(SALARY),1,sfp))

break;/*块读*/

fwrite(p,sizeof(SALARY),1,tfp);/*块写*/

}

fclose(sfp);/*关闭源文件*/

fclose(tfp);/*关闭目标文件*/

printf("youhavesuccesscopyfile!

!

!

\n");/*显示成功拷贝*/

}

/*排序*/

voidsort()

{

SALARY*p0,*p00,*p1,*p11,*p2;/*定义临时指针*/

inti=1;/*统计当前排第几个结点*/

clrscr();/*清屏*/

printf("\n\nstartsort....\n");/*开始排序*/

p1=p11=p2=First;

while(p1!

=NULL)/*当p1不为空时*/

{

p0=p1;/*待比较结点从p1开始*/

p2=p1;/*p2从当前待排序位置开始*/

while(p2->next!

=NULL)/*p2的后继不为空时*/

{

if(p0->sfgz>p2->next->sfgz)/*找当前最小结点*/

{

p00=p2;/*找到当前最小结点记录其前驱指针*/

p0=p2->next;/*记录当前最小值结点的指针p0*/

}p2=p2->next;/*指针后移*/

}

Last=p0;/*当前最小结点为尾结点*/

if(p1!

=p0)/*判断最小结点是否是当前排序位置,不是则作指针修改*/

{p00->next=p0->next;/*将p00的后继指向p0的后继*/p0->next->prior=p00;/*p0的后继的前驱为p00*/p0->next=p1;/*p0的后继指向下个排序位置p1*/p1->prior=p0;/*p1的前驱为p0*/if(i==1)

{First=p0;/*作头指针*/First->prior=NULL;/*头指针的前驱为空*/

}else/*不是第一个结点*/

{

p11->next=p0;/*p11的后继指向p0*/

p0->prior=p11;/*p0的前驱指向p11*/

}p11=p1=p0;/*因p0是排好序的最后一个结点,p1是下一个将要排序的位置,所以将p0赋值给p1和p11*/

}

i++;/*排好序的结点数加1*/

p1=p1->next;/*p1后移指向下一个待排序位置*/

}

printf("sortsucess!

!

!

\n");/*输出排序成功*/

}

/*索引*/

voidindex()

{

SALARY*p,*q,*t,*h1;/*定义临时指针*/

clrscr();/*清屏*/

printf("\n\nstartindex.....\n\n");/*显示开始索引*/

h1=First->next;/*将原表的头指针所指的下一个结点作头指针*/

First->next=NULL;/*第一个结点为新表的头结点*/

Last=First;/*尾指针等于头指针*/

while(h1!

=NULL)/*当原表不为空时,进行排序*/q=p;/*待排序点值大,应往后插,所以新表指针后移*/p=p->next;

}

if(p==q)/*p==q,说明待排序点值小,应排在首位*/

{

memcpy(sno,p->no,6);/*从编号中取出部门号*/

sno[6]='\0';/*做字符串结束标记*/

q=p->next;/*将指针指向待比较的记录*/

s1=p->sfgz;/*当前部门的实发工资初值作为该部门合计值的初值*/

whil

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1