ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:67.66KB ,
资源ID:3866620      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3866620.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++计算机实践报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++计算机实践报告.docx

1、C+计算机实践报告中南大学本科生课程设计(实践)任务书、设计报告(C+课程设计)题 目职工工资管理系统学生学号学生姓名指导教师学 院物理学院专业班级指导老师计算机基础教学实验中心2010年 07 月 08 日职工工资管理系统摘要:经过近两周24学时的C+计算机实践,我基本上完成了对所要求的熟悉使用MFC类库编程和使用C+编写一个关于企业职工工资管理系统的程序。对于使用C+面向对象的编程思想也有了更深的体会。关键词:职工工资、系统、指针、链表、增加删除信息、结构体、类成员函数使用、全局变量1、职工工资管理系统的开发设计思想1、职工工资管理系统可以通过输入输出某一职工的一些信息,如月份、编号、基本

2、工资、补贴等进行对职工信息的处理。2、为了更方便地表示一个职工的基本信息,可以先定义一个结构体(Emp_info),在这个结构体中包含了一个职工的所有基本信息。3、定义一个类(Employee),在类中定义必要的成员函数,用这些函数可以对结构体中的职工信息进行需要的处理,如添加职工信息函数(AddItem)、删除职工信息函数(RemoveItem)、查找职工信息函数(Search)等。然后通过调用成员函数来实现系统的功能。4、用类Employee定义一个全局变量employee,设计主函数及其所调用的函数,通过employee来使用类中的成员函数达到处理数据的目的。2、职工工资管理系统功能及系

3、统设计介绍1、系统的功能职工工资管理系统能根据已输入的数据信息进行必要的数据处理,然后可以根据提示添加或删除职工信息,还可以对有误信息进行修改。出于发工资时的需要可以对某些或全部的职工信息进行输出。系统的总的功能如图所示:为完成这些功能首先需要一个可以存储数据的数据单元,即一个结构体Emp_info,在这个结构体中定义必要的变量:pay5、gpay、tax、ded、apay。其所对应的具体变量如下表所示。pay0pay1pay2pay3pay4gpaytaxdedapay基本 工资补贴房租会费储蓄应发数个人所得税应扣数实发数定义了结构体后需要定义一个类Employee,在类中定义了两个私有成员

4、函数Find和Print用来查找和输出职工工资信息,六个公有成员函数分别为ListCount()、AddItem()、RemoveItem()、AmendItem()、List()、Search()、PayInfo()。然后根据不同的功能分别编写成员函数。2、系统主要模块设计类成员函数的设计、AddItem()成员函数的设计添加信息是所有功能实现的一个必要条件,因此十分重要。在AddItem()之前还有一个统计此前链表数目的函数ListCount(),然后返回一个链表数值。在AddItem()成员函数实现之初需要先判断当前链表是否为空,这可以通过之前的ListCount()函数的返回值是否为零

5、来判断。若没有直接添加信息,若有,还需考虑输入的是否为之前存储过的,若是存储过的需返回一个通知的消息,否则可以用结构体Emp_info开辟(new Emp_info)一个新的数据域存储所输入的数据,并将其地址赋给上一个结点的next,这样就完成了添加信息的目的。RemoveItem()成员函数的设计删除成员函数是在之前输入的信息有误时对原数据作一定的纠正,这增加了系统的功能和可用性,给使用者也带来一定便利之处。此处删除是按照使用者数的学号进行查找删除的,具体实现步骤如图。通过图示方法能成功删除一些无使用价值的信息。、AmendItem()函数的设计修改函数的作用与删除函数相似,其设计较前两个成

6、员函数容易。先调用一个查找函数,查找到这个链表的位置,然后调用输入输出函数重新对链表中的变量赋值。Search()函数的设计处于显示页面的优化的需要,在查找之前先输出Search.。定义一个p指针存放用Find()函数找到的满足要求的数据域的地址,然后调用输出函数将所得数据域内变量值一一对应输出即可。、Find()函数的设计前面的几个函数几乎无不调用了Find()函数,因此Find()函数也是个功能实现的重要的一个部分。查找时首先需要判断是否当前列表为空,如果为空查找将无意义,不为空时才对链表中的数据进行查找。当链表不为空时,先用Emp_info结构体定义一个指向head的指针,然后使用whi

7、le循环(由于链表数未知,因此此处选用while语句)来进行查找符合条件的数据域。当p指向数据域中num值与所给定的num值一致,则停止,并返回这个指针,否则返回一个无法找到的消息。 Print()、List()、PayInfo()函数的设计if(t=800) if(t=2000) k+=(t-800)*0.05; else if(t=5000) k+=60+(t-2000)*0.1; else k+=360+(t-5000)*0.2; 这三个函数的程序设计比较简单,只是进行简单的函数调用即可,PayInfo()函数(计算职工工资详细情况)中个人所得税的算法如右图所示。值得注意的是,在Prin

8、t()函数和List()函数中显示在主面板上的变量信息的顺序必须与程序源代码中一致,否则将会使输入输出甚至其他运算出现错误。、定义一个全局变量,用Employee类来定义,后面的主函数及主调函数所做的操作都可以基于这个全局变量。、主函数及主调函数的设计根据系统的功能可以先将系统的主要功能列出:1、输入本月工资信息;2、查找指定职工编号的基本信息;3、修改制定职工编号的基本信息;4、输出当月全体职工的工资信息;5、删除指定职工的工资信息;6、退出程序。因此可以设计函数:Menu()-用于显示主菜单并输入一个选择的值;Exit()-用于退出程序;Input()-用于输入员工工资数值;AddNew(

9、)-用于输入或添加新的数据;DoFind()-查找指定编号(num)的职工信息;DoDelete()-用于删除指定编号(num)的职工信息;DoAmendItem()-用于修改指定编号(num)职工工资信息;List()-用于列出当月全部职工工资信息;Main()-调用各个函数实现系统的总体功能。在各个函数的设计过程中,用于主要是引用全局变量中的成员函数,因此设计难度不是太高。在全部了解了系统的功能及设计流程之后,这些函数只需要一些简单的调用和循环就可实现其功能。其中,在main()函数中使用了swith语句来实现选择功能。调试运行及系统的优化由于在编写程序过程中思路清晰,前后主要函数模块的编

10、写都是独立编写的,再整体整合到一个程序中,因此调试时只是遇到了几个拼写错误,主要的语法及编译错误都没出现。在程序实现之后,出于对系统输入输出的美观要求,我对部分的函数输入输出进行了改变,例如将输出的界面的背景与字体颜色设置为更舒适的颜色、设置输出数据的域宽和有效位数、修饰输出界面的边框等。3、总结经过近两周24个学时的C+计算机编程实践,我基本上完成了对所要求的熟悉使用MFC类库编程和使用C+编写一个企业职工工资管理系统的程序。对于使用C+我用了更深的体会。在本学期的开始学C+面向过程的程序编写时,我对那种面向过程,调用函数进行计算解决问题的方式觉得理所当然,觉得这种方式对于解决一切问题都有效

11、。到了学使用面向对象编程语言编写程序时觉得很不适应。在这近两周的编程实践中,我体会到了这种面向对象编程的益处。面向对象的编程方式可以通过定义一个类,在类中定义一些能完成特定功能的成员函数来进行数据的处理,从而完成特定的功能。就好像一个公司中有新的任务,公司可以通过不同部门的独立完成特定的任务来实现某一功能。这可以大大简化任务执行的过程,简化编程,降低变成难度。这次实践也使我懂得自己亲自动手做事能带来许多收获,不放过任一可能出错的环节,仔细用心做事。附源代码:#includeusing namespace std;struct Emp_info int month,num; float pay5

12、,gpay,tax,ded,apay; /gpay-应发数;tax-个人所得税;ded-应扣数(房租+个人所得税+会费);apay-实发数 Emp_info *next; ;class Employeeprivate: Emp_info *head; void Print(Emp_info *); Emp_info *Find(int);public: Employee()head=NULL; int ListCount(); void AddItem(int month,int num,float pay5); /添加一个对象到表尾 void RemoveItem(int); /删除指定对象

13、信息 void AmendItem(int); /修改指定对象的信息 void List(); /列出所有职工的信息 void Search(int); /查找指定编号职工的信息 void PayInfo(); /职工的应发数、个人所得税、应扣数、实发数的计算;int Employee:ListCount () /统计链表数,并返回一个整数 if(!head)return 0; Emp_info *p=head; int n=0; while(p)n+;p=p-next; return n;void Employee:AddItem (int month,int num,float pay5)

14、 /增加一个职工信息 if(!head) head=new Emp_info; for(int i=0;ipayi=payi; head-month=month; head-num=num; head-next=NULL; return; Emp_info *t=head; while(t&t-num!=num) t=t-next; if(t) cout操作失败;职工编号为num的记录已经存在!next ) p=p-next; Emp_info *p1=new Emp_info; p1-num=num; p1-month=month; for(int i=0;ipayi=payi; p1-ne

15、xt=NULL; p-next=p1; return;void Employee:RemoveItem(int num) /删除指定职工编号的记录 Emp_info *t=Find(num); if(!t) return; Emp_info *p=head; if(head=t) /如果第一个记录即是要删除的记录 head=head-next; delete p; cout成功删除职工编号为num的记录!endlnext!=t)p=p-next; Emp_info *p1=p-next; p-next=p1-next; delete p1; cout成功删除职工编号为num的记录!endlen

16、dl; return;void Employee:AmendItem(int num) /修改指定职工编号的记录 float a,b,c,d,e,f,g; Emp_info *p=Find(num); if(!p)return; cout请重新输入相应信息endl; cout月份 编号 基本工资 补贴 房租 会费 储蓄abcdefg; p-month=a; p-num=b; p-pay0=c; p-pay1=d; p-pay2=e; p-pay3=f; p-pay4=g; return;void Employee:Print(Emp_info *p) /输出指定职工编号的记录 cout.set

17、f(ios:left); /设置左对齐 cout.width(6); /设置域宽为6 cout.precision(6); /设置显示有6位有效数字 coutmonth ; coutnum ; coutpay0 pay1 pay2 pay3 pay4 gpay tax ded apayendl; return;void Employee:List() /列出所有记录 if(ListCount=0) cout当前列表为空,请先输入数据!endl; return; Emp_info *p=head; cout共有记录ListCount()个endl; cout月份 编号 基本工资 补贴 房租 会费

18、 储蓄 应发数 缴税 应扣数 实发数next; coutendl; return;void Employee:Search (int num) /查找指定职工编号记录并输出 coutSearch.endl; Emp_info *p=Find(num); if(p) cout月份 编号 基本工资 补贴 房租 会费 储蓄 应发数 缴税 应扣数 实发数endl; Print(p); coutendl;Emp_info *Employee:Find(int num) /查找指定职工编号的记录 if (ListCount()=0) cout当前列表为空,请先输入数据!num=num) break; p=

19、p-next; if(!p) cout错误:找不到该记录!n; return NULL; return p;void Employee:PayInfo () /职工详细信息的计算 if (ListCount()=0) cout当前列表为空,请先输入数据!pay0+p-pay1; t=p-pay0; if(t=800) if(t=2000) k+=(t-800)*0.05; else if(tpay2+p-pay3; y=m-x; p-gpay=m; p-tax=k; p-ded=x; p-apay=y; p=p-next; n+; return;Employee employee; /定义一个

20、全局变量int Menu() /主菜单 coutn *菜单*endlendl; int n=1,select=-1; cout n+. 输入或添加本月职工工资信息endlendl; cout n+. 查找指定职工编号的基本信息endlendl; cout n+. 修改制定职工编号的基本信息endlendl; cout n+. 输出当月全体职工的工资信息endlendl; cout n+. 删除指定职工的工资信息endlendl; cout 0. 退出endlendl; coutendl; coutselect; return select;char Exit() /退出 char s; cou

21、ts; return s;void Input(int *month,int *num,float pay5) /输入信息 cout请输入n月份 职工编号 基本工资 补贴 房租 会费 储蓄*month; if(*month=-1)return; cin*numpay0pay1pay2pay3pay4; return;void AddNew() /增加一个新的记录 int num=0,month=0; float pay5=0,0,0,0,0; coutendl当输入的月份为-1是表示结束输入endl; Input(&month,&num,pay); while(month!=-1) emplo

22、yee.AddItem(month,num,pay); employee.PayInfo(); Input(&month,&num,pay); return;void DoFind() /查找记录 int num; coutendl当输入的职工编号为-1是表示结束输入endl; do coutnum; if(num=-1)continue; employee.Search(num); while(num!=-1); return;void DoDelete() /删除记录 coutendl当输入的职工编号为-1是表示结束输入endl; int num; do coutnum; if(num=-

23、1)continue; employee.RemoveItem(num); while(num!=-1); return;void AmendItem() /修改记录 coutendl当输入的职工编号为-1是表示结束输入endl; int num; do coutnum; if(num=-1)continue; employee.AmendItem(num); employee.PayInfo(); while(num!=-1); return;void List() /列出所有记录 employee.List();int main() /主函数 system(color 0G); /设置显示

24、字体颜色 cout Welcome!n 职工工资管理系统n 版本:Wjh7.0(版权所有,翻版必究!)n; int select; char s; while(1) select=Menu(); switch(select) case 0: s=Exit(); if(s=y|s=Y)return 0; break; case 1: AddNew(); break; case 2: DoFind(); break; case 3: AmendItem(); break; case 4: List(); break; case 5: DoDelete(); break; default: cout无效输入!endl; return 0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1