职工管理 家谱 数据结构课程设计电子版报告Word文档下载推荐.docx

上传人:b****3 文档编号:15142204 上传时间:2022-10-28 格式:DOCX 页数:27 大小:74.18KB
下载 相关 举报
职工管理 家谱 数据结构课程设计电子版报告Word文档下载推荐.docx_第1页
第1页 / 共27页
职工管理 家谱 数据结构课程设计电子版报告Word文档下载推荐.docx_第2页
第2页 / 共27页
职工管理 家谱 数据结构课程设计电子版报告Word文档下载推荐.docx_第3页
第3页 / 共27页
职工管理 家谱 数据结构课程设计电子版报告Word文档下载推荐.docx_第4页
第4页 / 共27页
职工管理 家谱 数据结构课程设计电子版报告Word文档下载推荐.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

职工管理 家谱 数据结构课程设计电子版报告Word文档下载推荐.docx

《职工管理 家谱 数据结构课程设计电子版报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《职工管理 家谱 数据结构课程设计电子版报告Word文档下载推荐.docx(27页珍藏版)》请在冰豆网上搜索。

职工管理 家谱 数据结构课程设计电子版报告Word文档下载推荐.docx

任务序号

任务名称

起止页码

1

实验14—1设计一个职工文件程序

3——11

2

实验14—2设计一个用二叉树表示一个家谱关系的程序

12——22

设计任务

(1)

任务

名称

班级

08级1班

指导

教师

许海成

地点

红河学院

成绩

学年

2009-2010

开始

日期

2009-12-20

结束

2010-2-25

组员

设计目的及要求:

目的:

(1)加深对单链表类型定义,表示,存储的理解,并能够熟悉的掌握它的应用,以及它在程序设计中的使用方法。

(2)熟悉各种排序在程序设计中的运用。

(3)掌握软件设计的基本内容和设计方法,并能培养进行规范化软件设计能力。

要求:

(1)分析题目,查阅相关资料进行辅助设计。

(2)确定程序函数功能模块,清晰的设计出整个程序的思路。

(3)按题目要求编写出完整的程序。

(4)规范程序,调式运行程序,并写出运行结果及分析结果。

 

设计内容及基本要求:

内容:

有一个结构为:

职工号,姓名,部门号,工资,职工号指针,部门号指针及工资指针的职工文件。

设计一个程序,从该职工文件中读取记录到一个单链表中,并完成相应的操作功能。

基本要求:

(1)要求实现增加,删除,输出职工记录。

(2)要求能实现按职工号,按部门号,按工资进行排序。

(3)能够按其对应的排序输出职工记录。

(4)要给出整个设计的框架说明,及程序的各个函数功能的描述。

(5)要求能全面的测试所设计程序的各项功能;

同时给出程序的测试情况,并分析运行结果。

(6)要求程序清单中应有充分的注释语句。

(7)书写整洁规范。

采用的设计方法、设计技术路线:

(包括本任务的总体安排和进度、采用的设计方法和步骤以及任务流程图、可能遇到的问题和解决的方法)

设计方法及步骤:

(1)定义头文件及宏定义命令,再定义一个含7个数据项的职工文件类型的结构体,且结构体变量为EmpType;

(2)根据题目要求实现的功能,编写各个函数功能模块。

包括增加,删除,输出职工记录及排序等。

(3)在调用职工文件内的各数据项都需考虑是否为空,为空则return;

否则,进行参与运算。

(4)进行排序及输出设计时,按照定义结构体的变量来引用结构体信息进行比较并输出。

(5)定义主函数。

主函数中包括:

打印程序能实现的各功能的菜单选项;

调用各函数功能模块;

结束程序运行的语句。

任务总体安排:

2009-12-20~2010-3-1完成课程设计所要求的全部任务。

进度安排:

2009-12-20~2009-12-31:

图书馆查阅及上网搜索相关资料,并温习阅读课本上的相关知识。

2010-01-01~2010-01-20:

对问题进行抽象分析,确定描述编写程序的算法,并编写出程序。

2010-01-25~2010-02-10:

设计完整的程序进行调式及运行演示。

2010-02-17~2010-02-20:

对设计好的程序进行总结分析。

2010-02-20~2010-02-25:

填写课程设计报告,并提交指导教师。

任务流程图:

定义头文件--------定义职工文件结构体---------各函数功能模块---------主函数--------运行程序。

可能遇到的问题:

(1)由于参考资料有限,知识面不全,学的程度较浅,自身思维考虑局限,程序逻辑结构混乱,程序中对某些方面的定义不符合。

(2)程序中的算法结构单一,考虑不全,可能不能处理一些特殊、复杂的问题且不能处理乱字符。

解决的方法:

(1)多看程序设计方面的书籍,多研究经典例题,多进行练习,掌握其算法及运用。

(2)认真学好离散数学相关知识,加强自身逻辑思维的训练锻炼。

设计成果及总结分析:

(设计成果包括程序清单、测试数据、指定的功能模块说明、设计说明,程序清单可打印)

函数功能模块说明:

该程序主要由以下函数构成:

(1)DelAll():

删除职工文件中的全部记录

(2)InputEmp():

增加一个职工记录

(3)outputFile():

输出全部职工记录

(4)sortno():

按职工号排序

(5)Dispno():

按职工号排序输出

(6)sortdepno():

按部门号排序

(7)Dispdep():

按部门号排序输出

(8)sortsalary():

按工资排序

(9)Dispsalary():

按工资排序输出

(0)SaveFile():

将单链表中的全部结点存储到职工文件中

程序清单:

#include<

iostream.h>

stdlib.h>

stdio.h>

string.h>

#defineMaxSize100

typedefstructnode

{

intno;

/*职工号*/

charname[10];

/*姓名*/

intdepno;

/*部门号*/

floatsalary;

/*工资数*/

intpno;

/*职工号指针*/

intpdepno;

/*部门号指针*/

intpsalary;

/*工资数指针*/

}EmpType;

/*职工类型*/

voidDelAll(EmpTypeemp[],int&

n)/*清除职工文件全部记录*/

{FILE*fp;

if((fp=fopen("

emp.dat"

"

wb"

))==NULL)

{printf("

不能打开职工文件\n"

);

return;

}

emp[0].pno=emp[0].pdepno=emp[0].psalary=-1;

/*初始化*/

n=0;

printf("

已删除全部职工文件记录!

\n"

fclose(fp);

voidReadFile(EmpTypeemp[],int&

n)/*读数据文件存入emp数组中*/

{FILE*fp;

longlen;

inti;

rb"

{n=0;

fseek(fp,0,2);

len=ftell(fp);

rewind(fp);

n=len/sizeof(EmpType);

if(n!

=0)

n--;

else

emp[0].pno=emp[0].psalary=-1;

for(i=0;

i<

=n;

i++)

fread(&

emp[i],sizeof(EmpType),1,fp);

voidSaveFile(EmpTypeemp[],intn)

{inti;

FILE*fp;

if((fp=fopen("

>

数据不能打开\n"

return;

if(n>

1)

for(i=0;

fwrite(&

printf("

已将单链表中全部结点存储到职工文件中!

fclose(fp);

voidInputEmp(EmpTypeemp[],int&

n)

输入职工号,姓名,部门号,工资:

n++;

scanf("

%d%s%d%f"

&

emp[n].no,&

emp[n].name,&

emp[n].depno,&

emp[n].salary);

emp[n].pno=emp[n].pdepno=emp[n].psalary=0;

voidOutputFile(EmpTypeemp[],intn)

if(n<

没有任何记录\n"

全部职工记录为:

for(i=1;

%3d%7s%7d%7g\n"

emp[i].no,emp[i].name,emp[i].depno,emp[i].salary);

voidSortno(EmpTypeemp[],intn)

{inti=2,j;

没有职工记录,不能按职工号排序\n"

emp[0].pno=1;

emp[1].pno=-1;

while(i<

=n)

{j=0;

while(emp[j].pno!

=-1&

&

emp[emp[j].pno].no<

emp[i].no)

j=emp[j].pno;

emp[i].pno=emp[j].pno;

emp[j].pno=i;

i++;

}printf("

按职工号排序完成!

voidDispno(EmpTypeemp[],intn)

{inti=emp[0].pno;

if(i==-1)

尚未按职工号排序\n"

按职工号排序为:

while(i!

=-1)

i=emp[i].pno;

voidSortdepno(EmpTypeemp[],intn)

if(n<

>

没有职工记录,不能按部门号排序\n"

emp[0].pdepno=1;

emp[1].pdepno=-1;

while(emp[j].pdepno!

emp[emp[j].pdepno].pdepno<

emp[i].pdepno)

j=emp[j].pdepno;

emp[i].pdepno=emp[j].pdepno;

emp[j].pdepno=i;

i++;

按部门号排序完成!

voidDispdepno(EmpTypeemp[],intn)

{inti=emp[0].pdepno;

尚未按部门号排序\n"

按部门号排序为:

emp[i].no,emp[i].name,emp[i].depno,emp[i].salary)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1