面向对象程序设计课程设计报告正文参考模.docx
《面向对象程序设计课程设计报告正文参考模.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计课程设计报告正文参考模.docx(23页珍藏版)》请在冰豆网上搜索。
面向对象程序设计课程设计报告正文参考模
目录
1前言1
2需求分析1
2.1任务和要求1
2.2运行环境1
2.3开发工具1
3分析和设计1
3.1系统分析及设计思路1
3.2主要类图1
3.3函数流程图2
4具体代码实现2
5课程设计总结2
5.1程序运行结果或预期运行结果2
5.2设计结论2
参考文献2
致谢2
1前言
在日益发展的现代社会,一个高效实用的职工信息管理系统已经是企业必不可少的一个管理工具,它可以使企业在管理方面减少很多时间,本课程设计针对现代社会企业对员工信息的管理而设计,使员工的管理更加的简捷,更加的方便,界面友好,易于操作。
为了设计一个功能强大的职工信息管理系统,我们建立了职工类,用于对职工进行各种操作,将职工的相关数据保存在文本文件中。
2需求分析
2.1任务和要求
设计一个职工信息馆管理系统,完成职工信息管理等功能,要求完成以下功能:
1.能够实现职工信息录入功能;
2.实现删除职工信息的功能;
3.实现修改职工信息的功能;
4.实现用文本文件保存职工的信息;
5.按照职工编号或工资对职工信息排序;
6.按照编号查找职工;
程序中所涉及C++语言内容包括:
C++语言编译预处理过程、函数、数组、类、继承、封装、多态,重载,面向对象程序设计等相关内容。
2.2运行环境
(1)WINDOWS2000/XP系统
(2)VisualC++6.0编译环境或DEVC++5.0编译环境
2.3开发工具
C++语言
3分析和设计
3.1系统分析及设计思路
本系统采用C++编写Win32ConsoleApplication。
使用文本文件保存数据。
运行程序即可进入欢迎界面,选择操作序号即可进入相应的操作界面,并执行相应的操作。
其设计思路步骤可分为:
(1)添加职工信息
添加员工信息,提供员工信息的添加,在该模块中设计了安全检查机制,即确认是否添加员工的信息,若对员工信息的添加不满意,则可以选择重新输入。
还设置有返回主菜单的选项以方便用户。
(2)删除职工信息
删除员工信息中设计了对员工人数的检查,如果员工人数NUM的值为0,则返回到主菜单。
如果员工人数NUM不为0,则进入删除员工信息的界面。
界面包括员工信息列表,和删除选项,方便用户的操作。
(3)修改职工信息
根据编号来修改职工的信息,若编号不存在则直接返回界面。
(4)保存职工信息
保存员工的信息,即为将当前所有的员工的信息存入到worker.txt中。
这里我们采用的是C++的ofstream的写入文件的对象进行控制。
(5)显示职工的信息
按照职工编号从小到大排序或工资由高到低来排序职工信息。
(6)查找职工信息
根据编号来查找职工的信息,若编号不存在则直接返回界面。
3.2主要类图
Person
+Person()
+setPerson(num1:
char*,name1:
char*,sex1:
char*,birth1:
char*,tel1:
char*,salary1:
char*):
void
-num[]:
char
-name[]:
char
-sex[]:
char
-birth[]:
char
-tel[]:
char
-salary[]:
char
图3.1职工类图
3.3函数流程图
图3.2职工流程图
4具体代码实现
#include
#include
#include
#include//字符转浮点atof()
#include
usingnamespacestd;
FILE*fp;//文件指针,指向worker.txt
intNUM=0;//计数员工的个数
intsaveCtrl=1;//该变量用于检测数据的修改后是否保存的情况
classPerson{
public:
Person(){}//构造函数
voidsetPerson(char*num1,char*name1,char*sex1,char*birth1,char*tel1,char*salary1);//成员数据的修改函数;
friendvoidadd();//声明为Person的友元,函数功能为:
1.员工信息输入
friendvoidmodify();//声明为Person的友元,函数功能为:
2.员工信息修改
friendvoiddele();//声明为Person的友元,函数功能为:
3.员工信息删除
friendvoidindex();//声明为Person的友元,函数功能为:
4.员工信息排序
friendvoidfind();//声明为Person的友元,函数功能为:
5.员工信息查找
friendvoidsave();//声明为Person的友元,函数功能为:
6.员工信息保存
friendvoidread();
private:
//声明编号、姓名、出生年月、性别、联系电话、基本工资等成员变量
charnum[15];
charname[15];
charsex[5];
charbirth[15];
chartel[15];
charsalary[15];
};
PersonPer[100];//声明全局Person对象数组
voidPerson:
:
setPerson(char*num1,char*name1,char*sex1,char*birth1,char*tel1,char*salary1)
{
strcpy(num,num1);
strcpy(name,name1);
strcpy(sex,sex1);
strcpy(birth,birth1);
strcpy(tel,tel1);
strcpy(salary,salary1);
}
voidmenu()//主菜单
{cout<<"\n\n"<cout<<"\t\t*************************************************"<cout<<"\t\t*\t\t员工管理系统\t\t*"<cout<<"\t\t*------------------------------------------*"<cout<<"\t\t*\t\t1.员工信息输入\t\t*"<cout<<"\t\t*\t\t2.员工信息修改\t\t*"<cout<<"\t\t*\t\t3.员工信息删除\t\t*"<cout<<"\t\t*\t\t4.员工信息排序\t\t*"<cout<<"\t\t*\t\t5.员工信息查找\t\t*"<cout<<"\t\t*\t\t6.员工信息保存\t\t*"<cout<<"\t\t*\t\t0.退出\t\t\t*"<cout<<"\t\t*************************************************"<cout<<"\n\n\t请选择(0~6):
";
}
voidadd()//1.员工信息输入
{charnum[15];//暂时存放编号
charname[15];//暂时存放姓名
charsex[5];//暂时存放性别
charbirth[15];//暂时存放生日
chartel[15];//暂时存放电话
charsalary[15];//暂时存放工资
charp;//用于选择判断
system("cls");//清屏
while
(1)//控制信息添加多次的循环
{
cout<<"\n\n输入员工信息:
"<cout<<"编号:
";
cin>>num;
cout<cout<<"姓名:
";
cin>>name;
cout<cout<<"性别:
";
cin>>sex;
cout<<"生日:
";
cin>>birth;
cout<cout<<"电话:
";
cin>>tel;
cout<cout<<"工资:
";
cin>>salary;
cout<for(inti=0;i{
if(strcmp(Per[i].num,num)==0)
{
cout<<"该编号的已经存在"<system("pause");//按任意键继续……
return;
}
}
p=0;
cout<<"请选择:
\n\t1.确认添加数据\n\t2.重新输入\n\t3.返回主菜单"<cin>>p;//控制是否确认添加数据
if(p<'1'||p>'3')
{cout<<"没有这个选项!
\n请重新输入:
"<Sleep(1000);
continue;
}
if(p=='2')//重新输入数据
{
continue;
}
if(p=='3')//返回主菜单
{
return;
}
Per[NUM].setPerson(num,name,sex,birth,tel,salary);
cout<<"\n\n\t\t添加数据成功!
\n"<saveCtrl=0;
NUM++;
cout<<"是否返回主菜单(y/n)";
cin>>p;//返回主菜单
if(p=='y'||p=='Y')
{
return;
}
}
}
voidmodify()//2.员工信息修改
{
system("cls");//清屏
if(NUM==0)//判断员工数是否为0,即是否存在员工记录,若无记录,则退出函数
{
cout<<"\n\n\n\n\n\n\t\t\t没有任何员工记录。
\n\n\n\t\t\t即将返回主菜单";
Sleep(2000);
return;
}
charnum[15];
cout<<"编号\t姓名\t性别\t生日\t电话\t工资"<for(inti1=0;i1{
cout<}
cout<<"请输入要修改的员工的编号:
";
cin>>num;
intchoice;
for(inti=0;i{
if(strcmp(Per[i].num,num)==0)
{
do{
system("cls");//清屏
cout<<"编号\t姓名\t性别\t生日\t电话\t工资"<cout<cout<<"\t\t*****************************************"<cout<<"\t\t*\t员工管理系统\t\t*"<cout<<"\t\t*----------------------------------*"<cout<<"\t\t*\t\t1.修改编号\t\t*"<cout<<"\t\t*\t\t2.修改姓名\t\t*"<cout<<"\t\t*\t\t3.修改性别\t\t*"<cout<<"\t\t*\t\t4.修改生日\t\t*"<cout<<"\t\t*\t\t5.修改电话\t\t*"<cout<<"\t\t*\t\t6.修改工资\t\t*"<cout<<"\t\t*\t\t7.返回主菜单\t\t*"<cout<<"\t\t*****************************************"<cout<<"\n\n\t请选择(0~7):
";
cout<<"请选择:
";
cin>>choice;
if(choice<0||choice>7)
continue;
switch(choice)
{
case1:
cout<<"请输入新的员工编号:
";
cin>>Per[i].num;
saveCtrl=0;
break;
case2:
cout<<"请输入新的员工姓名:
";
cin>>Per[i].name;
saveCtrl=0;
break;
case3:
cout<<"请输入新的员工性别:
";
cin>>Per[i].sex;
saveCtrl=0;
break;
case4:
cout<<"请输入新的员工生日:
";
cin>>Per[i].birth;
saveCtrl=0;
break;
case5:
cout<<"请输入新的员工电话:
";
cin>>Per[i].tel;
saveCtrl=0;
break;
case6:
cout<<"请输入新的员工工资:
";
cin>>Per[i].salary;
saveCtrl=0;
break;
case7:
return;
}
}while(choice<7);
}
}
}
voiddele()//3.员工信息删除
{
system("cls");//清屏
if(NUM==0)//判断员工数是否为0,即是否存在员工记录,若无记录,则退出函数
{
cout<<"\n\n\n\n\n\n\t\t\t没有任何员工记录。
\n\n\n\t\t\t即将返回主菜单";
Sleep(2000);
return;
}
cout<<"编号\t姓名\t性别\t生日\t电话\t工资"<for(inti1=0;i1{if(Per[i1].num!
=NULL)
cout<}
charnum[15];
Persontemp;
cout<<"请输入要删除的员工的编号"<cin>>num;
for(inti=0;i{
if(strcmp(Per[i].num,num)==0)
{
temp=Per[i];
for(intj=i;jPer[j]=Per[j+1];
NUM--;
break;
}
}
cout<<"\n\n\n\t删除成功!
"<system("pause");//按任意键继续……
saveCtrl=0;
}
voidindex()//4.员工信息排序
{
system("cls");//清屏
if(NUM==0)//判断员工数是否为0,即是否存在员工记录,若无记录,则退出函数
{
cout<<"\n\n\n\n\n\n\t\t\t没有任何员工记录。
\n\n\n\t\t\t即将返回主菜单";
Sleep(2000);
return;
}
Persont;
intk=0;
intchoice;
cout<<"请选择:
\t1.按编号排序\n\t\t2.按工资排序"<cin>>choice;
if(choice==1)
{for(inti=0;i{k=i;
for(intj=i+1;jif(atof(Per[k].num)>atof(Per[j].num))
k=j;
t=Per[k];
Per[k]=Per[i];
Per[i]=t;
}
cout<<"\n\n\n\t按员工的编号排序结果"<}
elseif(choice==2)
{
for(inti1=0;i1{k=i1;
for(intj1=i1+1;j1if(atof(Per[k].salary)k=j1;
t=Per[k];
Per[k]=Per[i1];
Per[i1]=t;
}
cout<<"\n\n\n\t按员工的工资排序结果"<}
else
{cout<<"\n\n\n\n\n\n\t\t\t没有这个选项!
\n\n\t\t\t即将返回主菜单!
"<Sleep(2000);
return;
}
cout<<"编号\t姓名\t性别\t生日\t电话\t工资"<for(inti1=0;i1{if(Per[i1].num!
=NULL)
cout<}
system("pause");//按任意键继续……
saveCtrl=0;
}
voidfind()//5.员工信息查找
{
system("cls");//清屏
if(NUM==0)//判断员工数是否为0,即是否存在员工记录,若无记录,则退出函数
{
cout<<"\n\n\n\n\n\n\t\t\t没有任何员工记录。
\n\n\n\t\t\t即将返回主菜单";
Sleep(2000);
return;
}
cout<<"编号\t姓名\t性别\t生日\t电话\t工资"<for(inti1=0;i1{cout<}
charnum[15];
intfound=0;//用于检测是否找到该编号员工
cout<<"请输入员工编号:
";
cin>>num;
for(inti=0;i{
if(strcmp(Per[i].num,num)==0)
{system("cls");
cout<<"\n\n\n\t查询结果"<cout<<"编号\t姓名\t性别\t生日\t电话\t工资"<cout<found=1;
}
}
if(found==0)//如果未找到该编号员工
{system("cls");
cout<<"\n\n\n\n\n\n\t\t\t未找到编号为:
"<\n\n\t\t\t即将返回主菜单!
"<Sleep(2500);
return;
}
system("pause");//按任意键继续……
}
voidsave()//6.员工信息保存
{
system("cls");//清屏
ofstreamfout;
fout.open("E:
\\worker.txt",ios:
:
out);
cout<<"\n\n\n\n\n\n\t\t\t正在保存,请稍等…"<Sleep(1000);
sys