职工信息管理系统实验设计

来源:互联网 发布:迅捷网络 编辑:程序博客网 时间:2024/05/17 07:55
#include <string> #include <iostream> #include <fstream> #include <iomanip> using namespace std; struct Employee           //声明职工的结构作为链表节点。 //数据域{string m_Code; string m_Name; string m_Number; string m_Sex; string m_Schooling; string m_Address; unsigned int m_Wage;                               struct Employee* Next; //链表节点的指针域}; typedef struct Employee Node; //取别名typedef Node* Link; //*函数声明*//Link Create(Link Head); void Release(Link Head); Link Add(Link Head); bool Search(Link Head); Link Search_Unique(Link Head); void Display_List(Link Head); void Display_Node(Link pNode); Link Modify(Link Head); Link Del(Link Head); //*函数实现*//Link Create(Link Head) {                                         Head=(Link)new Node;              //创建一个带头节点的空链表。if(!Head) { cout<<"分配内存失败!"<<endl; return NULL; } Head->m_Code=""; Head->m_Name=""; Head->m_Number=""; Head->m_Sex=""; Head->m_Schooling=""; Head->m_Address=""; 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;                                  //释放节点资源。 } } Link Add(Link Head)          {                                            //前插法添加数据。 Link pNew;                                   // 新节点。 char again; string code,name,sex,schooling,address; string number; unsigned int wage; do { pNew=(Link)new Node; //数据域。 cout<<"请输入职工号:"; cin>>code; cout<<endl<<"请输入职工姓名:"; cin>>name; cout<<endl<<"请输入职工电话号码:";cin>>number; cout<<endl<<"请输入职工性别:"; cin>>sex; cout<<endl<<"请输入职工学历:"; cin>>schooling; cout<<endl<<"请输入职工住址:"; cin>>address; 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_Number=number; pNew->m_Sex=sex; pNew->m_Schooling=schooling; pNew->m_Address=address; pNew->m_Wage=wage; //指针域。 pNew->Next=Head->Next; Head->Next=pNew; cout<<"数据添加成功!是否继续添加?(是/否)"<<endl; cin>>again; }while(again=='是'||again=='否'); return Head; } bool Search(Link Head) {//查询同时满足“姓名”和“职工号”的职工信息。 Link ptr; string code; string name; ptr=Head->Next; cout<<"请输入职工号:"; cin>>code; cout<<endl<<"请输入姓名:"; cin>>name; cout<<endl<<"----------------查询结果------------------"<<endl; while(ptr) { if((ptr->m_Name==name)&&(ptr->m_Code==code)) { Display_Node(ptr);//打印满足条件的节点。 return true; } ptr=ptr->Next;//查询下一节点。 } cout<<"无此职工的信息。"<<endl; return false; } Link Search_Unique_Front(Link Head) {                   //查询满足职工号。 Link ptr; string code; ptr=Head; cout<<"请输入职工号:"; cin>>code; cout<<endl<<"----------------查询结果------------------"<<endl; while(ptr->Next) { if(ptr->Next->m_Code==code) //Display_Node(ptr);//打印满足条件的节点。 return ptr; ptr->Next=ptr->Next->Next;//查询下一节点。 } return ptr; } void Display_List(Link Head) { Link ptr; ptr=Head->Next; cout<<"==================所有职工信息=================="<<endl; while(ptr) { Display_Node(ptr); ptr=ptr->Next; } } void Display_Node(Link pNode) { cout<<setw(10)<<left<<pNode->m_Code <<setw(10)<<left<<pNode->m_Name <<setw(20)<<left<<pNode->m_Number <<setw(10)<<left<<pNode->m_Sex <<setw(10)<<left<<pNode->m_Schooling <<setw(10)<<left<<pNode->m_Address <<setw(10)<<left<<pNode->m_Wage<<endl;//setw(10)表示占10个字符位置。 } Link Modify(Link Head) {// 修改单一个节点。 Link ptr; ptr=Search_Unique_Front(Head); string code,name,sex,schooling,address; string number; unsigned int wage; if(ptr->Next) { cout<<"-------你现在可以修改此职工的信息了-------"<<endl; //数据域。 cout<<"请输入职工号:"; cin>>code; cout<<endl<<"请输入职工姓名:"; cin>>name; cout<<endl<<"请输入职工电话号码:"; cin>>number; cout<<endl<<"请输入职工性别:"; cin>>sex; cout<<endl<<"请输入职工学历:"; cin>>schooling; cout<<endl<<"请输入职工住址:"; cin>>address; 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_Number=number; ptr->Next->m_Sex=sex; ptr->Next->m_Schooling=schooling; ptr->Next->m_Address=address; ptr->Next->m_Wage=wage; } cout<<"修改成功"<<endl; return Head; } Link Del(Link Head) { Link ptr; Link ptr_front; ptr_front=Search_Unique_Front(Head); ptr=ptr_front->Next; if(ptr) { ptr_front->Next=ptr->Next; delete ptr;                   cout<<"删除已成功!!"<<endl; }  return Head; } int main() { Link Head=0; Head=Create(Head); fstream iofile; iofile.open("d:\\iofile.txt",ios_base::in|ios_base::out|ios_base::app);//文件以三种方式打开。 if(!iofile) { cout<<"打开文件失败!"<<endl; return -1; } int menu; while(1) { cout<<"*****************************************************"<<endl; cout<<"*====================菜单选顶=======================*"<<endl; cout<<"*===================================================*"<<endl; cout<<"* 1.注册职工 2.修改信息 3.删除信息 4.查询职工       *"<<endl; cout<<"* 5.信息显示 0.退出系统                             *"<<endl; cout<<"*****************************************************"<<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(Head); break; case 5: Display_List(Head); break; default: cout<<"你的输入有误!"<<endl; } } Release(Head); iofile.close(); return 0; }

0 0
原创粉丝点击