数据结构课程设计工资管理和最小生成树两部分.doc
《数据结构课程设计工资管理和最小生成树两部分.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计工资管理和最小生成树两部分.doc(17页珍藏版)》请在沃文网上搜索。
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
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 工资管理 最小 生成 部分
