员工管理加加动态数组加无限内存人员管理系统.docx

上传人:b****7 文档编号:25247997 上传时间:2023-06-06 格式:DOCX 页数:46 大小:188.60KB
下载 相关 举报
员工管理加加动态数组加无限内存人员管理系统.docx_第1页
第1页 / 共46页
员工管理加加动态数组加无限内存人员管理系统.docx_第2页
第2页 / 共46页
员工管理加加动态数组加无限内存人员管理系统.docx_第3页
第3页 / 共46页
员工管理加加动态数组加无限内存人员管理系统.docx_第4页
第4页 / 共46页
员工管理加加动态数组加无限内存人员管理系统.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

员工管理加加动态数组加无限内存人员管理系统.docx

《员工管理加加动态数组加无限内存人员管理系统.docx》由会员分享,可在线阅读,更多相关《员工管理加加动态数组加无限内存人员管理系统.docx(46页珍藏版)》请在冰豆网上搜索。

员工管理加加动态数组加无限内存人员管理系统.docx

员工管理加加动态数组加无限内存人员管理系统

 

 

(员工管理)加加动态数组加无限内存人员管理系统

“信息和计算科学”专业

《C++语言程序设计》课程设计

学号-

指导教师

设计日期2016•春19周〜20周

(壹)、设计菜单选择程序。

菜单是应用程序的界面,通过控制语句改变程序执行的顺序,设计菜单

是程序设计的基础。

本设计分俩步:

第壹步:

设计壹个菜单程序。

1.菜单内容:

程序运行后,给出3个菜单项的内容和输入提示,如

下:

1)利用克莱姆法则求解线性方程组

2)统计壹篇英文文章的单词数

3)退出程序

第二步:

为上述菜单项配上相应的功能。

1.流程图:

•.

(开始丿

2.程序优缺点:

f

选择运算

优点:

采用了动态开辟二维数组,传递不知道大小的二维数组,

程序规范,可读性强。

缺点:

采用递归算法,增加了程序的时间复杂度

3.代码段:

#include

#include

#include

#include

usingnamespacestd;

double**open_up(introw,intline);

doublePrice(introw,intline,double*a);

voidHead();

voidCramer();

voidStatis_Words();

intmain()

{

charch;//选择变量

while

(1)

{

Head();

ch=cin.get();

cout<

switch(ch)

{

case'1':

system("cls");Cramer();break;

case'2':

system("cls");Statis_Words();break;

case'3':

system("cls");cout<<"退出程序"<

system("cls");cout<<"\t\t输入有误"<

}

cin.get();

}

return0;

}

voidHead()

{

cout<<"\t\t菜单选择程序"<

cout<<"\t\t"<

cout<<"\t\t"<

cout<<"\t\t1.克莱姆法则解线性方程组"<

cout<<"\t\t2.统计英语文章单词数"<

cout<<"\t\t3.结束"<

cout<<"\t\t"<

cout<<"\t\t"<

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};

cout<<"\t\t克莱姆法则计算矩阵的值"<

cout<<"输入所求线性方程组的系数矩阵";

cout<<"输入行数m和列数

n"<

cin>>m>>n;

cout<<"输入矩阵"<

for(i=0;i

{

for(j=0;j

{

cin>>a[i][j];

cout<

Quit=Price(n,n,(double*)a);

cout<<"系数矩阵的值为:

"<

for(i=0;i

{

cin>>d[i];

}

for(i=0;i

{

for(j=0;j

{

e[i][j]=a[i][j];

}

}

for(j=0;j

{

for(i=0;i

{

a[i][j]=d[i];

for(i=0;i

P[j]=Price(n,n,(double*)a)/Quit;//强制类型转换

}

cout<<"x["<

for(h=0;h

{

a[h][j]=e[h][j];

}

}

}

voidStatis_Words()

{

charch='\0';

intcount=0,word=0;

cout<<"输入壹片英语文章以零结尾\n"<

while((ch=cin.get())!

='0')

判断是否为

{

if((ch>=0&&ch<=64)||(ch>=91&&ch<=96)||(ch>122&&ch<127))//

{

word=0;

else

if(0==word)

{

word=1;

count++;

}

}

}

cout<<"文章壹共有"<

}

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;

}

for(i=0;i

for(c=0;c

{if(c

{

p=0;

}

else

{

p=1;

}

for(j=0;j

{

j+1));

ele[c][j]=*(a+row*(c+p)+(

}}

if(i%2==0)

{q=1;

}

elseq=-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

{

ele[i]=newdouble[line];

}

returnele;

}

4.程序运行截图:

(二)、有理数的四则运算。

有理数就是俩个整数的比率,通常表示为,分母不能为0。

本设计要求设计壹个Rational(有理数)类,实现有理数的四则运算,该类型的对象使用起来要像使用基本类型的对象壹样自然。

具体要求如下:

1.抽象Ration类,包含俩个数据成员(分子、分母),比如有理数能够

用对象表示为

要将表示为,或者将表示为

重载相应的运算符(输入、输出、加、减、乘、除)。

比如,要计算,希望像普

通加法壹样操作,和相加得,算数表达式为。

又如,想使用如下形式直接输入分子分母

cin«r;

//输入cout»r;

//输出

则需要重载这俩个流运算符

1.流程图:

创建分数

对象

 

执行除法

执行加法

2.程序优缺点:

优点:

采用了友元函数实现运算符重载,使用windows命名规

则程序规范,可读性强,使用外部接口让程序更安全。

缺点:

部分函数为类的友元函数,破坏了类的完整性。

3.代码段:

#include

#include

usingnamespacestd;

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);

friendintgcd(inta,intb);

friendistream&operator>>(istream&in,Ration&c);

friendostream&operator<<(ostream&out,Ration&c);

private:

intnumer;

intdenom;

};

voidRation:

:

trans()//转变为小数

{

decide();

doublec=(double)numer/(double)denom;

cout<<"小数形式为"<

}

voidRation:

:

decide()//判别是否能够写成分数

{

if(0==denom)

{

cout<<"分母不能为零";

exit(0);

}

}

c1.decide();

c2.decide();

Rationc3;

if(c1.denom==c2.denom)

{

c3.denom=c2.denom;

c3.numer=c1.numer+c2.numer;

}

else

{

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)

{

c1.decide();

c2.decide();

Rationc3;

if(c1.denom==c2.denom)

c3.denom=c2.denom;

c3.numer=c1.numer-c2.numer;

}

else

{

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)

{

c1.decide();

c2.decide();

Rationc3;

c3.denom=c1.denom*c2.denom;

c3.numer=c1.numer*c2.numer;

returnc3;

}

c1.decide();

c2.decide();

Rationc3;

c3.numer=c1.numer*c2.denom;

c3.denom=c1.denom*c2.numer;

returnc3;

}

istream&operator>>(istream&in,Ration&c)

{

//c.decide();

cout<<"输入分子分母\n";

in>>c.numer;

cin.get();

in>>c.denom;

returnin;

}

ostream&operator<<(ostream&out,Ration&c)

{

//c.decide();

if(c.numer!

=0)

{

intGCD=gcd(c.numer,c.denom);

if(GCD<=1)

out<

}

else

{

out<

}

}

else

{

out<<'0'<<'\n';

}

returnout;

}

intgcd(inta,intb)//求最小公倍数

{

intn=b;

intc=a%b;

while(c!

=0)

{

a=b;

b=c;

c=a%b;

}

returnb;

}

intmain()

{

RationA;

RationB;

Rationc;

cout<<"请输入分数A"<

cin>>A;

cout<<"请输入分数B"<

cin>>B;

cout<<"B="<

cout<<"A="<

c=B/A;

cout<<"c=B/A="<

c=B*A;

cout<<"c=B*A="<

c=B+A;

cout<<"c=B+A="<

c=B-A;

cout<<"c=B-A="<

c.trans();

return。

;}

4.程序截图:

(三)、职工信息表设计。

使用继承的方法,编写最多能输入10个职工的信息表,再根据这个表产生壹个职工信息简表,且利用多态性实现信息的输出。

设计要求实现如下功能:

1.建立职工信息数据,包括职工编号、姓名,性别和年龄。

2.根据职工信息表,建立只含姓名和年龄的职工信息简表。

3.使用继承的方法构造2个类,使用相应的对象数组放置10个职工信息。

4.编写同名display。

成员函数,用来输出数组的内容。

5.编写函数printer(),用来根据实际对象输出它们的内容。

1.流程图

2.程序优缺点:

优点:

使用windows命名规则程序规范,可读性强,代码精炼,时间复杂度低,空间复杂度低

缺点:

功能较弱,操作性低。

3.代码段:

#include

#include#include

usingnamespacestd;

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

{

public:

Employee_two(intn,char*nam,chars,inta,intw):

Employee_one(n,nam,s,a),wages(w){}

voiddisplay();

intgetwages()

{

returnwages;

}

private:

intwages;

};

voidEmployee_one:

:

display(){

cout<

"<

<

:

right)

<<"age:

"<

<

:

left)<<"sex:

"<

:

left)<<"num:

"<

}

voidEmployee_two:

:

display()

{

cout<<"name:

"<

"<

"<

}

voidprinter(Employee_twow2[])

{

inta=0,i=0;

cout<<"请输入编号:

";

cin>>a;

if(a<=10)

{for(i=0;i<10;i++)

{

if(w2[i].getnum()==a)

cout<<"name:

"<

"<

"

<

"<

"<

}

}

}

else

{

cout<<"编号错误差无此人";

}

}

intmain()

{

Employee_onew1[10]=

{

Employee_one(1,"ci",'m',18),Employee_one(2,"cai",'m',19),

Employee_one(3,"xi",'f',18),Employee_one(4,"su",'m',20),

Employee_one(5,"li",'m',20),Employee_one(6,"yan",'m',19),

Employee_one(7,"yi",'m',18),Employee_one(8,"xiu",'m',21),

Employee_one(9,"su",'m',17),Employee_one(10,"men",'m',22)

};

Employee_twow2[10]=

{

Employee_two(1,"ci",'m',18,800),Employee_two(2,"cai",'m',19,700),

Employee_two(3,"xi",'f',18,900),Employee_two(4,"su",'m',20,750),

Employee_two(5,"li",'m',20,860),Employee_two(6,"yan",'m',19,900),

Employee_two(7,"yi",'m',18,1000),Employee_two(8,"xiu",'m',21,680),

Employee_two(9,"su",'m',17,1500),Employee_two(10,"men",'m',22,700)};

cout<<"职工信息数据显示如下:

";

for(inti=0;i<10;i++)

{

Employee_one*p=w1+i;

p->display();

cout<<'\n';

}

cout<<"\n";

cout<<"职工信息简表如下:

\n";

for(intj=0;j<10;j++)

{

Employee_two*p=w2+j;

p->display();

cout<<"\n";

}

cout<<"实际对象信息为:

\n";

printer(w2);

cout<<"\n";

return0;

}

4.程序截图:

(四).高校人事管理系统:

1、问题描述(功能要求):

某高校,主要人员有:

于职人员(行政人员、教师、双肩挑人员(注:

教师编制,担任领导职务))、退休人员、返聘人员和临时工。

当下,需要存储这些人员的人事档案信息:

编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来校时间。

要求:

1)添加删除功能:

能根据学校人事的变动情况,添加删除记录;

2)查询功能:

能根据编号和姓名进行查询;

3)编辑功能(高级):

根据查询对相应的记录进行修改,且存储;

4)统计功能:

能根据多种参数进行人员的统计(于职人数、党员人数、女工人数、高学历高职称人数);

5)保存功能:

能对输入的数据进行相应的存储,要求重载插入和提取符以完成数

据的保存和打开。

6)人员编号于生成人员信息时同时生成,每输入壹个人员信息,编号顺序加1

2、问题的解决方案:

根据系统功能要求,能够将问题解决分为以下步骤:

1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;

2)分析系统中的各个实体及它们之间的关系包括属性和行为;

3)根据问题描述,设计系统的类层次;

4)完成类层次中各个类的描述(包括属性和方法);

5)完成类中各个成员函数的定义;

6)完成系统的应用模块;

7)功能调试;

完成系统总结方案以及系统使用说明书。

高校人事管理系统包括的功能:

1.流程图

开始

选择函数

2程序优缺点:

优点:

采用动态类数组建立,且设立了数组的有效长度,且且自动增加数组长度,不必使用文件结构,降低了空间复杂度,代码规范可读性性强,封装紧密,安全。

采用了《数据结构》链表的思想

缺点:

界面设计有所欠缺。

部分函数算法仍需加强

3程序代码:

#include

#include

#include

#includevwindows.h>

usingnamespacestd;

#defineSIZE」NTE10//初始类数组的长度

intusedsize=0;〃类数组的有效长度

classPersonnel_Staff〃人员类

{

public:

voidAdd();〃新增教职工信息

voidDisplay();〃显示已有教职工信息

voidEdit();//修改教职工信息

boolSearch(intNum,char*Na);〃查找教职工

voidDelete();//删除教职工信息

voidState();//统计信息

intGetSer_Number()

{

returnSer_Number;

}

intGetAge()

{

returnAge;

}

intGetOff_Time()

{

returnOff_Time;

}

intGetStart_Time()

{

returnStart_Time;

}

char*GetName()

{

returnName;

}

char*GetSex()

returnSex;

}

char*GetJob()

{

returnJob;

}

char*GetTitle_Po()

{

returnTitle_Po;

}

char*GetPol_Status()

{

returnPol_Status;

}

char*GetEdu_Certi()

{

returnEdu_Certi;

}

private:

intSer_Number;//编号

intAge;//年龄

intOff_Time;//任职时间

intStart_Time;//来校时间charName[20];//姓名charSex[20];//性别charJob[20];//职务charTitle_Po[20];//职称charPol_Status[20];//政治面貌charEdu_Certi[20

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1