1、 《面向对象程序设计》课程设计报告 设计题目 职工信息管理系统 学生姓名 学生班级 学生学号 指导教师 完成时间: 年 月 日 1 目 录 1 前言 3 1.1项目背景 3 1.2问题描述 4 2 需求分析 4 2.1要求 4 2.2任务 4 2.3运行环境 4 2.4开发工具 4 3 概要设计与详细设计 4 3.1系统流程图 5 3.2运行结果举例 5 4 编码与实现 6 4.1分析 7 4.2具体代码实现 7 5 课程设计总结 20 5.1该课程设计的特
2、点和不足 20 5. 2心得体会.............................................................................................20 参考文献 21 1 前言 1.1项目背景 职工信息管理系统是一个企业单位不可绝少的部分,它的内容对于企业的决策者和管理者来说都是至关重要的,所以职工信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来各个公司基本上都是靠传统的人工方式来管理职工信息,这种管理方式存在着许多缺点,如效率低,保密性差,另外时间一长将产生大量的文件
3、和数据,这对于信息的查找,更新和维护都带来不少困难。 当今社会,信息迅速膨胀,随着各个公司的规模扩大,有关信息管理工作所涉及的数据量越来越大,职工信息量也大大增加,利用传统的手工查询,等登记和修改等方法的处理速度远远跟不上公司的需求,有的公司不得不靠增加人力,物力来进行信息管理。 随着计算机级数的不断提高,计算机作为知识经济时代的产物,其强大的功能已为人们深刻认识,它已进入人类社会的各个行业和领域并发挥着越来越重要的作用,成为人们工作和生活中不可缺少的一部分。 而作为计算机应用的一部分,使用计算机对职工进行信息管理,具有手工管理所无法比拟的优点。例如检查迅速
4、查询方便,可靠性高,存储量大,保密性好,寿命长,成本低等。这些优点能够极大地提高职工信息管理的效率,也是公司的科学化,正规化管理与世界接轨的重要条件,职工信息管理系统作为一种管理软件正在各公司中得到越来越广泛的应用,且以达到良好的效果。 1.2问题描述 编写一个程序来管理职工信息。通过一个类来存放输入的每一位职工的记录(包括职工号、姓名、性别、年龄、学历、工资、住址、电话等),然后将其信息保存到文件中。通过几个函数来创建新职工号,并对职工信息进行删除及修改,输入一个职工号查询该职工的信息,并显示在屏幕上。 2 需求分析 2.1要求 (1)只能使用C++语言实现程序设计;
5、2)源程序要有适当的注释,使程序容易阅读; (3)画出查询模块的流程图;利用类进行相关信息处理; (4)系统的各个功能模块要求用函数的形式实现; (5)运行界面清晰,功能明确。 2.2任务 (1)定义一个类,输入每一位职工的信息(包括职工号、姓名、性别、年龄、学历、工资、住址、电话等),将其信息存入文件中; (2)输入职工号查询该职工的信息,并显示在屏幕上; (3)画出所有模块的流程图; (4)编写代码; (5)程序分析与调试。 2.3运行环境 (1)VC6.0 2.4开发工具 C++语言 3 概要设计与详细设计 3.1系统流程图 如图3.1所示。
6、 职工信息管理系统菜单 3.职工信息修改 3.职工信息删除 2.职工信息查询 1.职工信息录入 输入职工号 输入职工号 输入职工号 输入职工号 职工号存在? 职工号存在? 职工号存在? 职工号存在? 是,选择修改信息项,输入新的职工信息, 修改成功 否, 该职工不存在 否,输入职工信息 是,添加成功 否, 该职工不存在 是, 删除成功 否, 该职工不存在 是, 输出职工信息 添加成功
7、 返回职工信息管理系统菜单,继续选择…… 图3.1 系统流程图 3.2运行结果举例 (1)职工信息录入界面 (2)职工信息修改界面 4 编码与实现 4.1分析 本系统主要分为WorkerList类、database类、函数menu、函数menu2以及main函数,WorkerList类中包括的数据成员有id、name[10]、sex[10]、age、edu[20]、salary、address[25]、tel[11],包括的函数成员有seti
8、d()、setname()、setsex()、setage()、setedu()、setsalary()、setaddress()、settel()、getid()、add()、display()。而database类中包括的数据成员有top、 WorkList worker[N],包括的函数成员有rdatabase()、add()、search()、delet()、modify()。 用函数add()实现职工信息的录入,用函数search()实现对职工信息的查询,用函数delet()实现对职工信息的删除,用函数modify()实现对职工信息的修改。 4.2具体代码实现 #inc
9、lude
10、lic:
void setid()//以下函数用于职工属性的输入
{
cout<<"请输入职工号:"<
11、ut<<"请输入职工学历:"<
12、eturn id;
}
void add()//职工信息录入
{
setid();
setname();
setsex();
setage();
setedu();
setsalary();
setaddress();
settel();
}
void display()//显示函数,用于将已有职工的信息输出
{
cout<<"职工工号为:"< 13、"< 14、 § §"< 15、endl;
cout< 16、 *******"< 17、"< 18、tream file;//定义fstream类对象file
file.open("c:\\worker.txt ",ios::in|ios::binary);//使文件流与磁盘的worker.txt文件建立关联,并从中读取职工信息
while(!file.eof())
{
top++;
file.read((char *)&worker[top],sizeof(worker[top]));
}
file.close();//将关联的磁盘文件关闭
top++;
}
void add()//新添加职工函数
{
int id;
19、
cout<<"请输入职工号以便鉴定"< 20、 fstream file;
file.open("c:\\worker.txt",ios::out|ios::binary);
for(int i=0;i 21、rker[i].getid()==id2)
{
worker[i].display();
return;
}
}
cout<<"对不起,该职工不存在"< 22、
worker[j]=worker[j+1];
}
cout<<"该职工信息已删除"< 23、
{
int g;
menu2();
cin>>g;
switch(g)
{
case 1:worker[i].setid();break;
case 2:worker[i].setname();break;
case 3:worker[i].setsex();break;
case 4:worker[i].setage();break;
case 5:worker[i].setedu();break;
case 6:worker[i].setsalary();break;
24、 case 7:worker[i].setaddress();break;
case 8:worker[i].settel();break;
}
outdatabase();
cout<<"修改成功"< 25、choice)
{
case 1:a.rdatabase();
a.add();break;
case 2:a.rdatabase();
a.search();break;
case 3:a.rdatabase();
a.delet();break;
case 4:a.rdatabase();
a.modify();break;
}
menu();
cin>>choice;
}
}
5 课程设计总结
5.1该课程设计的特点和不足
这个程序设计有很多不足,并不能将所有职工的相关信息输出,这个问题暂时还未 26、能实现,不过以后我会努力学习逐渐加以改善争取完善它的功能。
该程序所存信息不足,有待改善,但该程序适合现阶段面向对象技术初学者的练习作业,能有效的反映出学生的学习情况及其动手能力,也能让学生自己检测出本学期自己所获得的知识掌握情况,是一向很好的课程设计项目。
5.2心得体会
通过这次对职工信息管理系统的课程设计,我获益颇多。长时间的思索这个课程设计使得我对函数和类的理解及其运用更加透彻与深刻。
在设计程序的过程中,我也曾遇到令人头疼的难题,令自己百思不得其解。职工信息管理系统的设计需要对职工的信息进行存储,但是如何将信息真正的存储到文件中呢?这个难题曾一度难倒了我。庆幸的是,在老师和同 27、学的帮助下,我寻到了解决问题的方法,将信息保存到文件中需要查阅C++面向对象程序设计教科书。在书上第9章C++的输入输出流里有对信息进行文件2进制存储的相关内容,通过问老师和自己进一步深入学习,这个大难题最终得以解决。
然而当所有的程序完成的时候,并没想象中那么容易运行,总有一些零零碎碎的错误隐藏在一个个“阴暗”的角落里,研究修改了很久,仍有错误找不出来,于是就只好求助别人帮忙了。
在本系统的开发设计中,由于我是初次开发软件,在知识,经验方面都存在着不足。另外这个开发的过程比较仓促,因此留下了一些不足与缺陷,因为对职工信息管理的流程不太熟悉,在分析时未能做到完善。
尽管如此,我还是学到了很多东西。通过开发这个系统,我掌握了项目基本开发过程,用到的知识巩固了我对C++语言的学习,但在这次设计中的最大收获并不是掌握这几门开发工具的应用,而是学习了设计系统的思维方法,以及同学们之间相互帮助的精神。
这次课程设计也同时让我个人认识到了自己知识的不足,并让我对C++有了全新的认识,也对其产生了浓厚的兴趣,要好好学习C++,充实自己。为自己加油!为老师加油!为父母加油!
参考文献
[1] C++面向对象程序设计(人民邮电出版社,陈维兴,陈昕 编著)
20






