c++课程设计工资管理.docx
- 文档编号:9851628
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:13
- 大小:47.04KB
c++课程设计工资管理.docx
《c++课程设计工资管理.docx》由会员分享,可在线阅读,更多相关《c++课程设计工资管理.docx(13页珍藏版)》请在冰豆网上搜索。
c++课程设计工资管理
C++课程设计
————工资管理系统
设计人:
汤秋宇
2010.3.20
1.程序功能简简介
这是一个员工工资管理程序,工资管理的数据文件中储存这员工的姓名和工资,该程序可以录入,显示,修改,删除,查找员工的姓名和工资。
显示,修改,删除,查找数据项时大小写通用,工资数据按工资值的大小存放,修改,删除数据前有提示信息,用户确认后才能进行下一步的操作,否则取消操作,程序退出时能将修改后的数据保存在原文件中。
2.程序设计思想
数据从外部文件写入,以链表的形式存放到内存中,链表的节点储存到节点类中,数据储存到数据类中,头指针储存在链表类中,通过链表类中的函数实现数据的显示,修改,删除,查找,添加,操作完成后程序把改动后的数据在储存到原来的文件中,程序结束。
3.程序主要类说明
资料类:
classdate
{private:
charname[20];//储存姓名
doublemoney;//储存工资
public:
friendclasscnode;
date(){strcpy(name,20),money=0.0;}//构造函数
voidgb(charname2[20],double//修改数据n){strcpy(name,name2);money=n;}
voidtj();voiddy(charname1[20],intn);//添加数据
char*ming(){char*p;p=name;returnp;};//提取姓名
voidcompare(intn){money=n;}//
voidshow();//输出数据
doubleqian(){returnmoney;}//提取工资;
voidjin();//数据入库;
};
结点类:
classcnode
{private:
date*pdate;//储存资料类指针
cnode*pnext;//储存下一个结点指针
public:
cnode*getnextnode(cnode*p){returnp->pnext;};//返回下一结点指针
cnode(){pdate=0;pnext=0;}//构造函数
voidinput(date*psel){pdate=psel;}//为资料指针赋值
voidshownode(){pdate->show();}//调用展示函数
date*getdate(cnode*p){returnp->pdate;}//返回资料指针
friendclassclist;
};
链表类:
classclist
{private:
cnode*phead;\\储存头指针
public:
clist(){phead=0;}\\构造函数
voidaddnode(clist&m);\\添加数据函数
voidinput(cnode*p){phead=p->getnextnode(p);};\\赋值给头指针
voidshowlist();\\展示资料
voidgetlisthead();\\向文件输出
cnode*fht(){returnphead;}\\返回头指针
voidinsert(cnode*);\\创造链表
voidchazhao(clist*q);\\查找资料
voidshanchu(clist*q);\\删除资料
voidxiugai(clist*q);\\修改资料
voidruku(clist*q);\\向文件输出}
主程序运行界面如下
4.程序源代码
#include
#include
#include
#include
usingnamespacestd;
voidZ(int&chioe2)
{while(chioe2<0||chioe2>2)
{cout<<"您输入的代码有误,请重新输入\n";
cin>>chioe2;
continue;}};
classdate
{private:
charname[20];
doublemoney;
public:
friendclasscnode;
date(){money=0.0;}
voidgb(charname2[20],doublen){strcpy(name,name2);money=n;}
voidtj();voiddy(charname1[20],intn);
char*ming(){char*p;p=name;returnp;};
voidcompare(intn){money=n;}
voidshow();
doubleqian(){returnmoney;}
voidjin();};
voiddate:
:
jin()
{ofstreamk;k.open("kl.txt",ios:
:
app);
char*p1;
p1=strlwr(name);k< k< voiddate: : tj() {ofstreamk;k.open("kl.txt",ios: : app); cin.ignore();char*p; cout<<"entername\n"; cin.getline(name,20);p=strlwr(name);k< cout<<"entermoney\n"; cin>>money;k< }; voiddate: : show() {cout<<"name: "< cout<<"money: "< cout<<"\n";}; voiddate: : dy(charname1[20],intn) {strcpy(name,name1);money=n; } classcnode {private: date*pdate; cnode*pnext; public: cnode*getnextnode(cnode*p){returnp->pnext;}; cnode(){pdate=0;pnext=0;} voidinput(date*psel){pdate=psel;} voidshownode(){pdate->show();} date*getdate(cnode*p){returnp->pdate;} friendclassclist;}; classclist {private: cnode*phead; public: clist(){phead=0;} voidaddnode(clist&m); voidinput(cnode*p){phead=p->getnextnode(p);}; voidshowlist(); voidgetlisthead(); cnode*fht(){returnphead;} voidinsert(cnode*); voidchazhao(clist*q); voidshanchu(clist*q); voidxiugai(clist*q); voidruku(clist*q);}; voidclist: : addnode(clist&m) {cnode*pnode; date*psal;intn; pnode=newcnode; psal=newdate; psal->tj(); pnode->input(psal); m.insert(pnode); cout<<"continue? \n1.yes2.no\n"; cin>>n; while(n==1) {pnode=newcnode; psal=newdate; psal->tj(); pnode->input(psal);insert(pnode); cout<<"continue? \n1.yes2.no\n"; cin>>n;}system("cls");}; voidclist: : insert(cnode*p1) {cnode*p2; if(phead==NULL) {phead=p1;p1->pnext=NULL;} else{p2=phead; while(p2->pnext) p2=p2->pnext; p2->pnext=p1; p1->pnext=NULL;}}; voidclist: : showlist() {cnode*p3;p3=phead; while(p3) {p3->shownode(); p3=p3->pnext;} cin.ignore(); cin.ignore(); system("cls");} ; voidclist: : getlisthead() {ifstreamj; j.open("kl.txt",ios: : in); if(! j){cout<<"错误"; cin.ignore();exit(0);} cnode*p1;date*p2; chark[20];inth; while(j>>k>>h) {p1=newcnode; p2=newdate; p2->dy(k,h); p1->input(p2); insert(p1); } j.close();}; voidclist: : chazhao(clist*q) {cin.ignore(); cnode*p1;date*p2; p1=q->fht(); chars[20],*p; cout<<"请输入姓名"; cin.getline(s,20); p=strlwr(s); p2=p1->getdate(p1); while((strcmp(p2->ming(),p)! =0)&&(p1->getnextnode(p1))! =NULL) {p1=p1->getnextnode(p1);p2=p1->getdate(p1);} if(p1->getnextnode(p1)==NULL) if(strcmp(p2->ming(),p)==0) p2->show(); elsecout<<"无此人工资记录\n"; elsep2->show();cin.ignore();system("cls");}; voidclist: : shanchu(clist*q) {cin.ignore(); cnode*p1,*p3; date*p2;p1=q->fht(); chars[20],*p; intn; cout<<"请输入要删除记录的姓名"; cin.getline(s,20);p=strlwr(s); p2=p1->getdate(p1); while((strcmp(p2->ming(),p)! =0)&&(p1->getnextnode(p1))! =NULL) {p1=p1->getnextnode(p1);p2=p1->getdate(p1);} p3=p1; if(strcmp(p2->ming(),p)==0) {p1->shownode(); cout<<"\n确认删除? \n1是2否\n"; cin>>n;Z(n); if(n==1) {if(p1==q->fht())input(p1); elsep3=p1->getnextnode(p1); delete[]p2;delete[]p1;cout<<"删除完毕";} } elsecout<<"无此人工资记录\n";cin.ignore();cin.ignore();system("cls");}; voidclist: : xiugai(clist*q) {cin.ignore(); cnode*p1;date*p2; p1=q->fht(); chars[20],*p; intn,m; cout<<"请输入要修改记录的姓名"; cin.getline(s,20); p=strlwr(s); p2=p1->getdate(p1); while((strcmp(p2->ming(),p)! =0)&&(p1->getnextnode(p1))! =NULL) {p1=p1->getnextnode(p1);p2=p1->getdate(p1);} if(strcmp(p2->ming(),p)==0) {p2->show(); cout<<"\n确认修改? \n1是2否\n"; cin>>m;Z(m); if(m==1) { cout<<"请输入修改的工资"; cin>>n;p2->compare(n); cout<<"修改后的工资记录\n"; p2->show();}} elsecout<<"无此人工资记录\n"; cin.ignore();cin.ignore();system("cls");}; voidclist: : ruku(clist*q) {cnode*p;date*p1;p=q->fht(); ofstreamb;b.open("kl.txt");b.close(); while(p) {p1=p->getdate(p);p1->jin();p=p->getnextnode(p);}} voidmn(clist*q) {cnode*p1,*p2;date*p3,*p4; p1=q->fht(); intmax=0,i,j; doublen,m; char*e,*k,g[20]; while(p1) {max++; p1=p1->getnextnode(p1);}p1=q->fht(); for(j=0;j<=max-2;j++) {for(i=0;i<=max-2-j;i++) {p3=p1->getdate(p1); p2=p1->getnextnode(p1); p4=p2->getdate(p2); m=p3->qian(); n=p4->qian(); e=p4->ming(); k=p3->ming();strcpy(g,k); if(m {p3->gb(e,n); p4->gb(g,m);}p1=p2; }p1=q->fht();}}; voidmain() {clistm;clist*c;c=&m; intchioe1;m.getlisthead();mn(c); while (1) {cout<<"***************************************************************************\n"; cout<<"欢迎使用工资管理系统\n\n"; cout<<"1.添加工资记录\n\n"; cout<<"2.显示工资记录\n\n"; cout<<"3.根据姓名查询工资数据\n\n"; cout<<"4.根据姓名删除工资数据\n\n"; cout<<"5.根据姓名修改工资数据\n\n"; cout<<"0.退出系统\n\n"; cout<<"********************************************************************************"; cout<<"请输入您要执行的操作"; cin>>chioe1; while(chioe1<0||chioe1>5) {cout<<"您输入的代码有误,请重新输入\n"; cin>>chioe1; continue;} switch(chioe1) {case1: system("cls");cout<<"***************************************************************************\n"; m.addnode(m);break; case2: system("cls");cout<<"***************************************************************************\n"; m.showlist();break; case3: system("cls");cout<<"***************************************************************************\n"; m.chazhao(c);break; case4: system("cls");cout<<"***************************************************************************\n"; m.shanchu(c);break; case5: system("cls");cout<<"***************************************************************************\n"; m.xiugai(c);break; case0: m.ruku(c);exit(0) ;}}}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 课程设计 工资管理