职工管理 家谱 数据结构课程设计电子版报告 联系客服

发布时间 : 星期六 文章职工管理 家谱 数据结构课程设计电子版报告更新完毕开始阅读a3e98760783e0912a2162ac1

采用的设计方法、设计技术路线:(包括本任务的总体安排和进度、采用的设计方法和步骤以及任务流程图、可能遇到的问题和解决的方法) 设计方法及步骤: (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)认真学好离散数学相关知识,加强自身逻辑思维的训练锻炼。 5

设计成果及总结分析:(设计成果包括程序清单、测试数据、指定的功能模块说明、设计说明,程序清单可打印) 函数功能模块说明: 该程序主要由以下函数构成: (1)DelAll() :删除职工文件中的全部记录 (2)InputEmp() :增加一个职工记录 (3)outputFile() :输出全部职工记录 (4)sortno() :按职工号排序 (5)Dispno() :按职工号排序输出 (6)sortdepno() :按部门号排序 (7)Dispdep() :按部门号排序输出 (8)sortsalary() :按工资排序 (9)Dispsalary() :按工资排序输出 (0)SaveFile() :将单链表中的全部结点存储到职工文件中 程序清单: #include #include #include #include #define MaxSize 100 typedef struct node { int no; /*职工号*/ char name[10]; /*姓名*/ int depno; /*部门号*/ float salary; /*工资数*/ int pno; /*职工号指针*/ int pdepno; /*部门号指针*/ int psalary; /*工资数指针*/ }EmpType; /*职工类型*/ void DelAll(EmpType emp[],int &n) /*清除职工文件全部记录*/ {FILE *fp; if ((fp=fopen(\ {printf(\不能打开职工文件\\n\return; } emp[0].pno=emp[0].pdepno=emp[0].psalary=-1; /*初始化*/ n=0; printf(\已删除全部职工文件记录!\\n\fclose(fp); }

6

void ReadFile(EmpType emp[],int &n) /*读数据文件存入emp数组中*/ {FILE*fp; long len; int i; if ((fp=fopen(\{n=0; return; } 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); fclose(fp); } void SaveFile(EmpType emp[],int n) {int i; FILE*fp; if((fp=fopen(\{printf(\数据不能打开\\n\ return; } if(n>1) for(i=0;i<=n;i++) fwrite(&emp[i],sizeof(EmpType),1,fp); printf(\已将单链表中全部结点存储到职工文件中!\\n\ fclose(fp); } void InputEmp(EmpType emp[],int &n) {printf(\输入职工号,姓名,部门号,工资:\\n\ n++; scanf(\emp[n].pno=emp[n].pdepno=emp[n].psalary=0; } void OutputFile(EmpType emp[],int n)

7

{int i; if(n<1) { printf(\没有任何记录\\n\ return; } printf(\全部职工记录为:\\n\for(i=1;i<=n;i++) printf(\} void Sortno(EmpType emp[],int n) {int i=2,j; if(n<1) {printf(\没有职工记录,不能按职工号排序\\n\ return; } emp[0].pno=1;emp[1].pno=-1; while(i<=n) {j=0; while(emp[j].pno!=-1&& emp[emp[j].pno].no

8