您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 数据结构大作业(含源代码)
数据结构大作业数据结构大作业作业题目:职工信息管理系统姓名:叶尔凯西·革命学号:08080605227班级:计算机07-(1)班指导教师:日期:2010年6月13日数据结构大作业职工信息管理系统(伊犁师范学院计算机科学系07-1班叶尔凯西)摘要:本程序实现了一个职工管理系统中的常见功能,包括建立职工信息,输出职工信息以及根据职工号、部门号、职工的工资进行排序的功能,还有对整个职工表的清空的功能.关键词:职工管理;职工管理系统;数据排序;排序1有关程序设计的引言随着信息技术的发展,在更多的情况下人们借助计算机来交流和储存信息,确切地说是用计算机程序来管理当今的庞大的信息,提高了信息技术的发展.在很多场合下计算机的这样管理程序的功能都派上了用场,譬如就职工信息管理而言,就得有个使用方便,功能全面,通俗易懂的管理程序是必备的.从这一点出发,本人设计出了一个计算机管理程序“职工管理系统”,接下来就说明该程序的功能.2程序简介该程序的功能可以从以下十个方面来说明:1.输入:添加一个职工记录2.输出:输出全部职工记录3.按职工号排序:通过职工号指针将职工记录按职工号从小到大连接起来4.按职工号输出:沿职工号指针输出全部职工记录5.按部门号排序:通过部门号指针将职工记录按部门号从小到大连接起来6.按部门号输出:沿部门号指针输出全部职工记录7.按职工工资排序:通过职工工资指针将职工记录按职工工资从小到大连接起来8.按职工工资输出:沿职工号指针输出全部职工记录9.全清:删除职工文件中有的全部记录10.存储退出:将单链表中的全部结点存储到职工文件中,然后退出程序运行过程3实验仪器每人1台安装有TurboC的普通学生电脑。数据结构大作业4实验内容利用静态链表来实现这一综合算法。5实验重点掌握链表的常用操作。6程序功能及其实现详解下面将详细介绍本程序的所有功能的实现方式即代码的含义,在设计本程序时,本人尽可能地用了质量好一点的算法,因为本程序有以上10个功能,显然应有实现相应功能的10个函数,不过在设计时本人将输出部分统一到一个函数中来实现.因为在面向过程的程序设计中包括面向对象的程序设计一般都没有一种职工类型的变量,因此在一开始得建立一个结构体变量即所谓的职工类型,此部分的代码如下:typedefstructnode{intno,depno,salary;/*no为职工号,depno为部门号,salary为工资数*/charname[maxsize];/*职工姓名*/structnode*pno,*pdepno,*psalary,*next;/*pno为职工号指针,pdepno为部门号指针,psalary为工资数指针*/}employee;显然,结构体中的成员包括职工姓名、职工号、部门号、职工工资、以及一些指向其它该类型结点的指针变量.下面介绍实现第一个功能的代码:employee*insert(employee*head){employee*h;if(head==NULL){employee*s,*h1;h1=malloc(sizeof(employee));s=malloc(sizeof(employee));clrscr();数据结构大作业printf(pleaseinputemployee'sname:);scanf(%s,s-name);printf(pleaseinputemployee'snumber:);scanf(%d,&s-no);printf(pleaseinputdepartment'snumber:);scanf(%d,&s-depno);printf(pleaseinputemployee'swages:);scanf(%d,&s-salary);s-pno=NULL;s-pdepno=NULL;s-psalary=NULL;s-next=NULL;h1-pno=NULL;h1-pdepno=NULL;h1-psalary=NULL;h1-next=s;h=h1;printf(alldone!\n);getch();}if(head!=NULL){employee*s,*p,*h1;h1=head;p=h1-next;s=malloc(sizeof(employee));if(p-next!=NULL){while(p-next!=NULL)p=p-next;数据结构大作业clrscr();printf(pleaseinputemployee'sname:);scanf(%s,s-name);printf(pleaseinputemployee'snumber:);scanf(%d,&s-no);printf(pleaseinputdepartment'snumber:);scanf(%d,&s-depno);printf(pleaseinputemployee'swages:);scanf(%d,&s-salary);s-pno=NULL;s-pdepno=NULL;s-psalary=NULL;s-next=NULL;p-next=s;h=h1;printf(alldone!\n);getch();}if(p-next==NULL){clrscr();printf(pleaseinputemployee'sname:);scanf(%s,s-name);printf(pleaseinputemployee'snumber:);scanf(%d,&s-no);printf(pleaseinputdepartment'snumber:);scanf(%d,&s-depno);printf(pleaseinputemployee'swages:);scanf(%d,&s-salary);数据结构大作业s-pno=NULL;s-pdepno=NULL;s-psalary=NULL;s-next=NULL;p-next=s;h=h1;printf(alldone!\n);getch();}}return(h);}本函数实现的功能是插入一个职工记录到职工表中,为此我们还得把这个函数的返回类型设计成之前建立的结构体类型的指针函数,而函数的参数是一个职工类型的头指针变量,在main函数中也同时建立一个头指针变量,且给它赋空值,在调用该函数时就把空指针传给插入函数,当职工表为空即第一次插入一个职工记录时,很自然传给插入函数的头指针的值为空有此来判断是新建立一个结点还是在已有的结点后插入一个(连接)结点,若头指针不为空,即已有一个或多个结点在职工记录表中,则只能插在最后一个节点之后.当职工表中只有一个职工记录时,(即head-next-next==NULL时)插在第一个结点后面,当职工表中的结点多于两个时就插在最后一个结点后面.下面说明第二个功能的实现部分:voidoutput(employee*head){employee*p;if(head==NULL){clrscr();printf(Thetableisempty,pleaseinsertbefore!\n);}数据结构大作业else{p=head-next;if(p!=NULL){clrscr();printf(allinformationofemployee\n\n);printf(employee'snameemployee'snumberdepartment'snumberemployee'swages\n);while(p!=NULL){printf(\t%s\t\t%d\t\t\t%d\t\t%d\n,p-name,p-no,p-depno,p-salary);p=p-next;}}}getch();}本函数的功能是实现职工记录表中的所有记录,若没有任何一个记录,则输出一个提示语句来提醒使用者职工表为空,若不为空则从第一号结点开始输出一直到最后一个结点(以表格形式输出).下面分别介绍根据职工号、部门号以及职工工资来排序的函数:employee*SortByEmployeeNumber(employee*head){employee*p,*q,*s,*h,*temp;temp=malloc(sizeof(employee));h=head;for(s=head-next;s!=NULL;s=s-next){数据结构大作业p=s;for(q=s-next;q!=NULL;q=q-next){if((p-no)(q-no))p=q;}if(p!=s){temp-no=s-no;temp-depno=s-depno;temp-salary=s-salary;strcpy(temp-name,s-name);s-no=p-no;s-depno=p-depno;s-salary=p-salary;strcpy(s-name,p-name);p-no=temp-no;p-depno=temp-depno;p-salary=temp-salary;strcpy(p-name,temp-name);}}clrscr();printf(alldone!\n);getch();return(h);}employee*SortByDepartmentNumber(employee*head){数据结构大作业employee*p,*q,*s,*h,*temp;temp=malloc(sizeof(employee));h=head;for(s=head-next;s!=NULL;s=s-next){p=s;for(q=s-next;q!=NULL;q=q-next){if((p-depno)(q-depno))p=q;}if(p!=s){temp-no=s-no;temp-depno=s-depno;temp-salary=s-salary;strcpy(temp-name,s-name);s-no=p-no;s-depno=p-depno;s-salary=p-salary;strcpy(s-name,p-name);p-no=temp-no;p-depno=temp-depno;p-salary=temp-salary;strcpy(p-name,temp-name);}}clrscr();printf(alldone!\n);getch();return(h);数据结构大作业}employee*SortByWages(employee*head){employee*p,*q,*s,*h,*temp;temp=malloc(sizeof(employee));h=head;for(s=head-next;s!=NULL;s=s-next){p=s;for(q=s-next;q!=NULL;q=q-next){if((p-salary)(q-salary))p=q;}if(p!=s){temp-no=s-no;temp-depno=s-depno;temp-salary=s-salary;strcpy(temp-name,s-name);s-no=p-no;s-depno=p-depno;s-salary=p-salary;strcpy(s-name,p-name);p-no=temp-no;p-depno=temp-depno;p-salary=temp-salary;strcpy(p-name,temp-name);}}数据结构大作业clrscr();printf(alldone!\n);getch();return(h);}第一个就是根据职工号进行对职工表中的所有记录进行从小到大的排序,不过在这里说明一点,每一种排序都有相同的一点就是它们都是职工指针类型函数,且参数也是职工类型的头指针.在根据职工号来
本文标题:数据结构大作业(含源代码)
链接地址:https://www.777doc.com/doc-5131318 .html