C++程序设计Word下载.docx
- 文档编号:16585701
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:40
- 大小:125.01KB
C++程序设计Word下载.docx
《C++程序设计Word下载.docx》由会员分享,可在线阅读,更多相关《C++程序设计Word下载.docx(40页珍藏版)》请在冰豆网上搜索。
1、程序设计说明书
【设计题目】中介公司信息管理
【问题描述】
中介公司的信息管理包括招聘单位与应聘者的需要是否相匹配,可以通过各种方式的查询来实现,如果匹配将双方的信息存入成功记录中,以便增加公司的信誉。
【程序技巧】
1.将多个类对象同时进行操作,并授予不同的权限。
2.登陆界面的设计实现了信息的安全性;
3.将登记注册的人员信息存入相应的文件,可以节省内存的管理;
4.成功记录的设计让用户对本公司更有信任感;
5.为使得信息的安全人员信息用二进制存入文件;
【模块划分及调用关系】
【模块流程图】
查找函数:
接收用户的权限
普通招聘单位
会员招聘单位
应聘者
直接查找
录入信息,直接查找符合全部要求的人员
按符合条件的pay查找
录入信息,查找出符合要求的人员,并按pay排序
按符合条件的age查找
录入信息,查找出符合要求的人员,并按age排序
登记注册函数:
接收用户权限
普通招聘单位
接收用户信息
检查信息是否正确以及是否超越权限
信息正确
信息错误
信息存入返回用户界面
退出程序
修改函数:
普通招聘单位
接收关键字,并查找
找到信息
未找到信息
修改信息并保存
退出至用户界面
【程序使用方法】
在程序的文件夹内新建四个文本文件,成功记录,普通招聘,会员招聘以及应聘者,运行程序并按提示进行操作,在登陆时使用默认用户名及密码登陆;
在登记注册时要注意电话号码必须是整形数据;
在各个界面内如果选择错误,则执行退出或返回上一页;
2、程序上机调试报告
【语法错误及其排除】
1.调用strcmp()函数,strcpy()函数时没有加头文件名string
排错:
加#include<
string>
2sex的赋值用strcpy()函数
sex为字符形不能用字符串赋值函数
【算法错误及其排除】
1输出类对象时直接用cout
排错;
定义重载的<
<
输出类的内容
2类外直接使用私有成员变量
在类内定义get函数,返回私有成员
3在调用switch()语句中,没有加break
在每个case语句后加break;
3、程序测试结果
以下为部分测试结果,其他的可按提示运行
1登陆的检测
2登记注册的检测
3修改信息的测试
【收获及体会】
刚拿到题目时,觉得很简单,但当自己开始编程时,却出现了许多错误,查找了很多书才搞清楚题目的难度,和应该注意的问题。
借助此次编程对C++语言有了更深的了解和认识,并对课本进行了一次复习,并认识到C++的高深,当然我也深知自己的程序不够标准;
4、源程序代码(要求有尽可能多的注释语句)
#include<
iostream>
fstream>
//文件函数库
iomanip>
//输出格式函数库
//字符串函数库
usingnamespacestd;
constintM=100;
constintN=100;
constintL=100;
//对象的最大个数设定
voidsecsurface(inta);
voidusersurface(intn,intc);
voidmodify(intn,intc);
voidsuccessrecord();
//函数声明
classmessage//定义信息类
{
private:
charname[10];
//联系人
charjobname[10];
//工作职称
chare_mail[20];
//邮箱地址
intphonenum;
//联系电话
public:
message(){}
~message(){}
voidinput1()
{
cout<
"
请输入联系人姓名:
;
cin>
>
name;
请输入职务名称:
jobname;
请输入邮箱地址:
e_mail;
请输入联系电话号码:
phonenum;
}
char*get_name()
returnname;
char*get_jobname()
returnjobname;
intget_phonenum()
returnphonenum;
char*get_e_mail()
returne_mail;
}//定义成员变量的get函数,以便后面用到私有变量
voidshow1()
setw(10)<
联系人:
name<
endl;
职务名称:
jobname<
邮箱地址:
e_mail<
联系电话:
phonenum<
};
classemployer:
publicmessage//定义普通招聘单位,公有继承信息类
charcomplanyname[30];
//公司名称
intage1,age2;
//招聘年龄段
intpay1,pay2;
//招聘工资段
charaddress[50];
//公司地址
charsex;
//招聘人员性别
employer(){}
voidinput()
intt;
请输入公司/单位名称:
complanyname;
请输入要招聘的年龄段:
age1>
age2;
if(age1>
age2)
{
t=age1;
age1=age2;
age2=t;
}//如果年龄段数据输入颠倒,则调换位置
请输入要招聘的工资段:
pay1>
pay2;
if(pay1>
pay2)
t=pay1;
pay1=pay2;
pay2=t;
}//如果工资段数据输入颠倒,则调换位置
请输入公司/单位的地址:
address;
请输入要招聘的人员的性别:
男(M),女(W),如不做要求(0)"
cin>
sex;
input1();
charget_sex()
returnsex;
intget_age1()
returnage1;
intget_pay1()
returnpay1;
intget_pay2()
returnpay2;
intget_age2()
returnage2;
char*get_complanyname()
returncomplanyname;
char*get_address()
returnaddress;
voidshow()
公司名称:
complanyname<
招聘年龄:
age1<
-"
age2<
招聘工资:
pay1<
pay2<
公司地址:
address<
招聘性别:
sex<
show1();
W(女),M(男),0(不做要求);
friendostream&
operator<
(ostream&
output,employer&
c)
c.show();
returnoutput;
}//重载<
使得可以直接输出普通招聘类
classVip_employer:
publicemployer//定义会员招聘类,公有继承普通招聘类
intpeoplenum;
//招聘人数
employer:
:
input();
请输入公司/单位要招聘的人数:
peoplenum;
intget_peoplenum()
returnpeoplenum;
show();
招聘人数:
peoplenum<
operator<
(ostream&
output,Vip_employer&
使得可以直接输出会员招聘类
classemployee:
virtualpublicmessage//定义应聘者类,虚继承信息类
//应聘人员性别
intage;
//应聘人员年龄
intpay;
//应聘工资
//应聘人员家庭地址
请输入您的性别,男(M),女(W)"
请输入您的年龄:
age;
请输入您要招聘的最低工资:
pay;
请输入您现在的居住地址:
voidset_pay(inta)
pay=a;
}//修改pay
intget_age()
returnage;
intget_pay()
returnpay;
应聘性别:
应聘年龄:
age<
应聘工资:
pay<
家庭住址:
output,employee&
使得可以直接输出应聘类
voidcheck1(intn,intc)//普通招聘者登记函数
employera,employ[N];
inti=0,j;
ifstreamfp("
普通招聘.txt"
ios:
binary);
if(!
fp)
cout<
can'
topen'
普通招聘.txt'
!
exit
(1);
}
while(!
fp.eof())
fp.read((char*)&
employ[i],sizeof(employ[i]));
i++;
a.input();
if(a.get_age1()<
=0||a.get_age2()<
0||a.get_age1()>
70||a.get_age2()>
70||a.get_pay1()<
=0||!
(a.get_sex()=='
0'
||a.get_sex()=='
M'
W'
))
输入的相关信息错误!
请重新注册"
check1(n,c);
}//如果登记中年龄、工资为负值、性别输入错误,则重新登记
endl<
注册的单位信息如下:
a;
//输出登记人员的信息,以便核查
employ[i]=a;
ofstreaminfile("
for(j=0;
j<
=i;
j++)
infile.write((char*)&
employ[j],sizeof(employ[j]));
infile.close();
//在文件末尾写入数据,并关闭文件
注册成功!
usersurface(n,c);
//查询开关打开,返回界面
}
voidcheck2(intn,intc)//会员招聘者登记函数
Vip_employerb,vemploy[L];
会员招聘.txt"
会员招聘.txt'
vemploy[i],sizeof(vemploy[i]));
b.input();
if(b.get_age1()<
=0||b.get_age2()<
0||b.get_age1()>
70||b.get_age2()>
70||b.get_pay1()<
(b.get_sex()=='
||b.get_sex()=='
)&
&
b.get_peoplenum()<
=0)
check2(n,c);
}//如果登记中年龄、工资、招聘人数为负值、性别输入错误,则重新登记
注册的人员信息如下:
b;
vemploy[i]=b;
infile.write((char*)&
vemploy[j],sizeof(vemploy[j]));
voidcheck3(intn,intc)//定义应聘者登记函数
employeed,emp[M];
inti=0,j,xx;
应聘者.txt"
应聘者.txt'
emp[i],sizeof(emp[i]));
d.input();
if(d.get_age()<
=0||d.get_pay()<
(d.get_sex()=='
||d.get_sex()=='
check3(n,c);
while(c==1&
d.get_pay()>
1000)
您是普通用户,只能应聘1000以下岗位!
请重新输入pay"
cin>
xx;
d.set_pay(xx);
}//如果用户超越权限则提醒,直到正确为止
d;
emp[i]=d;
emp[j],sizeof(emp[j]));
voidfindoutsurface(intn,intc)//查询界面的定义
cout<
setw(50)<
查找符合要求的对象"
setw(15)<
1.直接查找"
setw(27)<
2.按符合age查找并排序"
if(n==2)//不同的用户授予不同的权限
3.按符合pay查找并排序"
setw(17)<
4.返回上一层"
else
3.返回上一层"
voidfindout1(intn,intc)//普通用户查询函数
intx,m=0,j=0,i=0,k=0;
charaa[10];
employeeemp,employee1[M],em[M];
employeremr[N],a;
ifstreamfp("
if(!
exit
(1);
while(!
fp.read((char*)&
emr[i],sizeof(emr[i]));
i++;
}//录入全部数据
fp.close();
输入您单位名称:
cin>
aa;
for(intii=0;
ii<
i;
i++)
strcmp(emr[ii].get_complanyname(),aa))
k=ii+1;
//查找该单位
if(k==0)
没有找到该公司!
else
findoutsurface(n,c);
a=emr[k-1];
ifstreaminfile("
if(!
infile)
{
cout<
}
while(!
infile.eof())
fp.read((char*)&
employee1[m],sizeof(employee
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计
![提示](https://static.bdocx.com/images/bang_tan.gif)