某单位职工档案信息课程设计论文Word格式.docx

上传人:b****0 文档编号:13216513 上传时间:2022-10-08 格式:DOCX 页数:8 大小:20.57KB
下载 相关 举报
某单位职工档案信息课程设计论文Word格式.docx_第1页
第1页 / 共8页
某单位职工档案信息课程设计论文Word格式.docx_第2页
第2页 / 共8页
某单位职工档案信息课程设计论文Word格式.docx_第3页
第3页 / 共8页
某单位职工档案信息课程设计论文Word格式.docx_第4页
第4页 / 共8页
某单位职工档案信息课程设计论文Word格式.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

某单位职工档案信息课程设计论文Word格式.docx

《某单位职工档案信息课程设计论文Word格式.docx》由会员分享,可在线阅读,更多相关《某单位职工档案信息课程设计论文Word格式.docx(8页珍藏版)》请在冰豆网上搜索。

某单位职工档案信息课程设计论文Word格式.docx

1、基本要求:

为方便管理某单位职工档案信息,编写一个职工档案管理系统软件。

系统记录必须包括职工的ID号、姓名以及性别、出生年月、职称、工资、所在单位、在岗情况等。

2、基本管理功能:

(1)添加:

增加一名职工的档案信息到管理系统中。

(2)查询:

可以根据职工姓名或ID号查找某人的相关信息,若找到则显示其信息。

(3)修改:

在管理系统中修改一名职工的记录。

(4)保存:

将所有职工档案信息保存在一个文件中(数据库文件或普通的文本文件)。

(5)读取:

从文件中读取已保存了数据。

(6)删除:

从管理系统中删除一条记录。

(7)恢复:

能恢复被删除的记录。

(8)统计:

(A)计算平均工资及总工资,(B)统计男/女职工各占总职工的人数的百分比、统计职工平均年龄和单位在岗职工人数占总职工人数的百分比、统计副高以上职工人数占总职工人数的百分比。

(C)以表格形式打印全部职工档案信息表。

(9)其他:

可以根据自己的思路设计其他功能。

三.总体设计方案及思路

我让主函数非常简洁,而每一个功能对应一个函数,还有几个另外函数就是界面函数,菜单选择函数和进入前用到的密码函数。

密码函数中有初始密码,也可以修改密码;

密码输入正确才可以进入菜单界面,否则重新输入或退出;

菜单中有对应的功能选择和提示,是用一个switch结构进行选择的,每一个功能前都有对应的序号,用户可以根据序号来选择想要执行的功能;

而在各个函数中,都会有一些中文的提示让你知道该怎样执行这个函数。

好的下面就来看一下程序的流程图和界面吧!

四.流程图及程序界面:

五.程序设计过程中遇到的问题及解决

1.第一个呢,就是怎样做文件的保存和读取啦。

因为没怎么学文件的知识,后来就狠狠的看了一遍书,再问了下班上的大神,最后终于顺利解决了,才发现原来挺简单的呀!

比如保存函数:

voidSave(intn)

{

ofstreamofile("

staff.txt"

ios:

:

out|ios:

binary);

for(i=0;

i<

n;

i++)

ofile.write((char*)&

staf[i],sizeof(staf[i]));

ofile.close();

}

小感想:

所以呢,很多东西可能开始感觉很难,但多想想,多查查,多问问就会有不一样的结果啦!

2.还有一个很重要的问题,也是一开始就困扰的问题,就是不知道怎样确定文件中已经有的职工信息数,这样的话其他的功能就都不好做,尤其是统计。

一开始,我是用普通的查找再个数加一,但进行了添加和删除之后都会出现问题,我就好好想了下,最后呢,也在大神的指点下用文件的知识解决了这个问题。

intLoad()

fstreamiofile("

in|ios:

if(!

iofile)return0;

else

{

for(i=0;

;

{

if(iofile.peek()==EOF)break;

iofile.read((char*)&

}

iofile.close();

returni;

}}

要相信,方法总比问题多。

不行的时候,换一种思路,换一种方法,问题总是会解决的。

3.在看了题目之后,感觉最难做的功能就是恢复啦,一开始的思路是在删除前把对象数组赋给另外一个数组,再恢复时就输出另外这个数组,但在删除两次和做恢复后的统计等功能时,明显就不对了。

后来想想就换了一种很好的方法,就是把要删除的职工信息先移动到另外一个数组中,恢复的时候再又移回到原来的位置,这样就成功的用很少的代码完成了这个我认为最难的功能。

voidrecover(intn)

{

for(inti=0;

n+1;

{

if(staf1[i].ID!

=0)

{for(;

n>

i;

n--)staf[n]=staf[n-1];

staf[i]=staf1[i];

}Save(n+1);

}

问题难,可能就是你看着它难,但努力想想,其实就那样,甚至非常简单,任何问题都经不住“认真”二字的。

备注:

以上的n都是职工的个数,由Load()函数确定。

4、开始的时候,我把生日设为了char型的,就直接包括了年月日,由键盘一次性输入,但后来发现,这样就算不了平均年龄了,所以一定要把年分离开来,后来就把生日改为了一个3个成员的int数组,输入也就分三次依次输入年月日。

这样就解决了平均年龄的统计问题啦,下面是统计代码:

for(i=0;

num;

{age=2014-staf[i].birthday[0];

average+=age;

average=average/num;

cout<

<

"

全体职工的平均年龄是:

"

average<

岁"

endl;

很多问题可能一开始注意不到,但在后面发现了,就要努力去改善它,因为还为时不晚。

5.在编写后期,我添加了进入界面前的密码输入功能,如果直接输入密码在屏幕上显示的话,不符合实际生活中的要求。

就想用*号去代替输入进去的密码,而这个确确实实难到了我,但我想既然做了,就一定要把它做好,于是查找资料,再自行修改、调试,花了一个晚上的时间,终于做好了。

不过还有一点点缺陷,就是密码只能是数字,不能是字母,暂定的是四位数,不过是可以修改的。

当然我已经尽力了,就很欣慰了。

下面来看看用*代替数字的函数吧!

intkey_hide()

intstr[4];

intt=0;

intlen=0,a=0,i,j;

for(;

len<

4;

{t=getch();

str[len++]=t-48;

*"

for(i=2;

i>

=0;

i--)

for(j=i;

j<

3;

j++)str[i]=str[i]*10;

a=a+str[i];

a=a+str[3];

returna;

我只想说皇天不负有心人,这个函数做到一半的时候都想放弃了,但想想还是坚持了下来,终于也就完成了,这一个晚上的努力没有白费。

所以认定了能干的就一定努力干下去,总会有收获的就是是没有,这个过程也会让人锻炼很多的。

6、也有一个不足的地方就是,不能对输入的信息进行判断是否正确,比如对于名字,应该输入汉字,但输入字母也不报错,这样的话,确实有点不够完善,但也由于时间有限,而且要输入的东西挺多,给每一次的输入都进行判断,确有些麻烦,所以,就没编写这个功能。

六.程序特色

1.主函数非常简单,仅有三行,而且还包括一个界面颜色的设置,看上去很简洁,很清爽。

因为要执行的函数都在一个switch结构中了,输入一个数字就执行一种功能。

下面是主函数和switch结构函数。

intmain()

system("

color9C"

);

key();

return0;

这是包括switch结构的函数;

voidhandle_menu()

{intnum;

{num=Load();

switch(menu_select())

case1:

add(num);

break;

case2:

findrecord(num);

case3:

modify(num);

case4:

Save(num);

case5:

display(num+1);

case6:

remove(num);

case7:

{recover(num);

display(num+1);

case8:

tongji(num);

case9:

{cout<

亲~谢谢使用职工档案管理系统!

exit(0);

system("

pause"

system("

cls"

);

key()就是下面要介绍的密码函数啦!

它包括了handle_menu()函数,在密码输入正确之后就执行handle_menu()函数

2.key()是我认为这个程序中亮点,也是我花了最多时间的一个功能函数。

因为它不仅要输入正确的密码才能进入功能界面,而且还可以修改密码,且输入的密码是以*号代替的,也就是说密码输入的时候,从屏幕上是看不到的你输入的数字的,这也正好符合现实中的使用要求,具有保密性,这一点在实际生活中是非常重要的。

voidkey()

inta,c,b,key=1111;

{system("

endl<

*欢迎使用职工档案管理系统"

*工号:

cin>

>

a;

*密码:

b=fun();

cout<

*按1进入系统,按2修改密码,按0退出:

c;

if(c==1&

&

key==b){system("

handle_menu();

elseif(c!

=1&

c!

=2)exit(0);

elseif(c==2)

{fstreamiofile1("

key.txt"

iofile1.read((char*)&

key,sizeof(key));

iofile1.close();

do

{system("

请输入原密码:

a=fun();

请输入新密码:

key=fun();

cout<

1.确认修改2.重新设置"

}while(a==2);

ofile.write((char*)&

ke

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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