链表:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
class Worker //职工基本信息类
{
private:
int id; //职工号
int age;//年龄
int postcode;//邮编
int salary;//工资
string name;//姓名
string sex;//性别
string department;//部门
public:
void setid(int id);
void setage(int age);
void setpostcode(int postcode);
void setsalary(int salary);
void setname(string name);
void setsex(string sex);
void setdepartment(string department);
int getid();
int getage();
int getpostcode();
int getsalary();
string getname();
string getsex();
string getdepartment();
};
//赋值操作
void Worker :: setid(int id)
{
this->id = id;
}
void Worker :: setage(int age)
{
this->age = age;
}
void Worker :: setpostcode(int postcode)
{
this->postcode = postcode;
}
void Worker :: setsalary(int salary)
{
this->salary = salary;
}
void Worker :: setname(string name)
{
this->name = name;
}
void Worker :: setsex(string sex)
{
this->sex = sex;
}
void Worker :: setdepartment(string department)
{
this->department = department;
}
//取值操作
int Worker :: getid()
{
return id;
}
int Worker :: getage()
{
return age;
}
int Worker :: getpostcode()
{
return postcode;
}
int Worker :: getsalary()
{
return salary;
}
string Worker :: getname()
{
return name;
}
string Worker :: getsex()
{
return sex;
}
string Worker :: getdepartment()
{
return department;
}
class WorkerList //职工系统功能实现类
{
private:
Worker worker;
class WorkerList *next; //定义指针域
class WorkerList *head; //定义头结点
public:
void create(); //创建头结点
void add();//职工信息录入
void sal_sort();//职工信息排序(根据月薪排序)
void search();//职工信息查找
void dele();//职工信息删除
void change();//职工信息修改
void save();//职工信息以文件形式保存
void visitworker();//显示职工信息在屏幕上
};
typedef class WorkerList Node;
typedef class WorkerList *w_Node; //定义一个指向WorkerList类的指针
void WorkerList :: create()
{
head = new Node[sizeof(Node)];
if (head == NULL)
{
cout << "初始化失败" << endl;
exit(1);
}
head -> next = NULL;
}
void WorkerList :: add() //增加
{
w_Node w_new = new Node[sizeof(Node)];
if (w_new == NULL)
{
cout << "申请结点失败" << endl;
exit(2);
}
int id; //职工号
int age;//年龄
int postcode;//邮编
int salary;//工资
string name;//姓名
string sex;//性别
string department;//部门
cout <<"请输入职工的职工号 :"<< endl;
cin >> id;
w_new -> worker.setid(id);
cout <<"请输入职工的年龄 :"<< endl;
cin >> age;
w_new -> worker.setage(age);
cout <<"请输入职工的邮编 :"<< endl;
cin >> postcode;
w_new -> worker.setpostcode(postcode);
cout <<"请输入职工的工资 :"<< endl;
cin >> salary;
w_new -> worker.setsalary(salary);
cout <<"请输入职工的姓名 :"<< endl;
cin >> name;
w_new -> worker.setname(name);
cout <<"请输入职工的性别 :"<< endl;
cin >> sex;
w_new -> worker.setsex(sex);
cout <<"请输入职工的部门 :"<< endl;
cin >> department;
w_new -> worker.setdepartment(department);
//使用头插法
if (head -> next == NULL)
{
head -> next = w_new;
w_new -> next = NULL;
}
else
{
w_new -> next = head -> next;
head -> next = w_new;
}
}
void WorkerList :: dele() //删除
{
int w_id;
int flag = 0;
cout << "请输入你要删除的职工id :" << endl;
cin >> w_id; //输入你要删除的职工id;
w_Node temp = head;
while (temp -> next != NULL)
{
//temp -> next -> worker.getid();
if (w_id == temp -> next -> worker.getid())
{
w_Node tmp = temp -> next;
temp -> next = temp -> next -> next;
flag = 1;
delete[] tmp;
}
else
{
temp = temp -> next;
}
}
if (flag == 0)
{
cout << "不存在此职工号,请重新输入id" << endl;
}
}
void WorkerList :: search() //查找
{
//int id; //职工号
//int age;//年龄
//int postcode;//邮编
//int salary;//工资
//string name;//姓名
//string sex;//性别
//string department;//部门
string w_name; //定义要查询的名字
string w_department; //定义要查询的部门
int flag = 0;
int num; //功能选项
cout << "** 1.通过名字查询 **" << endl;
cout << "** 2.通过部门查询 **" << endl;
do
{
cout <<"********************************"<< endl;
cout <<"请输入你的选择: " << endl;
cin >> num;
} while (num < 1 || num > 2 );
w_Node temp = head;
switch(num)
{
case 1:
{
cout << "请输入名字 : " << endl;
cin >> w_name;
while (temp -> next != NULL)
{
if (temp -> next -> worker.getname() == w_name)
{
temp -> next -> worker.getid();
temp -> next -> worker.getage();
temp -> next -> worker.getpostcode();
temp -> next -> worker.getsalary();
temp -> next -> worker.getname();
temp -> next -> worker.getsex();
temp -> next -> worker.getdepartment();
cout <<"职工号\t"<<"年龄\t"<<"邮编\t"<<"工资\t"<<"姓名\t"<<"性别\t"<<"部门"<< endl;
cout <<temp -> next -> worker.getid()<<"\t"<<temp -> next -> worker.getage()<<"\t"<<temp -> next -> worker.getpostcode()<<"\t"<<temp -> next -> worker.getsalary()<<"\t"<<temp -> next -> worker.getname()<<"\t"<<temp -> next -> worker.getsex()<<"\t"<<temp -> next -> worker.getdepartment()<< endl;
flag++;
}
temp = temp -> next;
}
if (flag == 0)
{
cout << "没有此职工名字,请重新输入" << endl;
}
break;
}
case 2:
{
cout << "请输入部门 : " << endl;
cin >> w_department;
while (temp -> next != NULL)
{
if (temp -> next -> worker.getdepartment() == w_department)
{
temp -> next -> worker.getid();
temp -> next -> worker.getage();
temp -> next -> worker.getpostcode();
temp -> next -> worker.getsalary();
temp -> next -> worker.getname();
temp -> next -> worker.getsex();
temp -> next -> worker.getdepartment();
cout <<"职工号\t"<<"年龄\t"<<"邮编\t"<<"工资\t"<<"姓名\t"<<"性别\t"<<"部门"<< endl;
cout <<temp -> next -> worker.getid()<<"\t"<<temp -> next -> worker.getage()<<"\t"<<temp -> next -> worker.getpostcode()<<"\t"<<temp -> next -> worker.getsalary()<<"\t"<<temp -> next -> worker.getname()<<"\t"<<temp -> next -> worker.getsex()<<"\t"<<temp -> next -> worker.getdepartment()<< endl;
flag++;
}
temp = temp -> next;
}
if (flag == 0)
{
cout << "没有此职工部门,请重新输入" << endl;
}
break;
}
}
}
void WorkerList :: change() //根据ID修改职工信息
{
/*int id;*/
int w_id; //职工号
int w_age;//年龄
int w_postcode;//邮编
int w_salary;//工资
string w_name;//姓名
string w_sex;//性别
string w_department;//部门
int num;
int flag = 0;
cout <<"请输入职工号:"<<endl;
cin >> w_id;
w_Node temp = head -> next;
while (temp != NULL)
{
if (temp -> worker.getid() == w_id)
{
flag = 1;
cout <<"--------------------------"<< endl;
cout <<"| 1.修改年龄 |"<< endl;
cout <<"| 2.修改邮编 |"<< endl;
cout <<"| 3.修改工资 |"<< endl;
cout <<"| 4.修改姓名 |"<< endl;
cout &