面向对象技术课程设计.docx
《面向对象技术课程设计.docx》由会员分享,可在线阅读,更多相关《面向对象技术课程设计.docx(20页珍藏版)》请在冰豆网上搜索。
面向对象技术课程设计
《面向对象技术》课程设计
题目:
职工信息管理系统
专业:
学号:
姓名:
指导老师:
完成日期:
1前言
编写一个程序处理职工信息。
通过一个结构体数组来存放输入的每一位同学的记录(包括工号、姓名、性别、年龄、学历、住址、电话、工资),然后将其信息存入文件中。
输入一个姓名查询该同学的信息,并显示在屏幕上。
2需求分析
2.1要求
(1)用C++语言实现程序设计;
(2)画出查询模块的流程图;
(3)系统的各个功能模块要求用函数的形式实现;
(4)界面友好,程序有注释。
(5)利用类进行相关信息的处理。
2.2任务
(1)定义一个类类型,输入每一位职工的记录(包括工号、姓名、性别、年龄、学历、住址、电话、工资);
(2)输入工号查询该职工的信息,显示在屏幕上;
(3)画出流程图;
(4)编写代码;
(5)程序分析与调试;
2.3运行环境
(1)Windows2000/xp系统
(2)vc6.0编译环境
2.4开发工具
C++语言
3概要设计与详细设计
3.1系统流程图
如图3.1所示。
(1)
主函数main
为用户提供了选择功能界面,通过选择,实现功能。
代码如下:
cout<<"职工信息管理:
"<cout<<"1.新增职工"<cout<<"2.修改职工信息"<cout<<"3.删除职工信息"<cout<<"4.查询职工"<cout<<"5.显示所有职工信息"<cout<<"0.退出"<cin>>choice;
Y
4.编码与实现
4.1分析
本程序定义了两个类employee类和Edatabase类,其中Edatabase类用来存放职工信息,employee类用来实现对职工信息的删除、修改、增添。
在employee类中定义了一个空的构造函数employee(),然后通过各个公有成员函数实现对职工姓名信息的获取。
通过函数intgettag(){returetag;}获取删除标记。
通过函数addemployee()实现了对新增职工的添加
在Edatabase类中的析构函数~Edatabase实现吧职工信息写入文件employee.txt在~Edatabase中先用写的方式打开文件。
然后用一个for循环写入职工信息到employee.txt文件中,最后关闭。
4.2具体代码实现
#include
#include
#include
#include
usingnamespacestd;
constintmax=200;
#defineNull0
classEmployee
{
private:
charage[max];
inttag;//职工删除标记
charsalary[max];//薪水
charxueli[max];
charname[30];
intno;//职工号
charaddress[max];
charsex[max];
chartelephone[max];
public:
Employee(){}
chargetname(){returnname[max];}//获取名字
chargettelephone(){returntelephone[max];}//获取电话号码
intgetno(){returnno;}//获取职工号
chargetaddress(){returnaddress[max];}//获取家庭地址
chargetsalary(){returnsalary[max];}//获取工资信息
chargetxueli(){returnxueli[max];}//获取学历信息
chargetage(){returnage[max];}//获取年龄
chargetsex(){returnsex[max];}//性别
intgettag(){returntag;}//获取删除标记
voidsetname(charna[max])
{
strcpy(name,na);
}
voidsetaddress(chardizhi[max])
{
strcpy(address,dizhi);
}
voidsetsalary(charx[max])
{
strcpy(salary,x);
}
voidsettelephone(charma[max])
{
strcpy(telephone,ma);
}
voidsetxueli(charl[max])
{
strcpy(xueli,l);
}
voidaddemployee(char*na,intn,char*x,char*a,char*l,char*g,char*ad,char*t)
{tag=0;
strcpy(name,na);
no=n;
strcpy(sex,x);
strcpy(age,a);
strcpy(xueli,l);
strcpy(salary,g);
strcpy(address,ad);
strcpy(telephone,t);
}
voiddelemployee()
{
tag=1;
}
voiddisp()
{
cout.flags(ios:
:
left);
cout<}
};
classEdatabase//职工信息库
{
private:
inttop;
Employeeworker[max];
public:
Edatabase()
{
Employeee;
top=-1;
fstreamfile("Employee.txt",ios:
:
in);
while
(1)
{
file.read((char*)&e,sizeof(e));
if(!
file)break;
top++;
worker[top]=e;
}
file.close();
}
intaddEmployee(char*na,intn,char*x,char*a,char*l,char*g,char*ad,char*t)
{
Employee*p=query(n);
if(p==Null)
{top++;
worker[top].addemployee(na,n,x,a,l,g,ad,t);
return1;
}
return0;
}
Employee*query(intemployeeid)
{
for(inti=0;i<=top;i++)
if(worker[i].getno()==employeeid&&worker[i].gettag()==0)
{
return&worker[i];
}
returnNull;
}
voiddisp()
{
for(inti=0;i<=top;i++)
if(worker[i].gettag()==0)
worker[i].disp();
}
~Edatabase()
{
fstreamfile("Employee.txt",ios:
:
out);
for(inti=0;i<=top;i++)
if(worker[i].gettag()==0)
file.write((char*)&worker[i],sizeof(worker[i]));
file.close();
}
};
voidmain()
{
Edatabaseemployeedate;
charchoice;
charename[30];
intemployeeid;
Employee*e;
charxingbie[max];
charage[max];
charxueli[max];
chargongzi[max];
chardizhi[max];
chartelephone[15];
charq;
while(choice!
=0)
{
cout<<"职工信息管理:
"<cout<<"1.新增职工"<cout<<"2.修改职工信息"<cout<<"3.删除职工信息"<cout<<"4.查询职工"<cout<<"5.显示所有职工信息"<cout<<"0.退出"<cin>>choice;
switch(choice)
{
case'1':
cout<<"请输入职工工号:
"<cin>>employeeid;
cout<<"请输入职工名字:
"<cin>>ename;
cout<<"请输入职工性别:
"<cin>>xingbie;
cout<<"请输入职工年龄:
"<cin>>age;
cout<<"请输入职工工资:
"<cin>>gongzi;
cout<<"请输入职工电话号码:
"<cin>>telephone;
cout<<"请输入职工的学历:
"<cin>>xueli;
cout<<"请输入职工的家庭地址:
"<cin>>dizhi;
employeedate.addEmployee(ename,employeeid,xingbie,age,xueli,gongzi,dizhi,telephone);break;
case'2':
cout<<"请输入你找的工号:
"<cin>>employeeid;
e=employeedate.query(employeeid);
if(e==Null)
{
cout<<"对不起!
你的工号有误,请核实后再输入"<break;
}
cout<<"请输入你想更改的职工信息:
"<cout<<"1:
输入你的新姓名"<cout<<"2:
输入你的新工资"<cout<<"3:
输入你的新的电话号码"<cout<<"4:
输入你的新的家庭住址"<cout<<"0:
退出"<cin>>q;
switch(q)
{
case'1':
cout<<"输入你的新名字"<cin>>ename;
e->setname(ename);
break;
case'2':
cout<<"输入你的新工资"<cin>>gongzi;
e->setsalary(gongzi);
break;
case'3':
cout<<"输入你的新电话号码"<cin>>telephone;
e->settelephone(telephone);
break;
case'4':
cout<<"输入你的新的家庭地址"<cin>>dizhi;
e->setxueli(dizhi);
break;
case'0':
break;
}break;
case'3':
cout<<"请输入删除的职工号:
"<cin>>employeeid;
e=employeedate.query(employeeid);
if(e==Null)
{
cout<<"该职工不存在,请核实后再输入"<break;
}
chartg1;
cout<<"确定要删除此记录吗?
(Y|N)"<cin>>tg1;
if(tg1!
='N'&&tg1!
='N')
{
e->delemployee();
cout<<"已成功删除此记录!
"<break;
}
case'4':
cout<<"请输入你想查找的职工工号";
cin>>employeeid;
e=employeedate.query(employeeid);
if(e==Null)
{
cout<<"该职工不存在,请核实后再输入"<break;
}
cout<<"名字工号性别年龄学历工资家庭地址电话号码\n";
e->disp();
break;
case'5':
cout<<"名字工号性别年龄学历工资家庭地址电话号码\n";
employeedate.disp();
break;
case'0':
break;
}
}
4.3系统运行结果样例
5课程设计总结
在这次课程设计中,主要的问题是对编译环境的不熟悉,导致出现一些程序问题无法解决,使得结果无法达到预期的效果,甚至是无法运行。
这个程序只实现了一些基本的问题,局限性很大。
所以在以后的学习中,我们要多加练习,使得自己对那些常用的程序熟练掌握,以至于在用到的时候能轻松应用。
通过本次课程设计,巩固了自己所学的知识,收获颇丰,受益良多。
也初步学会了如何做课程设计。
这个程序虽然实现了老师要求的一些功能,但还有一些地方不够完美。
所以在以后的学习中我会更加努力。
6参考文献
指导老师评语:
成绩:
签名: