某单位职工档案信息课程设计论文.docx
- 文档编号:286704
- 上传时间:2022-10-08
- 格式:DOCX
- 页数:8
- 大小:20.57KB
某单位职工档案信息课程设计论文.docx
《某单位职工档案信息课程设计论文.docx》由会员分享,可在线阅读,更多相关《某单位职工档案信息课程设计论文.docx(8页珍藏版)》请在冰豆网上搜索。
某单位职工档案信息课程设计论文
课程设计论文
目录
1.前言
2.基本内容
3.总体设计方案及思路
4.流程图及程序界面
5.程序设计过程中遇到的问题及解决
6.程序特色
7.设计心得与总结
8.参考资料
一.前言:
随着电信技术和计算机技术的飞速发展,信息电子化,无纸化已成为未来发展的趋势,所以在众多单位中,设计各种信息的管理系统就显得尤为重要啦,这次课程设计就是一次很好的练习,让我们用所学的知识去设计一些初级的系统,既是对知识的运用,也是对思维的锻炼。
我这次做的课程设计内容是做一个职工档案管理系统,这个对于每个单位科学的管理职工是非常重要的,职工档案管理系统是一个企业不可缺少的部分,它能够为用户提供充足的信息和快捷的查询手段。
但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:
效率低、保密性差,另外时间一长的文件和数据,这对于查找、更新和维护都带来了不少的困难。
同时,许多信息的统计,繁重而又单调,而用计算机可使人们从中解脱出来,仅用一些简单的操作便可及时准确地获得需要的信息。
目标是使职工档案管理真正实现无纸化。
因此,开发这样一套管理软件成为很有必要的事情。
我做的这个程序包括了对职工信息的添加、修改、保存、读取、删除、恢复和一些基本信息的统计。
虽然不具备真正的实用性,但一些基本的功能还是能够实现的。
下面就详细的介绍一些。
二.基本内容:
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 ofile.write((char*)&staf[i],sizeof(staf[i])); ofile.close();} 小感想: 所以呢,很多东西可能开始感觉很难,但多想想,多查查,多问问就会有不一样的结果啦! 2.还有一个很重要的问题,也是一开始就困扰的问题,就是不知道怎样确定文件中已经有的职工信息数,这样的话其他的功能就都不好做,尤其是统计。 一开始,我是用普通的查找再个数加一,但进行了添加和删除之后都会出现问题,我就好好想了下,最后呢,也在大神的指点下用文件的知识解决了这个问题。 intLoad() { fstreamiofile("staff.txt",ios: : in|ios: : binary); if(! iofile)return0; else { for(i=0;;i++) { if(iofile.peek()==EOF)break; iofile.read((char*)&staf[i],sizeof(staf[i])); } iofile.close(); returni; }} 小感想: 要相信,方法总比问题多。 不行的时候,换一种思路,换一种方法,问题总是会解决的。 3.在看了题目之后,感觉最难做的功能就是恢复啦,一开始的思路是在删除前把对象数组赋给另外一个数组,再恢复时就输出另外这个数组,但在删除两次和做恢复后的统计等功能时,明显就不对了。 后来想想就换了一种很好的方法,就是把要删除的职工信息先移动到另外一个数组中,恢复的时候再又移回到原来的位置,这样就成功的用很少的代码完成了这个我认为最难的功能。 voidrecover(intn) { for(inti=0;i { 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;i {age=2014-staf[i].birthday[0]; average+=age; } average=average/num; cout<<"全体职工的平均年龄是: "< 小感想: 很多问题可能一开始注意不到,但在后面发现了,就要努力去改善它,因为还为时不晚。 5.在编写后期,我添加了进入界面前的密码输入功能,如果直接输入密码在屏幕上显示的话,不符合实际生活中的要求。 就想用*号去代替输入进去的密码,而这个确确实实难到了我,但我想既然做了,就一定要把它做好,于是查找资料,再自行修改、调试,花了一个晚上的时间,终于做好了。 不过还有一点点缺陷,就是密码只能是数字,不能是字母,暂定的是四位数,不过是可以修改的。 当然我已经尽力了,就很欣慰了。 下面来看看用*代替数字的函数吧! intkey_hide() { intstr[4];intt=0;intlen=0,a=0,i,j; for(;len<4;) {t=getch(); str[len++]=t-48;cout<<"*"; } 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; for(;;) {num=Load(); switch(menu_select()) { case1: add(num);break; case2: findrecord(num);break; case3: modify(num);break; case4: Save(num);break; case5: display(num+1);break; case6: remove(num);break; case7: {recover(num);display(num+1);break;} case8: tongji(num);break; case9: {cout<<"亲~谢谢使用职工档案管理系统! "< } system("pause");system("cls"); } } 备注: key()就是下面要介绍的密码函数啦! 它包括了handle_menu()函数,在密码输入正确之后就执行handle_menu()函数 2.key()是我认为这个程序中亮点,也是我花了最多时间的一个功能函数。 因为它不仅要输入正确的密码才能进入功能界面,而且还可以修改密码,且输入的密码是以*号代替的,也就是说密码输入的时候,从屏幕上是看不到的你输入的数字的,这也正好符合现实中的使用要求,具有保密性,这一点在实际生活中是非常重要的。 voidkey() { inta,c,b,key=1111; for(;;) {system("cls"); cout< cout< ";cin>>a; cout< ";b=fun();cout< cout< ";cin>>c; if(c==1&&key==b){system("cls");handle_menu();} elseif(c! =1&&c! =2)exit(0); elseif(c==2) {fstreamiofile1("key.txt",ios: : in|ios: : binary); iofile1.read((char*)&key,sizeof(key));iofile1.close(); do {system("cls"); cout<<"请输入原密码: ";a=fun(); cout< ";key=fun(); cout< }while(a==2); ofstreamofile("key.txt",ios: : out|ios: : binary); ofile.write((char*)&ke
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单位 职工 档案 信息 课程设计 论文