面向对象程序设计课程设计报告正文参考模Word格式文档下载.docx
- 文档编号:21499739
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:23
- 大小:118.14KB
面向对象程序设计课程设计报告正文参考模Word格式文档下载.docx
《面向对象程序设计课程设计报告正文参考模Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计课程设计报告正文参考模Word格式文档下载.docx(23页珍藏版)》请在冰豆网上搜索。
其设计思路步骤可分为:
(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[]:
-sex[]:
-birth[]:
-tel[]:
-salary[]:
图3.1职工类图
3.3函数流程图
图3.2职工流程图
4具体代码实现
#include<
iostream>
fstream>
string>
stdlib.h>
//字符转浮点atof()
windows.h>
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();
3.员工信息删除
friendvoidindex();
4.员工信息排序
friendvoidfind();
5.员工信息查找
friendvoidsave();
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"
endl;
cout<
\t\t*************************************************"
\t\t*\t\t员工管理系统\t\t*"
\t\t*------------------------------------------*"
\t\t*\t\t1.员工信息输入\t\t*"
\t\t*\t\t2.员工信息修改\t\t*"
\t\t*\t\t3.员工信息删除\t\t*"
\t\t*\t\t4.员工信息排序\t\t*"
\t\t*\t\t5.员工信息查找\t\t*"
\t\t*\t\t6.员工信息保存\t\t*"
\t\t*\t\t0.退出\t\t\t*"
\n\n\t请选择(0~6):
;
voidadd()//1.员工信息输入
{charnum[15];
//暂时存放编号
//暂时存放姓名
//暂时存放性别
//暂时存放生日
//暂时存放电话
//暂时存放工资
charp;
//用于选择判断
system("
cls"
);
//清屏
while
(1)//控制信息添加多次的循环
{
cout<
\n\n输入员工信息:
编号:
;
cin>
>
num;
姓名:
name;
性别:
cin>
sex;
生日:
birth;
电话:
tel;
工资:
salary;
for(inti=0;
i<
NUM;
i++)//检测所添加员工的编号是否存在
{
if(strcmp(Per[i].num,num)==0)
{
cout<
该编号的已经存在"
system("
pause"
//按任意键继续……
return;
}
}
p=0;
请选择:
\n\t1.确认添加数据\n\t2.重新输入\n\t3.返回主菜单"
p;
//控制是否确认添加数据
if(p<
'
1'
||p>
3'
)
{cout<
没有这个选项!
\n请重新输入:
Sleep(1000);
continue;
if(p=='
2'
)//重新输入数据
)//返回主菜单
return;
Per[NUM].setPerson(num,name,sex,birth,tel,salary);
\n\n\t\t添加数据成功!
\n"
saveCtrl=0;
NUM++;
是否返回主菜单(y/n)"
//返回主菜单
y'
||p=='
Y'
}
voidmodify()//2.员工信息修改
//清屏
if(NUM==0)//判断员工数是否为0,即是否存在员工记录,若无记录,则退出函数
\n\n\n\n\n\n\t\t\t没有任何员工记录。
\n\n\n\t\t\t即将返回主菜单"
Sleep(2000);
return;
编号\t姓名\t性别\t生日\t电话\t工资"
for(inti1=0;
i1<
i1++)//列出现有的员工的详情,方便修改
Per[i1].num<
\t'
Per[i1].name<
Per[i1].sex<
Per[i1].birth<
Per[i1].tel<
Per[i1].salary<
请输入要修改的员工的编号:
intchoice;
for(inti=0;
i++)
if(strcmp(Per[i].num,num)==0)
do{
system("
//清屏
cout<
Per[i].num<
Per[i].name<
Per[i].sex<
Per[i].birth<
Per[i].tel<
Per[i].salary<
\t\t*****************************************"
\t\t*\t员工管理系统\t\t*"
\t\t*----------------------------------*"
\t\t*\t\t1.修改编号\t\t*"
\t\t*\t\t2.修改姓名\t\t*"
\t\t*\t\t3.修改性别\t\t*"
\t\t*\t\t4.修改生日\t\t*"
\t\t*\t\t5.修改电话\t\t*"
\t\t*\t\t6.修改工资\t\t*"
\t\t*\t\t7.返回主菜单\t\t*"
\n\n\t请选择(0~7):
cin>
choice;
if(choice<
0||choice>
7)
continue;
switch(choice)
case1:
cout<
请输入新的员工编号:
cin>
Per[i].num;
saveCtrl=0;
break;
case2:
请输入新的员工姓名:
Per[i].name;
case3:
请输入新的员工性别:
Per[i].sex;
case4:
请输入新的员工生日:
Per[i].birth;
case5:
请输入新的员工电话:
Per[i].tel;
case6:
请输入新的员工工资:
Per[i].salary;
case7:
return;
}while(choice<
7);
}
voiddele()//3.员工信息删除
i1++)//列出现有的员工的详情,方便删除
{if(Per[i1].num!
=NULL)
cout<
Persontemp;
请输入要删除的员工的编号"
if(strcmp(Per[i].num,num)==0)
{
temp=Per[i];
for(intj=i;
j<
NUM-1;
j++)
Per[j]=Per[j+1];
NUM--;
break;
}
\n\n\n\t删除成功!
saveCtrl=0;
voidindex()//4.员工信息排序
{
system("
if(NUM==0)//判断员工数是否为0,即是否存在员工记录,若无记录,则退出函数
{
Sleep(2000);
return;
}
Persont;
intk=0;
intchoice;
\t1.按编号排序\n\t\t2.按工资排序"
cin>
if(choice==1)
{for(inti=0;
i++)//选择排序法,对员工的编号进行排序
{k=i;
for(intj=i+1;
if(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;
j1<
j1++)
if(atof(Per[k].salary)<
atof(Per[j1].salary))
k=j1;
Per[k]=Per[i1];
Per[i1]=t;
\n\n\n\t按员工的工资排序结果"
else
{cout<
\n\n\n\n\n\n\t\t\t没有这个选项!
\n\n\t\t\t即将返回主菜单!
for(inti1=0;
i1++)
{if(Per[i1].num!
//按任意键继续……
saveCtrl=0;
voidfind()//5.员工信息查找
{cout<
intfound=0;
//用于检测是否找到该编号员工
请输入员工编号:
{
{system("
\n\n\n\t查询结果"
found=1;
if(found==0)//如果未找到该编号员工
{system("
\n\n\n\n\n\n\t\t\t未找到编号为:
num<
的该员工!
Sleep(2500);
voidsave()//6.员工信息保存
{
ofstreamfout;
fout.open("
E:
\\worker.txt"
ios:
out);
\n\n\n\n\n\n\t\t\t正在保存,请稍等…"
Sleep(1000);
sys
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 课程设计 报告 正文 参考