您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 数据结构课程设计(员工管理系统)
目录一、问题描述................................................................1二、测试数据................................................................1三、算法思想................................................................1四、模块划分................................................................1五、数据结构................................................................2六、源程序..................................................................2七、测试情况................................................错误!未定义书签。八、设计体会...............................................................13参考文献................................................................13数据结构课程设计1一、问题描述(1)自定义一个类型表示员工各信息,定义一个顺序表存储员工信息,包括员工编号、姓名、性别、职务、出生年月、学历、电话、地址等。(2)系统能够完成员工信息的输入、输出、查询、更新、插入、删除、排序等功能,并且数据能由文件导入和导出到文件。(3)通过菜单选择进行哪一项操作,并输出每一项操作结果。二、测试数据1李一女1989.10.2本科职员18807745777广西南宁2苏三女1986.3.18本科职员18074902323广西北海3孙大云女1987.12.1本科秘书18079791234广西柳州5陈二男1986.7.12硕士经理15077455757广西梧州三、算法思想线性表是最常用且最简单的一种线性结构,由数据元素组成,而数据元素又可以包含若干个数据项。线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素,通常用数组表示。对顺序表的操作可借鉴数组的算法。在本次课程设计中的员工管理信息系统,每个员工为一个数据元素,包括编号、姓名、性别、学历等数据项。用一个数组来存储员工信息,对其进行的输入、删除、输出等操作可由一般数组的算法变换而得。四、模块划分(1)自定义一个数据类型ElemType,表示员工信息,定义一个顺序表List,将员工信息存放于顺序表中,包括员工的编号、姓名、性别、职务、出生年月、学历、电话、地址等,并完成顺序表的初始化;(2)voidListInput(List&L,intn),函数作用是输入员工信息,需要一个循环完成每个员工信息的输入,最后要修改表长;(3)intLocateElem(ListL,intnum),函数作用是在顺序表里查找某编号员工的信息,从第一个员工开始找,通过编号的两两比较,若找到与要查找员工的编号一致的员工,则返回员工的位置,并在主函数中输出此与员工的信息;(4)voidListInsert(List&L,ElemTypee)函数功能是新员工信息的插入,先判断表是否满或此员工数据结构课程设计2的信息是否已存在,若是则不进行插入操作;否则,保持员工编号顺序不变,找到插入点的位置,把从插入点后一位的数据都往后移一个位置,把新信息插入,最后使表长增1;(5)voidListDelete(List&L,intbh)函数作用是员工信息的删除,若表空或所要删除的员工信息不存在,则不进行下一步操作;否则,把删除点后的数据都往前移覆盖其前一个元素,最后使表长减1;(6)voidBubbleSort(List&L)函数功能是通过冒泡法试员工信息按编号从小到大排序,进行n-1趟,每趟使小编号的员工信息往上放在表的前端,把编号大的员工信息往下沉到表的末端;(7)ChangeM(List&L),更新员工信息,由菜单选择需要修改的信息项进行修改,并保存新的信息;(8)voidnewFile(List&L),生成一个新的txt文件,存放员工信息,存入计算机内存;(9)voidreadFile(List&L),把员工信息从文件中导出;(10)voidmain()主函数,通过菜单和各函数的调用实现各部分的操作。五、数据结构(1)包含自定义数据类型ElemType和表长信息length的顺序表List(2)顺序表List的结构定义如下:typedefstruct{ElemType*elem;intlength;}List;六、源程序#includeiostream#includestring#includestdlib.h#includestdio.husingnamespacestd;#defineOK1#defineERROR0#defineOVERFLOW-2typedefintStatus;//Status是函数返回值类型,其值是函数结果状态代码。#defineMAXSIZE100//顺序表可能达到的最大长度typedefstruct{//ElemType为自定义的数据类型,要根据实际情况定义,本例为学生信息:(学号,成绩)intnum;stringname;stringsex;数据结构课程设计3stringbirth;stringedu;stringjob;stringphone;stringadd;}ElemType;typedefstruct{//定义顺序表类型为ListElemType*elem;intlength;}List;voidInitList(List&L)//创建空顺序表{L.elem=newElemType[MAXSIZE];//动态分配空间L.length=0;}voidListInput(List&L,intn)//输入顺序表数据{inti;cout请输入员工信息endl;for(i=0;in;i++){cout请输入员工编号:endl;cinL.elem[i].num;//输入员工编号cout请输入员工姓名endl;cinL.elem[i].name;//输入姓名cout请输入员工性别:endl;cinL.elem[i].sex;//输入员工编号cout请输入员工出生年月endl;cinL.elem[i].birth;cout请输入员工职务endl;cinL.elem[i].job;cout请输入员工学历endl;cinL.elem[i].edu;cout请输入员工电话号码endl;cinL.elem[i].phone;cout请输入员工住址endl;cinL.elem[i].add;}L.length=n;}数据结构课程设计4voidListOutput(ListL)//输出顺序表数据{inti=0;if(L.length==0)cout空表,无数据输出!;for(i=0;iL.length;i++)cout(L.elem[i].num,L.elem[i].name,L.elem[i].birth,L.elem[i].job,L.elem[i].edu,L.elem[i].phone,L.elem[i].add)endl;//输出数据coutendl;}intLocateElem(ListL,intnum)//在顺序表里查找某编号员工的信息{inti;for(i=0;iL.length;i++)if(num==L.elem[i].num)returni+1;elsereturn0;}voidListInsert(List&L,ElemTypee)//顺序表的插入{inti;if(L.length==MAXSIZE)cout存储空间已满;//当前存储空间已满if(LocateElem(L,e.num)!=0)cout数据已存在,请重新输入;else{for(i=L.length-1;i=0;i--)if(e.numL.elem[i].num)L.elem[i+1]=L.elem[i];//在查找位置的同时元素后移elsebreak;L.elem[i+1]=e;//将新元素e放入合适的位置++L.length;//表长增1}}数据结构课程设计5voidListDelete(List&L,intbh)//顺序表的删除{inti,j;i=LocateElem(L,bh);//查找删除位置if(i==0)cout找不到此员工相关信息;else{for(j=i;j=L.length;j++)L.elem[j-1]=L.elem[j];//被删除元素之后的元素前移--L.length;}//表长减1}voidBubbleSort(List&L){inti,j;ElemTypekey;for(i=0;iL.length-1;i++)for(j=i+1;jL.length;j++)if(L.elem[i].numL.elem[j].num){key=L.elem[i];L.elem[i]=L.elem[j];L.elem[j]=key;}}voidChangeM(List&L){inti,n,num;cout\t\t\t*请输入更改的员工编号*endl;cinnum;cout\t\t\t************************endl;cout\t\t\t**endl;cout\t\t\t*[1]改名字*endl;cout\t\t\t*[2]改电话*endl;cout\t\t\t*[3]改性别*endl;cout\t\t\t*[4]改学历*endl;cout\t\t\t*[5]改住址*endl;cout\t\t\t*[6]改编号*endl;cout\t\t\t*[7]改工作*endl;cout\t\t\t*[8]改生日*endl;cout\t\t\t************************\n;数据结构课程设计6cout\t\t\t*请输入1-8选择修改项*endl;cinn;for(i=0;iL.length;i++)if(num==L.elem[i].num)//查找删除位置break;if(iL.length)switch(n){case1:cout\t\t\t请输入新内容:endl;cinL.elem[i].name;break;case2:cout\t\t\t请输入新内容:endl;cinL.elem[i].phone;break;case3:cout\t\t\t请输入新内容:endl;cinL.elem[i].sex;break;case4:cout\t\t\t请输入新内容:endl;cinL.elem[i].edu;break;case5:cout\t\t\t请输入新内容:endl;cinL.elem[i].add;break;case6:cout\t\t\t请输入新内容:endl;cinL.elem[i].num;break;case7:cout\t\t\t请输入新内容:endl;cinL.elem[i].job;break;case8:cout\t\t\t请输入新内容:endl;cinL.elem[i].birth;break;}elsecout
本文标题:数据结构课程设计(员工管理系统)
链接地址:https://www.777doc.com/doc-5952346 .html