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)
;}}}