数据结构课程设计职工管理系统.docx

上传人:b****5 文档编号:6494426 上传时间:2023-01-07 格式:DOCX 页数:18 大小:107.45KB
下载 相关 举报
数据结构课程设计职工管理系统.docx_第1页
第1页 / 共18页
数据结构课程设计职工管理系统.docx_第2页
第2页 / 共18页
数据结构课程设计职工管理系统.docx_第3页
第3页 / 共18页
数据结构课程设计职工管理系统.docx_第4页
第4页 / 共18页
数据结构课程设计职工管理系统.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

数据结构课程设计职工管理系统.docx

《数据结构课程设计职工管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计职工管理系统.docx(18页珍藏版)》请在冰豆网上搜索。

数据结构课程设计职工管理系统.docx

数据结构课程设计职工管理系统

目录

第一章引言………………………………………………………………………1

第二章需求分析…………………………………………………………………2

第三章概要设计…………………………………………………………………3

3.1输入功能的实现………………………………………………………...3

3.2系统基本操作的实现…………………………………………………...3

3.3输出功能的实现………………………………………………………...3

3.4系统功能结构…………………………………………………………...3

第四章详细设计…………………………………………………………………4

4.1定义职工节点信息……………………………………………………...4

4.2主函数设计……………………………………………………………...4

4.3主函数程序流程图……………………………………………………...5

4.4部分操作的核心代码…………………………………………………...5

4.4.1添加职工信息……………………………………………………5

4.4.2删除职工信息……………………………………………………8

4.4.3修改职工信息……………………………………………………9

4.4.4调换职工部门…………………………………………………....9

4.4.5根据姓名查询职工住址………………………………………....10

第五章调试与分析………………………………………………………………12

5.1进入主函数……………………………………………………………...12

5.2查询所有职工信息……………………………………………………...12

5.3添加职工信息…………………………………………………………...13

5.4删除职工信息…………………………………………………………...13

5.5查询职工住宿信息……………………………………………………...14

5.6修改职工信息…………………………………………………………...14

5.7调换职工部门…………………………………………………………...15

5.8查询全部部门…………………………………………………………...15

第六章系统使用说明……………………………………………………………16

6.1主界面说明……………………………………………………………...16

6.2新增职工信息界面说明………………………………………………...16

6.3其他操作说明…………………………………………………………...16

第七章总结与体会………………………………………………………………17

参考文献…………………………………………………………………………..18

相关工具…………………………………………………………………………..18

附录程序源代码…………………………………………………………………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

#include

#include

#include

#include

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<<"申请空间失败!

"<

return0;

}

/////////////将结点x赋予结点q/////////////

strcpy(q->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开始到最后一个结较点与结点x比,来确定结点x插入的位置

{

if(p->next!

=NULL)

{

if(strcmp(p->name,x->name)<0&&strcmp(p->next->name,x->name)>0)//前小后大

{//结点x的首值大于结点p的首值但小于p->next的首值,即结点x插在结点p于结点p->next之间

s=p->next;

q->next=s;

p->next=q;

break;

}

elseif(strcmp(p->name,x->name)==0)

break;////因为表设计为姓名为主键,所以不能重复,所以姓名相同,则不插入信息

}

if(strcmp(p->name,x->name)<0&&p->next==NULL)

{//(p->name)<(x->name),直接插在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<<"插入成功!

!

!

"<

returnHead;

}

/////////////////////////////////////////////////////////

voidprint(LinkListHead)//显示职工信息

{

for(LinkListp=Head->next;p!

=NULL;p=p->next)

{

cout<name<<"\t"<sex<<"\t"<birthday<<"\t"<position<<"\t"<department<<"\t"<address<<"\t"<telephone<

}

}

voidprintLink(LinkListHead)

{

if(Head->next==NULL)

cout<<"职工名单为空,无须删除"<

else

{

cout<<"职工名单如下:

\n"<<"姓名"<<"\t"<<"性别"<<"\t"<<"出生年月"<<"\t"<<"职务"<<"\t"<<"部门"<<"\t"<<"住址"<<"\t"<<"电话"<

print(Head);

}

}

 

voidDelete(LinkListHead)//职工信息的删除

{

LinkLists;

s=(LinkList)malloc(sizeof(LNode));

charx[20];//定义职工姓名

s=Head;

if(Head->next==NULL)//链表为空,不用删除

{

cout<<"职工名单为空!

!

!

"<

return;

}

cout<<"请输入要删除职工的姓名:

";

cin>>x;

for(;s->next!

=NULL;s=s->next)//遍历链表,找与输入name一样的,删除。

{

if(strcmp(s->next->name,x)==0)//找出p的前驱结点s,删除s->next;

{

LinkListtmp=s->next;

s->next=s->next->next;

free(tmp);

cout<<"删除成功!

请继续操作!

"<

break;

}

}

if(s->next==NULL)

{

cout<<"名单中无此职工,无须删除";

return;

}

}

voidModify(LinkListHead)////修改,输入姓名,找到姓名所属信息,然后可以一次性全部修改

{

LinkLists,p;

s=(LinkList)malloc(sizeof(LNode));

p=Head->next;

if(p==NULL)

{

cout<<"职工名单为空!

!

!

"<

return;

}

cout<<"请输入职工姓名:

";

cin>>s->name;

for(;p!

=NULL;p=p->next)//在链表中一次查找

{

if(strcmp(s->name,p->name)==0)

{

cout<<"请依次写入职工的新信息:

"<

cout<<"姓名"<<"\t"<<"性别"<<"\t"<<"出生年月"<<"\t"<<"职务"<<"\t"<<"部门"<<"\t"<<"住址"<<"\t"<<"电话"<

cin>>p->name>>p->sex>>p->birthday>>p->position>>p->department>>p->address>>p->telephone;

cout<<"修改成功!

"<

break;

}

}

if(p==NULL)

{

cout<<"名单中无此人,无须修改!

!

!

";

return;

}

}

voidchangeDepart(LinkListHead)////调换部门

{

LinkLists,p;

s=(LinkList)malloc(sizeof(LNode));

p=Head->next;

if(p==NULL)

{

cout<<"职工名单为空!

!

!

"<

return;

}

else

{

cout<<"请输入姓名:

";

cin>>s->name;

for(p;p!

=NULL;p=p->next)

{

if(strcmp(s->name,p->name)==0)////////找到姓名相同的结点

{

cout<<"输入要更新的部门:

";

cin>>p->department;/////////////设置新的部门

break;

}

}

cout<<"调换部门成功!

!

!

"<

}

}

voidInsearch(LinkListHead)//////查询,根据姓名查询住址

{

LinkListp,s;

s=(LinkList)malloc(sizeof(LNode));

p=Head->next;

if(Head->next==NULL)

{

cout<<"职工名单中无此职工!

!

!

"<

return;

}

cout<<"请输入姓名:

";

cin>>s->name;

for(p;p!

=NULL;p=p->next)

{

if(strcmp(s->name,p->name)==0)////////找到姓名相同的结点

{

cout<<"住址:

"<address<

break;

}

}

if(p==NULL)

{

cout<<"名单中无此人!

!

!

"<

return;

}

}

 

voidprintDepartment(LinkListHead)//显示部门信息

{

//inti;

cout<<"所有部门名称为:

"<

for(LinkListp=Head->next;p!

=NULL;p=p->next)

{

cout<department<

}

}

voidSaveToFile(LinkListhead)/////////写入到文件当中

{

ofstreamfile("tt.txt",ios:

:

out);

LinkListp=head->next;

while(p)

{

file<name<<"\t"<sex<<"\t"<birthday<<"\t"<position<<"\t"<department<<"\t"<address<<"\t"<telephone<

p=p->next;

}

file.close();

}

 

LinkListGetDataFromFile()///////////////读取文件

{

ifstreamfile("tt.txt",ios:

:

in);

LinkListhead=NULL;

head=newLNode;

head->next=NULL;

chartmp[25];////////////

boolflag=false;

while

(1)

{

if(file>>tmp)///////////读入文件,只要不是结尾

{

flag=true;

}

if(flag==true)

{

LinkListtNode=newLNode;

strcpy(tNode->name,tmp);

file>>tNode->sex;

file>>tNode->birthday;

file>>tNode->position;

file>>tNode->department;

file>>tNode->address;

file>>tNode->telephone;

tNode->next=head->next;

head->next=tNode;

flag=false;

}

else

{

break;

}

}

file.close();

returnhead;

}

 

voidmain()

{

intnum,i;

LinkListx;//插入的结点

LinkListHead=NULL;

Head=GetDataFromFile();

cout<<"********************************************************************************"<

cout<<"**************************欢迎进入安徽工程大学职工管理系统**********************"<

cout<<"********************************************************************************"<

cout<<"主菜单\n"<

cout<<"0.结束管理系统1.新增职工信息2.删除职工信息\n\n\n";

cout<<"3.查询职工住宿信息4.修改职工信息5.显示全部职工信息\n\n\n";

cout<<"6.查询所有部门信息7.调换部门"<

while

(1)

{

cout<

cout<<"请输入您要选择的操作的序号:

";

cin>>i;

if(i==0)

{

SaveToFile(Head);

cout<<"信息已存入硬盘......"<

cout<<"您已经成功退出安徽工程大学职工管理系统,谢谢使用!

"<

break;

}

if(i==1)

{

cout<<"请输入要录入的职工人数:

";

cin>>num;

cout<<"请输入职工信息:

"<

cout<<"姓名"<<"\t"<<"性别"<<"\t"<<"出生年月"<<"\t"<<"职务"<<"\t"<<"部门"<<"\t"<<"家庭住址"<<"\t"<<"电话号码"<

for(i=0;i

{

cout<<"请输入第"<

"<

x=(LinkList)malloc(sizeof(LNode));

cin>>x->name>>x->sex>>x->birthday>>x->position>>x->department>>x->address>>x->telephone;

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

{

cout<<"输入有误!

!

!

"<

break;

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1