员工信息管理系统数据结构复习课程Word格式文档下载.docx
- 文档编号:19911812
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:20
- 大小:336.28KB
员工信息管理系统数据结构复习课程Word格式文档下载.docx
《员工信息管理系统数据结构复习课程Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《员工信息管理系统数据结构复习课程Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
(5)加入新员工的信息,并实现排序;
(6)按编号删除已离职的员工的信息。
1.3其他需求
程序除需完成基本功能外,程序源代码还应具有良好的编程结构和适当的注释,运行界面清晰,提示内容明确,易于操作。
第2章开发运行环境及相关知识
2.1运行环境
软件环境:
Windows2000,WindowsXP和WindowsNT4.0。
2.2开发工具
微软公司的MicrosoftVisualC++6.0。
2.3开发工具简介
VisualC++是一个功能强大的可视化软件开发工具。
自1993年Microsoft公司推出VisualC++1.0后,随着其新版本的不断问世,VisualC++已成为专业程序员进行软件开发的首选工具。
虽然微软公司推出了VisualC++.NET(VisualC++7.0),但它的应用的很大的局限性,只适用于Windows2000,WindowsXP和WindowsNT4.0。
所以实际中,更多的是以VisualC++6.0为平台。
VisualC++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrateddevelopmentenvironment,IDE)。
VisualC++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导ClassWizard等开发工具。
这些组件通过一个名为DeveloperStudio的组件集成为和谐的开发环境。
第3章程序总体设计
3.1主要功能模块
依据程序的数据结构和功能,遵照“自顶向下”原则,描述该程序的层次结构,在总体上包括数据的录入、增加、删除、查找、更改和数据的排序等功能模块。
图3-1程序主体
3.2数据结构
依据给定的数据格式,个人信息由九个字段来组成,即编号、姓名、性别、生日、学历、职务、电话和住址,外加一个判断关键字。
本课程设计根据功能需求,使用线性结构来组织数据,因为数据占据空间比较大,要对表中某项数据进行操作,所以使用链表比较方便。
结构体定义:
typedefstructStuff
{
charnumber[10];
//编号
charname[10];
//姓名
charsex[8];
//性别
charbirthday[10];
//生日
chardegree[20];
//学历
charbusiness[20];
//职务
charphone[15];
//电话
charplace[50];
//住址
charcon[50];
//判断关键字
structStuff*next;
//指针域
}Stuff;
信息存储:
信息存储结构如图3-2
图3-2链式存储结构
第4章程序详细设计及实现
4.1输入函数
函数原型:
Stuff*App(Stuff*head);
函数功能:
通过输入各项数据给数据元素,来建立一个数据表。
算法要点:
(1)用循环控制输入记录;
(2)为每一结构体数据项输入数据;
(3)返回输入记录数。
4.2排序函数
voidSort(Stuff*head);
voidScpy(char*p,char*q);
intSel(charch,Stuff*p,Stuff*q);
按照指定关键字对员工信息进行排序。
(1)比较法对信息进行排序;
(2)使用交换函数,对每项信息进行交换。
4.3显示函数
voidShow(Stuff*head);
输出表中所有节点的信息。
使用循环输出所有信息。
程序清单:
4.4查找函数
Stuff*Search(Stuff*head);
按照指定关键字,对相应员工信息进行查找。
(1)输入字段和信息相应字段的比较;
(2)函数中调用删除和更改函数。
4.5更改函数
Stuff*Change(Stuff*head,charn[10]);
输入员工编号,查找到员工信息,对其信息进行更新。
(1)信息查找;
(2)信息重新录入及保存。
4.6删除函数
Stuff*Del(Stuff*head,charn[10]);
查找到要删除员工的相应信息,并将其从表中永久的删除。
(1)按关键字查找信息;
(2)链表中删除节点信息,并释放节点空间。
4.7主函数
主函数主要是调用以上的子函数,用开关语句进行选择性的调用。
大致程序如下:
switch(Menu())
{
case1:
调用函数语句;
break;
case2:
……
case0:
退出程序语句;
default:
printf("
输入错误,请重新输入!
\n"
);
}
4.8其他函数
其他函数主要起到辅助功能,如菜单函数,主要起到引导作用;
释放空间函数,主要用于释放已经删除节点的信息,或者释放整个链表的节点信息。
菜单函数原型:
charMenu();
释放函数原型:
voidFre(Stuff*head);
第5章系统功能测试
5.1系统主界面
图5-1系统主界面
5.2输入数据
(1)输入操作字符1;
(2)输入员工信息;
(3)输入“#”字符结束输入。
图5-2输入操作
5.3显示数据
图5-3显示信息
5.4信息排序
图5-4信息排序
5.5更改信息
图5-5更正信息
5.6删除信息
图5-6删除信息
第6章课设总结
如何才能真正的去掌握编程的方法,如何才能真正的去理解书上的理论信息,理论知识用于实践才是最终的目的。
通过本次数据结构课程设计,我对数据结构的理论知识有了更为直接的认识,从实际中获得了很多宝贵的经验,这些对我以后做程序开发将是一笔很宝贵的财富。
我有以下两点感触:
(1)没有解决不了的问题。
这个程序在课设前一周就开始着手编写,中间遇到了不少的问题,由于以前写过类似的程序,所以对其中的一些错误很是敏感,也通过不少的途径来解决了问题。
比如,通过和网上的一些程序代码的对比,解决了自己程序中输出乱码的问题。
(2)注重团队协作。
虽然此次课设是完全个人完成的,但是我还是要强调团队的重要性,因为我们以后走项的程序开发的道路上,没有单枪匹马的,都是一个团队协作完成的,所以今后的程序开发过程中,尽可能的和他人合作。
万事开头难,学好编程,我还有很长的路要走。
第7章程序清单
#include"
stdio.h"
stdlib.h"
windows.h"
//清屏函数头文件
string.h"
charnumber[10];
}Stuff;
//菜单函数
//添加函数
//排序函数
//查找函数
//更改函数
//排序中用于交换员工信息
//删除函数
//判断排序及关键字专用函数
//输出函数
//释放函数
intn=1;
//定义全局变量,实现人数统计
//菜单函数
charMenu(void)
intch;
---------------------------菜单-------------------------\n"
1.添加员工信息\n"
2.员工信息排序\n"
3.查找员工信息\n"
4.输出员工信息\n"
5.更改员工信息\n"
6.删除员工信息\n"
0.退出\n"
printf("
--------------------------------------------------------\n"
printf(“请选择你的操作:
”);
scanf("
%d"
&
ch);
returnch;
}
//添加成员函数
Stuff*App(Stuff*head)
Stuff*p=NULL,*q=head;
while(n)
{
p=(Stuff*)malloc(sizeof(Stuff));
//申请结构体空间
if(p==NULL)
printf("
空间不足,自动退出系统!
exit(0);
}
p->
next=NULL;
//指针域为空
请输入第%d名员工:
n);
编号|姓名|性别|出生年月|学历|职务|电话|住址:
getchar();
%s"
p->
number);
if(strcmp(p->
number,"
#"
))
++n;
scanf("
%s%s%s%s%s%s%s"
name,p->
sex,p->
birthday,p->
degree,p->
business,p->
phone,p->
place);
con[0]='
\0'
;
//防止后面判断出现随机值
if(head==NULL)
head=p;
else
{
while(q->
next!
=NULL)
q=q->
next;
q->
next=p;
}
q=p;
//尾插法
if(!
strcmp(p->
number,"
free(p);
//完成添加,释放多余空间
}
returnhead;
//排序函数
voidSort(Stuff*head)
charch;
Stuff*p,*q,*r;
while
(1)
printf("
请选择排序条件:
1.编号|2.姓名|0.退出\n"
getchar();
%c"
if(ch=='
0'
)
if(ch<
'
1'
||ch>
2'
continue;
p=head;
while(p->
next!
=NULL)//选择排序
q=p->
next;
r=p;
while(q!
=NULL)
if(Sel(ch,r,q))//调用判断函数
r=q;
if(r!
=p)//交换信息
Scpy(r->
number,p->
number);
Scpy(r->
name,p->
name);
sex,p->
sex);
birthday,p->
birthday);
degree,p->
degree);
business,p->
business);
phone,p->
phone);
place,p->
place);
p=p->
Show(head);
//输出
//交换函数
voidScpy(char*p,char*q)
charc[50];
strcpy(c,p);
strcpy(p,q);
strcpy(q,c);
//判断函数
intSel(charch,Stuff*p,Stuff*q)
switch(ch)//实现各个关键字查找
case'
:
returnstrcmp(q->
number,p->
number)<
0||strcmp(q->
con,p->
number)==0;
returnstrcmp(q->
name)<
name)==0;
default:
//查找函数
Stuff*Search(Stuff*head)
Stuff*p=NULL,*q;
intflag;
//查找判断
charch,sh;
//两个控制变量
q=&
a;
请输入要查找的条件:
1.编号2.姓名0.退出\n"
%c"
continue;
请输入:
"
gets(q->
con);
p=head;
//指向表头
flag=0;
while(p!
if(strcmp(q->
con,p->
number)==0||strcmp(q->
name)==0)
printf("
员工信息如下:
编号|姓名|性别|出生年月|学历|职务|电话|住址\n%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n"
是否需要:
1.更改2.删除3.继续\n"
scanf("
sh);
if(sh=='
Change(head,p->
//调用更改函数
elseif(sh=='
head=Del(head,p->
//调用删除函数flag=1;
break;
p=p->
if(flag==0)
没有找到该员工信息!
//更改函数
Stuff*Change(Stuff*head,charn[10])
Stuff*p=head;
intflag=0;
信息表为空,请先建立信息表!
if(!
number,n))
找到员工,请输入新的信息:
\n编号|姓名|性别|出生年月|学历|职务|电话|住址\n"
%s%s%s%s%s%s%s%s"
flag=1;
未找到该员工信息!
//删除函数
Stuff*Del(Stuff*head,charn[10])
Stuff*p,*pr;
flag=0;
p=head,pr=head;
未找到员工信息!
while(strcmp(p->
number,n)&
&
p->
pr=p;
number,n))
if(p==head)
head=p->
else
pr->
next=p->
删除成功!
n--;
else
//输出函数
voidShow(Stuff*head)
inti=1;
if(head!
while(p!
%d.%s%s%s%s%s%s%s%s\n"
i++,p->
p=p->
信息为空!
//释放函数
voidFre(Stuff*head)
Stuff*p;
while(head!
head=head->
free(p);
voidmain()
charIndex[10];
Stuff*head=NULL;
//链表头指针定义
---------------欢迎使用《员工信息管理系统》-------------\n"
Sleep(1000);
请输入员工信息,直接输入'
#'
结束\n"
head=App(head);
Sort(head);
case3:
head=Search(head);
case4:
case5:
请输入员工编号:
Index);
Change(head,Index);
case6:
head=Del(head,Index);
-------------------欢迎下次光临!
-----------------\n"
Sleep(2000);
break;
default:
pri
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 员工 信息管理 系统 数据结构 复习 课程