c加加动态数组加无限内存人员管理系统Word下载.docx
- 文档编号:18058097
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:55
- 大小:272.99KB
c加加动态数组加无限内存人员管理系统Word下载.docx
《c加加动态数组加无限内存人员管理系统Word下载.docx》由会员分享,可在线阅读,更多相关《c加加动态数组加无限内存人员管理系统Word下载.docx(55页珍藏版)》请在冰豆网上搜索。
Head();
cout<
<
"
\t\t选择要进行的程序:
endl;
ch=cin.get();
cout<
switch(ch)
{
case'
1'
:
system("
cls"
);
Cramer();
break;
2'
Statis_Words();
3'
cout<
"
退出程序"
<
endl;
exit(0);
default:
cout<
\t\t输入有误"
}
cin.get();
return0;
}
voidHead()
\t\t菜单选择程序"
\t\t"
\t\t1.克莱姆法则解线性方程组"
\t\t2.统计英语文章单词数"
\t\t3.结束"
voidCramer()
intm=0,n=0,i=0,k=0,j=0,h=0;
doubleQuit=0.0,l=0.0;
double**a=open_up(15,15);
//动态开辟二维数组
double**e=open_up(15,15);
double**T=open_up(15,15);
double**W=open_up(15,15);
//动态开辟二维数组
doubleP[15]={0.0},d[15]={0.0};
\t\t克莱姆法则计算矩阵的值"
输入所求线性方程组的系数矩阵"
;
输入行数m和列数n"
cin>
>
m>
n;
输入矩阵"
for(i=0;
i<
m;
i++)
for(j=0;
j<
j++)
a[i][j];
Quit=Price(n,n,(double*)a);
系数矩阵的值为:
Quit<
输入方程组的解矩阵"
cin>
d[i];
j++)
e[i][j]=a[i][j];
for(i=0;
i++)
{
a[i][j]=d[i];
}
P[j]=Price(n,n,(double*)a)/Quit;
//强制类型转换
cout<
x["
j<
]="
P[j]<
for(h=0;
h<
h++)//重置矩阵
a[h][j]=e[h][j];
voidStatis_Words()
charch='
\0'
intcount=0,word=0;
输入一片英语文章以零结尾\n"
while((ch=cin.get())!
='
0'
)
if((ch>
=0&
&
ch<
=64)||(ch>
=91&
=96)||(ch>
122&
127))//判断是否为
word=0;
else
if(0==word)
{
word=1;
count++;
}
文章一共有"
count<
个单词"
doublePrice(introw,intline,double*a)//求矩阵行列式的递归函数
inti=0,j=0,c=0,p=0,q=0;
doublesum=0;
double**ele=open_up(row,line);
if(row==1)
return*a;
row;
i++)//递归法求解行列式的值
for(c=0;
c<
c++)
if(c<
i)
p=0;
else
p=1;
row-1;
ele[c][j]=*(a+row*(c+p)+(j+1));
if(i%2==0)
q=1;
else
q=-1;
sum+=*(a+i*row+0)*q*Price(row-1,row-1,(double*)ele);
returnsum;
double**open_up(introw,intline)//动态开辟二维数组
double**ele=newdouble*[row];
for(inti=0;
i<
i++)
ele[i]=newdouble[line];
returnele;
4.程序运行截图:
(二)、有理数的四则运算。
有理数就是两个整数的比率,通常表示为
,分母
不能为0。
本设计要求设计一个Rational(有理数)类,实现有理数的四则运算,该类型的对象使用起来要像使用基本类型的对象一样自然。
具体要求如下:
1.抽象Ration类,包含两个数据成员(分子、分母),比如有理数
可以用对象
表示为
。
2.如果分子分母有公约数,应该约分,例如
应表示为
根据需要,有时要将
,或者将
重载相应的运算符(输入、输出、加、减、乘、除)。
比如,要计算
,希望像普通加法一样操作,
和
相加得
,算数表达式为
又如,想使用如下形式直接输入分子分母
cin<
r;
//输入
cout>
r;
//输出
则需要重载这两个流运算符。
采用了友元函数实现运算符重载,使用windows命名规则程序规范,可读性强,使用外部接口让程序更安全。
部分函数为类的友元函数,破坏了类的完整性。
intgcd(inta,intb);
classRation
public:
Ration(inta=0,intb=0):
numer(a),denom(b)
voiddecide();
voidtrans();
voidinput();
friendRationoperator-(Rationc1,Rationc2);
friendRationoperator+(Rationc1,Rationc2);
friendRationoperator*(Rationc1,Rationc2);
friendRationoperator/(Rationc1,Rationc2);
friendintgcd(inta,intb);
friendistream&
operator>
(istream&
in,Ration&
c);
friendostream&
operator<
(ostream&
out,Ration&
private:
intnumer;
intdenom;
};
voidRation:
trans()//转变为小数
decide();
doublec=(double)numer/(double)denom;
小数形式为"
c<
decide()//判别是否可以写成分数
if(0==denom)
分母不能为零"
Rationoperator+(Rationc1,Rationc2)
c1.decide();
c2.decide();
Rationc3;
if(c1.denom==c2.denom)
c3.denom=c2.denom;
c3.numer=c1.numer+c2.numer;
c3.denom=c1.denom*c2.denom/gcd(c1.denom,c2.denom);
c3.numer=c1.numer*c3.denom/c1.denom+c2.numer*c3.denom/c2.denom;
returnc3;
Rationoperator-(Rationc1,Rationc2)
c3.numer=c1.numer-c2.numer;
c3.numer=c1.numer*c3.denom/c1.denom-c2.numer*c3.denom/c2.denom;
Rationoperator*(Rationc1,Rationc2)
Rationc3;
c3.denom=c1.denom*c2.denom;
c3.numer=c1.numer*c2.numer;
Rationoperator/(Rationc1,Rationc2)
c3.numer=c1.numer*c2.denom;
c3.denom=c1.denom*c2.numer;
istream&
c)
//c.decide();
输入分子分母\n"
in>
c.numer;
c.denom;
returnin;
ostream&
if(c.numer!
=0)
intGCD=gcd(c.numer,c.denom);
if(GCD<
=1)
out<
c.numer<
/"
c.denom<
c.numer/GCD<
'
/'
c.denom/GCD<
\n'
returnout;
intgcd(inta,intb)//求最小公倍数
intn=b;
intc=a%b;
while(c!
=0)
a=b;
b=c;
c=a%b;
returnb;
RationA;
RationB;
Rationc;
请输入分数A"
A;
请输入分数B"
B;
B="
A="
c=B/A;
c=B/A="
c<
c=B*A;
c=B*A="
c=B+A;
c=B+A="
c=B-A;
c=B-A="
c.trans();
return0;
4.程序截图:
(三)、职工信息表设计。
使用继承的方法,编写最多能输入10个职工的信息表,再根据这个表产生一个职工信息简表,并利用多态性实现信息的输出。
设计要求实现如下功能:
1.建立职工信息数据,包括职工编号、姓名,性别和年龄。
2.根据职工信息表,建立只含姓名和年龄的职工信息简表。
3.使用继承的方法构造2个类,使用相应的对象数组放置10个职工信息。
4.编写同名display()成员函数,用来输出数组的内容。
5.编写函数printer(),用来根据实际对象输出它们的内容。
1.流程图
:
使用windows命名规则程序规范,可读性强,代码精炼,时间复杂度低,空间复杂度低
功能较弱,操作性低。
iomanip>
classEmployee_one
public:
Employee_one(intn,char*nam,chars,inta):
num(n),name(nam),sex(s),age(a){}
virtualvoiddisplay();
intgetnum()
returnnum;
char*getname()
returnname;
chargetsex()
returnsex;
intgetage()
returnage;
private:
intnum;
char*name;
charsex;
intage;
};
classEmployee_two:
publicEmployee_one
Employee_two(intn,char*nam,chars,inta,intw):
Employee_one(n,nam,s,a),wages(w){}
voiddisplay();
intgetwages()
returnwages;
intwages;
voidEmployee_one:
display()
setw(15)<
\nname:
name
<
setiosflags(ios:
right)
age:
age
left)<
sex:
sex<
setw(15)
num:
num;
}
voidEmployee_two:
display()
name:
getname()<
getage()<
/*<
\nwages:
wages*/;
}
voidprinter(Employee_twow2[])
inta=0,i=0;
请输入编号:
cin>
a;
if(a<
=10)
{for(i=0;
10;
if(w2[i].getnum()==a)
w2[i].getname()<
\nage:
w2[i].getage()<
w2[i].getwages()<
\nsex:
w2[i].getsex()<
\nnum:
w2[i].getnum();
编号错误差无此人"
intmain()
Employee_onew1[10]=
Employee_one(1,"
ci"
'
m'
18),Employee_one(2,"
cai"
19),
Employee_one(3,"
xi"
f'
18),Employee_one(4,"
su"
20),
Employee_one(5,"
li"
20),Employee_one(6,"
yan"
Employee_one(7,"
yi"
18),Employee_one(8,"
xiu"
21),
Employee_one(9,"
17),Employee_one(10,"
men"
22)
Employee_twow2[10]=
Employee_two(1,"
18,800),Employee_two(2,"
19,700),
Employee_two(3,"
18,900),Employee_two(4,"
20,750),
Employee_two(5,"
20,860),Employee_two(6,"
19,900),
Employee_two(7,"
18,1000),Employee_two(8,"
21,680),
Employee_two(9,"
17,1500),Employee_two(10,"
22,700)
职工信息数据显示如下:
for(inti=0;
i++)
Employee_one*p=w1+i;
p->
display();
'
\n"
职工信息简表如下:
for(intj=0;
Employee_two*p=w2+j;
实际对象信息为:
printer(w2);
(四).高校人事管理系统:
1、问题描述(功能要求):
某高校,主要人员有:
在职人员(行政人员、教师、双肩挑人员(注:
教师编制,担任领导职务))、退休人员、返聘人员和临时工。
现在,需要存储这些人员的人事档案信息:
编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来校时间。
要求:
1)添加删除功能:
能根据学校人事的变动情况,添加删除记录;
2)查询功能:
能根据编号和姓名进行查询;
3)编辑功能(高级):
根据查询对相应的记录进行修改,并存储;
4)统计功能:
能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数);
5)保存功能:
能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。
6)人员
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动态 数组 无限 内存 人员 管理 系统