欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    数据结构课程设计工资管理和最小生成树两部分.doc

    • 资源ID:868508       资源大小:398.04KB        全文页数:17页
    • 资源格式: DOC        下载积分:10积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要10积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构课程设计工资管理和最小生成树两部分.doc

    1、沈阳理工大学课程设计专用纸课程设计任务书学 院信息学院专 业计算机科学与技术学生姓名班级学号课程设计题目1.工资管理 2.最小生成树实践教学要求与任务:【题目1】工资管理 自己建立数据文件(提示可建立:职工、工资级别、职工工资)完成: 询职工的平均工资查询某一级别人员的平均工资普调工资将职工姓名按工资额度进行排序【题目2】最小生成树要求:设计数据结构,存储结构;并在Tc或兼容环境完成。程序运行界面交互性好;工作计划与进度安排:本课程设计时间为17、18教学周。其中包含设计、代码调试、课程设计论文撰写几个阶段。第17周星期一:设计任务分析和总体设计星期二:软件算法和流程设计星期三、四、五:软件编

    2、码实现第18周周一:软件总体调试周二:软件运行分析周三:答辩、验收程序周四:答辩、验收程序周五:书写课程设计报告,提交指导教师: 2012年12月28日专业负责人:2012 年12月28日学院教学副院长:2012 年12月28日目 录1 需求分析. 52 概要设计. 5 2.1 题目概述.5 2.2 存储结构设计说明.5 2.3 算法流程图. .63 详细设计.93.1工资管理. .9 3.2最小生成树 . 144 调试分析.155 课设总结.196 参考文献.191 需求分析:该程序包括工资管理和最小生成树两部分。各需求如下所述:1.1工资管理系统对工资信息进行如下管理:(1) 输入员工姓名

    3、、工资及等级;(2) 插入、删除员工信息;(3) 计算所有员工的平均工资;(4) 计算某一等级内所有员工的平均工资;(5) 提高或降低员工工资;(6) 按工资额度对员工姓名进行降序排列;(7) 显示管理后的职工信息;1.2最小生成树(1)确定点数边数,输入相应的点,建立一个N个顶点的无向图;(2)给各条边加权。(3)用链表将所有邻接边按加权值递增顺序连接起来(直到产生N-1个邻接边)。(4)输出生成的最小生成树。2 概要设计2.1题目概述2.1.1工资管理:自己建立数据文件(可建立:职工、工资级别、职工工资)完成:查询职工的平均工资查询某一级别人员的平均工资普调工资将职工姓名按工资额度进行排序

    4、2.1.2最小生成树对于具有N个顶点的加权无向图,设计一个利用Kruskal算法找出最小生成树的程序。2.2存储结构设计说明2.2.1工资管理typedef struct xm name; /职工姓名 int pays; /职工工资 int wages_rank;/职工工资等级 worker,workersMAX; /职工总数限制为100人2.2.2最小生成树v1,v2表示两顶点,weight表示边长即权typedef struct char v1; char v2; int weight; /权 Bdian;/ 边表结构 typedef struct Bdian space100; int

    5、Elength;/边条数 Bbiao; /顶点结构 typedef struct char v; int flag; Ddian;/顶点表结构typedef struct Ddian biao20; int Glength; /点个数Mark;2.3算法流程图2.3.1工资管理主菜单修改职工文档普调工资工资排序 查询某级 职工的均资 查询职工的平均工资 退 出 新 建 追 加 上 涨 下 调 返 回 删 除 返 回 图21系统总体功能框图开始1) 职工信息输入姓名判断是否为 是 不是输入工资及等级结束图22职工信息输入的算法流程图2)某一等级职工的平均工资开始输入等级rankstaffi.wa

    6、ges_rank=rank? 否 是sum+=staffi.wages_rank;i+;d+;i+Avg=sum/d;结束图23某一等级的职工的平均工资的算法流程图2.3.1最小生成树建立n个顶点边集为空的子图选取一条权值最小的边分属不同的树?属于加入子图不属于不可取合成新的一棵树结束图24小生成树算法流程图3 详细设计3.1工资管理u 定义一个二维数组,用staffi.name存储职工姓名,用staffi.pays存储职工工资,用staffi.wages_rank存储职工工资等级。i表示职工的存储顺序。int abc(workers staff,int i,int n)/后面多次运用,单独取

    7、出作为函数 printf( t 工资与工资等级对照表nn); printf( * 工资等级 | 工资范围 *n); printf( * 1t | 1000,3000) *n); printf( * 2t | 3000,5000) *n); printf( * 3t | 5000,10000) *n); printf( * 4t | 10000,unknow) *nn); printf(请依次输入职工信息:职工姓名(结束),工资,工资等级(1-4):n); scanf(%s,staffi.name);/输入职工姓名 while(strcmp(staffi.name,)!=0)&i=1000&st

    8、affi.pays=3000&staffi.pays=5000&staffi.pays10000)break;else printf(data error!n); exit(0); default: printf(data error!n);exit(0); +i; scanf(%s,staffi.name);/输入职工姓名 return i;/返回现在职工总人数u abc函数中定义了一个二维数组用来存储职工的姓名、工资、和工资等级。调用函数abc新建职工列表。输入职工姓名判断是否为输入结束符后,再继续输入工资和等级,然后判断信息是否符合规定,继而循环执行,最后返回结果职工总人数void ne

    9、wfile(workers staff)/输入职工信息并返回职工人数 system(cls); n=abc(staff,0,MAX); printf(成功输入%d位职工信息!n,n); go_on();u 若想在已有的职工信息表上添加某个或某几个职工信息可调用该函数来存储新输入的职工信息,从而增加职工信息。在原有职工信息表的后面添加要增加的职工信息即可。void add_worker(workers staff) int add,i; worker staffsMAX+EXTRA; printf(请输入要增加职工的人数:); scanf(%d,&add); if(n+addMAX) for(i

    10、=0;in;+i)/结构体数组staff的值赋给结构体数组staffs strcpy(staffsi.name,staffi.name); staffsi.pays=staffi.pays; staffsi.wages_rank=staffi.wages_rank; n=abc(staffs,n,n+add); else n=abc(staff,n,MAX+EXTRA); printf(成功输入增加的%d位职工的信息!n,add);go_on();u 输入要删除的职工信息存入数组后,逐个与职工信息表进行核对判断是否存在,如果存在的话就将其删除,然后将这个职工的信息后面的职工信息前移void d

    11、isplay(workers staff)/显示职工信息 system(cls); int i; printf(职工信息如下:n); printf(*n); printf(t姓名t工资t工资等级n); for(i=0; in; i+) printf(t%st %dt %dn,staffi.name,staffi.pays,staffi.wages_rank);printf(*n);go_on();void all_average(workers staff)/求所有职工的平均工资 int i; long sum=0; for(i=0; in; i+) sum+=staffi.pays; pri

    12、ntf(所有职工共计%d人平均工资为:%d元,n,sum/n);go_on();u 调用该函数可以及时查询职工信息void display(workers staff)/显示职工信息 system(cls); int i; printf(职工信息如下:n); printf(*n); printf(t姓名t工资t工资等级n); for(i=0; in; i+) printf(t%st %dt %dn,staffi.name,staffi.pays,staffi.wages_rank);printf(*n);go_on();u 先对所有职工工资求和,然后除以总人数则可求出所有职工的平均工资void

    13、 all_average(workers staff)/求所有职工的平均工资 int i; long sum=0; for(i=0; in; i+) sum+=staffi.pays; printf(所有职工共计%d人平均工资为:%d元,n,sum/n);go_on();u 判断某工资等级是否与所要查询的工资等级相等,若相等则进行相加,否则继续寻找判断直至查找完所有的职工工资。void part_average(workers staff) /查询某一级别人员的平均工资system(cls); int rank;int d=0; int sum=0,i=0,avg; printf(输入要查询的

    14、工资等级(1-4):); scanf(%d,&rank); if(0rank&rank5) while(in) if(staffi.wages_rank=rank) sum+=staffi.pays;d=i;d+; i+; avg=sum/d; printf(平均工资为%d元n,avg); else printf(工资等级不存在!请重新输入!n); go_on();u 由于某种原因可能要对职工工资进行调动。将职工的原有工资都加(或减)要调动的工资,然后根据工资与工资等级对照表将职工的最新工资划分等级void pays_up(workers staff)/普调:上调工资 system(cls);

    15、 int up,i; printf(请输入要上调的工资幅度值:); scanf(%d,&up); for(i=0; i=1000&staffi.pays=3000&staffi.pays=5000&staffi.pays10000) staffi.wages_rank=4; printf(完成对职工工资普调上涨%d元 !,up);go_on();void pays_down(workers staff)/普调:降低工资 system(cls); int down,i; printf(请输入要下调的工资幅度值:); scanf(%d,&down); for(i=0; i=1000&staffi.

    16、pays=3000&staffi.pays=5000&staffi.pays10000)staffi.wages_rank=4; if(staffi.pays1000) staffi.pays=1000; staffi.wages_rank=1; printf(职工%s的工资低于1000元自动调整为1000元!n,staffi.name); printf(完成对职工工资普调下调%d元!n,down); go_on();void show(xm s,int r)/显示字符数组内容int i; for(i=0; ir; i+) printf(%st,si); printf(n);u 判断职工工资所

    17、在的工资等级然后将各等级的所有职工姓名赋给某一数组,最后按职工工资等级将职工姓名对应输出void drop(workers staff) /将职工姓名按工资额度进行排序 system(cls); printf(职工姓名按工资额度进行排序如下:n); xm aMAX,bMAX,cMAX,dMAX; int i,j=0,k=0,m=0,l=0; for(i=0; in; i+) if(staffi.wages_rank=1) strcpy(aj+,staffi.name);/将职工姓名对应存入数组 if(staffi.wages_rank=2) strcpy(bk+,staffi.name); i

    18、f(staffi.wages_rank=3) strcpy(cm+,staffi.name); if(staffi.wages_rank=4) strcpy(dl+,staffi.name);printf(*n); printf(工资等级为一级的职工姓名为:);show(a,j); printf(工资等级为二级的职工姓名为:);show(b,k); printf(工资等级为三级的职工姓名为:); show(c,m); printf(工资等级为四级的职工姓名为:);show(d,l); printf(*n); go_on();3.2最小生成树u 已经输入完点数和边数,此函数用来把顶点存在M.bi

    19、ao中void InitMark(Mark &M,int x)int j; M.Glength=x; printf(请依次输入这些点:n); for(j=0;jx;j+) scanf(%s,&M.biaoj.v); M.biaoj.flag=-1; /初始化顶点标志 u 给两个顶点间的边加权,并将其记录存储void InitBbiao(Bbiao &H,int y)int k; H.Elength=y; for(k=1;k=y;k+) printf(请输入边的关系:n); scanf(%s%s%d,&H.spacek.v1,&H.spacek.v2,&H.spacek.weight); u 用

    20、链表将所有邻接边按加权值递增顺序连接起来。链表结点包含两个顶点、权值、指针。void HeadAdjust(Bbiao &H,int s,int m) Bdian rc; int p; rc=H.spaces; for(p=2*s;p=m;p*=2) if(pm&(H.spacep.weightH.spacep.weight) break; H.spaces=H.spacep; s=p; H.spaces=rc; /建立边表 void HeadSort(Bbiao &H) int q; Bdian rb; for(q=H.Elength/2;q0;-q) HeadAdjust(H,q,H.El

    21、ength); for(q=H.Elength;q1;-q) rb=H.space1; H.space1=H.spaceq; H.spaceq=rb; HeadAdjust(H,1,q-1); 4 调试分析1)最上面的选择界面用输出函数直接输出,然后根据输入的数字选择相应的程序并调用相应的函数进入所选择的程序运行界面。图41进入界面选择工资管理系统2)选择0进入职工信息新建和修改选择界面图42进入职工信息管理3)根据职工工资与工资等级对照表输入职工信息图43输入职工工资信息4)输出职工信息,表示职工信息已输入并存储图44显示职工信息5)调用函数按职工工资额度对职工姓名进行排序并输出图45显示排

    22、序后的职工姓名6)调用函数求所有职工的平均工资并输出图46查询职工的平均工资7)选择要求平均工资的等级输入然后计算输出图47查询某一等级的平均工资8)进入选择功能界面,选择最小生成树然后输入点数边数,边的关系最后生成最小生图48最小生成树生成界面5 课程总结在做这次课程设计时,我遇到了许多问题。这其中有以前学的C语言中的也有这学期学的数据结构。我深刻认识到自己的不足。就C语言而说,循环结构运用的不是很熟练,一些多层循环出现了错误。还有文件的运用更是差多了。数据结构方面链表的使用不熟练当然还有许多其他没发现的问题。就计算机专业而言,这些方面不行那是绝对不行的,对以后的就业及发展是相当不利的。另一

    23、方面我意识到理论与实践的重要性,只有上课时的简单理论是不够的,没有平时编写程序的练习,运用起来特别生疏,好多地方都要边翻课本边写程序。我发现程序中出错的地方往往都是一些细节,例如变量的定义(有时在一个程序中给同一个变量赋两个值导致计算错误)、还有对于一些判断条件掌握的不够准确(比如=4有时就判断成4,导致错误)、还有就是一些逻辑上的错误,这一方面在循环时体现的特别明显。总之,错误不少,有许多地方就不该错但还是出错了。我认为还是平时编程做的少的原因。所谓孰能生巧,我相信通过多做练习我的技术会越来越好的。平时也要多注意理论的学习,许多课本上不常用的只是慢慢就会淡忘了,比如算法的画法等;有些算法什么的会用但讲起来就没词了。6 参考文献1严蔚敏,吴伟民著. 数据结构:C语言版. 清华大学出版社,20072谭浩强著. C+面向对象程序设计. 北京:清华大学出版社,2006沈阳理工大学 17


    注意事项

    本文(数据结构课程设计工资管理和最小生成树两部分.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922