搜索
您的当前位置:首页正文

C++课程设计 教职工信息管理系统源代码

来源:哗拓教育
教职工信息管理系统源码

#include #include #include #include

#define maxsize 100 fstream iofile; //文件指针

class Time //时间类 {

public:

int year; int month; int day; };

class Telem //个人信息 {

public:

char name[20]; char sex[10];

Time birthtime; //组合Time类 char num[20]; char wage[20]; Time worktime; int year; char department[20];

friend istream& operator>>(istream& input,Telem& T); friend ostream& operator<<(ostream& output,Telem& T); friend int operator-(Time & t1,Time & t2); };

class People:virtual public Telem //雇员类 {

public:

People();

virtual void AddF()=0; //添加 virtual void Addall()=0; virtual void Add()=0;

virtual void Display(); //输出数组的内容 virtual void Displaypart(char p[]);

1

virtual void Findname(char n[]); virtual void Findyear(int ); virtual void Del(char n[])=0; virtual void Del(int ); protected:

Telem data[maxsize]; Time now; int length; };

class Teacher:virtual public People //派生虚基类 {

public:

virtual void AddF(); virtual void Addall(); virtual void Add(); virtual void Display(); virtual void Del(int i); virtual void Del(char n[]); };

class worker:virtual public People //派生虚基类 {

public:

virtual void AddF(); virtual void Addall(); virtual void Add(); virtual void Display(); virtual void Del(int i); virtual void Del(char n[]); };

People::People() //系统自动生成的构造函数 {

length=0;

now.year=2010; now.month=7; now.day=6; }

void People::Display() //引用 {

int i;

for(i=0;i2

cout<void People::Displaypart(char p[])//引用数组 {

int i,c;

for(i=0;iif(strcmp(data[i].wage,p)==0) {

cout<<\"输出选择姓名1 性别2 编号3 工资4 出生日期5 工作时间6 年龄7 系别8 退出选择9\"<>c) {

switch(c) { case 1: cout<<\"姓名:\"<case 8: cout<<\"系别:\"<default:cout<<\"操作错误......\"<void People::Findname(char n[]) //引用 {

int i;

for(i=0;iif(strcmp(data[i].name,n)==0) //对象引用 cout<void People::Findyear(int y) {

int i;

for(i=0;i3

}

void People::Del(int i) {

int j;

if(i<1||i>length)

cout<<\"不存在第\"<void worker::AddF() {

int flag=0;

iofile.open(\"worker_information.txt\文件的打开与关闭 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; goto loop; } }

People::Del(length);

cout<<\"添加人员信息成功......\"<if(1==flag)

cout<<\"人员信息储存空间已满......\"<void worker::Addall() {

char ans; int flag=0;

iofile.open(\"worker_information.txt\

do {

cin>>data[length];

data[length].year=now-data[length].birthtime;

iofile.write((char*)&data[length],sizeof(data[length])); cout<<\"添加人员信息成功......\"<4

length++;

if(length==maxsize) {

flag=1; goto loop; }

cout<<\"contine(Y|N)?\"; cin>>ans; }while('y'==ans||'Y'==ans); loop:

if(1==flag)

cout<<\"人员信息储存空间已满......\"<void worker::Add() {

int flag=0;

iofile.open(\"worker_information.txt\ if(length==maxsize) {

flag=1; goto loop; }

cin>>data[length];

data[length].year=now-data[length].birthtime;

iofile.write((char*)&data[length],sizeof(data[length])); cout<<\"添加人员信息成功......\"<if(1==flag)

cout<<\"人员信息储存空间已满......\"<void worker::Display() {

cout<<\" ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆工人信息 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆\"<if(0==length) cout<<\"无......\"<for(i=0;i5

void worker::Del(char n[]) {

int i,j,k;

for(i=0;iif(strcmp(data[i].name,n)==0) {

k=i+1;break; }

if(k<1) cout<<\"不存在姓名\"<cout<<\"删除人员信息成功......\"<void worker::Del(int i) {

int j;

if(i<1||i>length)

cout<<\"不存在第\"<cout<<\"删除成功......\"<void Teacher::AddF() {

int flag=0;

iofile.open(\"Teacher_information.txt\ 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; goto loop; } }

People::Del(length);

6

cout<<\"添加人员信息成功......\"<if(1==flag)

cout<<\"人员信息储存空间已满......\"<void Teacher::Addall() {

char ans; int flag=0;

iofile.open(\"Teacher_information.txt\ do {

cin>>data[length];

data[length].year=now-data[length].birthtime;

iofile.write((char*)&data[length],sizeof(data[length])); cout<<\"添加人员信息成功......\"<if(length==maxsize) {

flag=1; goto loop; }

cout<<\"contine(Y|N)?\"; cin>>ans; }while('y'==ans||'Y'==ans); loop:

if(1==flag)

cout<<\"人员信息储存空间已满......\"<void Teacher::Add() {

int flag=0;

iofile.open(\"Teacher_information.txt\ if(length==maxsize) {

flag=1; goto loop; }

cin>>data[length];

data[length].year=now-data[length].birthtime;

iofile.write((char*)&data[length],sizeof(data[length])); cout<<\"添加人员信息成功......\"<7

length++; loop:

if(1==flag)

cout<<\"人员信息储存空间已满......\"<void Teacher::Display() {

cout<<\" ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆教师信息 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆\"<if(0==length) cout<<\"无......\"<for(i=0;ivoid Teacher::Del(char n[]) {

int i,j,k;

for(i=0;iif(strcmp(data[i].name,n)==0) {

k=i+1;break; }

if(k<1) cout<<\"不存在姓名\"<cout<<\"删除人员信息成功......\"<void Teacher::Del(int i) {

int j;

if(i<1||i>length)

cout<<\"不存在第\"<cout<<\"删除成功......\"<istream& operator>>(istream& input,Telem& T) {

int y,m,d;

8

cout<<\"请输入姓名(以*结尾):\"<cout<<\"请输入性别(以*结尾 男或女):\"<cout<<\"编号(以*结尾):\"<cout<<\"工资(以*结尾):\"<cout<<\"请输入出生日期:\"<>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<<\"请输入系别(以*结尾):\"<>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; return input; }

ostream& operator<<(ostream& output,Telem& T) {

cout<<\"姓名:\";

output<output<output<output<output<output<output<int operator-(Time & t1,Time & t2) {

9

return t1.year-t2.year; }

void Showmenu() {

cout<cout<<\" 2010 年7月7日发布\"<<\" 版权所有: swa\"<cout<<\" ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★人员信息管理系统★ ☆ ★ ☆ ★ ☆ ★ ☆ ★\"<cout<<\" ★ 1-从键盘录入全部人员记录 ☆ \"<cout<<\" ☆ 2-增加一位人员记录 ★\"<cout<<\" ★ 7-结束程序运行 ☆ \"<cout<<\" ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆\"<int main() {

Teacher tea; worker stu;

People *pt=&tea; People *ps=&stu; int c=0,k=0,l=0,i=0; char nam[20],part[20]; Showmenu(); for(;;) {

cout<<\"请根据菜单执行相应操作: \"; cin>>c; switch(c) {

case 1: {

cout<<\" ★ ☆ ★ ☆ ★ ☆ ★录入全部人员记录 ★ ☆ ★ ☆ ★ ☆ ★\"<10

cout<<\" ★ ☆ ★ ☆ ★从键盘输入教师信息 ☆ ★ ☆ ★ ☆\"<pt->Addall();

cout<<\" ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆从键盘输入工人信息 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆\"<Addall(); break; } case 2: {

cout<<\" ★ ☆ ★ ☆ ★ ☆ ★ ☆从键盘增加一位人员记录 ★ ☆ ★ ☆ ★ ☆ ★ ☆\"<cout<<\" ★ ☆ ★ ☆ ★ ☆ ★ ☆教师操作请按1 工人操作请按2 ★ ☆ ★ ☆ ★ ☆ ★ ☆\"<>k; if(1==k)

pt->Add(); else if(2==k)

ps->Add(); else

cout<<\"操作错误...\"<cout<<\" ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆显示全部人员记录 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆\"<Display(); ps->Display(); break; } case 4: {

cout<<\" ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆按部门输出人员信息(可选) ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆\"<cout<<\" ★ ☆ ★ ☆ ★ ☆教师操作请按1 工人操作请按2 ★ ☆ ★ ☆ ★ ☆\"<cin>>k; if(1==k) {

cout<<\"请输入要输出人员的系别(以*结尾):\"<pt->Displaypart(part); }

11

else if(2==k) {

cout<<\"请输入要输出人员的系别(以*结尾):\"< ps->Displaypart(part); }

else

cout<<\"操作错误......\"<cout<<\" ★ ☆ ★ ☆ ★ ☆ ★按姓名或年龄检索所有信息 ★ ☆ ★ ☆ ★ ☆ ★\"<cout<<\" ★ ☆ ★ ☆ ★ ☆ ★按姓名查找1 按年龄查找2 ★ ☆ ★ ☆ ★ ☆ ★\"<cin>>k; if(1==k) {

cout<<\"按姓名查找1 按年龄查找2\"<>l; if (1==l) {

cout<<\"请输入要查找人员的姓名(以*结尾):\"< pt->Findname(nam); }

else if(2==l) {

cout<<\"请输入要查找人的年龄:\"<>i;

pt->Findyear(i); }

else

cout<<\"操作错误......\"< else if(2==k) {

cout<<\"按姓名查找1 按年龄查找2\"<>l;

if (1==l) {

cout<<\"请输入要查找人员的姓名(以*结尾):\"< ps->Findname(nam);

12

}

else if(2==l) {

cout<<\"请输入要查找人的年龄:\"<>i; ps->Findyear(i); }

else

cout<<\"操作错误......\"< cout<<\"操作错误......\"<cout<<\" ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆显示菜单目录 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆\"<cout<<\" ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆结束程序运行 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆\"<default:cout<<\"操作错误......\"<return 0; }

13

因篇幅问题不能全部显示,请点此查看更多更全内容

Top