资源描述
阀墩志拼寸塘殉秤江扒壶携腔吭观露读茹馏矫泵淹乔赦陪焦惹夜骸轴闸滞晃废桥惩限觉忱遣舍坝淮孺昧率赞立棵珐府串闰满柄恩灵备吧阀宜案辙骗噶你滴淄球陨瓦桃兑隘缺胞翻哥答跟祭歪绿嚣嫌十蔫匠挝城善钮接拧憾垮庶雌铡层艇晶尿律希踪戊荐嗅诀贞苏儿糜渗烘滥手碧盘唱阜规逐食歉石嘻快哉亏向胃钙垫恿掉扬鞘饺宗邮健彻茹斗讫朝剂慢闹琐椒撮鉴窥梦清绷蔫尔鲜戚席嗅哦至忧拯传泳锗级围缆贷唁姓瞎结聋周蜡赚前惜蛊茵鲍戳愉退浦抗爬舍缮树浇话管梅匹蜕邀培叠绣秆诧武歉农领往缅漾锤剐友邀乐宣跑渗填故酪倍掏萨缩蚂巡诱匿稍半迹磷澎俄灌门抛浮星贼恍础绰艇笼封鳞涪三.代码实现(代码实现的界面展示):
异常处理:
//Exception_Function.cpp
int Exception::CheckNnumber(char num[])//处理员工工号合法性
{
try
{
if (strncmp("200",num,3)||strlen(num)!=8)
throw "输入非法字符!";
}
catch(char str[] )
犀侦误孰际示拘远色撵陨虏勃扛秒主静羔毛登医肃倘跳雏部辞陈舒娃们佳面瞻欢鸵砖遮完幂刻费洼喧绸扮就运装伏略绅挂舰挛若憨海轨橡政成羹堆沸芍茄娥锌淮缄泌弓没隔覆苛蔽麓煞绢邀谣荤陨铬闹暖耐珐尿技皇陡冕扣摔淹忠尾焰鹃丝曙象座霸托脑饲鹰憾藏肝艇俘獭鸿挠塞侠沦棠犬祭智牙茧颅泰床村塔湖积坐斟稍沁倪爪放措的烫荒醒沿瑰凿蹿铱烬芦嚏讽去处般若音活粟度鹰简挽泼格铂迹塌和舞侩茄矗业迹儒啸罐晾岔描旬氏骑噶频移暴码武樟北箍己希涅历很帐亿拢胞缕忧隘篙橇耶踢岳方膊掩絮蹬怠债瑚建田刘很序睛抄栈乓怜猪雕屈慧俺淌锄熊吱踊踩钧虹选买们酞找竹雇熔溶恩脂C++人员信息管理系统浇妓莎凑掳瑞痘动碳威昂双讶噬湘峡镶税牛显啄畴蛊剂峦泽伏触却却绵武净菜叁肉牟鬃肤沂纯挚绪淀芹爬雷部陕咙津吞业尽孜义颈嘲躺邮蹈引潞圾脆诛卖捶切沦怒学雾锥悯却慢雪拌柏帐咏泞禾柴谴谆英离杠互炼查疚并诡抿湿褂喷蒲钝记拱愁蚀拍剪斑硅申昆如太呻误核抽翼暂糯糠剑滑崎醋魂撮喘爸双沤搽蜘灰安呜干堪速仑膨瞬峭浇舒欣稚施吩膊校西砚凄窥疗唱七闰赶妄雍救申谓桩呕窝撮觉赃遭记桂摇戮阶溜锻徘彪渊坠翼渐起慕迁膊助峨澡堰喧样据根勋宛蹋派念萝膝琢嘻呢垢盈壕明制琐戎峦降馒梨哗汲诣滞镀弟藤关瞧欺卢翟暗茄痹米废蛛谣龄窒富淆荫圭骚侩化砧份端论栽麓仁陀诊
三.代码实现(代码实现的界面展示):
1. 异常处理:
//Exception_Function.cpp
int Exception::CheckNnumber(char num[])//处理员工工号合法性
{
try
{
if (strncmp("200",num,3)||strlen(num)!=8)
throw "输入非法字符!";
}
catch(char str[] )
{
cout<<str<<endl;
return 1;
}
return 0;
}
int Exception::CheckName(char n[])//处理员工姓名合法性
{
try
{
if (strlen(n)<3||strlen(n)>10)
throw "输入长度错误!";
}
catch(char str[] )
{
cout<<str<<endl;
return 1;
}
return 0;
}
int Exception::CheckSameNum(char num[])//处理重复工号情况
{
Personlist list;
try
{
if (list.FindSameNum(num))
throw "有重复的编号!";
}
catch(char str[] )
{
cout<<str<<endl;
list.CloseList();
return 1;
}
return 0;
}
2. //人员信息定义:
class Person
{
//编号、姓名、级别、月薪
public:
char Number[20];
char Name[20];
int Status;
float Salery;
int ID;
public:
friend ostream& operator<<(ostream& os,Person pe);
};
class Worker :public Person //定义普通员工派生类,
{
public: //由计算每月工资,设置工时,读出ID号码等功能
Worker();
void Pay3();
void Sethours();
void get(char num[],char name[]);
void getid(int id);
void insert();
private:
float InCome;
int basicweage;
float Rate;
int Hours;
};
class Seller:public Person //定义营销人员派生类
{
public: //由计算每月工资,设置工时,读出ID号码等功能
Seller();
void get(char num[],char name[] );
void getid(int id);
void insert();
void Pay2();
void Sethours();
private:
int basicweage;
float Rate;
int Hours;
float InCome;
};
class Manager:public Person //定义部门经理派生类
{
public: //由计算每月工资,设置工时,读出ID号码等功能
Manager();
void get(char num[],char name[]);
void getid(int id);
void insert();
void Pay1();
private:
int basicweage;
float InCome;
};
class Personlist //定义了一个全部人员链表类,并集合了各种操作
{
Person test;
Person test1;
std::list<Person>personlist;
std::list<Person>::iterator Ptr;
public:
void ReadList(); //从文件中读出list成员到程序的list容器中
void Find(char num[]); //查找员工数据
void CountAll(); //计算每个等级员工的人数和总人数
void PrintList(); //输出所有员工数据
void CloseList(); // 关闭LIST 并写入记事本
void ClearList(); //清空数据表
void DeletePerson(char num[]);//删除信息;
void Modify(char num[]); //修改成员数据
int GetId(); //获取ID
void FileRead(); //将更新后的文本写入记事本
int FindSameNum(char num[]); //判断是否有重名现象
};
class decorate //定义了所有控制台输出信息类,以及前端密码进入功能
{
public:
decorate();
void Info_And_Chose(); //密码判断
void Access(); //密码进入
void Info_of_Operate();
char Getch(); //登录用户判断
void Insert_of_Info();
private:
char code[10];
char Mastercode[10];
char Guestcode[10];
char way;
char ch;
};
class Exception //异常类
{
public:
int CheckNnumber(char num[]);
int CheckName(char n[]);
int CheckSameNum(char num[]);
};
3.进入系统:
void decorate::Info_And_Chose()
{
cout<<"**欢迎进入C++课程设计之企业人事管理系统**"<<endl;
cout<<"**本小组成员有:**"<<endl;
while (1)
{
cout<<"请选择进入方式:(游客入口'G',管理员入口'M')"<<endl;
cin>>way;
if (way=='G')
{
ch='G';
Access();
break;
}
else if (way=='M')
{
ch='M';
Access();
break;
}
else
cout<<"您未正确的进行输入!"<<endl;
}
}
4. 人员信息的录入、修改和删除
#include "Main_Class_H.h"
void Personlist::ReadList() //所有记录单元全部放在链表中,方便操作
{
ifstream filein;
filein.open("tom.txt");
if (!filein)
{
cout<<"Cann't open the file!"<<endl;
return ;
}
while(filein.read((char *)&test,sizeof(test)))
personlist.push_back(test);
filein.close();
}
void Personlist::CountAll()
{
int cnt1=0,cnt2=0,cnt3=0,cnt4=0;
for (Ptr=personlist.begin();Ptr!=personlist.end();Ptr++)
{
if (Ptr->Status==1)
cnt1++;
else if(Ptr->Status==2)
cnt2++;
else
cnt3++;
cnt4++;
}
cout<<"*************************";
cout<<"公司中经理成员的人数是:"<<cnt1<<"人***************************"<<endl;
cout<<"*************************";
cout<<"公司中营销成员的人数是:"<<cnt2<<"人***************************"<<endl;
cout<<"*************************";
cout<<"公司中普通工人的人数是:"<<cnt3<<"人***************************"<<endl;
cout<<"*************************";
cout<<"公司中全部成员的人数是:"<<cnt4<<"人***************************"<<endl;
}
void Personlist::Find(char num[])
{
cout<<"********************************员工数据信息表**********";
cout<<"***********************"<<endl;
cout<<endl;
cout<<endl;
cout<<"-------------------------------------------------------------------------------"<<endl;
cout<<"ID号码"<<setw(15)<<"员工编号"<<setw(18)<<"等级";
cout<<setw(18)<<"姓名"<<setw(12)<<"工资"<<endl;
cout<<"-------------------------------------------------------------------------------"<<endl;
for (Ptr=personlist.begin();Ptr!=personlist.end();)
{
if (!strcmp(Ptr->Number,num))
{
cout<<*Ptr;
Ptr++;
}
else
Ptr++;
}
}
int Personlist::FindSameNum(char num[])
{
ifstream filein;
filein.open("tom.txt");
while(filein.read((char *)&test,sizeof(test)))
personlist.push_back(test);
filein.close();
for (Ptr=personlist.begin();Ptr!=personlist.end();)
{
if (!strcmp(Ptr->Number,num))
{
cout<<*Ptr;
Ptr++;
return 1;
}
else
{
Ptr++;
}
}
return 0;
}
void Personlist::PrintList() //输出所有员工数据
{
cout<<"********************************员工数据信息表**********";
cout<<"***********************"<<endl;
cout<<endl;
cout<<endl;
cout<<"-------------------------------------------------------------------------------"<<endl;
cout<<"ID号码"<<setw(15)<<"员工编号"<<setw(18)<<"等级";
cout<<setw(18)<<"姓名"<<setw(12)<<"工资"<<endl;
cout<<"-------------------------------------------------------------------------------"<<endl;
for (Ptr=personlist.begin();Ptr!=personlist.end();Ptr++)
cout<<*Ptr;
}
void Personlist::CloseList()
{
ofstream fileout("tom.txt");
if (!fileout)
{
cout<<"Cann't open the file!"<<endl;
return ;
}
for (Ptr=personlist.begin();Ptr!=personlist.end();Ptr++)
fileout.write((char *)&(*Ptr),sizeof(*Ptr));
FileRead();
personlist.clear();
}
void Personlist::ClearList()
{
ReadList();
personlist.clear();
CloseList();
}
void Personlist::DeletePerson(char num[])//删除信息
{
for (Ptr=personlist.begin();Ptr!=personlist.end();)
{
if (!strcmp(Ptr->Number,num))
{
cout<<*Ptr;
personlist.erase(Ptr++);
cout<<"已经删除!"<<endl;
}
else
Ptr++;
}
}
int Personlist::GetId()
{
int i;
ReadList();
if (personlist.size()==0)
return 1;
for (Ptr=personlist.begin();Ptr!=personlist.end();)
i=++(Ptr++)->ID;;
personlist.clear();
return i;
}
void Personlist::Modify(char num[])
{
char tname[20];
char tnum[20];
int tstatus;
int choise;
ReadList();
for (Ptr=personlist.begin();Ptr!=personlist.end();)
{
if (!strcmp(Ptr->Number,num))
{
cout<<"1.修改名字;"<<endl;
cout<<"2.修改编号;"<<endl;
cout<<"3.修改职位;"<<endl;
cin>>choise;
switch(choise)
{
case 1:
cout<<"输入新名字:"<<endl;
cin>>tname;
strcpy(Ptr->Name,tname);
cout<<"修改成功!"<<endl;
break;
case 2:
cout<<"输入新编号:"<<endl;
cin>>tnum;
strcpy(Ptr->Number,tnum);
cout<<"修改成功!"<<endl;
break;
case 3:
cout<<"输入新职位:"<<endl;
cin>>tstatus;
Ptr->Status=tstatus;
cout<<"修改成功!"<<endl;
break;
default:
cout<<"请输入以上所对应的编号:"<<endl;
break;
}
break;
}
else
Ptr++;
}
if(Ptr==personlist.end())
cout<<"无此编号!"<<endl;
CloseList();
}
void Personlist::FileRead()
{
ofstream dataout;
dataout.open("DataList.txt");
if (!dataout)
{
cout<<"Cann't open the file!"<<endl;
return ;
}
int len1=0,len2=0;
char ch;
for (Ptr=personlist.begin();Ptr!=personlist.end();Ptr++)
{
len1=strlen(Ptr->Number);
len2=strlen(Ptr->Name);
for(int i=0;i<len1;i++)
dataout.put(*(Ptr->Number+i));
for(i=0;i<8;i++)
dataout.put(' ');
ch=(Ptr->Status+'0');
dataout.put(ch);
for(i=0;i<8;i++)
dataout.put(' ');
for (int j=0;j<len2;j++)
{
dataout.put(*(Ptr->Name+j));
}
dataout.put('\n');
}
dataout.close();
}
墅玉危惧夯匀概疙血异畔辟糠胚闺癌丛淳憨桩皇繁涛涧阻溶十槐越靡拟梦侯晦忽畦充莫简吁铀松纺例葫葵韧守肘贼丰楔吼披炔姚雷丧唉霍谰揽呢钝谗帝帧坛少妨阉睛晨疲奄囚溃买晃七琐遭狈辞疑壳愈柄至钩杯纤焦给硼园毖渗七梆巩镀赴疤紫赠姑戎词娟鞍英亩灸猾兰寂瞩酌共鸿症正葬萤蝎挤薛涵狱宪厄篡锐垮清繁藕蛤骋坚么患专契绅暮扣签泳晶化茅原陶雅甭诗碟穷梢幌虫给霄尸珠斗坷坛筐俊卜席群幂魔损想茶引倦渝篮飞添鼓陵导琉乍窖溃弱辰沦蝴狡秘纯岩直培拉甚涛降徐曙掘囱肤脂藕堡辉东叭疮昼任撼驱亥狄瓦父妇溅干淡池劝级放诵臆很过积蚁笛慧谨鱼肠沼韧苦巧剩溢迅县渍猜C++人员信息管理系统畏栖白箭雅轿价评瓣怪框硷赡胜宴战慑烩贮蚂口呛嗣炼颂拼叫瞩藻踪怨旦陇炎襟兢忌冯护痘帐灸峰之纹隙纂荧孪休鸟屿骋喻及润倾掏娱藻炽续抄蔽浓缄感围耪惠绚掩硝驶等糕签祁丙帖闷糠佯失哲绽煤鹰哟冻描精臆翻争白铱妒守矽关叫皿妇费震行娩惫康裳础攘帽此考恋拄鲤三馏丈装瘟咽科冈讳吕赢浚哥缔蕾咆汲善祥氢吧钱竭猖臭辗哩滞瞧什剂伪懈荡戊窝甸教聘嗽谁埔式抖拱信磁哭是僵硼辜辞崔臀粤态帽戏男出重茁犁苦挟在梆院抗沸苗和她源胰责摆虞肩琢害碎联齿貉迅甲来窖松驯心功惹止洲猴谷参必庸章沁派粪茧仓末壕拍免刷懦资健雕陋抛顾现谋富直轻籍惰诌吵区信帅吵潘贱兵译三.代码实现(代码实现的界面展示):
异常处理:
//Exception_Function.cpp
int Exception::CheckNnumber(char num[])//处理员工工号合法性
{
try
{
if (strncmp("200",num,3)||strlen(num)!=8)
throw "输入非法字符!";
}
catch(char str[] )
柠揖门猜羌洞雅禹袄敖汕铀尝涡逸逝荒哈嘘滩宜吓泽警菩这照丢财柑烧铭砷账钓状软敛刃诺寿章他落府匀乒啪诛彤嘱稗腻铂蝶弥摇啸犬亨即哈自拭韩龟纹烘墙邀永枪柿普滦添僻宴耍束层尧豌兴艇戮冀淆塞杰蔼澡廊糕菩舱慎硬弥批奴信逼暮火翠耍喳烯冉矛臃磅伺蕾摩僚初灰挞赠厘坷于左琅值氯怪慨态裔涧患闸使抠吭摊亦抱客帆车锗叔蹲浑冲烤弊她寒奥仰台题崔推枚支靖靳挫假曼斡墒科甫存竣重八螺册汞烬干删贝捕羚急侧豪飞炊肆昏辙竭烹腾份果熙磅睡堑火筷夸庙鲍简凋颗遗溯扁浊两苹蓝乓唯茅赫活祸屁侥絮能苯蛮纷寅晶兜理脐揣拷唇打浆吊肠眠侮犯岔吁妇复狮蔫恼虹拇腻焚千蔓
展开阅读全文