C++课程设计 教职工信息管理系统源代码.docx
《C++课程设计 教职工信息管理系统源代码.docx》由会员分享,可在线阅读,更多相关《C++课程设计 教职工信息管理系统源代码.docx(21页珍藏版)》请在冰点文库上搜索。
![C++课程设计 教职工信息管理系统源代码.docx](https://file1.bingdoc.com/fileroot1/2023-5/23/e10c6414-ec83-4802-8568-7d92e74e53f5/e10c6414-ec83-4802-8568-7d92e74e53f51.gif)
C++课程设计教职工信息管理系统源代码
教职工信息管理系统源码
#include
#include
#include
#include
#definemaxsize100
fstreamiofile;//文件指针
classTime//时间类
{
public:
intyear;
intmonth;
intday;
};
classTelem//个人信息
{
public:
charname[20];
charsex[10];
Timebirthtime;//组合Time类
charnum[20];
charwage[20];
Timeworktime;
intyear;
chardepartment[20];
friendistream&operator>>(istream&input,Telem&T);
friendostream&operator<<(ostream&output,Telem&T);
friendintoperator-(Time&t1,Time&t2);
};
classPeople:
virtualpublicTelem//雇员类
{
public:
People();
virtualvoidAddF()=0;//添加
virtualvoidAddall()=0;
virtualvoidAdd()=0;
virtualvoidDisplay();//输出数组的内容
virtualvoidDisplaypart(charp[]);
virtualvoidFindname(charn[]);
virtualvoidFindyear(int);
virtualvoidDel(charn[])=0;
virtualvoidDel(int);
protected:
Telemdata[maxsize];
Timenow;
intlength;
};
classTeacher:
virtualpublicPeople//派生虚基类
{
public:
virtualvoidAddF();
virtualvoidAddall();
virtualvoidAdd();
virtualvoidDisplay();
virtualvoidDel(inti);
virtualvoidDel(charn[]);
};
classworker:
virtualpublicPeople//派生虚基类
{
public:
virtualvoidAddF();
virtualvoidAddall();
virtualvoidAdd();
virtualvoidDisplay();
virtualvoidDel(inti);
virtualvoidDel(charn[]);
};
People:
:
People()//系统自动生成的构造函数
{
length=0;
now.year=2010;
now.month=7;
now.day=6;
}
voidPeople:
:
Display()//引用
{
inti;
for(i=0;icout<}
voidPeople:
:
Displaypart(charp[])//引用数组
{
inti,c;
for(i=0;iif(strcmp(data[i].wage,p)==0)
{
cout<<"输出选择姓名1性别2编号3工资4出生日期5工作时间6年龄7系别8退出选择9"<while(cin>>c)
{
switch(c)
{case1:
cout<<"姓名:
"<case2:
cout<<"性别:
"<case3:
cout<<"编号:
"<case4:
cout<<"工资:
"<case5:
cout<<"出生日期:
"<case6:
cout<<"工作时间:
"<case7:
cout<<"年龄:
"<case8:
cout<<"系别:
"<case9:
gotoloop;
default:
cout<<"操作错误......"<}
}
loop:
;
}
}
voidPeople:
:
Findname(charn[])//引用
{
inti;
for(i=0;iif(strcmp(data[i].name,n)==0)//对象引用
cout<}
voidPeople:
:
Findyear(inty)
{
inti;
for(i=0;iif(data[i].year==y)
cout<}
voidPeople:
:
Del(inti)
{
intj;
if(i<1||i>length)
cout<<"不存在第"<
for(j=i;jdata[j-1]=data[j];
length--;
}
voidworker:
:
AddF()
{
intflag=0;
iofile.open("worker_information.txt",ios:
:
in|ios:
:
binary);//文件的打开与关闭
while(iofile.seekg(ios:
:
cur))
{
iofile.seekg(length*sizeof(data[length]),ios:
:
beg);
iofile.read((char*)&data[length],sizeof(data[length]));//文件的随机访问
length++;
if(length==maxsize)
{
flag=1;
gotoloop;
}
}
People:
:
Del(length);
cout<<"添加人员信息成功......"<loop:
if(1==flag)
cout<<"人员信息储存空间已满......"<iofile.close();
}
voidworker:
:
Addall()
{
charans;
intflag=0;
iofile.open("worker_information.txt",ios:
:
out|ios:
:
binary);
do
{
cin>>data[length];
data[length].year=now-data[length].birthtime;
iofile.write((char*)&data[length],sizeof(data[length]));
cout<<"添加人员信息成功......"<length++;
if(length==maxsize)
{
flag=1;
gotoloop;
}
cout<<"contine(Y|N)?
";
cin>>ans;
}while('y'==ans||'Y'==ans);
loop:
if(1==flag)
cout<<"人员信息储存空间已满......"<iofile.close();
}
voidworker:
:
Add()
{
intflag=0;
iofile.open("worker_information.txt",ios:
:
app|ios:
:
out|ios:
:
binary);
if(length==maxsize)
{
flag=1;
gotoloop;
}
cin>>data[length];
data[length].year=now-data[length].birthtime;
iofile.write((char*)&data[length],sizeof(data[length]));
cout<<"添加人员信息成功......"<length++;
loop:
if(1==flag)
cout<<"人员信息储存空间已满......"<iofile.close();
}
voidworker:
:
Display()
{
cout<<"★☆★☆★☆★☆★☆工人信息★☆★☆★☆★☆★☆"<if(0==length)
cout<<"无......"<inti;
for(i=0;icout<}
voidworker:
:
Del(charn[])
{
inti,j,k;
for(i=0;iif(strcmp(data[i].name,n)==0)
{
k=i+1;break;
}
if(k<1)
cout<<"不存在姓名"<for(j=k;jdata[j-1]=data[j];
length--;
cout<<"删除人员信息成功......"<}
voidworker:
:
Del(inti)
{
intj;
if(i<1||i>length)
cout<<"不存在第"<
for(j=i;jdata[j-1]=data[j];
length--;
cout<<"删除成功......"<}
voidTeacher:
:
AddF()
{
intflag=0;
iofile.open("Teacher_information.txt",ios:
:
in|ios:
:
binary);
while(iofile.seekg(sizeof(data[length]),ios:
:
cur))
{
if(iofile.seekg(length*sizeof(data[length]),ios:
:
beg))
iofile.read((char*)&data[length],sizeof(data[length]));
else
break;
length++;
if(length==maxsize)
{
flag=1;
gotoloop;
}
}
People:
:
Del(length);
cout<<"添加人员信息成功......"<loop:
if(1==flag)
cout<<"人员信息储存空间已满......"<iofile.close();
}
voidTeacher:
:
Addall()
{
charans;
intflag=0;
iofile.open("Teacher_information.txt",ios:
:
in|ios:
:
out|ios:
:
binary);
do
{
cin>>data[length];
data[length].year=now-data[length].birthtime;
iofile.write((char*)&data[length],sizeof(data[length]));
cout<<"添加人员信息成功......"<length++;
if(length==maxsize)
{
flag=1;
gotoloop;
}
cout<<"contine(Y|N)?
";
cin>>ans;
}while('y'==ans||'Y'==ans);
loop:
if(1==flag)
cout<<"人员信息储存空间已满......"<iofile.close();
}
voidTeacher:
:
Add()
{
intflag=0;
iofile.open("Teacher_information.txt",ios:
:
app|ios:
:
out|ios:
:
binary);
if(length==maxsize)
{
flag=1;
gotoloop;
}
cin>>data[length];
data[length].year=now-data[length].birthtime;
iofile.write((char*)&data[length],sizeof(data[length]));
cout<<"添加人员信息成功......"<length++;
loop:
if(1==flag)
cout<<"人员信息储存空间已满......"<iofile.close();
}
voidTeacher:
:
Display()
{
cout<<"★☆★☆★☆★☆★☆教师信息★☆★☆★☆★☆★☆"<if(0==length)
cout<<"无......"<inti;
for(i=0;icout<}
voidTeacher:
:
Del(charn[])
{
inti,j,k;
for(i=0;iif(strcmp(data[i].name,n)==0)
{
k=i+1;break;
}
if(k<1)cout<<"不存在姓名"<for(j=k;jdata[j-1]=data[j];
length--;
cout<<"删除人员信息成功......"<}
voidTeacher:
:
Del(inti)
{
intj;
if(i<1||i>length)
cout<<"不存在第"<
for(j=i;jdata[j-1]=data[j];
length--;
cout<<"删除成功......"<}
istream&operator>>(istream&input,Telem&T)
{
inty,m,d;
cout<<"请输入姓名(以*结尾):
"<input.getline(T.name,20,'*');
cout<<"请输入性别(以*结尾男或女):
"<input.getline(T.sex,10,'*');
cout<<"编号(以*结尾):
"<input.getline(T.num,20,'*');
cout<<"工资(以*结尾):
"<input.getline(T.wage,20,'*');
cout<<"请输入出生日期:
"<input>>y>>m>>d;
T.birthtime.year=(y>=1900&&y<=2100)?
y:
1900;
T.birthtime.month=(m>=1&&m<=12)?
m:
1;
T.birthtime.day=(d>=1&&d<=31)?
d:
1;
cout<<"请输入系别(以*结尾):
"<input.getline(T.department,20,'*');
cout<<"参加工作时间:
"<input>>y>>m>>d;
T.worktime.year=(y>=1900&&y<=2100)?
y:
1900;
T.worktime.month=(m>=1&&m<=12)?
m:
1;
T.worktime.day=(d>=1&&d<=31)?
d:
1;
returninput;
}
ostream&operator<<(ostream&output,Telem&T)
{
cout<<"姓名:
";
output<cout<<"性别:
";
output<cout<<"编号:
";
output<cout<<"工资:
";
output<cout<<"出生日期:
";
output<cout<<"系别:
";
output<cout<<"参加工作时间:
";
output<cout<<"年龄:
";
output<returnoutput;
}
intoperator-(Time&t1,Time&t2)
{
returnt1.year-t2.year;
}
voidShowmenu()
{
cout<cout<<"欢迎进入教职工信息管理系统"<cout<<"2010年7月7日发布"<<"版权所有:
swa"<cout<<"★☆★☆★☆★☆★人员信息管理系统★☆★☆★☆★☆★"<cout<<"★1-从键盘录入全部人员记录☆"<cout<<"☆2-增加一位人员记录★"<cout<<"★3-显示全部人员记录☆"<cout<<"☆4-按系别输出人员信息(可选)★"<cout<<"★5-按姓名或年龄检索所有信息☆"<cout<<"☆6-显示菜单目录★"<cout<<"★7-结束程序运行☆"<cout<<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆"<}
intmain()
{
Teachertea;
workerstu;
People*pt=&tea;
People*ps=&stu;
intc=0,k=0,l=0,i=0;
charnam[20],part[20];
Showmenu();
for(;;)
{
cout<<"请根据菜单执行相应操作:
";
cin>>c;
switch(c)
{
case1:
{
cout<<"★☆★☆★☆★录入全部人员记录★☆★☆★☆★"<cout<<"★☆★☆★从键盘输入教师信息☆★☆★☆"<pt->Addall();
cout<<"★☆★☆★☆★☆★☆从键盘输入工人信息★☆★☆★☆★☆★☆"<ps->Addall();
break;
}
case2:
{
cout<<"★☆★☆★☆★☆从键盘增加一位人员记录★☆★☆★☆★☆"<cout<<"★☆★☆★☆★☆教师操作请按1工人操作请按2★☆★☆★☆★☆"<cin>>k;
if(1==k)
pt->Add();
elseif(2==k)
ps->Add();
else
cout<<"操作错误..."<break;
}
case3:
{
cout<<"★☆★☆★☆★☆★☆显示全部人员记录★☆★☆★☆★☆★☆"<pt->Display();
ps->Display();
break;
}
case4:
{
cout<<"★☆★☆★☆★☆★☆按部门输出人员信息(可选)★☆★☆★☆★☆★☆"<cout<<"