#include<iostream>
#include<string>
#include <iomanip>
#include<fstream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
//声明函数
struct Employee
{
//声明职工的结构作为列表节点
string m_Code; //职工编号
string m_Name; //职工姓名
unsigned short int m_Year; //职工出生年月
string m_Sex; //职工性别
string m_Post; //职工职称
string m_Department; //职工部门
unsigned int m_Wage; //职工工资
int data;
//链表节点的指针域
struct Employee* Next;
}node;
typedef struct Employee Node; //链表节点
typedef Node *Link; //链表指针域
//------函数声明-------
Link Add(Link Head); //添加职工
Link Del(Link Head); //删除职工
Link Modify(Link Head); //修改职工
Link Search_front(Link Head); //查找职工
void Display_One(Link Head); //显示一个职工信息
void Display_List(Link Head); //显示全部职工信息
void Save_ByFile(Link Head,fstream &ofile); //保存职工信息
Link Sort_ByWage(Link Head); //按照工资排序
Link Create(Link Head); //创建一个链表
void Release(Link Head); //释放链表
sortList(Link Head);
//----------函数实现---------
Link Add(Link Head)
{
//前插法添加数据
Link ptr;
ptr = Head;
Link pNew;
char again;
string code,name,sex,post,department;
unsigned short int year;
unsigned int wage;
do
{
pNew = (Link)new Node;
cout<<"请输入职工代码:";
cin >> code;
cout<<endl<<"请输入职工姓名:";
cin >> name;
cout<<endl<<"请输入职工出生年月:";
cin >> year;
while(cin.fail())
{
cout<<"请输入正确的年份格式"<<endl;
cin.clear();
fflush(stdin);
cin >> year;
}
cout<<"请输入职工性别:";
cin >> sex;
cout<<endl<<"请输入职工职称:";
cin >> post;
cout<<endl<<"请输入职工部门:";
cin >> department;
cout<<endl<<"请输入职工工资:";
cin >> wage;
while(cin.fail())
{
cout<<"请输入正确的工资格式"<<endl;
cin.clear();
fflush(stdin);
cin >> wage;
}
cout<<endl;
pNew->m_Code = code;
pNew->m_Name = name;
pNew->m_Year = year;
pNew->m_Sex = sex;
pNew->m_Post = post;
pNew->m_Department = department;
pNew->m_Wage = wage;
pNew->Next = ptr->Next;
ptr->Next = pNew;
ptr = pNew;
cout<<"是否继续添加:Y/N";
cin >> again;
}while(again == 'Y' || again == 'y');
return Head;
}
Link Del(Link Head) //删除职工
{
Link ptr;
char Flag;
Link ptr_front;
ptr_front = Search_front(Head);//获取删除节点的前驱指针
ptr = ptr_front->Next;
if(ptr)
{
cout<<"是否确认该职工离职?(Y/N)";
cin>>Flag;
if(Flag == 'Y' || Flag == 'y')
{
ptr_front->Next = ptr ->Next;
delete ptr;
}
}
else
{
cout<<"没有找到此职工的记录,无法删除。"<<endl;
}
return Head;
}
Link Modify(Link Head) //修改职工
{
Link ptr;
ptr = Search_front(Head);
string code,name,sex,post,department;
unsigned short int year;
unsigned int wage;
if(ptr->Next)
{
cout<<"-------现在可以修改此职工的信息了--------------"<<endl;
cout<<"请输入职工代码:";
cin >> code;
cout<<endl<<"请输入职工姓名:";
cin >> name;
cout<<endl<<"请输入职工出生年月:";
cin >> year;
while(cin.fail())
{
cout<<"请输入正确的年份格式"<<endl;
cin.clear();
fflush(stdin);
cin >> year;
}
cout<<"请输入职工姓名:";
cin >> sex;
cout<<endl<<"请输入职工职称:";
cin >> post;
cout<<endl<<"请输入职工部门:";
cin >> department;
cout<<endl<<"请输入职工工资:";
cin >> wage;
while(cin.fail())
{
cout<<"请输入正确的工资格式"<<endl;
cin.clear();
fflush(stdin);
cin >> wage;
}
cout<<endl;
ptr->Next->m_Code = code;
ptr->Next->m_Name = name;
ptr->Next->m_Year = year;
ptr->Next->m_Sex = sex;
ptr->Next->m_Post = post;
ptr->Next->m_Department = department;
ptr->Next->m_Wage = wage;
cout<<"----------------修改成功----------------"<<endl;
}
else
{
cout<<"没有找到此职工的记录,无法修改。"<<endl;
}
return Head;
}
Link Search_front(Link Head) //查找职工
{
//查询满足职工姓名的职工信息(职工姓名目前只能唯一不能重复)
Link ptr;
Link front;
string name;
front = Head;
ptr = Head->Next;
cout<<"请输入职工姓名:";
cin >> name;
while(ptr != NULL)
{
if(ptr->m_Name == name)
{
//输出一行查询信息
Display_One(ptr);
return front;
}
ptr = ptr->Next;
front = front->Next;
}
cout<<"search while end"<<endl;
Display_One(ptr);
return front;
}
void Display_One(Link Head) //显示一个职工信息
{
Link ptr;
ptr = Head;
cout <<"------------------------查询结果-------------------------------"<<endl;
cout<<setw(10)<<left<<"职工编号"
<<setw(10)<<left<<"职工姓名"
<<setw(10)<<left<<"出生年月"
<<setw(10)<<left<<"职工性别"
<<setw(10)<<left<<"职工职称"
<<setw(10)<<left<<"职工部门"
<<setw(10)<<left<<"职工工资"<<endl;
cout<<setw(10)<<left<<ptr->m_Code
<<setw(10)<<left<<ptr->m_Name
<<setw(10)<<left<<ptr->m_Year
<<setw(10)<<left<<ptr->m_Sex
<<setw(10)<<left<<ptr->m_Post
<<setw(10)<<left<<ptr->m_Department
<<setw(10)<<left<<ptr->m_Wage<<endl;
}
void Display_List(Link Head) //显示全部职工信息
{
Link ptr;
ptr = Head->Next;
cout <<"------------------------查询结果-------------------------------"<<endl;
cout<<setw(10)<<left<<"职工编号"
<<setw(10)<<left<<"职工姓名"
<<setw(10)<<left<<"出生年月"
<<setw(10)<<left<<"职工性别"
<<setw(10)<<left<<"职工职称"
<<setw(10)<<left<<"职工部门"
<<setw(10)<<left<<"职工工资"<<endl;
while(ptr)
{
cout<<setw(10)<<left<<ptr->m_Code
<<setw(10)<<left<<ptr->m_Name
<<setw(10)<<left<<ptr->m_Year
<<setw(10)<<left<<ptr->m_Sex
<<setw(10)<<left<<ptr->m_Post
<<setw(10)<<left<<ptr->m_Department
<<setw(10)<<left<<ptr->m_Wage<<endl;
ptr = ptr->Next;
}
}
void Save_ByFile(Link Head,fstream &ofile) //保存职工信息
{
Link pNode;
pNode = Head->Next;
ofile.clear();
while(pNode)
{
ofile<<setw(10)<<left<<pNode->m_Code
<<setw(10)<<left<<pNode->m_Name
<<setw(10)<<left<<pNode->m_Year
<<setw(10)<<left<<pNode->m_Sex
<<setw(10)<<left<<pNode->m_Post
<<setw(10)<<left<<pNode->m_Department
<<setw(10)<<left<<pNode->m_Wage<<endl;
pNode = pNode->Next;
}
cout<<"数据文件保存成功!"<<endl;
}
Link Create(Link Head) //创建一个链表
{
Head = (Link)new Node;
if(!Head)
{
cout<<"分配内存失败!"<<endl;
return NULL;
}
Head->m_Code="";
Head->m_Name="";
Head->m_Year=0;
Head->m_Sex = "";
Head->m_Post="";
Head->m_Department="";
Head->m_Wage=0;
Head->Next=NULL;
return Head;
}
void Release(Link Head) //释放链表
{
Link ptr;
while(Head != NULL)
{
ptr = Head;
Head = Head->Next;
delete ptr;
}
}
int main(int argc[],char *argv[])
{
Link Head = 0;
Head = Create(Head);
fstream iofile;
iofile.open("e:\\salary.txt");
if(!iofile)
{
cout<<"文件打开失败!"<<endl;
system("pause");
return -1;
}
int menu;
while(1)
{
cout<<"****************************************************"<<endl;
cout<<"*=================菜单选项==========================*"<<endl;
cout<<"*===================================================*"<<endl;
cout<<"*1.注册职工 2.修改信息 3.删除信息 4.信息查询 *"<<endl;
cout<<"*5.保存文件 6.工资排行 7.信息显示 0.退出系统 *"<<endl;
cout<<endl<<"请选择相应的操作菜单项:";
cin>>menu;
while(cin.fail())
{
cout<<"请选择正确的菜单选项。"<<endl;
cin.clear();
fflush(stdin);
cin>>menu;
}
switch(menu)
{
case 0:
cout<<"成功退出系统!"<<endl;
return 0;
case 1:
Head = Add(Head);
break;
case 2:
Head = Modify(Head);
break;
case 3:
Head = Del(Head);
break;
case 4:
Search_front(Head);
break;
case 5:
Save_ByFile(Head,iofile);
break;
case 6:
//就是这里
break;
case 7:
Display_List(Head);
break;
default:
cout<<"请选择正确的菜单选项进行操作,多谢合作!"<<endl;
}
}
Release(Head);
iofile.close();
system("pause");
return 0;
}
就是这个里面的case6 工资排序 谢谢各位大神啦~
#include<string>
#include <iomanip>
#include<fstream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
//声明函数
struct Employee
{
//声明职工的结构作为列表节点
string m_Code; //职工编号
string m_Name; //职工姓名
unsigned short int m_Year; //职工出生年月
string m_Sex; //职工性别
string m_Post; //职工职称
string m_Department; //职工部门
unsigned int m_Wage; //职工工资
int data;
//链表节点的指针域
struct Employee* Next;
}node;
typedef struct Employee Node; //链表节点
typedef Node *Link; //链表指针域
//------函数声明-------
Link Add(Link Head); //添加职工
Link Del(Link Head); //删除职工
Link Modify(Link Head); //修改职工
Link Search_front(Link Head); //查找职工
void Display_One(Link Head); //显示一个职工信息
void Display_List(Link Head); //显示全部职工信息
void Save_ByFile(Link Head,fstream &ofile); //保存职工信息
Link Sort_ByWage(Link Head); //按照工资排序
Link Create(Link Head); //创建一个链表
void Release(Link Head); //释放链表
sortList(Link Head);
//----------函数实现---------
Link Add(Link Head)
{
//前插法添加数据
Link ptr;
ptr = Head;
Link pNew;
char again;
string code,name,sex,post,department;
unsigned short int year;
unsigned int wage;
do
{
pNew = (Link)new Node;
cout<<"请输入职工代码:";
cin >> code;
cout<<endl<<"请输入职工姓名:";
cin >> name;
cout<<endl<<"请输入职工出生年月:";
cin >> year;
while(cin.fail())
{
cout<<"请输入正确的年份格式"<<endl;
cin.clear();
fflush(stdin);
cin >> year;
}
cout<<"请输入职工性别:";
cin >> sex;
cout<<endl<<"请输入职工职称:";
cin >> post;
cout<<endl<<"请输入职工部门:";
cin >> department;
cout<<endl<<"请输入职工工资:";
cin >> wage;
while(cin.fail())
{
cout<<"请输入正确的工资格式"<<endl;
cin.clear();
fflush(stdin);
cin >> wage;
}
cout<<endl;
pNew->m_Code = code;
pNew->m_Name = name;
pNew->m_Year = year;
pNew->m_Sex = sex;
pNew->m_Post = post;
pNew->m_Department = department;
pNew->m_Wage = wage;
pNew->Next = ptr->Next;
ptr->Next = pNew;
ptr = pNew;
cout<<"是否继续添加:Y/N";
cin >> again;
}while(again == 'Y' || again == 'y');
return Head;
}
Link Del(Link Head) //删除职工
{
Link ptr;
char Flag;
Link ptr_front;
ptr_front = Search_front(Head);//获取删除节点的前驱指针
ptr = ptr_front->Next;
if(ptr)
{
cout<<"是否确认该职工离职?(Y/N)";
cin>>Flag;
if(Flag == 'Y' || Flag == 'y')
{
ptr_front->Next = ptr ->Next;
delete ptr;
}
}
else
{
cout<<"没有找到此职工的记录,无法删除。"<<endl;
}
return Head;
}
Link Modify(Link Head) //修改职工
{
Link ptr;
ptr = Search_front(Head);
string code,name,sex,post,department;
unsigned short int year;
unsigned int wage;
if(ptr->Next)
{
cout<<"-------现在可以修改此职工的信息了--------------"<<endl;
cout<<"请输入职工代码:";
cin >> code;
cout<<endl<<"请输入职工姓名:";
cin >> name;
cout<<endl<<"请输入职工出生年月:";
cin >> year;
while(cin.fail())
{
cout<<"请输入正确的年份格式"<<endl;
cin.clear();
fflush(stdin);
cin >> year;
}
cout<<"请输入职工姓名:";
cin >> sex;
cout<<endl<<"请输入职工职称:";
cin >> post;
cout<<endl<<"请输入职工部门:";
cin >> department;
cout<<endl<<"请输入职工工资:";
cin >> wage;
while(cin.fail())
{
cout<<"请输入正确的工资格式"<<endl;
cin.clear();
fflush(stdin);
cin >> wage;
}
cout<<endl;
ptr->Next->m_Code = code;
ptr->Next->m_Name = name;
ptr->Next->m_Year = year;
ptr->Next->m_Sex = sex;
ptr->Next->m_Post = post;
ptr->Next->m_Department = department;
ptr->Next->m_Wage = wage;
cout<<"----------------修改成功----------------"<<endl;
}
else
{
cout<<"没有找到此职工的记录,无法修改。"<<endl;
}
return Head;
}
Link Search_front(Link Head) //查找职工
{
//查询满足职工姓名的职工信息(职工姓名目前只能唯一不能重复)
Link ptr;
Link front;
string name;
front = Head;
ptr = Head->Next;
cout<<"请输入职工姓名:";
cin >> name;
while(ptr != NULL)
{
if(ptr->m_Name == name)
{
//输出一行查询信息
Display_One(ptr);
return front;
}
ptr = ptr->Next;
front = front->Next;
}
cout<<"search while end"<<endl;
Display_One(ptr);
return front;
}
void Display_One(Link Head) //显示一个职工信息
{
Link ptr;
ptr = Head;
cout <<"------------------------查询结果-------------------------------"<<endl;
cout<<setw(10)<<left<<"职工编号"
<<setw(10)<<left<<"职工姓名"
<<setw(10)<<left<<"出生年月"
<<setw(10)<<left<<"职工性别"
<<setw(10)<<left<<"职工职称"
<<setw(10)<<left<<"职工部门"
<<setw(10)<<left<<"职工工资"<<endl;
cout<<setw(10)<<left<<ptr->m_Code
<<setw(10)<<left<<ptr->m_Name
<<setw(10)<<left<<ptr->m_Year
<<setw(10)<<left<<ptr->m_Sex
<<setw(10)<<left<<ptr->m_Post
<<setw(10)<<left<<ptr->m_Department
<<setw(10)<<left<<ptr->m_Wage<<endl;
}
void Display_List(Link Head) //显示全部职工信息
{
Link ptr;
ptr = Head->Next;
cout <<"------------------------查询结果-------------------------------"<<endl;
cout<<setw(10)<<left<<"职工编号"
<<setw(10)<<left<<"职工姓名"
<<setw(10)<<left<<"出生年月"
<<setw(10)<<left<<"职工性别"
<<setw(10)<<left<<"职工职称"
<<setw(10)<<left<<"职工部门"
<<setw(10)<<left<<"职工工资"<<endl;
while(ptr)
{
cout<<setw(10)<<left<<ptr->m_Code
<<setw(10)<<left<<ptr->m_Name
<<setw(10)<<left<<ptr->m_Year
<<setw(10)<<left<<ptr->m_Sex
<<setw(10)<<left<<ptr->m_Post
<<setw(10)<<left<<ptr->m_Department
<<setw(10)<<left<<ptr->m_Wage<<endl;
ptr = ptr->Next;
}
}
void Save_ByFile(Link Head,fstream &ofile) //保存职工信息
{
Link pNode;
pNode = Head->Next;
ofile.clear();
while(pNode)
{
ofile<<setw(10)<<left<<pNode->m_Code
<<setw(10)<<left<<pNode->m_Name
<<setw(10)<<left<<pNode->m_Year
<<setw(10)<<left<<pNode->m_Sex
<<setw(10)<<left<<pNode->m_Post
<<setw(10)<<left<<pNode->m_Department
<<setw(10)<<left<<pNode->m_Wage<<endl;
pNode = pNode->Next;
}
cout<<"数据文件保存成功!"<<endl;
}
Link Create(Link Head) //创建一个链表
{
Head = (Link)new Node;
if(!Head)
{
cout<<"分配内存失败!"<<endl;
return NULL;
}
Head->m_Code="";
Head->m_Name="";
Head->m_Year=0;
Head->m_Sex = "";
Head->m_Post="";
Head->m_Department="";
Head->m_Wage=0;
Head->Next=NULL;
return Head;
}
void Release(Link Head) //释放链表
{
Link ptr;
while(Head != NULL)
{
ptr = Head;
Head = Head->Next;
delete ptr;
}
}
int main(int argc[],char *argv[])
{
Link Head = 0;
Head = Create(Head);
fstream iofile;
iofile.open("e:\\salary.txt");
if(!iofile)
{
cout<<"文件打开失败!"<<endl;
system("pause");
return -1;
}
int menu;
while(1)
{
cout<<"****************************************************"<<endl;
cout<<"*=================菜单选项==========================*"<<endl;
cout<<"*===================================================*"<<endl;
cout<<"*1.注册职工 2.修改信息 3.删除信息 4.信息查询 *"<<endl;
cout<<"*5.保存文件 6.工资排行 7.信息显示 0.退出系统 *"<<endl;
cout<<endl<<"请选择相应的操作菜单项:";
cin>>menu;
while(cin.fail())
{
cout<<"请选择正确的菜单选项。"<<endl;
cin.clear();
fflush(stdin);
cin>>menu;
}
switch(menu)
{
case 0:
cout<<"成功退出系统!"<<endl;
return 0;
case 1:
Head = Add(Head);
break;
case 2:
Head = Modify(Head);
break;
case 3:
Head = Del(Head);
break;
case 4:
Search_front(Head);
break;
case 5:
Save_ByFile(Head,iofile);
break;
case 6:
//就是这里
break;
case 7:
Display_List(Head);
break;
default:
cout<<"请选择正确的菜单选项进行操作,多谢合作!"<<endl;
}
}
Release(Head);
iofile.close();
system("pause");
return 0;
}
就是这个里面的case6 工资排序 谢谢各位大神啦~