ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:113.33KB ,
资源ID:7454987      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7454987.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(教师工资管理系统.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

教师工资管理系统.docx

1、教师工资管理系统课 程 设 计 报 告课程名称 C语言课程设计 课题名称 教师工资管理系统 专 业 班 级 1191 学 号 姓 名 指导教师 2012年 7 月 1 日湖南工程学院课 程 设 计 任 务 书课程名称 C语言课程设计 课 题 教师工资管理系统 专业班级 自动化 学生姓名 学 号 指导老师 陈世清 黄 哲 审 批 陈世清 任务书下达日期 2012 年 6 月 25 日任务完成日期 2012年 7 月 1 日教师工资管理系统摘要:每个教师的信息为:教师号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计

2、扣款、实发工资。注:应发工资=基本工资+津贴+生活补贴;合计扣款=电话费+水电费+房租+所得税+卫生费+公积金;实发工资=应发工资 合计扣款。具体实现如下功能:A、教师信息处理(1) 输入教师信息(2) 插入(修改)教师信息:(3) 删除教师信息:(4) 浏览教师信息:提示:具体功能及操作参考题1。B、教师数据处理:(1) 按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据。(2) 教师实发工资、应发工资、合计扣款计算。提示:计算规则如题目。(3) 教师数据管理提示:输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件(4) 教师数据查

3、询:提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。(5) 教师综合信息输出提示:输出教师信息到屏幕。1.教师工资管理系统开发设计思想对于一个管理系统而言,主函数,函数以及成员函数是其重要组成部分。系统开发设计也是从该三方面入手,下面加以详细阐述。(1)主函数的设计在做一个系统开发前,一定要明确系统的功能以及功能实现时的输出(屏幕显示)。编写主函数的主要任务就是确定调用函数以及控制屏幕显示。确定调用的函数根据要求,该系统至少应该实现五种基本功能:输出工作信息,删除工资信息,修改工资信息,查找工资信息,列出所有信息。实现以上任何一种功能都必须要调用一个函数,根据标识符的定义规则,依次

4、命名为AddNew(),DoDelete(),DoMotify(),DoFind(),List().屏幕显示一个系统要想处理信息,首先必须要输出菜单及提示信息,通过用户在键盘上的输入来选择某个功能。本系统的屏幕显示如上。为实现该屏幕显示,输出语句完全可以放在main()函数中,但为了使主函数清晰明了,我设计了一个菜单函数Main()供其调用。(2)函数的设计编写函数的目的就是编写一个能实现某种功能的函数供主函数调用。根据C+面向对象的特点,函数也可以调用类中的成员函数。这样主函数,函数以及成员函数之间的层次分明,关系就清晰明了,不会有冗长的感觉。函数设计的主要任务是确定调用的成员函数以及屏幕显

5、示。确定调用的成员函数。不同的函数调用的成员函数是不尽相同的,基本上每个函数都有一个对应的成员函数,例如AddNew()与AddItem(),DoDelete()与RemoveItem(),DoFind()与Search(),DoMotify()与Replace(),List()与Worker.List()对应,这些成员函数都是共有函数,并且只被其对应函数唯一调用一次。当然,每个函数不可能只调用一个成员函数,例如AddNew()还调用了另外两个函数Input()和Actualpay()。屏幕显示编写函数也需要控制输出以及功能间的转换,从而每一个函数都需要有一个循环来控制其结束。结束的条件都是“

6、当输入的编号为0时结束”,循环语句有while也有dowhile,例如DoDelete()和DoFind()用的是dowhile, AddNew()用到的是while语句。(3)成员函数的设计。成员函数是系统的灵魂,因为所有的处理过程的细节都在成员函数中完成的。编写成员函数实际上就是一个算法的实现。成员函数的设计包括两方面内容:成员函数算法的实现和成员函数过程的实现。成员函数算法的实现工资管理系统不能单凭数组来处理数据,因为企业教师数是不确定的,并且数组在删除和查找某条信息是相当繁琐。所以该系统需要一个全新的数据处理方式链表。链表是最简单也是最常用的一种动态数据结构,它是对动态获得的内存进行组

7、织的一种结构。它不需要实现定义固定的长度,灵活性更强。链表是算法的关键。在添加新的数据时,可以表头插入也可以表尾插入,这两种插入方法决定了其他成员函数数据的处理。本系统中采取的是表尾插入的方法。在删除某信息时需要判断数据是在表头,表中还是表尾,如果删除的是在表中,则需要将删除的前后链表连接起来。总之,本系统大量运用了链表的5种基本操作:建立链表、链表的插入、删除、输入和查找。成员函数过程的实现算法确定后还需要控制屏幕显示、条件的判断以及调用其它成员函数。成员函数之间是可以相互调用的,例如成员函数List()就调用了成员函数ListCount()来统计当前链表信息的总数,同时还调用了成员函数Pr

8、int()来输出Worker_pay()的信息。整个过程中还有一个重要的指针,Worker_pay *Find(),它被Search(),RemoveItem()以及AddItem()所调用。其次成员函数中大量运用到了程序控制结构。例如,AddItem()中用if来判断是否是链表的表头,List()中用到了while语句来实现循环输出。最后屏幕上则需要显示一些完成了某种功能的标志,例如“成功删除编号为xx的信息”,“成功修改编号为xx的信息”等。(3)系统结构框架系统的结构框架主要是系统的流程图以及函数之间的调用关系,该图能描述系统清晰准确的表现出系统的功能实现。教师工资管理系统结构框架图添加

9、教师工资信息删除教师工资信息修改教师工资信息输出全体教师工资信息输出指定教师工资信息2教师工资管理系统功能及系统设计介绍该工资管理系统可以分为5个模块,每个模块都有其对应的功能以及其设计。下面对系统的功能和模块的实现进行简要分析。(1)输入模块输入模块的功能是创建存储教师工资信息的存储系统以及添加某教师的工资信息。其中的信息包括教师编号,基本工资,津贴,房租,交通费以及银行储蓄。为实现输入的功能,有两个方面的任务:定义结构体以及建立链表。 定义结构体 结构体的名称为Worker_pay,其中包含的信息有教师编号(num),基本工资(pay0),津贴(pay1),房租(pay2),交通费(pay

10、3),储蓄(pay4)以及个人所得税(tax),应扣数(deduct),实发数(actualpay)。定义一个pay的数组时为了简化变量的定义,使程序更有条理。 建立链表 通过从表尾插入的方法来建立链表,首先要先设立一个头指针(head)来存放链表的首地址。然后,不断用new运算符生成一个新的起点,将这个起点链入已有的链表尾部;如果链表中还没有结点,则这个新结点将是首结点,否则,将新结点的地址赋给原有链表的尾结点的next指针。(2)删除模块删除模块的功能是删除某教师的工资信息。当然,信息包括所有输入的信息,以及程序内部函数计算的信息例如个人所得税,实发数。从一个链表中删去一个结点,首先从表头

11、开始,找到被删结点后,只要改变链接关系即可,使被删结点的前去结点的指针域指向被删结点的后继结点。如果删去的结点是首结点,则将第二个结点的地址作为新的链表的首地址返回;如果删去的结点是链尾,则将被删结点的前驱作为新的链尾。(3)修改模块修改模块的功能是修改某教师的部分工资信息。要修改某教师的信息首先必须从表头开始搜寻,当找到指定的编号是,重新对其赋值即可。(4)查找模块查找模块的功能就是输出指定编号教师的工资信息。查找链表中的信息时比较简单的,在上面的模块中也用到了,主要是注意查找叶必须从表头开始。(5)列表模块列表模块的功能是输出当月全体教师的工资信息。列表模块就是依次输出链表中各结点的数据。

12、首先要知道链表头结点的地址,也就是head的值,然后设一个指针变量p,先指向第一个结点,输出p所指结点的数据与的值,然后使p后移一个结点,再输出其数据与的值;依链表顺序而行,依次输出相应结点数据域的值,直到链表的尾结点。(5)调试过程中遇到的主要问题及解决办法设计初期,先完成初步构思,写出主函数。然后对主函数所涉及的各个模块进行编程,将各个模块利用指针和链表联系起来。在环境中进行调试,应一边编译,一边调试,并且要一个模块一个模块的调试。直至此模块完全没有错误时,在进入下一模块的调试。不能直接输入全部的代码一次性调,这样错误会很多,并且不易找出和修改。在完成程序的编译链接后,要用多组数据进行审查

13、,确保做到系统无误。 设计过程中,不应忽视环境提示的警告,有时程序运行不正确与警告也有很大的关系。这次设计中遇到很多问题都是提示类型不匹配,这时就要认真检查前面的代码,及时改正并且认真仔细,杜绝此类错再次发生。 编写代码时应该少用全局变量,全局变量在编写试看似定义次数少,很方便。但全局变量出错几率较大,且不易修改,每次修改时都要全面考虑,所以应避免用到。 程序调试中碰到的错误可以使自己学到知识。养成良好的编程习惯,可以节省很多时间,避免很多不必要的错误。在编辑完整个程序后,进行调试阶段总是会数显head无定义。解决办法:再类的定义是忘记声明指针Worker_pay *head;。3总结经过一周

14、的C+课程实践,我对C+语言设计有了一个更深,更全面的了解,尤其体会到了C+面向对象操作对简化程序的重要作用。下面是我的几点体会:刚拿到课题时,我一脸的茫然,看到如此庞大的工程,不知如何下手。这个工资管理系统中教师子信息竟然包含15条,以前从来没有遇到过如此多的变量。和同学讨论很久好,我发现其实可以化繁为简的,信息中15条不一定全都要,因为其中本身就有重复的,例如津贴和补贴。并且可以有一个pay的数组来处理数据。所以做任何事情都必须要开动脑筋,积极思考,有时还要学会化繁为简。在编程时条理清晰是至关重要的。主函数,函数,成员函数之间的层次关系,调用关系一定要有一个全面的把握,尤其要体会类的封装性

15、。另外很重要的一点就是一定要对链表的五种操作熟练的掌握。在编译,链接,调试的过程中一定要有耐心。因为一个程序中会有很多小的错误,甚至有的问题要几个小时才能解决。遇到问题,一定要全面分析,有时候还要向同学请教。总得来说,编程时极需要耐心的。总之,C+课程设计实践为我们提供了一个综合运用所学知识,解决实际问题的平台,增强了我们实践动手的能力和工程实践能力,并且锻炼和培养了我们的自学能力,让我们对C+有了一个更全面的了解。4输入过程即截图:附源代码:/题目:工资管理系统/代码如下: #include #include #include struct teacherchar name30;char I

16、D10;int salary1,salary2,salary3;int dq();void show();void bc(struct teacher te);void add(); /添加教师信息void see();/查看教师信息void search();/ 查找教师信息void ghcz();/ 工号查找教师信息void xmcz();/ 姓名查找void del();/删除教师信息void xmsc();/按姓名删除教师信息void ghsc();/按工号删除教师信息void statistics();/统计教师工资void modify();/修改教师信息void ghxg();

17、/按工号修改void xmxg();/按姓名修改void reserve();/保存教师信息void back();/返回struct teacher te100; /所有的教师总数 int Number=0; /记录总的教师人数int main()int choose=0;Number=dq();while(true) show(); printf(tt=请选择:); scanf(%d,&choose); system(cls); switch(choose) case 0: exit(0);/退出 break; case 1: add(); back();/添加教师信息 break; ca

18、se 2: see(); back();/查看教师信息 break; case 3: search(); back();/ 查找教师信息 break; case 4: del(); back();/删除教师信息 break; case 5: statistics(); back();/统计教师工资 break; case 6: modify(); back();/修改教师信息 break; case 7:reserve(); back();/保存数据 break; default: printf(输入错误,重新输入!); break; fflush(stdin); getchar(); sys

19、tem(cls);int dq() FILE *fp=NULL; int i=0; fp=fopen(D:/teacher.txt,rb); while(fread(&tei,sizeof(struct teacher),1,fp) i+; fclose(fp); return i;void show()system(color 3F);printf(n);printf(t*欢迎使用教师工资管理系统*nn);printf(t*nn);printf(t1 添加教师信息n);printf(t2 查看教师信息n);printf(t3 查找教师信息n);printf(t4 删除教师信息n);print

20、f(t5 统计教师工资n);printf(t6 修改教师信息n);printf(t7 保 存 数 据n);printf(t0 退 出 系 统nn);printf(t*指导老师-陶陶*n);void bc(struct teacher *te)FILE *fp=NULL;fp=fopen(D:/teacher.txt,ab+);fwrite(te,sizeof(struct teacher),1,fp);fclose(fp);/添加教师信息void add() int numberTemp=0;int i=0,k;char z;struct teacher temp; for(i=0;i100;

21、i+) printf(输入第%d个教师信息n,Number+1); printf(姓名:); scanf(%s,temp.name); printf(工号:); scanf(%s,temp.ID); for(k=0;kNumber;k+)if(strcmp(temp.ID,tek.ID)=0) printf(有工号重复,请重新输入工号:); scanf(%s,temp.ID); printf(基本工资:);scanf(%d,&temp.salary1);printf(生活补贴:);scanf(%d,&temp.salary2);printf(津贴:);scanf(%d,&temp.salary

22、3);teNumber+=temp; /写入到数组bc(&temp);/写入到文件printf(继续?Y or Nn); scanf(%s,&z);if(z!=Y) break;printf(添加成功n);/查看职工信息void see() int ch; void scsa(); void prin(); prin(); scanf(%d,&ch); system(cls); switch(ch) case 1: scsa(); break; default:break; int k=0; double sum; printf(以下是全部教师n); printf(t姓名t工号t基本工资t生活

23、补贴t津贴t税后总工资n); while(kNumber) if(tek.salary1=1500&tek.salary14500) sum=(tek.salary1)*0.9+tek.salary2+tek.salary3; printf(t%st%st%dtt%dtt%dt%6.1fn,tek.name,tek.ID,tek.salary1,tek.salary2,tek.salary3,sum); k+; void prin()printf(t1 按工资排列n);printf(t*n);void scsa() int j,i; struct teacher teacher1; for(j

24、=0;j=Number;j+) for(i=0;iNumber-j;i+) if (tei.salary1tei+1.salary1) teacher1=tei; tei=tei+1; tei+1=teacher1; /查找教师信息void search() int n=0;printf(1 按姓名查找n);printf(2 按工号查找n); scanf(%d,&n);switch(n)case 1: xmcz();break;case 2: ghcz();break;default: printf(输入错误!n);break; void xmcz()/按姓名查找 char name30;in

25、t i=0;printf(请输入要查找教师姓名:);scanf(%s,name);system(cls);printf(t姓名t工号t基本工资t生活补贴t津贴n);for (i=0;iNumber;i+)if (strcmp(name,tei.name)=0)printf(t%st%st%dtt%dtt%dn,tei.name,tei.ID,tei.salary1,tei.salary2,tei.salary3);void ghcz()/按工号查找 char id10;int i=0;printf(请输入要查找教师工号:);scanf(%s,id);system(cls);printf(t姓名

26、t工号t基本工资t生活补贴t津贴n);for (i=0;iNumber;i+)if (strcmp(id,tei.ID)=0)printf(t%st%st%dtt%dtt%dn,tei.name,tei.ID,tei.salary1,tei.salary2,tei.salary3);/删除教师信息void del() int n=0;printf(1 按姓名删除n);printf(2 按工号删除n);scanf(%d,&n);switch(n)case 1: xmsc();break;case 2: ghsc();break;void xmsc()/按姓名删除 FILE *fp=NULL;char name30;int i=0;int j=0;printf(请输入要删除的教师姓名:);scanf(%s,name);for(i=0;iNumber;i+)if (strcmp(name,tei.name)=0)for (j=i;jNumber-1;j+)tej=tej+1;Number-;/将剩余数据写入文件 擦除以前的数据fp=fopen(D:/

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

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