2022年教师工资管理系统王晋瑞张大漠 .pdf

上传人:Che****ry 文档编号:25431534 上传时间:2022-07-11 格式:PDF 页数:24 大小:268.24KB
返回 下载 相关 举报
2022年教师工资管理系统王晋瑞张大漠 .pdf_第1页
第1页 / 共24页
2022年教师工资管理系统王晋瑞张大漠 .pdf_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《2022年教师工资管理系统王晋瑞张大漠 .pdf》由会员分享,可在线阅读,更多相关《2022年教师工资管理系统王晋瑞张大漠 .pdf(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、中南大学本科生课程设计 (实践)任务书、设计报告(C+应用基础课程设计)题目工资管理系统学生学号学生姓名指导教师学院专业班级指导老师计算机基础教案实验中心2011 年 09 月 08 日精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 24 页教师工资管理系统摘要:每个教师的信息为:教师号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资。注:应发工资 =基本工资 +津贴+生活补贴;合计扣款=电话费+水电费 +房租+所得税 +卫生费 +公积金;实

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

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

4、次命名为AddNew(),DoDelete(),DoMotify(),DoFind(),List(). 屏幕显示精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 24 页一个系统要想处理信息,首先必须要输出菜单及提示信息,通过用户在键盘上的输入来选择某个功能。本系统的屏幕显示如上。为实现该屏幕显示,输出语句完全可以放在main() 函数中,但为了使主函数清晰明了,我设计了一个菜单函数Main() 供其调用。(2) 函数的设计编写函数的目的就是编写一个能实现某种功能的函数供主函数调用。根据 C+ 面向对象的特点,函数也可以调用类中的成员函数

5、。这样主函数,函数以及成员函数之间的层次分明,关系就清晰明了,不会有冗长的感觉。函数设计的主要任务是确定调用的成员函数以及屏幕显示。确定调用的成员函数。不同的函数调用的成员函数是不尽相同的,基本上每个函数都有一个对 应 的 成 员 函 数 , 例 如AddNew() 与AddItem(),DoDelete()与RemoveItem(),DoFind() 与 Search(),DoMotify()与 Replace(),List()与Worker.List()对应,这些成员函数都是共有函数,并且只被其对应函数唯一调用一次。当然,每个函数不可能只调用一个成员函数,例如AddNew()还调用了另外两

6、个函数Input ()和 Actualpay()。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 24 页屏幕显示编写函数也需要控制输出以及功能间的转换,从而每一个函数都需要有一个循环来控制其结束。结束的条件都是“当输入的编号为0 时结束”,循环语句有while 也有 dowhile ,例如 DoDelete() 和 DoFind() 用的是 dowhile, AddNew() 用到的是 while 语句。(3)成员函数的设计。成员函数是系统的灵魂,因为所有的处理过程的细节都在成员函数中完成的。编写成员函数实际上就是一个算法的实现。成员

7、函数的设计包括两方面内容:成员函数算法的实现和成员函数过程的实现。成员函数算法的实现工资管理系统不能单凭数组来处理数据,因为企业教师数是不确定的,并且数组在删除和查找某条信息是相当繁琐。所以该系统需要一个全新的数据处理方式链表。链表是最简单也是最常用的一种动态数据结构,它是对动态获得的内存进行组织的一种结构。它不需要实现定义固定的长度,灵活性更强。链表是算法的关键。在添加新的数据时,可以表头插入也可以表尾插入,这两种插入方法决定了其他成员函数数据的处理。本系统中采取的是表尾插入的方法。在删除某信息时需要判断数据是在表头,表中还是表尾,如果删除的是在表中,则需要将删除的前后链表连接起来。总之,本

8、系统大量运用了链表的5 种基本操作:建立链表、链表的插入、删除、输入和查找。成员函数过程的实现算法确定后还需要控制屏幕显示、条件的判断以及调用其它成员函数。成员函数之间是可以相互调用的,例如成员函数List()就调用了成员函数 ListCount()来统计当前链表信息的总数,同时还调用了成员函数Print ()来输出Worker_pay() 的信息。整个过程中还有一个重要的指针,Worker_pay *Find(),它被 Search() ,RemoveItem()以及 AddItem() 所调用。其次成员函数中大量运用到了程序控制结构。例如,AddItem() 中用精选学习资料 - - -

9、- - - - - - 名师归纳总结 - - - - - - -第 5 页,共 24 页if来判断是否是链表的表头,List()中用到了while语句来实现循环输出。最后屏幕上则需要显示一些完成了某种功能的标志,例如“成功删除编号为 xx 的信息”,“成功修改编号为xx 的信息”等。(3)系统结构框架系统的结构框架主要是系统的流程图以及函数之间的调用关系,该图能描述系统清晰准确的表现出系统的功能实现。教师工资管理系统结构框架图教师工资管理系统输出主菜单输入选项添加教师工资信息删除教师工资信息修改教师工资信息输出指定教师工资信息输出全体教师工资信息AddNew() DoDelete() DoMo

10、tify() DoFind() List() AddItem() RemovrItem() Replace() Search() .List() 退出精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 24 页2 教师工资管理系统功能及系统设计介绍该工资管理系统可以分为5 个模块,每个模块都有其对应的功能以及其设计。下面对系统的功能和模块的实现进行简要分析。(1)输入模块输入模块的功能是创建存储教师工资信息的存储系统以及添加某教师的工资信息。其中的信息包括教师编号,基本工资,津贴,房租,交通费以及银行储蓄。为实现输入的功能,有两个方面的任务

11、:定义结构体以及建立链表。定义结构体结构体的名称为Worker_pay, 其中包含的信息有教师编号(num ),基本工资(pay0),津贴 (pay1),房租 (pay2),交通费 (pay3),储蓄(pay4)以及个人所得税 (tax),应扣数( deduct ), 实发数 (actualpay)。定义一个pay 的数组时为了简化变量的定义,使程序更有条理。建立链表通过从表尾插入的方法来建立链表,首先要先设立一个头指针(head)来存放链表的首地址。然后,不断用new 运算符生成一个新的起点,将这个起点链入已有的链表尾部;如果链表中还没有结点,则这个新结点将是首结点,否则,将新结点的地址赋给

12、原有链表的尾结点的next 指针。(2)删除模块删除模块的功能是删除某教师的工资信息。当然,信息包括所有输入的信息,以及程序内部函数计算的信息例如个人所得税,实发数。从一个链表中删去一个结点,首先从表头开始,找到被删结点后,只要改变链接关系即可,使被删结点的前去结点的指针域指向被删结点的后继结点。如果删去的结点是首结点,则将第二个结点的地址作为新的链表的首地址返回;如果删去的结点是链尾,则将被删结点的前驱作为新的链尾。(3)修改模块修改模块的功能是修改某教师的部分工资信息。要修改某教师的信息首先必须从表头开始搜寻,当找到指定的编号是,重新对其赋值即可。(4)查找模块查找模块的功能就是输出指定编

13、号教师的工资信息。查找链表中的信息时比较简单的,在上面的模块中也用到了,主要是注意查找叶必须从表头开始。(5)列表模块结束精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 24 页列表模块的功能是输出当月全体教师的工资信息。列表模块就是依次输出链表中各结点的数据。首先要知道链表头结点的地址,也就是 head 的值,然后设一个指针变量p,先指向第一个结点,输出p 所指结点的数据与的值,然后使p 后移一个结点,再输出其数据与的值;依链表顺序而行,依次输出相应结点数据域的值,直到链表的尾结点。(5)调试过程中遇到的主要问题及解决办法设计初期,先

14、完成初步构思,写出主函数。然后对主函数所涉及的各个模块进行编程,将各个模块利用指针和链表联系起来。在环境中进行调试,应一边编译,一边调试,并且要一个模块一个模块的调试。直至此模块完全没有错误时,在进入下一模块的调试。不能直接输入全部的代码一次性调,这样错误会很多,并且不易找出和修改。在完成程序的编译链接后,要用多组数据进行审查,确保做到系统无误。设计过程中,不应忽视环境提示的警告,有时程序运行不正确与警告也有很大的关系。这次设计中遇到很多问题都是提示类型不匹配,这时就要认真检查前面的代码,及时改正并且认真仔细,杜绝此类错再次发生。编写代码时应该少用全局变量,全局变量在编写试看似定义次数少,很方

15、便。但全局变量出错几率较大,且不易修改,每次修改时都要全面考虑,所以应避免用到。程序调试中碰到的错误可以使自己学到知识。养成良好的编程习惯,可以节省很多时间,避免很多不必要的错误。在编辑完整个程序后,进行调试阶段总是会数显head无定义。解决办法:再类的定义是忘记声明指针Worker_pay *head 。3 总结经过一周的C+课程实践,我对C+语言设计有了一个更深,更全面的了解,尤其体会到了C+面向对象操作对简化程序的重要作用。下面是我的几点体会:刚拿到课题时,我一脸的茫然,看到如此庞大的工程,不知如何下手。这个工资管理系统中教师子信息竟然包含15 条,以前从来没有遇到过如此多的变量。和同学

16、讨论很久好,我发现其实可以化繁为简的,信息中15 条不一定全都要,因为其中本身就有重复的,例如津贴和补贴。并且可以有一个pay 的数组来处理数据。所以做任何事情都必须要开动脑筋,积极思考,有时还要学会化繁为简。在编程时条理清晰是至关重要的。主函数,函数,成员函数之间的层次关系,调用关系一定要有一个全面的把握,尤其要体会类的封装性。另外很重要的一点就是一定要对链表的五种操作熟练的掌握。在编译,链接,调试的过程中一定要有耐心。因为一个程序中会有很多小的错误,甚至有的问题要几个小时才能解决。遇到问题,一定要全面分析,有时候还要向同学请教。总得来说,编程时极需要耐心的。总之, C+课程设计实践为我们提

17、供了一个综合运用所学知识,解决实际问题的平台,增强了我们实践动手的能力和工程实践能力,并且锻炼和培养了我们的自学能力,让我们对C+有了一个更全面的了解。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 24 页4 输入过程即截图:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 24 页附源代码:/ 题目:工资管理系统/ 代码如下:#include /标准输入输出头文件#include /standard library标准库头文件包含了C、C+ 语言的最常用的系统函数该文件包含了的

18、 C语言标准库函数的定义#include / malloc的全称是 memory allocation,中文叫动态内存分配#include /字符串处理#include /conio是 Console Input/Output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如getch() 函数等等#define TITLE n 月份 教师编号姓名 应发数 各种折扣实发数n #define DATA %2d %4ld %-10s %6.1f %6.1f %6.1fn,p1-month,p1-num,p1-name,p1-sh

19、ould_pay,p1-rebate,p1-actual_pay typedef struct pay /结构体声明, pay 为绰号 long num 。 /教师编号 short month。 /月份 char name20。 / 姓名,占长度为 20 float jb,ji,gt,bt,ft,jt。 / float should_pay。/ 应发数 float fz,cx,hf,gr。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 24 页float rebate。/ 各种折扣 float actual_pay。/ 实发数 str

20、uct pay *next。/ 建立链表PAY。FILE *fp 。/ 指针变量指向 FILE PAY *p1=NULL,*p2=NULL,*head=NULL 。/ 初值为空void menu() 。PAY *input()。void output()。void save(PAY *head)。PAY *open() 。PAY *insert()。void search()。PAY *del() 。PAY *revise()。/* 主程序模块 */ void main(void) short sel。 do menu() 。 scanf(%d,&sel)。/ 格式输入函数,读入十进制数 sw

21、itch(sel) case 1: head=input()。 /输入模块 break。 case 2: head=insert()。 /插入模块 break。 case 3: head=revise()。 /修改模块 break。 case 4: head=del()。 /删除模块 break。 case 5: search()。 /查找模块 break。 case 6: 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 24 页 output()。 /输出模块 break。 case 7: save(head)。 /保存模块 bre

22、ak。 case 0: break。 while(sel!=0)。 /* 菜单*/ void menu() printf(nnnnnnn)。/ 格式化输出函数换行 printf(tttt *主菜单功能选项晋瑞手打 *nn)。/tab符 printf(tttt1.创建工资档案 n) 。 printf(tttt2.添加工资信息 n) 。 printf(tttt3.修改工资信息 n) 。 printf(tttt4.删除工资信息 n) 。 printf(tttt5.查找工资信息 n) 。 printf(tttt6.分类信息列表 n) 。 printf(tttt7.保 存信 息n) 。 printf(t

23、ttt0.退出n) 。 printf(nnnnnnnn)。 /* 输入模块 */ PAY *input() short n=1。 p1=(PAY*)malloc(sizeof(PAY)。 if(p1=NULL) printf(内存不足,无法创建链表!) 。 getch()。 /从控制台读取一个字符,但不显示在屏幕上 printf(n请输入第 %d位教师的信息(以教师编号为0 结束)晋瑞手打:n,n)。 printf( 教师编号: ) 。 scanf(%d,&p1-num)。 if(p1-num=0) printf(按任意键返回! ) 。精选学习资料 - - - - - - - - - 名师归纳

24、总结 - - - - - - -第 12 页,共 24 页 getch()。 free(p1)。 return 0。 getchar()。 printf( 姓名: ) 。 gets(p1-name) 。 printf( 工资月份: ) 。 scanf(%d,&p1-month)。 printf( 基本工资,津贴,岗贴,补贴,房贴,交通费:n) 。 scanf(%f,%f,%f,%f,%f,%f,&p1-jb,&p1-ji,&p1-gt,&p1-bt,&p1-ft,&p1-jt)。 printf( 房租,储蓄,会费: n) 。 scanf(%f,%f,%f,%f,&p1-fz,&p1-cx,&p

25、1-hf)。 p1-should_pay=p1-jb+p1-ji+p1-gt+p1-bt+p1-ft+p1-jt。if(p1-should_paygr=0。 else if(p1-should_pay=800&p1-should_paygr=(p1-should_pay-800)*5/100。 else if(p1-should_pay=2000&p1-should_paygr=(p1-should_pay-2000)*1/10+60。 else p1-gr=(p1-should_pay-5000)*2/10+60+300。 p1-rebate=p1-fz+p1-cx+p1-hf+ p1-gr

26、。 p1-actual_pay=p1-should_pay-p1-rebate。 while(p1!=NULL) if(n=1) head=p1 。 else p2-next=p1。 n+ 。 p2=p1 。 p1=(PAY*)malloc(sizeof(PAY)。 if(p1=NULL) printf(内存不足,无法创建链表!) 。 getch()。 printf(请输入第 %d 位教师的信息(以教师编号为0 结束)晋瑞手打:n,n)。 printf( 教师编号: ) 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 24 页 sc

27、anf(%d,&p1-num)。 getchar()。 if(p1-num=0) p1=NULL 。 break。 printf( 姓名:) 。 gets(p1-name)。 printf( 工资月份: ) 。 scanf(%d,&p1-month)。 printf( 基本工资,津贴,岗贴,补贴,房贴,交通费:n) 。 scanf(%f,%f,%f,%f,%f,%f,&p1-jb,&p1-ji,&p1-gt,&p1-bt,&p1-ft,&p1-jt)。 printf( 房租,储蓄,会费: n) 。 scanf(%f,%f,%f,%f,&p1-fz,&p1-cx,&p1-hf)。 p1-shou

28、ld_pay=p1-jb+p1-ji+p1-gt+p1-bt+p1-ft+p1-jt。if(p1-should_paygr=0。 else if(p1-should_pay=800&p1-should_paygr=(p1-should_pay-800)*5/10。 else if(p1-should_pay=2000&p1-should_paygr=(p1-should_pay-2000)*1/10+60。 else p1-gr=(p1-should_pay-5000)*2/10+60+300。 p1-rebate=p1-fz+p1-cx+p1-hf+p1-gr。 p1-actual_pay=

29、p1-should_pay-p1-rebate。 p2-next=NULL 。printf(教师信息已输入,请按任意键返回,并存盘) 。 getch()。 return head。 /* 输出模块 */ void output() short sel,flag,month。 float min,max。 do do 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 24 页 printf(nn请选择您的列表方式晋瑞手打: n) 。 printf(tt1.全部清单 n) 。 printf(tt2.按月输出 n) 。 printf(tt3.

30、按工资段输出 n) 。 printf(tt0.返回n) 。 scanf(%d,&sel)。 while(sel!=1&sel!=2&sel!=3&sel!=0)。 head=open() 。 if(head=NULL) return。 else switch(sel) case 1: printf(nttt *全部清单 *n)。 printf(TITLE)。 p1=head。 do printf(DATA)。 p1=p1-next。 while(p1!=NULL)。 break。 case 2: flag=0。 printf(输入要查的月份晋瑞手打: ) 。 scanf(%d,&month)。

31、 printf(nttt*第%d月工资清单 *n,month)。 printf(TITLE)。 p1=head。 do if(p1-month=month) printf(DATA)。 p1=p1-next。 flag=1。 else p1=p1-next。 while(p1!=NULL)。 if(flag=0) printf(没有该月清单 n) 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 24 页 break。 case 3: flag=0。 printf(输入最低工资: ) 。 scanf(%f,&min)。 printf(

32、输入最高工资: ) 。 scanf(%f,&max)。 printf(ntt *%5.1f到%5.1f 工资的名单 *n,min,max)。 printf(TITLE)。 p1=head。 do if(p1-actual_paymin&p1-actual_paynext。 flag=1。 else p1=p1-next。 while(p1!=NULL)。 if(flag=0) printf(没有该工资段的教师 n) 。 break。 case 0: break。 while(sel!=0)。 /* 保存文件 */ void save(PAY *head) short write。 fp=fop

33、en(pay.txt,w)。 if(fp=NULL) printf(创建文件失败! ) 。 getch()。 return。 p1=p2=head。 while(p1!=NULL) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 16 页,共 24 页 write=fwrite(p1,sizeof(PAY),1,fp)。 if(!write) printf(无法写入文件! ) 。 getch()。 return。 p1=p1-next。 fclose(fp)。 printf(成功存盘!晋瑞手打 ) 。 getch()。 /* 打开文件 */ PAY

34、 *open() short n=1,read。 fp=fopen(pay.txt,r)。 if(fp=NULL) printf(无法打开档案文件!晋瑞手打) 。 getch()。 return NULL。 if(p1=p2=(PAY*)malloc(sizeof(PAY)=NULL) printf(内存不足! ) 。 getch()。 return NULL。 read=fread(p1,sizeof(PAY),1,fp)。 if(!read) printf(文件读取出错! 1) 。 getch()。 return NULL。 if(p1-next=NULL) head=p1 。 else

35、do 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 17 页,共 24 页 if(n=1) head=p1。 else p2-next=p1。 n+ 。 p2=p1 。 if(p1=(PAY*)malloc(sizeof(PAY)=NULL) printf(内存不足! ) 。 getch()。 return NULL。 read=fread(p1,sizeof(PAY),1,fp)。 if(!read) printf(文件读取出错! 2) 。 getch()。 return NULL。 while(p1-next!=NULL)。 p2-next=

36、p1。 return head。 fclose(fp)。 /* 插入模块 */ PAY *insert() PAY *p3=NULL。 char sel。 head=open() 。 if(head=NULL) return NULL。 else do printf(请输入要插入的教师信息晋瑞手打:n) 。 p3=(PAY*)malloc(sizeof(PAY)。 if(p3=NULL) printf(内存不足,无法创建链表!) 。 getch()。 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 18 页,共 24 页 printf( 教师编号:

37、 ) 。 scanf(%d,&p3-num)。 getchar()。 printf( 姓名: ) 。 gets(p3-name)。 printf( 工资月份: ) 。 scanf(%d,&p3-month)。 printf( 基本工资,津贴,岗贴,补贴,房贴,交通费:n) 。 scanf(%f,%f,%f,%f,%f,%f,&p3-jb,&p3-ji,&p3-gt,&p3-bt,&p3-ft,&p3-jt)。 printf( 房租,储蓄,会费: n) 。 scanf(%f,%f,%f,%f,&p3-fz,&p3-cx,&p3-hf)。 p3-should_pay=p3-jb+p3-ji+p3-

38、gt+p3-bt+p3-ft+p3-jt。if(p3-should_paygr=0。 else if(p3-should_pay=800&p3-should_paygr=(p3-should_pay-800)*5/100。 else if(p3-should_pay=2000&p3-should_paygr=(p3-should_pay-2000)*1/10+60。 else p1-gr=(p3-should_pay-5000)*2/10+60+300。 p3-rebate=p3-fz+p3-cx+p3-hf+ p1-gr。 p3-actual_pay=p3-should_pay-p3-reb

39、ate。 p1=head 。 while(p1!=NULL) p2=p1。 p1=p1-next。 p2-next=p3。 p3-next=NULL 。 printf(成功插入,是否继续?是(Y) 否(N )n) 。 sel=getch()。 while(sel=Y|sel=y)。 printf(n任意键返回,并存盘n) 。 getch()。 return head。 /* 查找模块 */ void search() 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 19 页,共 24 页 short sel。 long num 。 char nam

40、e20,choose。 head=open() 。 if(head=NULL) return。 else do do printf(n选择查找方式晋瑞手打: n) 。 printf(tt1.按教师编号查找 n) 。 printf(tt2.按姓名查找 n) 。 scanf(%d,&sel)。 getchar()。 while(sel!=1&sel!=2)。 switch(sel) case 1: printf(输入要查的教师编号: ) 。 scanf(%ld,&num)。 break。 case 2: printf(输入要查的姓名: ) 。 gets(name)。 break。 p1=head

41、。 while(p1-next!=NULL)&(p1-num!=num)&(strcmp(p1-name,name)!=0) / 用成 p1!=NULL有问题? p1=p1-next。 if(p1-num=num)|strcmp(p1-name,name)=0) printf(您要查找的信息如下: n) 。 printf(TITLE)。 printf(DATA)。 else printf(没有该信息! n) 。 printf(是否继续?是( Y) 否(N)n) 。 choose=getch()。 while(choose=Y|choose=y)。精选学习资料 - - - - - - - - -

42、 名师归纳总结 - - - - - - -第 20 页,共 24 页 printf(任意键返回 ) 。 getch()。 /* 删除模块 */ PAY *del() short sel。 long num 。 char name20,choose。 head=open() 。 if(head=NULL) return NULL。 else do do printf(n选择删除方式: n) 。 printf(tt1.按教师编号删除 n) 。 printf(tt2.按姓名删除 n) 。 scanf(%d,&sel)。 getchar()。 while(sel!=1&sel!=2)。 switch(

43、sel) case 1: printf(输入要删除的教师编号晋瑞手打:) 。 scanf(%ld,&num)。 break。 case 2: printf(输入要删除的姓名: ) 。 gets(name)。 break。 p1=head 。 if(p1-num=num)|strcmp(p1-name,name)=0) head=p1-next。 printf(删除信息成功! ) 。 else while(p1-next!=NULL)&(p1-num!=num)&(strcmp(p1-精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 21 页,共 24

44、 页name,name)!=0) p2=p1。 p1=p1-next。 if(p1-num=num)|strcmp(p1-name,name)=0) p2-next=p1-next。 free(p1)。 printf(n删除信息成功! n) 。 else printf(n没有该信息! n) 。 printf(是否继续?是( Y) 否(N)n) 。 choose=getch()。 while(choose=Y|choose=y)。 printf(任意键返回 , 并存盘 ) 。 getch()。 return head。 /* 修改模块 */ PAY *revise() short sel。 lo

45、ng num 。 char name20,choose。 head=open() 。 if(head=NULL) return NULL。 else do do printf(n查找要修改的对象晋瑞手打:n) 。 printf(tt1.按教师编号查找 n) 。 printf(tt2.按姓名查找 n) 。 scanf(%d,&sel)。 getchar()。 while(sel!=1&sel!=2)。 switch(sel) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 22 页,共 24 页 case 1: printf(输入要查的教师编号: )

46、 。 scanf(%ld,&num)。 break。 case 2: printf(输入要查的姓名: ) 。 gets(name)。 break。 p1=head 。 while(p1-next!=NULL)&(p1-num!=num)&(strcmp(p1-name,name)!=0) / 用成 p1!=NULL有问题? p1=p1-next。 if(p1-num=num)|strcmp(p1-name,name)=0) printf(您要修改的原始信息如下:n) 。 printf(TITLE)。 printf(DATA)。 printf(n将上述信息改为如下信息:n) 。 printf(

47、教师编号: ) 。 scanf(%d,&p1-num)。 getchar()。 printf( 姓名: ) 。 gets(p1-name)。 printf( 工资月份: ) 。 scanf(%d,&p1-month)。 printf( 基本工资,津贴,岗贴,补贴,房贴,交通费:n) 。 scanf(%f,%f,%f,%f,%f,%f,&p1-jb,&p1-ji,&p1-gt,&p1-bt,&p1-ft,&p1-jt)。 printf( 房租,储蓄,会费: n) 。 scanf(%f,%f,%f,%f,&p1-fz,&p1-cx,&p1-hf)。 p1-should_pay=p1-jb+p1-j

48、i+p1-gt+p1-bt+p1-ft+p1-jt。if(p1-should_paygr=0。 else if(p1-should_pay=800&p1-should_paygr=(p1-should_pay-800)*5/100。 else if(p1-should_pay=2000&p1-should_paygr=(p1-should_pay-2000)*1/10+60。 else p1-gr=(p1-should_pay-5000)*2/10+60+300。 p1-rebate=p1-fz+p1-cx+p1-hf+ p1-gr。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 23 页,共 24 页 p1-actual_pay=p1-should_pay-p1-rebate。 else printf(你要修改的信息不存在!n) 。 printf(是否继续?是( Y) 否(N)n) 。 choose=getch()。 while(choose=Y|choose=y)。 printf(任意键返回,并存盘 ) 。 getch()。 return head。 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 24 页,共 24 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁