数据结构课程设计职工管理系统Word文件下载.docx
《数据结构课程设计职工管理系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计职工管理系统Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。
5.1、进入主函数:
系统里各职工的信息保存在tt.txt中。
5.2、查询所有职工信息,系统直接从tt.txt中读出:
5.3、添加职工信息,可以选择一次要添加多个人:
添加之后,可以在tt.txt中查看,是否已经插入进去:
5.4、删除职工信息,通过姓名查找与输入姓名相同的职工,再删除:
删除之后,可以再tt.txt中查看是否已经删除成功:
5.5、查询职工信息,同过查找与输入姓名相同的职工,查找其住宿信息:
5.6、修改职工信息,同过查找与输入姓名相同的职工,可以修改其全部信息:
修改之后,可以在tt.txt中查看是否成功修改:
5.7、调换部门,先查找出要调换的职工,然后再设置要调换的部门:
调换之后,可以再tt.txt中查看是否已经成功调换
5.8、查询全部部门:
参考文献(包括书籍、论文、网络资料等)
[1]秦锋等.《数据结构(C语言版)》.北京:
清华大学出版社,2012.1
[2]严蔚敏等.《数据结构(C语言版)》.北京:
清华大学出版社,2007.4
相关工具:
MicrosoftVisualC++6.0
附录程序源代码
#include<
iostream>
stdio.h>
string.h>
stdlib.h>
#include<
fstream>
usingnamespacestd;
#definemaxsize100//最多100人
typedefstructnode//职工结点信息
{
charname[15];
//姓名
charsex[6];
//性别
charbirthday[15];
//生日
charposition[15];
//职务
chardepartment[20];
//部门
charaddress[15];
//住址
chartelephone[12];
//电话
structnode*next;
//后继结点
}DataType,LNode,*LinkList;
//结点类型,指向LNode类型结点的指针
//DataTypex;
LinkListinit(LinkListHead)
Head=(LinkList)malloc(sizeof(LNode));
Head->
next=NULL;
returnHead;
}
LinkListInsert(LinkListHead,LinkListx)//职工信息的插入姓名并按照升序排列
{//职工信息保存在x这个结点中,插入x这个结点
LinkListp,q,s=NULL;
p=Head->
next;
q=(LinkList)malloc(sizeof(LNode));
if(!
q)
{
cout<
<
"
申请空间失败!
endl;
return0;
}
/////////////将结点x赋予结点q/////////////
strcpy(q->
name,x->
name);
sex,x->
sex);
birthday,x->
birthday);
position,x->
position);
department,x->
department);
address,x->
address);
telephone,x->
telephone);
////////////////////////////////////////
p)//如果只有Head,则直接将q插在Head后头;
Head->
next=q;
next->
else//链表非空
for(;
p;
p=p->
next)//////从p开始到最后一个结较点与结点x比,来确定结点x插入的位置
{
if(p->
next!
=NULL)
{
if(strcmp(p->
name)<
0&
&
strcmp(p->
name)>
0)//前小后大
{//结点x的首值大于结点p的首值但小于p->
next的首值,即结点x插在结点p于结点p->
next之间
s=p->
q->
next=s;
p->
break;
}
elseif(strcmp(p->
name)==0)
break;
////因为表设计为姓名为主键,所以不能重复,所以姓名相同,则不插入信息
}
if(strcmp(p->
p->
next==NULL)
{//(p->
(x->
name),直接插在p之后
q->
break;
0)
{//结点x插在p之前,位于链表头结点之后的位置
p=Head->
Head->
next=p;
break;
}
}
/*不排序,直接插入
q->
p=q;
*/
cout<
插入成功!
!
/////////////////////////////////////////////////////////
voidprint(LinkListHead)//显示职工信息
for(LinkListp=Head->
p!
=NULL;
next)
p->
name<
\t"
sex<
birthday<
position<
department<
address<
telephone<
voidprintLink(LinkListHead)
if(Head->
职工名单为空,无须删除"
else
职工名单如下:
\n"
姓名"
性别"
出生年月"
职务"
部门"
住址"
电话"
print(Head);
voidDelete(LinkListHead)//职工信息的删除
LinkLists;
s=(LinkList)malloc(sizeof(LNode));
charx[20];
//定义职工姓名
s=Head;
next==NULL)//链表为空,不用删除
职工名单为空!
return;
请输入要删除职工的姓名:
;
cin>
>
x;
s->
s=s->
next)//遍历链表,找与输入name一样的,删除。
if(strcmp(s->
name,x)==0)//找出p的前驱结点s,删除s->
LinkListtmp=s->
s->
next=s->
free(tmp);
cout<
删除成功!
请继续操作!
break;
if(s->
名单中无此职工,无须删除"
voidModify(LinkListHead)////修改,输入姓名,找到姓名所属信息,然后可以一次性全部修改
LinkLists,p;
if(p==NULL)
请输入职工姓名:
name;
next)//在链表中一次查找
name,p->
请依次写入职工的新信息:
电话"
cin>
name>
sex>
birthday>
position>
department>
address>
telephone;
修改成功!
名单中无此人,无须修改!
voidchangeDepart(LinkListHead)////调换部门
请输入姓名:
for(p;
next)
if(strcmp(s->
name)==0)////////找到姓名相同的结点
cout<
输入要更新的部门:
department;
/////////////设置新的部门
调换部门成功!
voidInsearch(LinkListHead)//////查询,根据姓名查询住址
LinkListp,s;
职工名单中无此职工!
住址:
"
名单中无此人!
return;
voidprintDepartment(LinkListHead)//显示部门信息
//inti;
所有部门名称为:
voidSaveToFile(LinkListhead)/////////写入到文件当中
ofstreamfile("
tt.txt"
ios:
:
out);
LinkListp=head->
while(p)
file<
p=p->
file.close();
LinkListGetDataFromFile()///////////////读取文件
ifstreamfile("
in);
LinkListhead=NULL;
head=newLNode;
head->
chartmp[25];
////////////
boolflag=false;
while
(1)
if(file>
tmp)///////////读入文件,只要不是结尾
flag=true;
if(flag==true)
LinkListtNode=newLNode;
strcpy(tNode->
name,tmp);
file>
tNode->
sex;
birthday;
position;
address;
tNode->
next=head->
head->
next=tNode;
flag=false;
else
returnhead;
voidmain()
intnum,i;
LinkListx;
//插入的结点
LinkListHead=NULL;
Head=GetDataFromFile();
********************************************************************************"
**************************欢迎进入安徽工程大学职工管理系统**********************"
主菜单\n"
0.结束管理系统1.新增职工信息2.删除职工信息\n\n\n"
3.查询职工住宿信息4.修改职工信息5.显示全部职工信息\n\n\n"
6.查询所有部门信息7.调换部门"
请输入您要选择的操作的序号:
cin>
i;
if(i==0)
SaveToFile(Head);
信息已存入硬盘......"
您已经成功退出安徽工程大学职工管理系统,谢谢使用!
if(i==1)
请输入要录入的职工人数:
num;
请输入职工信息:
家庭住址"
电话号码"
for(i=0;
i<
i++)
{
cout<
请输入第"
i+1<
个职工信息:
x=(LinkList)malloc(sizeof(LNode));
cin>
x->
Head=Insert(Head,x);
elseif(i==2)
Delete(Head);
elseif(i==3)
Insearch(Head);
elseif(i==4)
Modify(Head);
elseif(i==5)
printLink(Head);
//system("
cls"
);
////////////清屏
elseif(i==6)//////查询所有部门信息
printDepartment(Head);
elseif(i==7)///////部门调换
changeDepart(Head);
else
输入有误!