《数据结构与算法》工资管理系统综合实验报告1319.docx

上传人:you****now 文档编号:63143595 上传时间:2022-11-23 格式:DOCX 页数:49 大小:352.99KB
返回 下载 相关 举报
《数据结构与算法》工资管理系统综合实验报告1319.docx_第1页
第1页 / 共49页
《数据结构与算法》工资管理系统综合实验报告1319.docx_第2页
第2页 / 共49页
点击查看更多>>
资源描述

《《数据结构与算法》工资管理系统综合实验报告1319.docx》由会员分享,可在线阅读,更多相关《《数据结构与算法》工资管理系统综合实验报告1319.docx(49页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、沈阳理工大学应用技术学院数据结构构与算法法综合实验报报告课程名称:数据结结构与算算法综综合实验验专 业:计计算机科科学与技技术班级学号: 11132211116 姓 名: 王王娇 指导教师:孙承福 成 绩:完成日期: 20112 年月日一、实验题题目工资管理系系统二、实验时时间地时间:20012/6/110地点点:5006ATTA机室室三、实验目目的1.理解解线性表表的定义义、线性性表的顺顺序存储储结构和和链式存存储结构构。2.理解线线性表的的逻辑结结构特征征3.深入掌掌握线性性表的两两种存储储方法,即即顺序表表和链式式表。体体会这两两种存储储结构之之间的差差异。44.重点掌掌握线性性表和链链

2、表上各各种基本本运算的的实现。5.综合运用线性表解决一些复杂的实际问题。四、实验内内容(一)、功功能关系系介绍1添加功能能,通过过它可以以添加新新的员工工信息,非非常方便便,输入入1即可可进入添添加页面面,添加加完以后后,输入入4保存存。2查询功能能,通过过它可以以查询是是否有这这个员工工,他可可以通过过两种方方式进行行查询,一一是idd号查询询,二是是姓名查查询。3删除功能能,通过过它可以以删除离离开的员员工,它它也可以以通过两两种方式式进行删删除,一一是通过过id删删除,二二是通过过姓名删删除。6修改功能能,通过过它可以以修改员员工信息息,譬如如电话,工工资等,可可输入iid号进进行修改改

3、,修改改完以后后返回主主页面输输入4进进行保存存。5插入功能能,与添添加功能能有区别别,它可可选择性性的插入入,随意意插,他他也是添添加新的的员工,非非常方便便,返回回主页面面,输入入4保存存。4保存功能能,它可可保存添添加,插插入和修修改的员员工信息息。7显示功能能,通过过它可以以显示所所有员工工的详细细信息。0返回功能能,通过过它可返返回主页页面,进进行其他他操作。(二)、采采用数据据结构该员工工资资管理系系统采用用了单链链表的建建立,输输入,插插入,查查找,删删除,输输出等功功能(三)、语语言工具具C语言编程程五、预习内内容(一)、单单链表分分线性单单链表和和静态的的单链表表。线性单链表

4、表是用一一组不连连续的存存储单元元来存放放线性表表中的数数据,因因此链表表中结点点的逻辑辑次序和和物理次次序不一一定相同同。为了了正确的的表示结结点间的的逻辑关关系,在在存储线线、性表表时,存存储每个个数据元元素值的的同时,还还要存储储指示其其后继结结点的地地址信息息,这两两部分信信息组成成的存储储映像称称为结点点。一个结点有有两个域域组成:数据域域和指针针域。 1)、创创建单链链表:1、扦插法法建表2、尾插法法建表 2)、在在单链表表中查找找给定的的元素:1、按每个个元素的的定位序序号查找找2、按值查查找(二)、单单链表的的长度刻意采用“数数”结点点的方法法求出单单链表的的长度,用用指针pp

5、依次指指向各个个结点,从从第一个个元素开开始”数数“,一一直”数数“到最最后一个个结点(pp-nnextt=NUULL)。单单链表插插入操作作在单链链表L中中第i个个位置插插入一个个数据元元素e,首首先找到到单链表表中的第第i-11个结点点,然后后申请一一个新的的结点由由指针ss指示,ss结点数数据域为为e。修修改第-1个结结点的指指针使其其指向ss,然后后使s结结点的指指针域指指向原第第i个结结点。(三)、单单链表的的删除注意:删除除算法中中的循环环条件(pp-neext!NULLL)&(kki-1)与与前插算算法中的的循环条条件(pp-neext!NULLL)&(kkdata.gzkh);

6、NYNode *p,*r,*s;char numstr20;r=mr-next!=NULLYr=r-next;mYp=(Node *)malloc(sizeof(Node);Nstrcmp(p-data.gzkh,0)=0退出键盘输入p-data.yfgzdata.yfgznext=NULL; r-next=p;r=p;退出NY税金=(应发工资-800)*0.05N图 6.33addd()函数数流程图图判断表中是否有数据没有记录返回输入“1”通过id删除,输入“2”通过姓名删除Choose=1输入已存在的id号调用locate()函数Choose=2输入已存在的姓名调用locate()函数P!

7、=Nullr=mr-next!=pr=r-nextr-next=p-next退出NYNYNYN图 6.44delletee()函函数流程程图FILE *fp;Node *p;int count=0文件fp打开读取fp=Null无法打开文件返回YNp=m-next 指针下移P!=nullY写入文件 count+NCount0保存成功无新数据更新YN图 6.55savve()函函数流程程图输入要在第几个数的后面插入申请结点 newinfoNewinfo=null根据提示键盘输入插入信息没有记录返回YNNewinfo-data.yfgzdata.yfgznextmStrcmp(p-data.id,f

8、ind)=0)Ynewinfo-next=p-next; p-next=newinfo Yp=p-next退出NN图 6.66inssertt()函函数流程程图税金=(应发工资-800)*0.05m-next=null输入你想要修改的id号,调用locate()无记录返回PStrcpy(p-data.id,find)复制Y根据提示键盘输入插入信息Newinfo-data.yfgzdata.yfgznext;N退出N图 6.88 xxiannshii()函函数流程程图Node *rstrcmp(fangshi,”id”)=0)r=m-nextYrstrcmp(r-data.id,find)=0Y

9、返回Nreturn r; Ystrcmp(fangshi,”name”)=0)r=m-nextrstrcmp(r-data.name,find)=0返回return r; YNYNNY返回Nr=r-nextr=r-nextN图 6.99 llocaate()函函数流程程图七、运行结结果(抓抓图)与与分析7.1主界界面执行成功之之后,首首先显示示主菜单单,如图图7.11: 图7.117.2输入入添加函函数模块块实现选择”1”你你将进入入添加模块块,在添添加模块块里你可可以执行行对员工工的姓名名,职工工卡号等等的添加加,如图图7.22:图7.27.3输入入查询函数数模块实实现选择”2”你你将进入入

10、查询模块块,一是是通过员员工的iid号查查询员工工的信息息,还可可以通过过员工的的姓名进进行查询询。例如如:进入入主菜单单,你首首先选择择的是“2”,进入入查询模模块,然然后你可可以选择择通过iid或者者是姓名名进行员员工信息息查询,选选择“1”,通过过id查查询,选选择“2”通过姓姓名查询询,如果果你选择择“2“,然后后输入iid号001,之之后按回回车键,就就会显示示一行你你要查询询的这个个员工的的信息,如如图7.3:图7.37.4输入入删除函数数模块实实现选择“3”你将你你进入删删除模块块,你可可以通过过 idd号和员员工的姓姓名进行行删除,方方法雷同同,如图图7.44图7.47.5输入

11、入保存函数数模块实实现输入“4”进行文文件的保保存,保保存的路路径是d:heelloo.txxt,wbb,如如图7.5:图7.57.6输入入插入函数数模块实实现输入“5”你将进进入插入入模块,你可以以选择要要插入的的位置,是是第一个个数据后后面还是是第几个个数据后后面,选选择之后后即可进进行信息息的录入入,如果果在职工工卡号后后输入00,则返返回主页页面,否否则继续续插入方方法跟添添加雷同同,如图图7.66:图7.67.7输入入修改函数数模块实实现输入“6”,你将将进入修修改界面面,你可可以先选选择你要要修改的的员工的的id,之之后你可可以选择择你要修修改的信信息,修修改之后后你会用用到一个个

12、模块,保保存模块块,如图图7.77 图7.77.8输入入显示函数数模块实实现输入“7”你将进进入显示示模块。显显示模块块主要的的功能就就是显示示信息。执执行完其其他操作作之后你你可以通通过显示示信息显显示出来来,如图图7.88图7.87.9输入入退出函数数模块实实现输入“0”,退出出界面,如如图7.9图7.9八、源程序序代码#inclludee#inclludee#inclludee#inclludee/#inncluude int ssaveeflaag=00;/标志一一下,定定义一个个标志变变量,用用到的时时候再找找typeddef strructt woorkeer/定义一一个sttru

13、cct wworkker,相相当于jjavaa的一个个类 chhar gzkkh220; /*职职工卡号号*/ chhar id20; /*id号号*/ chhar namme220; /*姓名*/ chhar sexx; /*性别*/ /intt ggl; /*工工龄*/ chhar depparttmennt220; /*部部门*/ chhar levvel10; /*技技术职称称*/ chhar jsbbh220; /*技技术职称称编号*/ chhar phoone20; flloatt jbbgz; /*基基本工资资*/ flloatt zwwgz; /*职职务工资资*/ flloat

14、t yffgz; /*应应发工资资*/ flloatt sffgz; /*实实发工资资*/ flloatt taax; flloatt bzz; /*补补助*/;typeddef strructt noode strructt woorkeer ddataa; /结结构体wworkk类型的的变量ddataa strructt noode *nexxt; /结构构体noote类类型的指指针变量量,变量量名为nnexttNodee,*LLinkk; /nnotee类型的的指针变变量menu() /*菜菜单函数数*/ syysteem(clss); / texxtcoolorr(122); /got

15、toxyy(100,5); cpprinntf( 王娇的的工资管管理系统统:nn); /gottoxyy(100,8); cpprinntf(* 菜单单 *n); /gottoxyy(100,9); cpprinntf(* 1 添加加 2 查询 *n); /gottoxyy(100,100); cpprinntf(* 3 删除除 4 保存 *n); /gottoxyy(100,111); cpprinntf(* 5 插入入 6 修改 *n); /gottoxyy(100,122); cpprinntf(* 7 显示示 0 退出 *n); /gottoxyy(100,133); cpprinnt

16、f(*n); /*定位位函数*/Node *loocatte(LLinkk m,chaar ffindd,chaar ffanggshii) Noode *r; iff(sttrcmmp(ffanggshii,iid)=00) /*按按照idd查询*/ r=m-nexxt; whhilee(r) iff(sttrcmmp(rr-ddataa.idd,fiind)=00) reeturrn rr; r=r-nexxt; ellse if(strrcmpp(faangsshi,naame)=0) r=m-nexxt; whhilee(r) iff(sttrcmmp(rr-ddataa.naame,

17、finnd)=0) reeturrn rr; r=r-nexxt; /*查询函函数*/chaxuun(LLinkk m) innt cchooose; chhar inpputddataa200; /*存放查查询的内内容*/ Noode *p; iff(mm-nnextt)=NULLL) syysteem(clss); prrinttf(n没没有该员员工的信信息!n); geetchhar(); reeturrn; syysteem(clss); prrinttf(1 通过过id查查询 2 通通过姓名名查询n); /选选择1通通过idd查询,选选择2,通通过naame查查询 prrinttf(

18、请输入入 11/2n); sccanff(%d,&chhoosse);gettchaar(); iff(chhoosse=1) prrinttf(请输入入数据!n); sccanff(%s,&innputtdatta);gettchaar(); p=loccatee(m,inpputddataa,iid); iff(p) priintff(工工资卡号号:=%4s 姓名:=%44s 实发工工资:=%4ff 税务务:=%4f 基本工工资:=%4ffn,p-daata.gzkkh,pp-ddataa.naame,p-datta.ssfgzz,p-daata.taxx,p-daata.jbggz);

19、/priintff(%4s%4s%4f%4f%4fn,p-datta.ggzkhh,p-daata.namme,pp-ddataa.sffgz,p-datta.ttax,p-datta.ssfgzz); prrinttf(按任意意键继续续!nn); geetchhar(); ellse prrinttf(无法找找到!n); geetchhar(); ellse if(chooosee=22) prrinttf(请输入入数据!n); sccanff(%s,&innputtdatta);gettchaar(); p=loccatee(m,inpputddataa,nnamee); iff(p!=N

20、UULL) pprinntf(工资资卡号:=%44s 姓姓名:=%4ss 应应发工资资:=%4f 税务:=%44f 实实发工资资:=%4fn, p-datta.ggzkhh,p-daata.namme,pp-ddataa.sffgz,p-datta.ttax,p-datta.jjbgzz); /priintff(%s%ss%f%f%ffn,p-daata.gzkkh,pp-ddataa.naame,p-datta.ssfgzz,p-daata.taxx,p-daata.sfggz); prrinttf(按任意意键继续续!nn); geetchhar(); ellse prrinttf(无法找找

21、到!n); geetchhar(); /*添加加函数*/add(LLinkk m) NNodee *pp,*rr,*ss; ccharr nuumsttr220; rr=m; wwhille(rr-nnextt!=NNULLL) r=rr-nnextt; wwhille(mm) pp=(NNodee *)malllocc(siizeoof(NNodee);/申申请结点点 iif(pp=NNULLL) pprinntf(无法法申请记记忆空间间!nn); eexitt(0); pprinntf(职工工编号:); ggetss(p-daata.gzkkh); iif(sstrccmp(p-datta

22、.ggzkhh,00)=0) bbreaak; pprinntf(idd号:); ggetss(p-daata.id); pprinntf(姓名名:); ggetss(p-daata.namme); pprinntf(性别别:); / ggetss(p-daata.sexx); pp-ddataa.seex=ggetccharr(); ggetccharr(); pprinntf(部门门:); ggetccharr(); ggetss(p-daata.depparttmennt); pprinntf(技术术职称:); ggetss(p-daata.levvel); pprinntf(技术术职称

23、编编号:); ggetss(p-daata.jsbbh); pprinntf(电话话:); ggetss(p-daata.phoone); pprinntf(基本本工资:); ggetss(nuumsttr); pp-ddataa.jbbgz=atoof(nnumsstr); pprinntf(职务务工资:); ggetss(nuumsttr); pp-ddataa.zwwgz=atoof(nnumsstr); pprinntf(补助助:); ggetss(nuumsttr); pp-ddataa.bzz=attof(nummstrr); pp-ddataa.yffgz=p-datta.jjb

24、gzz+p-daata.zwggz+pp-ddataa.bzz; /应应发工资资=基本本工资+职务工工资+补补助; iif(pp-ddataa.yffgzdatta.ttax=0; /如如果应发发工资daata.yfggzdatta.ttax=(p-daata.yfggz-8800)*0.05; /如如果应发发工资大大余8000小于于14000税金金=(应应发工资资-8000)*0.005 eelsee p-datta.ttax=(p-daata.yfggz-114000)*00.1; /如如果应发发工资大大于14400税税金=(应应发工资资-14400)*0.11 pp-ddataa.sff

25、gz=p-datta.jjbgzz+p-daata.zwggz+pp-ddataa.bzz-(pp-ddataa.taax);/实实发工资资=基本本工资+职务工工资+补补助-税税金; pp-nnextt=NUULL; rr-nnextt=p; rr=p; ssaveeflaag=11; /*删除函函数*/delette(LLinkk m) innt cchooose; Noode *p,*r; chhar finnd220; iff(m-neext=NUULL) ssysttem(clls); pprinntf(没有有记录!n); ggetccharr(); rretuurn; syystee

26、m(clss); prrinttf( 1 通过过id删删除 2 通过姓姓名删除除 nn);/选选择1,通通过idd删除,选选择2通通过naame删删除 prrinttf(请输入入1或22:nn); sccanff(%d,&chhoosse);gettchaar(); iff(chhoosse=1) pprinntf(请输输入已存存在的iid号!n); sscannf(%s,fiind);geetchhar(); pp=loocatte(mm,fiind,idd); iif(pp!=NNULLL) rr=m; wwhille(rr-nnextt!=pp) rr=r-neext; rr-nnextt=p-neext; ffreee(p); pprinntf(d删删除成功功!nn); ggetccharr(); ssaveeflaag=11; eelsee pprinntf(无法法找到iid号!n); ggetccharr(); ellse if(chooosee=22)

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

当前位置:首页 > 管理文献 > 管理手册

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

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