《数据结构与算法》工资管理系统综合实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构与算法》工资管理系统综合实验报告
《数据结构与算法》
综合实验报告
课程名称:《数据结构与算法》综合实验
专业:运算机科学与技术
班级学号:********
*名:**
指导教师:***
成绩:
完成日期:2020 年月日
一、实验题目
工资治理系统
二、实验时刻地
时刻:2012/6/10
地点:506ATA机室
三、实验目的
1. 明白得线性表的定义、线性表的顺序储备结构和链式储备结构。
2. 明白得线性表的逻辑结构特点
3. 深入把握线性表的两种储备方法,即顺序表和链式表。体会这两种储备结构之间
的差异。
4. 重点把握线性表和链表上各种差不多运算的实现。
5. 综合运用线性表解决一些复杂的实际问题。
四、实验内容
(一)、功能关系介绍
1添加功能,通过它能够添加新的职员信息,专门方便,输入1即可进入添加页面,添加完以后,输入4储存。
2查询功能,通过它能够查询是否有那个职员,他能够通过两种方式进行查询,一是id号查询,二是姓名查询。
3删除功能,通过它能够删除离开的职员,它也能够通过两种方式进行删除,一是通过id删除,二是通过姓名删除。
6修改功能,通过它能够修改职员信息,譬如,工资等,可输入id号进行修改,修改完以后返回主页面输入4进行储存。
5插入功能,与添加功能有区别,它可选择性的插入,随意插,他也是添加新的职员,专门方便,返回主页面,输入4储存。
4储存功能,它可储存添加,插入和修改的职员信息。
7显示功能,通过它能够显示所有职员的详细信息。
0返回功能,通过它可返回主页面,进行其他操作。
(二)、采纳数据结构
该职职员资治理系统采纳了单链表的建立,输入,插入,查找,删除,输出等功能
(三)、语言工具
C语言编程
五、预习内容
(一)、单链表分线性单链表和静态的单链表。
线性单链表是用一组不连续的储备单元来存放线性表中的数据,因此链表中结点的逻辑次序和物理次序不一定相同。为了正确的表示结点间的逻辑关系,在
储备线、性表时,储备每个数据元素值的同时,还要储备指示其后继结点的地址
信息,这两部分信息组成的储备映像称为结点。
一个结点有两个域组成:数据域和指针域。
1)、创建单链表:
1、扦插法建表
2、尾插法建表
2)、在单链表中查找给定的元素:
1、按每个元素的定位序号查找
2、按值查找
(二)、单链表的长度
刻意采纳“数”结点的方法求出单链表的长度,用指针p依次指向各个结点,从第一个元素开始”数“,一直”数“到最后一个结点(p->next=NULL)。单链表插入操作在单链表L中第i个位置插入一个数据元素e,第一找到单链表中的第i-1个结点,然后申请一个新的结点由指针s指示,s结点数据域为e。修改第-1个结点的指针使其指向s,然后使s结点的指针域指向原第i个结点。
(三)、单链表的删除
注意:删除算法中的循环条件(p-next!NULL)&&(k 1、开创一块连续空间,初始化为闲暇静态链表。 2、闲暇链上的结点分配。 3、闲暇链上的回收分配。 4、静态单链表结点的分配与开释 六、算法描述(流程图与说明) (一)、详细描述 工资治理系统(要求) 该系统能够实现工资治理。系统包括录入、游玩、查询、统计等功能。其中录入功能要求能够添加新的工资信息到文件;游玩功能要求能按照工资卡号、姓 名分类游玩,提供分屏显示;有排序功能,排序后按照工资卡号升序或实发工资 降序输出;查询功能要求能够按照工资卡号、姓名查询;统计功能要求能够按照 月份累计统计某职工在某时刻段实发工资总金额。(提示) (1)文件中一行数据对应一个职工工资信息。 (2)工资信息的数据结构采纳结构体数据,一个数组元素对应一条工资单记录。 (3)工资单信息包括工资卡号、姓名、月份、应发工资、水费、电费、税金、实发工资等。 (4)实发工资=应发工资-水费-电费-税金,其中税金运算方法为: 1)、应发工资应发工资〈800元,税金=0 2)、800〈应发工资〈1400元,税金=(应发工资-800)*5% 3)、应发工资〉1400元,税金=(应发工资-1400)*10% 该系统分:菜单函数、查询函数、添加函数、删除函数、显示函数、修改函数、 储存函数、插入函数、和主函数九个模块。 菜单函数的要紧显示的是主菜单,你能够通过菜单函数选择你要选择的模块,选 择你要执行的方法,菜单函数共有八个选择,在0~7之间你人选择一个,就会进 入到相应的模块。 选择1带你进入添加模块; 选择2带你进入查询模块; 选择3带你进入删除模块; 选择4带你进入储存模块; 选择5带你进入插入模块; 选择6带你进入修改模块; 选择7带你进入显示函数; 选择0带你返回菜单函数; 职员的信息包括职工卡号、职员id、职员姓名、性别、部门、技术职称编号、、差不多工资、职务工资、应发工资、实发工资、税金、补助。 (二)、数据结构的采纳 添加模块和插入模块都运用到单链表的输入和插入,查询模块运用到了单链表的查找,删除模块运用到了单链表的删除,储存模块,修改模块,返回模块还有 显示模块都运用到了单链表的输入和输出 (三)、算法的描述 本系统一开始就运用了结构体类型,定义了一个结构体类型变量worker,来定义职员的各种信息,还定义了一个数据节点,用于创建单链表。 菜单函数:显示功能总页面,用cprintf()程序输出,system("cls")功能是清屏,清除所有显示的信息, 定位函数:Node *locate(Link m,char find[],char fangshi[]) {},m为链表,find,fangshi为两个数组,利用strcmp(fangshi,"id")程序,假如strcmp()==0, 表示利用id完成查询、删除或修改,本程序要紧是完成用Id或name方式选择查 询、删除或修该 查询函数:chaxun(Link m),完成是否又该工人的查询,假如m的指针域为空,表 示没有工人的记录,否则通过id或name查询,调用lacate()函数,假如lacate() 的值不为空,输入职员信息,按任意键终止。 添加函数:add(Link m),若m的指针域不为空,连续输入数值,申请节点,用节 点存放输入数值,若职工卡号输入0,返回主页面,否则连续输入 删除函数:delete(Link m),r若m的指针域为空,表示没有记录,通过调用lacate() 确定用哪一种方式进行删除,若找到则执行删除,否则没有该记录。 修改函数:modify(Link m),若m的指针域为空,表示没有记录,用get()输入 id,用id得到想要修改的数据,修改完显示修改成功,否则显示失败。 显示函数:xianshi(Link m)若m的指针域为空,表示没有记录,显示所有职员的 信息。