C++职工信息管理系统课程设计.docx
《C++职工信息管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《C++职工信息管理系统课程设计.docx(41页珍藏版)》请在冰豆网上搜索。
C++职工信息管理系统课程设计
*******************
实践教学
******************
江西理工大学软件学院
2012年春季学期
C++语言稈序设计课程设计
(第四组)
题目:
职工信息管理系统
专业班级:
姓名:
学号:
112121
扌指导教师:
成绩:
2012年6月25日
正文0
1.系统功能分析0
2.系统总体设计0
3.详细设计0
4.系统测试0
5.软件使用说明书0
设计总结0
参考文献0
致谢0
附录:
原程序代码0
摘要
随着经济的高速发展,一个好的职工信息管理程序在企业及用人单位扮演着重要的角色,为了设计一个功能强大的职工信息管理系统,在设计中我们做出了明细分工,目的是要让本组成员都从这次课程设计中学到编程经验与团队精神。
“职工信息管理系统”,系统以菜单方式工作,编写存放有职工基本信息,包含职工工号,姓名,性别,出生年月,学历,职务,工资,住址,电话等,并且要求录入职工号不重复;录入的职工号信息要求用文件形式保存,并可以对其进行浏览、查询、修改、删除等基本操作,建立职工信息管理的文件。
关键词:
职工信息管理;文件;浏览;查询;修改。
、八、亠
刖言
随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。
管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展要高效率的把内部活动有机的组织起来,就必须建立自身特点相适应的管理信息系统。
本组设计的是一个关于职工信息管理的数据库系统,通过这个系统,管理员可以简捷方便的对职工信息进行增加、删除、修改等功能,而用户也可以通过这个系统对职工信息进行查询等功能。
在日益发展的
现代社会,一个高效实用的职工信息管理系统已经是企业必不可少的一个管理工具,它可以使企业在管理方面减少很多时间,本课程设计针对现代社会企业对员工信息的管理而设计,使员工的管理更加的
简捷,更加的方便,界面友好,易于操作。
采用的的开发环境是visualstdio2008在设计中,我们放弃的传统的面对过程的结构化设计思想,因为面向过程的结构体的或链表的方法存储每个员工的静态属性:
编
号、姓名、性别、年龄、电话、工资等数据有很多的不方便也有很多的不安全,所以我们采用C++的对象的编程思想来把每个员工的数据封装成一个人员的对象。
使得操作的方式更加的合理,安全。
也使本组课程设计的成员更加的了解面向对象程序设计的解决问题的思维方式。
正文
.系统功能分析
该职工管理系统针对员工信息数据的处理设计了以下功能:
1.添加职工信息
添加员工信息,提供员工信息的添加,在该模块中设计了安全检查机制,即确认是否添加员工的信息,若对员工信息的添加不满意,则可以选择重新输入。
还设置有返回主菜单的选项以方便用户。
2.修改职工信息
修改员工信息设置了员工人数检查,果员工人数NUM的值为0,则返回
主菜单。
如果员工人数NUM不为0,则进入删除员工信息的界面。
修改员工信息板块功能强大,界面友好,用循环控制修改某员工属性,这样使得操作极为方便。
3.删除职工信息
删除员工信息中设计了对员工人数的检查,如果员工人数NUM的值为0,则返回到主菜单。
如果员工人数NUM不为0,则进入删除员工信息的界面。
界面包括员工信息列表,和删除选项,方便用户的操作。
4.员工职工查找
通过find()函数进行查找。
该函数比较简单,通过循环一次比较Per[n].num
是否与你输入的num是否相等,如果相等,则输入到屏幕上,如果未找到任何匹配的员工,则显示“未找该员工”。
5.保存职工信息
保存员工的信息,即为将当前所有的员工的信息存入到workerlist.txt中。
这里我们采用的是C++的ofstream的写入文件的对象进行控制。
6.职工信息的排序
对员工信息进行排序,包括按员工编号排序(从小到大),按员工工资进行排序(从高到低)。
其中也设置了员工人数检查机制,即:
如果员工的人数为0,则直接返回主菜单。
7.职工信息的显示
对职工信息进行显示,包括职工的工号,姓名,年龄,学历,工资地址,电话等信息。
方便对员工了解。
.系统总体设计
1,编写要求:
1)先声明职工人员结构,该结构中包含编号、姓名、出生年月、性别称,部门,基本工资等成员变量,并定义人员结构数组;
2)编写主函数,要求提供一界面,允许工作人员输入、修改和删除员工信息;
3)将员工信息分别按编号由小到大、基本工资由大到小的顺序进行显示,要求采用不同的排序算法;
4)给出某员工编号,可对该员工信息进行查找,若找到,显示相应信息,否则显示“该员工不存在”,要求用顺序查找和二分查找法进行查找;
5)将所有职工信息保存在磁盘上。
界面:
**********************************************
*员工管理系统*
1.职工信息输入
2.职工信息修改
3.职工信息删除
4.职工信息查找
5.职工信息保存
6.职工工资排行
7.职工信息显示
0.退出
**********************************************
2,编写目的:
完成题目所要求的全部功能,并加入本组自己的设计风格,在界面友好的基础上,增加一些附加功能,使得功能更为强大,最终得到一个可靠性高,易于操作的职工信息管理的系统。
3,功能划分
该系统可以按功能进行模块划分,如图
系统模块图
其中:
(1)主菜单模块完成用户命令的接受,此模块也是职工信息管理的入口,用户所要进行的各种操作均需在此模块中进行选择,并进而调用其他模块实现相应的功能。
(2)信息添加模块完成职工信息的输入功能,输入信息包括职工号、姓名、性别,出生年月、学历、职务、工资、住址、电话等。
(3)信息显示模块完成已录入职工信息的显示。
(4)信息查询模块完成职工信息的查询,查询时对应有按编号查询和按姓名查询两种方式。
(5)信息修改模块完成职工信息的修改功能。
(6)信息删除功能模块完成职工信息的删除功能。
(7)信息排序模块完成对职工信息的排序,排序内容包括工号,工资等。
(8)信息保存模块完成对职工信息的保存。
4■数据结构
本系统中主要的数据结构就是职工的信息,包含职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等,在处理过程中各项可以作为一个职工的不同属性来进行处理。
5.程序流程
系统的执行应从功能菜单选择开始,依据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。
系统的流程图如图所示:
UML图
Class
_cout:
string
_num:
string
_workerlist:
string+add:
void+dele:
void+modify:
void+save:
void+search:
void+showworker:
void+sort:
void+workerlist:
void
三.详细设计(编码实现)
小组模块分工(本人负责:
职工信息修改模块与保存模块)
voidWorkerList:
:
modify()//职工信息修改函数实现
{
if(NUM<=0)
{
coutvv"没有职工信息存入,系统将返回主菜单"vvendl;
menu();
}
else
{coutvv"职工信息如下:
"vvendl;
coutvv"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"vvendl;
for(inti=0;ivcount;i++)
}
coutvv"请输入需要修改信息职工的工号:
"vvendl;
stringnuml;
cin»num1;
intj=O,k;
intflag=1;
while(flag)
{
for(;j{
if(num1==w[j].num)
{
flag=0;
k=j;
break;
}
}
if(flag)
{
coutvv"不存在此员工,请重新输入:
"vvendl;
j=0;
cin»num1;
}
}
coutvv"你选择的职工的信息为:
"vvendl;
coutvv"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"vvendl;
coutvvw[k].numvv'\t'vvw[k].namevv'\t'vvw[k].sexvv'\t'vvw[k].eduvv'\t'vvw[k].agevv'\t'vvw[k].salaryvv
t'vvw[k].addressvv'\t'vvw[k].telvvendl;
coutvvendl;
coutvv"***********************************************"
vvendl;
coutvv"**
1•修改工号
**"vvendl;
coutvv"**
2•修改姓名
**"vvendl;
coutvv"**
3.修改性别
**"vvendl;
coutvv"**
4.修改学历
**"vvendl;
coutvv"**
5•修改年龄
**"vvendl;
coutvv"**
6•修改工资
**"vvendl;
coutvv"**
7.修改地址
**"vvendl;
coutvv"**
8.修改电话
**"vvendl;
coutvv"**
0.返回主菜单
**"vvendl;
coutvv"***********************************************"
vvendl;
coutvv"请选择数字编号〜8"<inti3;
cin»i3;
while(i3<0||i3>8)
{
coutvv"输入有误,请重新输入:
"vvendl;
cin>>i3;
}
switch(i3)
{
easel:
coutvv"请输入新的职工工号:
";
cin>>w[k].num;
coutvv"修改信息已保存,现返回主菜单:
"vvendl;
menu();
break;
case2:
coutvv"请输入新的职工姓名:
";
cin>>w[k].name;
coutvv"修改信息已保存,现返回主菜单:
"vvendl;
menu();
break;
case3:
coutvv"请输入新的职工性别:
";
cin>>w[k].sex;
coutvv"修改信息已保存,现返回主菜单:
"vvendl;
menu();
break;
case4:
coutvv"请输入新的职工学历:
";
cin>>w[k].edu;
coutvv"修改信息已保存,现返回主菜单:
"vvendl;
menu();
break;
case5:
coutvv"请输入新的职工年龄:
";
cin>>w[k].age;
coutvv"修改信息已保存,现返回主菜单:
"vvendl;
menu();
break;
case6:
coutvv"请输入新的职工工资:
";
cin>>w[k].salary;
coutvv"修改信息已保存,现返回主菜单:
"vvendl;
break;
case7:
coutvv"请输入新的职工地址:
";
cin»w[k].address;
coutvv"修改信息已保存,现返回主菜单:
"vvendl;
menu();
break;
case8:
coutvv"请输入新的职工电话:
";
cin»w[k].tel;
coutvv"修改信息已保存,现返回主菜单:
"vvendl;
menu();
break;
caseO:
menu();
default:
break;
}
职工信息保存模块
voidWorkerList:
:
save()
{
if(NUMv=0)
{
coutvv"没有职工信息存入,系统将返回主菜单"vvendl;
menu();
}
else
{
ofstreamfout;
fout.open("D:
\\worker.txt",ios:
:
out);
coutvv"文件正在保存请稍候!
!
"vvendl;
coutvv"数据保存成功!
!
!
"vvendl;
foutvv"已保存员工信息如下:
"vvendl;
foutvv"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"vvendl;
for(inti=0;ivcount;i++)
foutvvw[i].numvv'\t'vvw[i].namevv'\t'vvw[i].sexvv'\t'vvw[i].eduvv'\t'vvw[i].agevv'\t'vvw[i].salaryvv'\t'vvw[i].addressvv'\t'vvw[i].telvvendl;
coutvv"系统返回主菜单:
"vvendl;
menu();
fout.close();
四.系统测试
通过对员工的信息的添加,修改,删除,保存,排序,查找等功能进
行检测。
未发现任何异常现象。
在这里:
我们将测试的结果图片贴在
了下面
半;
5•软件使用说明书
(1)根据正确的提示安装软件。
(2)PC台式机和便携式电脑都可运行。
(3)打开该程序系统,浏览菜单,根据需要选择功能,进行各项操作。
操作如下:
点击开始菜单,进入菜单选择。
输入:
将所需的信息输入。
输出:
职工基本信息。
输入:
根据不同的需要选择,当信息输入显示出错误时,进入浏览信息,找出错误。
当错误不能改正,则退出浏览信息。
进入查询信息:
则屏幕会出现已一个对话框一一按工号查找,把相应的所需信息的状态(是否借出)。
当查询不能显示需要时进入修改程序,把所输入的信息进行修改,使之正确能够正常运行或进入删除信息中,重新输入自己所要的信息。
当信息输入正确,进入你所需要的菜单程序中:
职工信息:
显示职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等。
管理员信息:
显示出职工信息管理的负责人及他们的工号。
设计总结
在本系统的开发过程中,由于组是初次开发软件,在知识、经验方面都存在着不足。
另外,在整个开发的过程中,时间也比较仓促。
因此,该系统必然会存在一些缺陷和不足。
因为对职工信息管理的整个流程不够熟悉,在需求分析时未能做到完全满足用户的需求。
尽管本管理系统存在着很多不足,但其功能全面、易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性好等优点是本管理系统所必需的。
通过开发这个系统,我组掌握了的项目基本开发过程,用到的知识巩固了我组对C语言的学习,但在这次设计中的最大收获并不是掌握这几门开发工具的应用,而是学会了设计系统的思维方法,以及与同学们之间相互帮助的精神。
参考文献
[1]王连相C++程序设计教程,中国铁道出版社,2007
[2]谭浩强C语言程序设计教程,安徽出版社,1999
[3]谭浩强C程序设计题解与上机指导,清华大学出版社,1999
[4]C语言的实际应用,安徽科学技术出版社,2000
⑸C语言函数手册,机械工业出版社,1999
[6]C语言实用程序荟萃,西安电子科技大学出版社,1993
鸣谢
在编写程序的过程中,我们得到了老师的精心指导以及孜孜不倦的教诲,在老师的指导下,我们的能力得到了提高,同时养成了科学、严谨的作风和习惯,在此,我们对老师的精心栽培表示衷心的感谢!
感谢我们小组同学对我的帮助和指点,尤其感谢我的舍友在非常时期,在生活和学习上帮我许多忙。
在课设即将完成之际,我的心情无法平静,从开始进入课题到课设的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意。
附录:
本组成员。
组长:
龚贵彬。
组员:
樊后涛,任宁宁,方磊,余望
明,宋帅。
1•了解工作要求,明确分工内容,网上查阅相关资料。
所有组员共同参与。
2主函数,显示菜单函数的编写。
由余望明完成。
3.编写信息添加模块,由任宁宁完成。
4.职工信息修改,保存模块的编写,由龚贵彬完成。
5职工信息查询模块,由樊后涛完成。
6.职工信息删除模块,由宋帅完成。
7.职工信息排序模块,由方磊完成
8.需求分析设计由任宁宁和樊后涛完成
9.文本编写由龚贵彬完成。
最后总结调试。
由所有组员共同完成
源程序代码:
#include
#include"string"
#include
#include
#include
#defineN100〃N作为最大职工总数
intf=0;//f作为开关
usingnamespacestd;
stringp;//p作为接收菜单选项的字符串
voidmenu()〃显示菜单
classworker
{
public:
worker(){}
voidshow();//职工信息显示
~worker(){}
friendclassWorkerList;
private:
stringnum,name,sex,edu,address,tel;intage,salary;
};
classWorkerList
{
private:
workerw[N];
intNUM;〃用来计算职工数目
intcount;〃用来暂时记录当前操作第几个职工
public:
voidadd()〃职工信息录入
voidsort();//职工信息排序
voidsearch()//职工信息查找
voiddele();〃职工信息删除
voidmodify();//职工信息修改
voidsave()//职工信息以文件形式保存
voidshowworker();〃显示职工信息在屏幕上WorkerList(){
NUM=0;
count=0;
};
voidmenu(){
cout«endl;
cout<<"***********************************************"
<cout«"**
**"<cout«"**
职工信息管理系统主菜单
**"<cout«"**
**"<cout«"**
1.职工信息添加
**"<cout«"**
2•职工信息修改
**"<cout«"**
3.职工信息删除
**"<cout«"**
4.职工信息排序
**"<cout«"**
5.职工信息查找
**"<cout«"**
6.职工信息显示
**"<cout«"**
7.职工信息保存
**"<cout«"**
0.退出
**"<cout«"**
**"<cout<<"***********************************************"
<cout«endl;
voiddomain()〃主菜单函数实现{
WorkerListwl;while
(1){system('cls");menu();cout«"请选择数字编号~7"<>i1;
while(!
(i1>=0&&i1<=7))
{
cout«"输入有误,请重新输入:
"<>i1;
}
switch(i1)
{
case1:
wl.add();break;
case2:
wl.modify();break;
case3:
wl.dele();break;
case4:
wl.sort();break;
case5:
wl.search();break;
case7:
wl.save();break;
case6:
wl.showworker();break;
caseO:
cout«"系统退出!
!
"<exit(O);
default:
break;
}
coutvv"是否返回主菜单?
Y/N"vvendl;
cin>>p;
if(p=="n"||p=="N")
{cout«"系统退出!
!
"<exit(0);
}
//getchar();
}
}
voidWorkerList:
:
add()〃职工信息添加函数实现
{
cout«"请输入职工信息:
"<coutvv"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<stringnum;
cin>>num;
for(inti=0;iwhile(num==w[i].num)
{
coutvv"此职工编号已存在,请重新输入:
"<cin>>num;
}
w[NUM].num=num;
cin>>w[NUM].name>>w[NUM].sex>>w[NUM].edu>>w[NUM].age>>w[NUM]
.salary>>w[NUM].address>>w[NUM].tel;
++NUM;
count=NUM;
}
voidworker:
:
show()〃显示职工信息函数实现
{
coutvv"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<cout<cout«endl;
}
voidWorkerList:
:
modify()//职工信息修改函数实现
{
if(NUM<=0)
{
coutvv"没有职工信息存入,系统将返回主菜单"<menu();
}
else
{coutvv"职工信息如下:
"<coutvv"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<for(inti=0;ivcount;i++)
coutvvw[i].numvv'\t'vvw[i].namevv'\t'vvw[i].sexvv'\t'vvw[i].eduvv'\t'vvw[i].agevv'\t'vvw[i].salaryvv'\t'vvw[i].addressvv'\t'vvw[i].telvvendl;
}
coutvv"请输入需要修改信息职工的工号:
"vvendl;
stringnuml;
cin»nu