您的当前位置:首页正文

工资管理2

2022-04-28 来源:步旅网


辽 宁 工 业 大 学

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

题目: 工资管理

院(系): 软件学院 专业班级:汽车电子技术093班 学 号: 091408070 学生姓名: 刘一男 指导教师: 闫海龙 教师职称: 助 教 起止时间: 2009.12.14至2009.12.26

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

院(系):软件学院 教研室:软件教研室 学 号 程序设计(报告)题目 程序设计的任务与要求: (1)掌握C语言编程的基础知识。 (2)较熟练地编写C语言应用程序。 (3)了解C语言的常用标准函数、编程技巧、异常处理。 (5)联系已学过的内容,巩固所学的理论,增强独立工作能力。 (6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。 (7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。 课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。 091408070 学生姓名 刘一男 专业班级 汽车电子技术093班 工资管理 程序设计(报告)任务 指导教师评语及成绩 成绩: 指导教师签字: 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各模块的功能及程序说明 ........................................ 3 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 课程设计的实验环境

硬件要求能运行Windows 2000/XP操作系统的微机系统。C语言程序设计及相应的开发环境。

1.3 课程设计的预备知识

熟悉C语言及C语言开发工具。 1.4 课程设计要求

1. 分析课程设计题目的要求 2. 写出详细设计说明

3. 编写程序代码,调试程序使其能正确运行 4. 设计完成的软件要便于操作和使用 5. 设计完成后提交课程设计报告

1

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) 第2章 课程设计内容

2.1程序功能介绍

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

(2)能统计工资,计算工资,并能根据工资数额进行排序。 (3)能查询工资,分类合计。

2.2程序整体设计说明

应用c语言程序设计知识对该工资管理程序进行编写,对问题整体了解的同时,进行分析,然后算法设计,应用所需算法对程序进行精心设计。使知识点与问题相结合按部就班的编写,最后进行完善,做到系统运行时无漏洞。

2.2.1设计思路

录用职工信息,能够按主要数据项查询某职工的信息;对职工求平均工资并显示。其所有文件作为工资数据的保存介质,能将所有输入的员工工资数据保存到文件中,并可选择继续输入或退出。 2.2.2数据结构设计及用法说明

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

2

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) 2.2.3程序结构(流程图)

员工登录 N 修改用户和部门信息 N 登陆信息 增加,删除员工信息 系统管理 工资登陆 Y 修改/查询工资发放 N 打印工资报表 退出系统 图2.1 工资管理流程图

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

部门管理模块:可进行部门浏览以及部门信息的添加,删除。

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

工资信息管理模块:只对管理员有用,进行新工资的添加和旧工资删除,对信息进

3

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) 行及时的更新。

浏览员工信息模块:只对管理员有用,浏览所有的职工的信息,工资的信息。 2.2.5程序结果

4

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

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\" /*动态地址分配函数*/ /****变量定义*******/

typedef struct z1 /*定义数据结构*/ {

char no[11]; /*编号*/ char name[15]; /*姓名*/

float jbgz; /*基本工资*/ float koukuan; /*扣款*/

5

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) float yfgz; /*应发工资*/ float shuijin; /*税金*/ float sfgz; /*实发工资*/ struct z1 *prior;/*前驱指针*/ struct z1 *next;/*后继指针*/ }SALARY; /*结构体类型名*/

struct z1 *First; /*双链表头指针*/ struct z1 *Last; /*双链表尾指针*/ /******函数原型*********/ void init(); /*初始化*/ void create(); /*创建链表*/ void calc(); /*计算应发工资*/ void delete(); /*删除*/ void search(); /*查找*/ void save(); /*保存文件*/ void load(); /*读取文件*/

void computer(); /*计算所需各种票面张数*/ void insert(); /*插入*/ void append(); /*追加*/ void copy(); /*复制文件*/ void sort(); /*排序*/ void index(); /*索引*/

void total(); /*分类合计*/ void list(); /*显示所有数据*/

void print(SALARY *p); /*输出单条记录*/ void display(); /*随意逐条显示*/ float fax(float x); /*计算税金*/ int menu_select(); /*主菜单*/ /*******主函数开始**********/ main() {

int i; clrscr(); for(;;) {

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

case 0:init();break; /*初始化*/

case 1:create();break; /*输入数据创建双链表*/ case 2:list();break; /*显示所有数据*/ case 3:display();break; /*单条显示*/ case 4:calc();break; /*计算实发工资*/

case 5:search();break; /*查找职工信息数据*/ case 6:delete();break; /*删除记录*/

6

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) case 7:insert();break; /*插入记录*/ case 8:append();break; /*追加记录*/ case 9:save();break; /*保存文件*/ case 10:load(); break; /*读取文件*/ case 11:copy();break; /*复制文件*/

case 12:sort();break; /*按实发工资升序排序*/ case 13:computer();break; /*计算所需票面数*/ case 14:index();break; /*按职工号索引*/ case 15:total();break; /*按部门求合计*/ case 16:exit(0); /*退出*/

} } }

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

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

\"**************MENU*************\菜单的标题行*/ \" 0. init list\初始化双链表*/

\" 1. Enter list\输入数据,创建双链表*/ \" 2. List all \\n\显示所有记录*/

\" 3. Display record by step\显示单条记录*/ \" 4. Calc the salary\计算实发工资*/ \" 5. Search record on name\查找记录*/ \" 6. Delete a record\删除记录*/

\" 7. Insert record to list\插入记录*/ \" 8. Append record to file\追加记录*/ \" 9. Save data to the file\保存文件*/ \" 10. Load data from the file\读取文件*/ \" 11. Copy the file to new file\复制文件*/ \" 12. Sort on sfgz\排序*/

\" 13. Computer ticket number\计算所需票面数*/ \" 14. Index on number\索引*/

\" 15. Total on number\分类合计*/ \" 16. Quit\" }; /*退出*/ char s[80]; int i;

int key=0; /*记录所压键值*/ int c=0;

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

printf(\"press any key enter menu......\\n\");/*压任意键进入主菜单*/ getch();

clrscr(); /*清屏*/

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

7

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) 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\输出菜单项数组*/ } i=1;

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

textbackground(LIGHTGREEN);/*设置背景颜色为浅绿*/ cprintf(\"%s\输出菜单项,表示选中*/ gotoxy(10,2); /*移动光标到菜单的第一项*/ while(key!=13) /*所压键不是回车键时*/

/*输入数据,创建双链表*/ void create() {

int x; /*记录行坐标*/

int i; /*记录输入记录数*/ int flag=0; /*做结束标记*/

float temp; /*定义临时变量*/ SALARY *info,*p; /*定义临时变量*/ if(First!=NULL)

init();/*如果头指针为空,调用初始化函数*/ p=First; /*从头指针开始*/ for(;;)

gotoxy(1,8+x); }

8

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) printf(\"|----------|----------------|--------|\");/*输出结尾水平线*/ }

/*字符串输入和验证函数*/ inputs(char *s, int count) {

char p[255]; do{

scanf(\"%s\输入字符串*/

if(strlen(p)>count)printf(\"\\n too long! \\n\");/*进行长度校验,超过count值重输入*/

}while(strlen(p)>count);

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

/*单条显示记录*/ void display() {

int ch; /*菜单选项字符*/ SALARY *p; /*定义临时指针*/ clrscr(); /*清屏*/

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

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

/*输出指针所指结点信息*/ void print(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\");

9

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) /*根据应发工资,计算税率*/ float fax(float x) {

float f1; if(x<1000)

return 0; /*小于1000,返回0*/ switch((int)(x/1000)) {

case 1:f1=0.05;break; /*1000~1999,返回0.05*/ case 2:f1=0.1;break; /*2000~2999,返回0.1*/ case 3:f1=0.15;break; /*3000~3999,返回0.15*/ case 4:f1=0.2;break; /*4000~4999,返回0.2*/ /*保存文件*/ void save() {

FILE *fp; /*定义指向文件的指针*/ SALARY *p; /*定义移动指针*/

char outfile[10]; /*保存输出文件名*/ clrscr();/*清屏*/

printf(\"Enter outfile name,for example c:\\\\f1\\\e.txt:\\n\");/*提示输入文件名格式信息*/

scanf(\"%s\

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\输入基本工资*/ info->jbgz=temp;

info->koukuan=0; /*扣款为0*/ info->yfgz=0; /*应发工资为0*/ info->shuijin=0; /*税金为0*/ info->sfgz=0; /*实发工资为0*/

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

printf(\"\\n\\n\\nEnter infile name,for example c:\\\\f1\\\e.txt:\\n\"); /*提示输入文件名*/

10

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) scanf(\"%s\

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

/*文件复制*/ void copy()

printf(\"Enter outfile name,for example c:\\\\f1\\\e.txt:\\n\"); /*提示输入目标文件名*/

scanf(\"%s\输入目标文件名*/

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

printf(\"can not open output file \\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(\"you have success copy file!!!\\n\");/*显示成功拷贝*/ }

/*排序*/ void sort() {

SALARY *p0,*p00,*p1,*p11,*p2; /*定义临时指针*/ int i=1; /*统计当前排第几个结点*/ clrscr(); /*清屏*/

printf(\"\\n\\n start sort....\\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; /*指针后移*/

11

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) }

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(\"sort sucess!!!\\n\"); /*输出排序成功*/ }

/*索引*/

void index() {

SALARY *p,*q,*t,*h1; /*定义临时指针*/ clrscr();/*清屏*/

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

h1=First->next; /*将原表的头指针所指的下一个结点作头指针*/ First->next=NULL; /*第一个结点为新表的头结点*/ Last=First; /*尾指针等于头指针*/

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

}

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

12

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) memcpy(sno,p->no,6); /*从编号中取出部门号*/ sno[6]='\\0'; /*做字符串结束标记*/

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

s1=p->sfgz; /*当前部门的实发工资初值作为该部门合计值的初值*/ while(q!=NULL) /*内循环开始*/ {

memcpy(qno,q->no,6); /*读部门号*/ qno[6]='\\0'; /*做字符串结束标记*/ if(strcmp(qno,sno)==0) /*比较部门号*/

{ s1+=q->sfgz; /*累加实发工资*/

q=q->next; /*指针指向下一条记录*/

}

else break; /*不是一个部门的结束本次内循环*/

}

strcpy(unit[i].u,sno); /*将部门号写入部门结构体数组中*/ unit[i].s=s1; /*将实发工资写入部门结构体数组中*/ i++; /*部门数累加*/

if(q==NULL) /*如果q为空,跳出循环*/ break;

else p=q; /*否则,将q赋值给p*/

}

printf(\"\\n\\n**************Total table**************\\n\");/*输出合计标题*/

printf(\"\\n--no-------unit------------total---------\\n\"); /*输出序号、部门、合计字段标题*/

for(j=0;jprintf(\" %d %s %10.2f\\n\输出合计值*/

printf(\"----------------------------------------\\n\"); }

13

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) 第3章 课程设计总结

课程设计是培养学生综合运用所学知识 ,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。

选择什么等级的语言就是关键,最后我决定运用文件。文章设计有几个要求:要能录入新的文档,要能删除不需要的文档,要能按照关键字查找已有的文档,要能按照要求的顺序进行排序

通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。

在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中,不畏艰难,勇往直前!

最后,我感谢老师,感谢学校,能给我这次C语言程序设计实验的机会。我以后还要更加努力,更加努力的学好C语言,学好计算机。

好好学习,天天向上!

14

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) 参考资料

[1] 谭浩强.C程序设计题解与上机指导.北京:清华大学出版社.1992年. [2] 廖雷.C语言程序设计.北京:高等教育出版社.2006年.

[3] 贾学斌,宋海民.C语言程序设计.北京:中国铁道出版社.2007年. [4] 赵海廷.C语言程序设计.北京:人民邮电出版社.2005年.

[5] 何光明,杨静宇.C语言程序设计与应用开发.06年版.北京:清华大学出版社.2006年. [6]张强华. C 语言程序设计.北京. 人民邮电出版社.2001年. [7]徐新华. C 语言程序设计教程.北京. 清华大学出版社.1999年. [8]廖 雷. C语言程序设计.北京. 高等教育出版社.2006年. [9]方少卿. C语言程序设计. 北京. 中国铁道出版社.2007年.

[10] 谭浩强. C语言程序设计. (第二版).北京.清华大学出版社.2007年.

15

因篇幅问题不能全部显示,请点此查看更多更全内容