p.show9();
}
}
}
return0;
}
1.7程序测试
一:
简单的四则运算:
二:
2、8、16进制转换:
三:
开方、平方运算:
四:
三角函数:
五:
幂函数与对数
1.8参考文献
[1]杜茂康、李昌兵等编.C++面向对象程序设计(第二版)电子工业出版社
职工工资管理系统
2.1基本功能
本程序的基本功能有:
1.添加员工的基本信息,如名字,编号,职位。
2.添加员工的工资,并自动根据员工的职位计算工资。
3.存档员工的基本信息。
4.存档员工当月的基本信息和工资。
2.2拓展功能
本程序的拓展功能有:
1.查询单个员工的基本信息和当月工资。
2.根据职位显示该职位下所有员工的基本信息和当月工资。
3.查询所有员工的基本信息和当月工资。
4.从文件中读入员工的基本信息。
5.文件中读入员工的基本信息和当月工资
2.3开发环境工具:
visualC++6.0
2.4设计过程描述
本系统首先设计出了主函数,然后根据去要实现的功能分别设计了添加,保存,读取,查询的功能。
在显示的函数设计过程中首先运用了文件的读取等必要的知识通过把文件的内容读取到内存然后打印出来。
查询是用一个字符串对比的方法找出用户要查找的人,然后打印出来。
添加则是通过将学生信息存入类中从而实现添加功能。
本程序为职工工资管理系统的设计,采用的是类的相关知识点进行操作,拥有添加员工信息,添加员工工资,保存员工信息,保存员工工资,读取员工信息,读取员工信息工资,查询等功能。
添加员工信息
添加员工工资
保存员工信息
保存员工信息和工资
读入员工信息
读取员工信息和工资
查询单个员工信息工资
按职务查询员工信息工资
查询所有员工信息工资
退出
2.5小结
通过学习,我进一步掌握了C++语言类、以及封装知识的用法。
我认为一个好的程序不仅是在设计时能够尽量简洁化、易懂化,并且还需要健壮,不能因为一点小错误而导致整个程序出错,并且编写程序时初期构想的思路非常重要,有一个好的思路,才能编出一个好的程序。
另外,Debug也是关键的一步,通过Debug会发现程序中很多存在的漏洞,反应出程序的不足之处,而加以改进。
综上,我认为这一次课程设计让我体会到了做一个程序应该有的步骤,为我今后的发展埋下了铺垫。
2.6程序源代码
/*****************************************************/
#include
#include
#include
#include
usingnamespacestd;
/*****************************************************/
/*定义一个员工信息的结构体Worker_pay*/
structWorker_pay
{
intnum;//员工编号
stringname;//员工姓名
intage;//年龄
stringsex;//性别
stringdepartment;//部门
stringtitle;//职务
floatwage;//工资
floatallowance;//津贴
floattax;//个人所得税
floatreal_wage;//实发数
Worker_pay*next;//链表结点的指针域
};
/*****************************************************/
/*定义一个员工类Worker*/
classWorker
{
protected:
Worker_pay*head;//链表的头结点指针
public:
Worker(){head=NULL;}//构造函数
voidDisplay(Worker_pay*);//输出函数
Worker_pay*Find(int);//查找函数
intListCount();//统计员工人数函数
voidAddItem(int,string,int,string,string,string,float,float);//创建链表并链表的插入
voidRemoveItem(int);//删除函数
voidReplaceItem(int);//修改函数
voidListL();//遍历函数
voidSearch(int);//查找并输出某个员工信息函数
voidReal_wage(float,float);//计算函数
voidRecordinfo(int,string,int,string,string,string,float,float,float,float);//存储函数
};
/*****************************************************/
//功能:
用于统计员工人数
intWorker:
:
ListCount()
{
if(!
head)
return0;
Worker_pay*p=head;
intn=0;
while(p)
{
n++;
p=p->next;
}
returnn;
}
/*****************************************************/
//功能:
在链表中查找员工的编号
Worker_pay*Worker:
:
Find(intnum)
{
if(ListCount()==0)
{
cout<<"列表为空,请先输入数据!
!
!
"<returnNULL;
}
Worker_pay*p=head;
while(p)
{
if(p->num==num)
break;
p=p->next;
}
if(!
p)
{
cout<<"错误,找不到该信息!
!
!
"<returnNULL;
}
returnp;
}
/*****************************************************/
//功能:
创建链表及链表的插入
voidWorker:
:
AddItem(intnum1,stringname1,intage1,stringsex1,stringdepartment1,stringtitle1,floatwage1,floatallowance1)
{
if(!
head)
{
head=newWorker_pay;
head->num=num1;
head->name=name1;
head->age=age1;
head->sex=sex1;
head->department=department1;
head->title=title1;
head->wage=wage1;
head->allowance=allowance1;
head->next=NULL;
return;
}
Worker_pay*t=head;
while(t&&t->num!
=num1)
t=t->next;
if(t)
{
cout<<"操作失败;员工编号为"<!
!
"<return;
}
Worker_pay*p=head;
while(p->next)
p=p->next;
Worker_pay*p1=newWorker_pay;
p1->num=num1;
p1->name=name1;
p1->age=age1;
p1->sex=sex1;
p1->department=depart