C++工资管理系统.docx
- 文档编号:10312640
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:13
- 大小:16.94KB
C++工资管理系统.docx
《C++工资管理系统.docx》由会员分享,可在线阅读,更多相关《C++工资管理系统.docx(13页珍藏版)》请在冰点文库上搜索。
C++工资管理系统
#include
#include
#include
classCSalary
{
charszname[20];//姓名
doubledlSalary;//工资
public:
CSalary(){strcpy(szname,"\0");dlSalary=0.0;}//默认构造函数
CSalary(char*,double);//构造函数
voidSetSalary(chara[],doubles)
{dlSalary=s;
strcpy(szname,a);
}//工资与姓名输入
char*GetName()
{returnszname;}//返回姓名
doubleGetSal()
{returndlSalary;}//返回工资
intCompare(charname[])
{if(strcmp(name,szname)==0)
return1;
else
return0;
}//比较姓名,供查找用,比较结果1,0
voidShow()
{cout<<"姓名"< voidch(doublea)//初始化工资数据 {dlSalary=a;} }; classCNode//定义结点类 { CSalary*pData;//用于指向数据类的指针,这是每个数据的不同部分 CNode*pNext;//指向链表的指针 public: CNode() { pData=0; pNext=0; }//结点的构造函数 CNode(CNode&node)//用于拷贝的构造函数 { pData=node.pData; pNext=node.pNext; } voidInputData(CSalary*pdata){pData=pdata;pNext=0;}//输入数据 voidShowNode(){pData->Show();}//显示数据 CSalary*GetData(){returnpData;} CNode*Getnext(){returnpNext;}//返回下一个节点 friendclassCList;//定义友元类 }; classCList { protected: CNode*pHead; public: CList(){pHead=0;}//默认构造函数 voidDeleteList();//删除整个链表 ~CList(){DeleteList();}//解析函数 voidDeleteNode(CNode*);//删除一个指定的结点,返回该结点的指针 CNode*LookUp(charname[20]); voidShowList();//输出整个链表 CNode*GetListHead(){returnpHead;}//返回链表首结点 voidInsert(CNode*);//按工资的顺序插入一个结点 CNode*GetLastNode();//返回链表的最后一个结点 }; voidCList: : DeleteList()//删除整个链表 { if(pHead==0)return; CNode*p,*q; p=pHead; while(p) { deletep->pData; q=p; p=p->pNext; deleteq; } pHead=0; } CNode*CList: : LookUp(charname[20]) { if(pHead==0)return0; CNode*p1=pHead; while(p1) { if(p1->pData->Compare(name)==1)returnp1; p1=p1->pNext; } return0; } voidCList: : ShowList()//打印整个链表 { if(! pHead) { cout<<"没有纪录! "< return; } CNode*p=pHead; while(p) {p->ShowNode(); p=p->pNext; } } voidCList: : Insert(CNode*p0)//按工资的顺序插入一个结点 { CNode*p,*q; if(pHead==0) { pHead=p0; pHead->pNext=0; return; } p=pHead; while(p0->pData->GetSal()>p->pData->GetSal()&&p->pNext! =0) {q=p; p=p->pNext; } if(p0->pData->GetSal()<=p->pData->GetSal()) {if(p==pHead) {p0->pNext=pHead; pHead=p0; } else {p0->pNext=p; q->pNext=p0; } } else {p->pNext=p0; p0->pNext=0; } return; } voidCList: : DeleteNode(CNode*pnode)//删除指定的结点 { if(pnode==pHead&&pHead->pNext==0) { deletepHead->pData; deletepHead; pHead=0; } elseif(pnode==pHead) { CNode*p=pnode->pNext; deletepHead->pData; deletepHead; pHead=p; } else { CNode*p=pHead; while(p&&p->pNext! =pnode) p=p->pNext; CNode*q=pnode->pNext; deletepnode->pData; deletepnode; p->pNext=q; } } voidaddrecord(CList&salary)//添加数据 {CNode*p; CSalary*psal; charname[20]; doubles; cout<<"输入姓名(输入0结束): \n"; cin>>name; while(strcmp(name,"0")) {cout<<"请输入工资\n"; cin>>s; psal=newCSalary; psal->SetSalary(name,s); p=newCNode; p->InputData(psal); salary.Insert(p); cout<<"输入姓名(输入0结束): "; cin>>name; } cout< } voidshowrecord(CList&list)// {list.ShowList(); } voidenquirerecord(CList&list)//查询数据 {cout<<"请输入查询姓名\n"; charname[20]; cin>>name; CNode*p=list.LookUp(name); if(p) p->ShowNode(); else cout<<"未找到查询姓名,请重新输入操作\n\n\n"; return; } voiddeleterecord(CList&list)//删除数据 {cout<<"请确认是否执行删除操作,继续Y否则N\n"; charname[20]; chara; cin>>a; if(a=='N'||a=='n')return; else if(a=='Y'||a=='y') {cout<<"请输入查询姓名\n"; cin>>name; CNode*p=list.LookUp(name); if(p) list.DeleteNode(p); else cout<<"未找到查询姓名,请重新输入操作\n\n\n"; return; } else cout<<"操作无效,请重新输入操作\n\n\n"; return; } voidmodifyrecord(CList&list)//修改数据 {cout<<"请确认是否执行修改操作,继续Y否则N\n"; chara; cin>>a; charname[20]; doubledlsalary; if(a=='N'||a=='n')list.GetListHead(); else if(a=='Y'||a=='y') {cout<<"请输入姓名\n"; cin>>name; CNode*p=list.LookUp(name); if(p! =0) {cout<<"请输入修改值\n"; cin>>dlsalary; p->GetData()->ch(dlsalary); } else cout<<"未找到查询姓名,请重新输入操作\n\n"; return; } else cout<<"操作无效,请重新输入操作\n"; return; } voidsave(CList&list)//文件存入 { ofstreamoutfile("data.txt"); charname[20]; doublesalary; CNode*p=list.GetListHead(); while(p) { strcpy(name,p->GetData()->GetName()); salary=p->GetData()->GetSal(); if(p->Getnext()==0)outfile< elseoutfile< p=p->Getnext(); } outfile.close(); } voidinput1(CList&list)//文件导出 { ifstreaminfile; infile.open("data.txt"); charname[20]; doublesalary; while(! infile.eof()) {infile>>name; infile>>salary; if(infile.fail()) break; CSalary*psalary=newCSalary; psalary->SetSalary(name,salary); CNode*pnode=newCNode; pnode->InputData(psalary); list.Insert(pnode); } infile.close(); } voidstart()//菜单 {cout<<"\nA: 添加工资记录\nB: 显示工资记录\nC: 根据姓名查询工资数据\nD: 根据姓名删除工资数据\nE: 根据姓名修改工资数据\nF: 保存数据退出系统\n\n\n";} voidmain()//主函数 { CLista; input1(a); charb; intn=0; while(n==0) {start(); cout<<"请选择操作项: "; cin>>b; switch(b) {case'F': case'f': save(a);return;break; case'A': case'a': addrecord(a);break; case'B': case'b': showrecord(a);break; case'C': case'c': enquirerecord(a);break; case'D': case'd': deleterecord(a);break; case'E': case'e': modifyrecord(a);break; default: cout<<"\t\t请输入正确操作序号! \n";break; } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 工资管理 系统