《C++課程設(shè)計(jì) 教職工信息管理系統(tǒng)源代碼》由會(huì)員分享,可在線閱讀,更多相關(guān)《C++課程設(shè)計(jì) 教職工信息管理系統(tǒng)源代碼(13頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、教職工信息管理系統(tǒng)源碼#include #include #include #include#define maxsize 100 fstream iofile; /文件指針class Time /時(shí)間類 public: int year; int month; int day; class Telem /個(gè)人信息 public: char name20; char sex10; Time birthtime; /組合Time類 char num20; char wage20; Time worktime; int year; char department20; friend istream
2、& 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(); /輸出數(shù)組的內(nèi)容 vi
3、rtual void Displaypart(char p); virtual void Findname(char n); virtual void Findyear(int ); virtual void Del(char n)=0; virtual void Del(int ); protected: Telem datamaxsize; Time now; int length; ; class Teacher:virtual public People /派生虛基類 public: virtual void AddF(); virtual void Addall(); virtual
4、 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() /系統(tǒng)
5、自動(dòng)生成的構(gòu)造函數(shù) length=0; now.year=2010; now.month=7; now.day=6; void People:Display() /引用 int i; for(i=0;ilength;i+) coutdatai; void People:Displaypart(char p)/引用數(shù)組 int i,c; for(i=0;ilength;i+) if(strcmp(datai.wage,p)=0) cout輸出選擇姓名1 性別2 編號(hào)3 工資4 出生日期5 工作時(shí)間6 年齡7 系別8 退出選擇9c) switch(c) case 1: cout姓名:datai.n
6、ameendl;break; case 2: cout性別:datai.sexendl;break; case 3: cout編號(hào):datai.numendl;break; case 4: cout工資:datai.wageendl;break; case 5: cout出生日期:datai.birthtime.year datai.birthtime.month datai.birthtime.day endl;break; case 6: cout工作時(shí)間:datai.worktime.year datai.worktime.month datai.worktime.day endl;br
7、eak; case 7: cout年齡:datai.yearendl;break; case 8: cout系別:datai.departmentendl;break; case 9: goto loop; default:cout操作錯(cuò)誤.endl; loop:; void People:Findname(char n) /引用 int i; for(i=0;ilength;i+) if(strcmp(datai.name,n)=0) /對(duì)象引用 coutdatai; void People:Findyear(int y) int i; for(i=0;ilength;i+) if(data
8、i.year=y) coutdatai; void People:Del(int i) int j; if(ilength) cout不存在第i個(gè)元素; for(j=i;jlength;j+) dataj-1=dataj; length-; void worker:AddF() int flag=0; iofile.open(worker_information.txt,ios:in|ios:binary); /文件的打開與關(guān)閉 while(iofile.seekg(ios:cur) iofile.seekg(length*sizeof(datalength),ios:beg); iofile
9、.read(char*)&datalength,sizeof(datalength); /文件的隨機(jī)訪問 length+; if(length=maxsize) flag=1; goto loop; People:Del(length); cout添加人員信息成功.endl; loop: if(1=flag) cout人員信息儲(chǔ)存空間已滿.datalength; datalength.year=now-datalength.birthtime; iofile.write(char*)&datalength,sizeof(datalength); cout添加人員信息成功.endl; lengt
10、h+; if(length=maxsize) flag=1; goto loop; coutans; while(y=ans|Y=ans); loop: if(1=flag) cout人員信息儲(chǔ)存空間已滿.datalength; datalength.year=now-datalength.birthtime; iofile.write(char*)&datalength,sizeof(datalength); cout添加人員信息成功.endl; length+; loop: if(1=flag) cout人員信息儲(chǔ)存空間已滿.endl; iofile.close(); void worke
11、r:Display() cout 工人信息 endl; if(0=length) cout無.endl; int i; for(i=0;ilength;i+) coutdatai; void worker:Del(char n) int i,j,k; for(i=0;ilength;i+) if(strcmp(datai.name,n)=0) k=i+1;break; if(k1) cout不存在姓名n的人員信息; for(j=k;jlength;j+) dataj-1=dataj; length-; cout刪除人員信息成功.endl; void worker:Del(int i) int
12、j; if(ilength) cout不存在第i個(gè)元素; for(j=i;jlength;j+) dataj-1=dataj; length-; cout刪除成功.endl; void Teacher:AddF() int flag=0; iofile.open(Teacher_information.txt,ios:in|ios:binary); while(iofile.seekg(sizeof(datalength),ios:cur) if(iofile.seekg(length*sizeof(datalength),ios:beg) iofile.read(char*)&datalen
13、gth,sizeof(datalength); else break; length+; if(length=maxsize) flag=1; goto loop; People:Del(length); cout添加人員信息成功.endl; loop: if(1=flag) cout人員信息儲(chǔ)存空間已滿.datalength; datalength.year=now-datalength.birthtime; iofile.write(char*)&datalength,sizeof(datalength); cout添加人員信息成功.endl; length+; if(length=max
14、size) flag=1; goto loop; coutans; while(y=ans|Y=ans); loop: if(1=flag) cout人員信息儲(chǔ)存空間已滿.datalength; datalength.year=now-datalength.birthtime; iofile.write(char*)&datalength,sizeof(datalength); cout添加人員信息成功.endl; length+; loop: if(1=flag) cout人員信息儲(chǔ)存空間已滿.endl; iofile.close(); void Teacher:Display() cout
15、 教師信息 endl; if(0=length) cout無.endl; int i; for(i=0;ilength;i+) coutdatai; void Teacher:Del(char n) int i,j,k; for(i=0;ilength;i+) if(strcmp(datai.name,n)=0) k=i+1;break; if(k1) cout不存在姓名n的人員信息; for(j=k;jlength;j+) dataj-1=dataj; length-; cout刪除人員信息成功.endl; void Teacher:Del(int i) int j; if(ilength)
16、 cout不存在第i個(gè)元素; for(j=i;jlength;j+) dataj-1=dataj; length-; cout刪除成功.(istream& input,Telem& T) int y,m,d; cout請(qǐng)輸入姓名(以*結(jié)尾):endl; input.getline(T.name,20,*); cout請(qǐng)輸入性別(以*結(jié)尾 男或女):endl; input.getline(T.sex,10,*); cout編號(hào)(以*結(jié)尾):endl; input.getline(T.num,20,*); cout工資(以*結(jié)尾):endl; input.getline(T.wage,20,*);
17、 cout請(qǐng)輸入出生日期:ymd; T.birthtime.year=(y=1900&y=1&m=1&d=31)?d:1; cout請(qǐng)輸入系別(以*結(jié)尾):endl; input.getline(T.department,20,*); cout參加工作時(shí)間:ymd; T.worktime.year=(y=1900&y=1&m=1&d=31)?d:1; return input; ostream& operator(ostream& output,Telem& T) cout姓名:; outputT.nameendl; cout性別:; outputT.sexendl; cout編號(hào):; out
18、putT.numendl; cout工資:; outputT.wageendl; cout出生日期:; outputT.birthtime.year T.birthtime.month T.birthtime.dayendl; cout系別:; outputT. departmentendl; cout參加工作時(shí)間:; outputT.worktime.year T.worktime.month T.worktime.dayendl; cout年齡:; outputT.yearendl; return output; int operator-(Time & t1,Time & t2) ret
19、urn t1.year-t2.year; void Showmenu() coutendl; cout 歡 迎 進(jìn) 入 教 職 工 信 息 管 理 系 統(tǒng)endlendl; cout 2010 年7月7日發(fā)布 版權(quán)所有: swaendlendlendl; cout 人員信息管理系統(tǒng) endlendl; cout 1-從鍵盤錄入全部人員記錄 endlendl; cout 2-增加一位人員記錄 endlendl; cout 3-顯示全部人員記錄 endlendl; cout 4-按系別輸出人員信息(可選) endlendl; cout 5-按姓名或年齡檢索所有信息 endlendl; cout 6
20、-顯示菜單目錄 endlendl; cout 7-結(jié)束程序運(yùn)行 endlendl; cout endl; int main() Teacher tea; worker stu; People *pt=&tea; People *ps=&stu; int c=0,k=0,l=0,i=0; char nam20,part20; Showmenu(); for(;) coutc; switch(c) case 1: cout 錄入全部人員記錄 endl; cout 從鍵盤輸入教師信息 Addall(); cout 從鍵盤輸入工人信息 Addall(); break; case 2: cout 從鍵盤
21、增加一位人員記錄 endl; cout 教師操作請(qǐng)按1 工人操作請(qǐng)按2 k; if(1=k) pt-Add(); else if(2=k) ps-Add(); else cout操作錯(cuò)誤.endl; break; case 3: cout 顯示全部人員記錄 Display(); ps-Display(); break; case 4: cout 按部門輸出人員信息(可選) endl; cout 教師操作請(qǐng)按1 工人操作請(qǐng)按2 k; if(1=k) cout請(qǐng)輸入要輸出人員的系別(以*結(jié)尾):Displaypart(part); else if(2=k) cout請(qǐng)輸入要輸出人員的系別(以*結(jié)尾
22、):Displaypart(part); else cout操作錯(cuò)誤.endl; break; case 5: cout 按姓名或年齡檢索所有信息 endl; cout 按姓名查找1 按年齡查找2 k; if(1=k) cout按姓名查找1 按年齡查找2l; if (1=l) cout請(qǐng)輸入要查找人員的姓名(以*結(jié)尾):Findname(nam); else if(2=l) cout請(qǐng)輸入要查找人的年齡:i; pt-Findyear(i); else cout操作錯(cuò)誤.endl; else if(2=k) cout按姓名查找1 按年齡查找2l; if (1=l) cout請(qǐng)輸入要查找人員的姓名(以*結(jié)尾):Findname(nam); else if(2=l) cout請(qǐng)輸入要查找人的年齡:i; ps-Findyear(i); else cout操作錯(cuò)誤.endl; else cout操作錯(cuò)誤.endl; break; case 6: cout 顯示菜單目錄 endl; Showmenu(); break; case 7: cout 結(jié)束程序運(yùn)行 endl; exit(0); default:cout操作錯(cuò)誤.endl; return 0; 13