1、5.1、进入主函数:系统里各职工的信息保存在tt.txt中。5.2、查询所有职工信息,系统直接从tt.txt中读出:5.3、添加职工信息,可以选择一次要添加多个人:添加之后,可以在tt.txt中查看,是否已经插入进去:5.4、删除职工信息,通过姓名查找与输入姓名相同的职工,再删除:删除之后,可以再tt.txt中查看是否已经删除成功:5.5、查询职工信息,同过查找与输入姓名相同的职工,查找其住宿信息:5.6、修改职工信息,同过查找与输入姓名相同的职工,可以修改其全部信息:修改之后,可以在tt.txt中查看是否成功修改:5.7、调换部门,先查找出要调换的职工,然后再设置要调换的部门:调换之后,可以
2、再tt.txt中查看是否已经成功调换5.8、查询全部部门:参考文献 (包括书籍、论文、网络资料等)1 秦锋等.数据结构(C语言版).北京:清华大学出版社,2012.1 2 严蔚敏等.数据结构(C语言版).北京:清华大学出版社,2007.4相关工具:Microsoft Visual C+ 6.0附录 程序源代码#include stdio.hstring.hstdlib.h#includeusing namespace std;#define maxsize 100 /最多100人typedef struct node /职工结点信息 char name15; /姓名 char sex6; /性
3、别 char birthday15; /生日 char position15; /职务 char department20;/部门 char address15; /住址 char telephone12; /电话 struct node * next; /后继结点DataType,LNode ,*LinkList; /结点类型,指向LNode类型结点的指针/DataType x;LinkList init(LinkList Head) Head=(LinkList)malloc(sizeof(LNode); Head-next=NULL; return Head;LinkList Inser
4、t(LinkList Head,LinkList x)/职工信息的插入姓名并按照升序排列/职工信息保存在x这个结点中,插入x这个结点 LinkList p,q,s=NULL; p=Head-next; q=(LinkList)malloc(sizeof(LNode); if(!q) coutname,x-name);sex,x-sex);birthday,x-birthday);position,x-position);department,x-department);address,x-address);telephone,x-telephone);/ p)/如果只有Head,则直接将q插在
5、Head后头; Head-next=q;next- else/链表非空 for(;p;p=p-next)/从p开始到最后一个结较点与结点x比,来确定结点x插入的位置 if(p-next!=NULL) if(strcmp(p-name)name)0)/前小后大 /结点x的首值大于结点p的首值但小于p-next的首值,即结点x插在结点p于结点p-next之间 s=p- q-next=s; p- break; else if(strcmp(p-name)=0) break; /因为表设计为姓名为主键,所以不能重复,所以姓名相同,则不插入信息 if(strcmp(p- p-next=NULL) /(p
6、-(x-name),直接插在p之后 q- break; 0) /结点x插在p之前,位于链表头结点之后的位置 p=Head- Head-next=p; break; /*不排序,直接插入 q- p=q;*/ coutp!=NULL;next) p-nametsexbirthdaypositiondepartmentaddresstelephone职工名单为空,无须删除 else职工名单如下:n姓名性别出生年月职务部门住址 电话 print(Head);void Delete(LinkList Head)/职工信息的删除 LinkList s; s=(LinkList)malloc(sizeof(
7、LNode); char x20;/定义职工姓名 s=Head;next=NULL)/链表为空,不用删除职工名单为空! return ;请输入要删除职工的姓名:; cinx;s-s=s-next)/遍历链表,找与输入name一样的,删除。 if(strcmp(s-name,x)=0)/找出p的前驱结点s,删除s- LinkList tmp=s- s-next=s- free(tmp); cout名单中无此职工,无须删除void Modify(LinkList Head)/修改,输入姓名,找到姓名所属信息,然后可以一次性全部修改 LinkList s,p; if(p=NULL)请输入职工姓名:n
8、ame;next)/在链表中一次查找name,p-请依次写入职工的新信息:电话 cinnamesexbirthdaypositiondepartmentaddresstelephone;修改成功!名单中无此人,无须修改!void changeDepart(LinkList Head)/调换部门请输入姓名: for(p;next) if(strcmp(s-name)=0)/找到姓名相同的结点 cout while(p) file file.close();LinkList GetDataFromFile()/读取文件 ifstream file(in); LinkList head=NULL;
9、head=new LNode; head- char tmp25;/ bool flag=false; while(1) if(filetmp)/读入文件,只要不是结尾 flag=true; if(flag=true) LinkList tNode=new LNode; strcpy(tNode-name,tmp); filetNode-sex;birthday;position;address; tNode-next=head- head-next=tNode; flag=false; else return head;void main() int num,i; LinkList x;/插
10、入的结点 LinkList Head=NULL; Head=GetDataFromFile();*欢迎进入安徽工程大学职工管理系统* 主菜单 n 0.结束管理系统 1.新增职工信息 2.删除职工信息 n n n 3.查询职工住宿信息 4.修改职工信息 5.显示全部职工信息n n n 6.查询所有部门信息 7.调换部门请输入您要选择的操作的序号: cini; if(i=0) SaveToFile(Head);信息已存入硬盘.您已经成功退出安徽工程大学职工管理系统,谢谢使用! if(i=1)请输入要录入的职工人数:num;请输入职工信息:家庭住址电话号码 for( i=0;ii+) cout请输入第i+1x- 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 输入有误!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1