c++课程设计

来源:互联网 发布:es文件管理器 知乎 编辑:程序博客网 时间:2024/04/29 20:09
#include <iostream> #include <fstream> #include <string> #include <iomanip> #include <memory.h> #include <stdio.h> #include <conio.h>using namespace std; class employee  {public:int    num; string name; string sex; string birthday; string education;string position;    int    wage; string add;string tel;employee* Next; public:employee* Create(employee* Head); void free(employee* Head); employee* Add(employee* Head); bool Search(employee* Head); int Search_modify(employee* Head); void Display_List(employee* Head); void Display_Node(employee* pNode); employee* Modify(employee* Head); employee* Del(employee* Head); void Save(employee*  Head,fstream& ofile) ;};employee* employee::Create(employee* Head)       //创建一个带头节点的空链表。{ Head=new employee; if(!Head) { cout<<"分配内存失败!"<<endl; return NULL; } Head->num=NULL; Head->name=""; Head->sex=""; Head->birthday=""; Head->education=""; Head->position=""; Head->wage=NULL;Head->add="";Head->tel="";Head->Next=NULL; return Head; } void employee::free(employee* Head)       //释放链表{ employee*  ptr;Head=Head->Next; while(Head!=NULL) { ptr=Head; Head=Head->Next; delete ptr;} } employee* employee::Add(employee *Head)    //尾插法添加数据{ employee   *pNew,*ptr,*pt;char again; string name,sex,birthday,education,position,add,tel;     int num;     int wage; pt=Head;do{ptr=Head->Next;pNew=new employee;  cout<<"请输入职工号:"; cin>>num;while(ptr) { if((ptr->num==num)) { cout<<"该职工号已经存在,请从新输入!";ptr=Head->Next; cin>>num;} else{ pt=ptr;    ptr=ptr->Next; }} cout<<endl<<"请输入职工姓名:"; cin>>name; cout<<endl<<"请输入职工性别:"; cin>>sex; cout<<endl<<"请输入职工出生年份:"; cin>>birthday; cout<<endl<<"请输入职工学历:"; cin>>education; cout<<endl<<"请输入职工职务:"; cin>>position; cout<<endl<<"请输入职工工资:"; cin>>wage; cout<<endl<<"请输入职工住址:"; cin>>add;cout<<endl<<"请输入职工电话:"; cin>>tel;cout<<endl; pNew->num=num; pNew->name=name; pNew->sex=sex; pNew->birthday=birthday; pNew->education=education; pNew->position=position; pNew->wage=wage;pNew->add=add;pNew->tel=tel;//把数据放入pNew pt->Next=pNew;pt=pNew;pt->Next=NULL;cout<<"数据添加成功!是否继续添加?(Y/N)"<<endl; cin>>again; }while(again=='Y'||again=='y'); return Head; } void employee::Display_Node(employee*  pNode)//输出{ cout<<setw(5)<<left<<pNode->num <<setw(5)<<left<<pNode->name <<setw(5)<<left<<pNode->sex<<setw(10)<<left<<pNode->birthday <<setw(10)<<left<<pNode->education<<setw(10)<<left<<pNode->position <<setw(10)<<left<<pNode->wage<<setw(10)<<left<<pNode->add<<setw(10)<<left<<pNode->tel<<endl;} bool employee::Search(employee*  Head)    //查询同时满足“职工号”的职工信息。{employee*  ptr; int num; string name; ptr=Head->Next; cout<<"请输入职工号:"; cin>>num;  cout<<endl<<"----------------查询结果------------------"<<endl; while(ptr) { if(ptr->num==num) { Display_Node(ptr); return true; } ptr=ptr->Next; } cout<<"无此职工的信息。"<<endl; return false; } void employee::Display_List(employee*  Head) { employee*  ptr; ptr=Head->Next; cout<<"==================所有职工信息=================="<<endl; while(ptr) { Display_Node(ptr); ptr=ptr->Next; } } int employee::Search_modify(employee* Head) {int num;employee*  ptr; employee*  nowptr; cout<<"请输入要修改的职工号:";cin>>num;ptr= Head;nowptr = Head->Next;while(nowptr){if(nowptr->num==num){ptr->Next = nowptr->Next;delete nowptr;return 1;}ptr = nowptr;nowptr = nowptr->Next;}cout<<"没有你要修改的信息";return 0;} employee* employee::Modify(employee*  Head)// 修改单一个节点{ employee  *ptr,*p,*p1; p=new employee; int n;n=Search_modify(Head);string name,sex,birthday,education,position,add,tel;     int num;     int wage; p1=Head;if(n) { cout<<"-------你现在可以修改此职工的信息了-------"<<endl; cout<<"请输入职工号:"; cin>>num; ptr=Head->Next;while(ptr) { if((ptr->num==num)) { cout<<"该职工号已经存在,请从新输入!";ptr=Head->Next; cin>>num;} else{p1=ptr;ptr=ptr->Next; }} cout<<endl<<"请输入职工姓名:"; cin>>name; cout<<endl<<"请输入职工性别:"; cin>>sex; cout<<endl<<"请输入职工出生年份:"; cin>>birthday; cout<<endl<<"请输入职工学历:"; cin>>education; cout<<endl<<"请输入职工职务:"; cin>>position; cout<<endl<<"请输入职工工资:"; cin>>wage; cout<<endl<<"请输入职工住址:"; cin>>add;cout<<endl<<"请输入职工电话:"; cin>>tel;cout<<endl; p->num=num; p->name=name; p->sex=sex; p->birthday=birthday; p->education=education; p->position=position; p->wage=wage;p->add=add;p->tel=tel; p1->Next=p;p1->Next->Next=NULL;} else{cout<<"没找到此职工的记录,无法修改。"<<endl; }return Head; } employee*  employee::Del(employee*  Head) { int num;employee*  ptr; employee*  nowptr; cout<<"请输入要删除的职工号:";cin>>num;ptr= Head;nowptr = Head->Next;while(nowptr){if(nowptr->num==num){ptr->Next = nowptr->Next;delete nowptr;return Head;}ptr = nowptr;nowptr = nowptr->Next;}return Head; }void employee::Save(employee*  Head,fstream& ofile) { employee*  pNode; pNode=Head->Next; while(pNode) { ofile<<setw(5)<<left<<pNode->num <<setw(5)<<left<<pNode->name <<setw(5)<<left<<pNode->sex<<setw(10)<<left<<pNode->birthday <<setw(10)<<left<<pNode->education<<setw(10)<<left<<pNode->position <<setw(10)<<left<<pNode->wage<<setw(10)<<left<<pNode->add<<setw(10)<<left<<pNode->tel<<endl;pNode=pNode->Next; } cout<<"数据文件保存成功!"<<endl; } int main() { system("color 03A");employee* st = new employee();st=st->Create(st); 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.删除信息               *"<<endl; cout<<"*    4.信息查询  5.信息显示 6.保存信息 0.退出系统   *"<<endl; cout<<"*                                                   *"<<endl;cout<<"*****************************************************"<<endl; cout<<endl<<"请选择相应操作菜单项:"; cin>>menu; if(menu<0||menu>6){ cout<<"请选择正确的菜单选项。"<<endl;  cin>>menu; } system("cls"); switch(menu) { case 0: cout<<"成功退出系统!"<<endl; return 0; case 1: st->Add(st); break; case 2: st->Modify(st); break; case 3: st->Del(st); break; case 4: st->Search(st); break; case 5: st->Display_List(st); break; case 6:st->Save(st,iofile);break;default: cout<<" ~亲!请选择正确的菜单项进行操作!"<<endl; } } st->free(st); iofile.close(); return 0; } 

原创粉丝点击