1、数据结构课程设计职工管理系统目录第一章 引言1第二章 需求分析2第三章 概要设计33.1 输入功能的实现.33.2 系统基本操作的实现.33.3 输出功能的实现.33.4 系统功能结构.3第四章 详细设计44.1 定义职工节点信息.44.2 主函数设计.44.3 主函数程序流程图.54.4 部分操作的核心代码.5 4.4.1 添加职工信息5 4.4.2 删除职工信息8 4.4.3 修改职工信息9 4.4.4 调换职工部门.9 4.4.5 根据姓名查询职工住址.10第五章 调试与分析125.1 进入主函数.125.2 查询所有职工信息.125.3 添加职工信息.135.4 删除职工信息.135.
2、5 查询职工住宿信息.145.6 修改职工信息.145.7 调换职工部门.155.8 查询全部部门.15第六章 系统使用说明166.1 主界面说明.166.2 新增职工信息界面说明.166.3 其他操作说明.16第七章 总结与体会17参考文献.18相关工具.18附录 程序源代码18第五章 调试与分析5.1、进入主函数:系统里各职工的信息保存在tt.txt中。5.2、查询所有职工信息,系统直接从tt.txt中读出:5.3、添加职工信息,可以选择一次要添加多个人:添加之后,可以在tt.txt中查看,是否已经插入进去:5.4、删除职工信息,通过姓名查找与输入姓名相同的职工,再删除:删除之后,可以再t
3、t.txt中查看是否已经删除成功:5.5、查询职工信息,同过查找与输入姓名相同的职工,查找其住宿信息:5.6、修改职工信息,同过查找与输入姓名相同的职工,可以修改其全部信息:修改之后,可以在tt.txt中查看是否成功修改:5.7、调换部门,先查找出要调换的职工,然后再设置要调换的部门:调换之后,可以再tt.txt中查看是否已经成功调换5.8、查询全部部门:参考文献 (包括书籍、论文、网络资料等)1 秦锋等.数据结构(C语言版).北京:清华大学出版社,2012.1 2 严蔚敏等.数据结构(C语言版).北京:清华大学出版社,2007.4相关工具:Microsoft Visual C+ 6.0附录
4、程序源代码#include #include #include #include #includeusing namespace std;#define maxsize 100 /最多100人typedef struct node /职工结点信息 char name15; /姓名 char sex6; /性别 char birthday15; /生日 char position15; /职务 char department20;/部门 char address15; /住址 char telephone12; /电话 struct node * next; /后继结点DataType,LNod
5、e ,*LinkList; /结点类型,指向LNode类型结点的指针/DataType x;LinkList init(LinkList Head) Head=(LinkList)malloc(sizeof(LNode); Head-next=NULL; return Head;LinkList Insert(LinkList Head,LinkList x)/职工信息的插入姓名并按照升序排列/职工信息保存在x这个结点中,插入x这个结点 LinkList p,q,s=NULL; p=Head-next; q=(LinkList)malloc(sizeof(LNode); if(!q) cout
6、申请空间失败!name,x-name); strcpy(q-sex,x-sex); strcpy(q-birthday,x-birthday); strcpy(q-position,x-position); strcpy(q-department,x-department); strcpy(q-address,x-address); strcpy(q-telephone,x-telephone);/ if(!p)/如果只有Head,则直接将q插在Head后头; Head-next=q; Head-next-next=NULL; else/链表非空 for(;p;p=p-next)/从p开始到最
7、后一个结较点与结点x比,来确定结点x插入的位置 if(p-next!=NULL) if(strcmp(p-name,x-name)next-name,x-name)0)/前小后大 /结点x的首值大于结点p的首值但小于p-next的首值,即结点x插在结点p于结点p-next之间 s=p-next; q-next=s; p-next=q; break; else if(strcmp(p-name,x-name)=0) break; /因为表设计为姓名为主键,所以不能重复,所以姓名相同,则不插入信息 if(strcmp(p-name,x-name)next=NULL) /(p-name)name),
8、直接插在p之后 p-next=q; q-next=NULL; break; if(strcmp(p-name,x-name)0) /结点x插在p之前,位于链表头结点之后的位置 p=Head-next; Head-next=q; q-next=p; break; /*不排序,直接插入 q-next=p; Head-next=q; p=q;*/ cout插入成功!next;p!=NULL;p=p-next) coutnametsextbirthdaytpositiontdepartmenttaddressttelephonenext=NULL) cout职工名单为空,无须删除endl; else
9、cout职工名单如下:n姓名t性别t出生年月t职务t部门t住址t 电话next=NULL)/链表为空,不用删除 cout职工名单为空!endl; return ; coutx; for(;s-next!=NULL;s=s-next)/遍历链表,找与输入name一样的,删除。 if(strcmp(s-next-name,x)=0)/找出p的前驱结点s,删除s-next; LinkList tmp=s-next; s-next=s-next-next; free(tmp); cout删除成功!请继续操作!next=NULL) coutnext; if(p=NULL) cout职工名单为空!endl
10、; return ; couts-name; for(;p!=NULL;p=p-next)/在链表中一次查找 if(strcmp(s-name,p-name)=0) cout请依次写入职工的新信息:endl; cout姓名t性别t出生年月t职务t部门t住址t电话p-namep-sexp-birthdayp-positionp-departmentp-addressp-telephone; cout修改成功!endl; break; if(p=NULL) coutnext; if(p=NULL) cout职工名单为空!endl; return ; else couts-name; for(p;p
11、!=NULL;p=p-next) if(strcmp(s-name,p-name)=0)/找到姓名相同的结点 coutp-department;/设置新的部门 break; cout调换部门成功!next; if(Head-next=NULL) cout职工名单中无此职工!endl; return ; couts-name; for(p;p!=NULL;p=p-next) if(strcmp(s-name,p-name)=0)/找到姓名相同的结点 cout住址: addressendl; break; if(p=NULL) cout名单中无此人!endl; return ; void prin
12、tDepartment(LinkList Head)/显示部门信息/ int i; cout所有部门名称为:next;p!=NULL;p=p-next) coutdepartmentnext; while(p) filenametsextbirthdaytpositiontdepartmenttaddressttelephonenext; file.close();LinkList GetDataFromFile()/读取文件 ifstream file(tt.txt,ios:in); LinkList head=NULL; head=new LNode; head-next=NULL; ch
13、ar tmp25;/ bool flag=false; while(1) if(filetmp)/读入文件,只要不是结尾 flag=true; if(flag=true) LinkList tNode=new LNode; strcpy(tNode-name,tmp); filetNode-sex; filetNode-birthday; filetNode-position; filetNode-department; filetNode-address; filetNode-telephone; tNode-next=head-next; head-next=tNode; flag=fal
14、se; else break; file.close(); return head;void main() int num,i; LinkList x;/插入的结点 LinkList Head=NULL; Head=GetDataFromFile(); cout*endl; cout*欢迎进入安徽工程大学职工管理系统*endl; cout*endl; cout 主菜单 nendl; cout 0.结束管理系统 1.新增职工信息 2.删除职工信息 n n n ; cout 3.查询职工住宿信息 4.修改职工信息 5.显示全部职工信息n n n; cout 6.查询所有部门信息 7.调换部门end
15、l; while(1) coutendl; couti; if(i=0) SaveToFile(Head); cout信息已存入硬盘.endl; cout您已经成功退出安徽工程大学职工管理系统,谢谢使用!endl; break; if(i=1) coutnum; cout请输入职工信息:endl; cout姓名t性别t出生年月t职务t部门t家庭住址t电话号码endl; for( i=0;inum;i+) cout请输入第i+1个职工信息:x-namex-sexx-birthdayx-positionx-departmentx-addressx-telephone; Head=Insert(Head,x); else if(i=2) Delete(Head); else if(i=3) Insearch(Head); else if(i=4) Modify(Head); else if(i=5) printLink(Head);/ system(cls);/清屏 else if(i=6) /查询所有部门信息 printDepartment(Head); else if(i=7) /部门调换 changeDepart(Head); else cout输入有误!endl; break;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1