《工资管理》c语言程序设计_第1页
《工资管理》c语言程序设计_第2页
《工资管理》c语言程序设计_第3页
《工资管理》c语言程序设计_第4页
《工资管理》c语言程序设计_第5页
已阅读5页,还剩14页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、辽 宁 工 业 大 学 C语言程序设计 课程设计(论文)题目: 工资管理 课程设计(报告)任务及评语院(系):软件学院 教研室:软件教研室学 号101401020学生姓名李鑫专业班级电子商务101班程序设计(报告)题目工资管理程序设计(报告)任务程序设计的任务与要求:(1)掌握C语言编程的基础知识。(2)较熟练地编写C语言应用程序。(3)了解C语言的常用标准函数、编程技巧、异常处理。(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合

2、素质的提高起一个积极的推动作用。课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。指导教师评语及成绩成绩: 指导教师签字: 2011 年1月 4 日辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)目 录第1章 课程设计的目的与要求11.1 课程设计目的11.2 课程设计的实验环境11.3 课程设计的预备知识11.4 课程设计要求1第2章 课程设计内容22.1程序功能介绍22.2程序整体设计说明22.2.1设计思路32.2.2数据结构设计及用法说明构32.2.3程序结构42.2.4各模块的功能及程序说明7

3、2.2.5程序结果72.3程序源代码及注释8设计总结第3章 课程15参考资料16第1章 课程设计的目的与要求1.1 课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完程序设计语言(C)课程后进行的一次全面的综合练习。本课程设计的目的和任务: 1. 巩固和加深学生对C语言课程的基本知识的理解和掌握 2. 掌握C语言编程和程序调试的基本技能 3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力1.2 课程设计的实验环境硬件要求能运行Windows 2000/XP操作系统的微机系统。C语言程序设计及相应的开发环境。

4、1.3 课程设计的预备知识熟悉C语言及C语言开发工具。1.4 课程设计要求1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告第2章 课程设计内容2.1程序功能介绍工资管理系统对于决策者和管理者来说都至关重要,所以工资管理系统应该能够为用户提供充足的信息和快捷的查询手段,企事业单位可运行浮动管理模式,两种模式随时任意切换使用,且完全共享数据。系统以月工资表为对象,月与月之间结构、公式、报表、数据完全独立,工资表结构可自定义随意增减、可定义公式,可生成自定义格式文本或EXCEL文档,报表自

5、动生成功能,报表可任意增加、修改。工资表项目之间任意考贝数据。只要将计时、计件、加班数据输入,系统自动统计对应工资,带税率设置与所得税计算器。带一个通用数据采集器,适用于单价随时变化的情总。计件数据可对应生产单亦可不对应,能计算每生产单的成本偏差。本系统有人事管理、离退管理、人员调动、人事统计功能、成品管理、成品工序管理,生产单管理。其中任务批处理(包括:基本工资、职务工资、各种补助、应发工资、公积金、税金、实发工资)功能,将任务一次全部执行完毕,得到最后正确的工资表,防止遗漏。工资表能锁定存档,计件/计时/加班工资平衡试算,以核查数据正确性。2.2程序整体设计说明该程序输入职工工号和应发工资

6、,由系统对其完成的实发工资实现计算。其中职工信息包括职工号、姓名、性别、应发工资、税金、实发工资等(职工号不重复)。功能要求及说明:系统以菜单方式工作职工基本信息和应发工资的录入功能(用文件保存)从键盘输入数据,建立磁盘数据文件salary.txt职工工资信息浏览功能:从磁盘数据文件读取所有职工工资信息并显示输出到屏幕上;计算应发工资和查询的功能:计算公式为: 税金=应发工资*税率;实发工资=应发工资-税金;应发工资 税率 2.2.1设计思路在头文件中将所需包含的函要数进行输入,再进行变量定义,如:定义数据结构,有关工资管理需要输入的基本信息再用指针的方法将这些有关变量进行地址存储。再定义出工

7、资管理整个程序中所需要的函数原型;然后进行主函数的书写。在主函数中先设计一个有关工资管理系统的菜单,此菜单可以完成以下功能:调用菜单函数返回一个整数值、初始化、输入数据创建双链表、显示所有数据、单条显示、计算实发工资、查找职工信息数据、删除记录、插入记录、追加记录、保存文件、读取文件、复制文件、按实发工资升序排序、计算所需票面数、按职工号索引、按部门求合计、退出等16项功能。再对此程序进行输出时工作界面的处理,如:记录所压键值、压任意键进入主菜单、设置文本颜色为黄色、设置背景颜色为兰色、输出左上角边框、输出上边框水平线、输出右上角边框 、输出左右两边的垂直线等将输出模式进行点缀。之后进入核心编

8、辑:编辑目录中的选项计算方法,其中含有程序的初始化、输入数据创建双链表、显示所有数据、单条显示、计算实发工资、查找职工信息数据、删除记录、插入记录、追加记录、保存文件、读取文件、复制文件、按实发工资升序排序、计算所需票面数、按职工号索引、按部门求合计等子函数输出语句的编辑。2.2.2数据结构设计及用法说明构 1使用SWITCH语句编辑程序菜单;2使用getch,goto,for,put等语句编辑初始化,输入数据创建双链表;3使用if,while语句与指针编辑显示所有数据、单条显示。4使用if,while,switch,for语句编辑计算实发工资。5使用if,while,if-else,goto

9、,infor等语句编辑查找职工信息数据。6使用if,while,switch,for,infor,break等语句编辑删除记录,插入记录,追加记录,保存文件,读取文件,复制文件。7使用if,while,if-else,语句编辑职工工资排序。按职工号索引,按部门求合计。2.2.3程序结构Case0Case1StartMenu_selectCreate(breakList()breakDisplay()breakCalc()breakSearch()breakDelete()breakInsert()breakAppend()breakSave()breakLoad()breakSort()bre

10、akIndex()breakInit()breakTotal()breakExit()breakIntoMenuCase16Case15Case14Case12Case10Case9Case8Case4Case6Case5Case7Case3Case2图2.1为根据应发工资,计算税率流程图:使用if语句与switch语句嵌套共同编译图2.2为菜单目录流程图:使用SWITCH语句编辑。YesNOCase4Case3Case2Case1NoYesNoYesP=NullRecord is empty!Print(p)For(;)Empty!P=first0.Quit 1.Prior 2Next3.F

11、irst 4.LastPlease select 04Scanf(“%d”,&ch)Ch=0breakQuitP=P->prior;if(p=NULL)p=First;Break;P=P->prior;if(p=NULL)p=Last;Break;P=First;Break;P=Last;Break;Print(P) 图2.1图2.3为单条显示记录流程图:使用if-eles;if; 以及switch语句共同编辑。NoYesDefaultCase4Case3Case2Case1StartF1X<1000QUITX/1000F1=0.05;Break;F1=0.1;Bre

12、ak;F1=0.15;Break;F1=0.2;Break;F1=0.3;Break;Return f1 图2.3图2.4为字符串输入和验证函数流程图:使用do-while语句和if语句嵌套共同编译Can outCant outStartChar p225Scanf(“%s”,p)Strlen(p) >countStrlen(p)>countStrcop(s,p)Too long! long! 图2.42.2.4各模块的功能及程序说明工资管理系统提供以下功能:1主菜单界面设计。通过提示用户输入一个数字选项,调用相应的功能函数。2显示功能:完成全部职工记录的显示;3计算功能:完成全部

13、职工的应发工资、税款和实发工资的计算并显示;4修改功能:按工号修改一个职工的基本工资、奖金或扣款后重新计算职工的应发工资、税款和实发工资,并重新排序和显示;5查询功能:要求能分别按职工工号和姓名查询一条记录并显示;6追加功能:追加一条新职工记录,并重新排序和显示;7删除功能:按工号删除一条指定记录,并重新排序和显示;8排序功能:按职工实发工资降序排序;2.2.5程序结果图1 程序开始图2 选择图3 程序完成2.3程序源代码及注释主函数:/*计算实发工资*/void calc() int x; /*行坐标*/ int i=0; /*记录数*/ float temp; /*临时变量扣款*/ SAL

14、ARY *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 |&qu

15、ot;); 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);p

16、rintf("|");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(&qu

17、ot;%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); /*输出

18、税金*/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 con

19、gtinue.n"); getch(); /*根据应发工资,计算税率*/float fax(float x) float f1; if(x<1000) return 0; /*小于1000,返回0*/ switch(int)(x/1000) case 1:f1=0.05;break; /*10001999,返回0.05*/ case 2:f1=0.1;break; /*20002999,返回0.1*/ case 3:f1=0.15;break; /*30003999,返回0.15*/ case 4:f1=0.2;break; /*40004999,返回0.2*/ default

20、:f1=0.3;break; /*5000以上,返回0.3*/ return f1;/*文件复制*/void copy() char outfile10,infile10; /*保存源文件名和目标文件名*/ FILE *sfp,*tfp; /*定义指向源文件和目标文件的指针*/ SALARY *p=NULL; /*定义临时指针,暂存读出的记录*/ clrscr(); printf("Enter infile name,for example c:f1te.txt:n"); scanf("%s",infile); /*输入源文件名*/ if(sfp=fop

21、en(infile,"rb")=NULL) /*二进制读方式打开源文件*/ printf("can not open input filen"); /*显示不能打开文件信息*/ return; /*返回*/ printf("Enter outfile name,for example c:f1te.txt:n"); /*提示输入目标文件名*/ scanf("%s",outfile); /*输入目标文件名*/ if(tfp=fopen(outfile,"wb")=NULL) /*二进制写方式打开目

22、标文件*/ 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(

23、) SALARY *p0,*p00,*p1,*p11,*p2; /*定义临时指针*/ int i=1; /*统计当前排第几个结点*/ clrscr(); /*清屏*/ printf("nn 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)

24、/*找当前最小结点*/ 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

25、; /*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");

26、 /*输出排序成功*/第3章 课程设计总结课设对我们来说是一个很陌生的词,不知从何下手,也不知道课程设计应用什么知识,但是经过一段时间的学习我对课程设计有了一定的了解,对C语言也产生一 些爱好。有如下的知识收获:并且通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,何况我所掌握的C语言知识还只是皮毛,对C语言的深层知识还没有掌握,所以我发现只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为今后的学习、工作服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针,链表,各种语句的衔接通过这次课程设计之后,等于让我把前面所学过的知识又重新温故了一遍,的确对我今后的学习与工作起到了很大的帮助。并且通过这次课程设计,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉

温馨提示

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

评论

0/150

提交评论