C++课程设计(19)

上传人:仙*** 文档编号:27992010 上传时间:2021-08-22 格式:DOC 页数:21 大小:214.50KB
收藏 版权申诉 举报 下载
C++课程设计(19)_第1页
第1页 / 共21页
C++课程设计(19)_第2页
第2页 / 共21页
C++课程设计(19)_第3页
第3页 / 共21页
资源描述:

《C++课程设计(19)》由会员分享,可在线阅读,更多相关《C++课程设计(19)(21页珍藏版)》请在装配图网上搜索。

1、辽 宁 工 业 大 学C+语言程序设计课程设计(论文)题目: 雇员工资管理系统 院 (系): 软 件 学 院 专业班级 : 软件工程113班 学 号 : 111301079 学生姓名 : 安凯辰 指导教师 : 翟宝峰 教师职称 : 副教授 起止时间 :2011.12.12-2011.12.25课程设计(论文)任务及评语院(系):软件学院 教研室:软件教研室学 号111301079学生姓名安凯辰专业班级软件工程113班课程设计(论文)题目雇员工资管理系统课程设计(论文)任务程序设计的任务与要求:(1). 掌握面向对象程序设计语言C+的基本语法(2). 掌握C+面向对象设计的思想(3). 掌握VC

2、+6.0与DEV C+ 开发工具的使用 (4). 运用标准C+规范设计应用程序设计过程中,要严格遵守设计的时间安排,听从指导教师的指导。正确地完成上述内容,规范完整地撰写出设计报告。指导教师评语及成绩 成绩: 指导教师签字: 年 月 日辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)目 录第1章 课程设计目的与要求11.1 设计目的11.2实验环境11.3预备知识11.4设计要求1第2章 课程设计内容22.1 课题描述22.2 系统设计22.2.1系统功能分析22.2.2面向对象设计22.2.3类成员描述62.3程序的实现62.3.1系统源码分析62.3.2系统运行结果15第3章

3、课程设计总结17参考文献18第1章 课程设计目的与要求1.1 设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程C+语言教程的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。(3)利用所学知识,开发小型应用系统,掌握运用C+语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能

4、力。(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。(5)掌握面向对象程序设计的方法。(6)熟练掌握C+语言的基本语法,灵活运用各种数据类型。(7)进一步掌握在集成环境下如何调试程序和修改程序。1.2实验环境硬件要求能运行Windows 操作系统的微机系统。C+语言应用程序开发软件使用:VC+ 系统,或其他C+语言应用程序开发软件。1.3预备知识熟悉C+语言程序设计的基本知识及VC+编辑器的使用方法。1.4设计要求1.仔细分析设计题目,画出程序流程图,编写程序源代码。2.积极上机调试源程序,增强编程技巧与调程能力。3.认真书写课程设计预习报告,课程设计说明书。4.遵守课

5、程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成课程设计内容。第2章 课程设计内容2.1 课题描述本系统是为某个公司编写雇员工资支付程序。所完成的功能包括一般工人(Worker)按每月工作的天数计算工资;销售人员(Salesman)在基本工资基础上每月还有销售提成;经理(Manager)每月按固定工资支付,临时工(Floater)按小时支付。在本系统中用抽象类(Employee)描述所有雇员的共同特性(如姓名,性别,出生日期,员工类别),含有计算工资的纯虚函数computeSalay(),而且在系统中对于所有员工用该方法计薪是以多态形式来实现的。系统应包含新增员工信息、删除

6、员工信息、员工信息搜索、员工信息统计、员工信息分类存储、员工信息导入、按工资排序等功能为。2.2 系统设计2.2.1系统功能分析 本系统所完成的功能如下:1新增员工信息;2删除员工信息;3员工信息搜索(按姓名);5员工信息统计(按姓名或工资或类别);6员工信息分类存储;7员工信息导入;8按工资排序;9退出系统功能的流程图:添加信息雇员工资系统删除信息搜索信息统计信息导入信息退出系统2.2.2面向对象设计 1、雇员类employee包含的成员:数据成员:name:用来存储雇员名字gender:用来存放雇员性别date20:用来存放雇员出生年月日 accumPay:用来存放雇员类别Staffcat

7、egory:用来存放雇员工作日函数成员:Employee():构造函数Employee():析构函数set_name(char *na):录入雇员姓名的函数set_gender(char *ge):录入雇员性别的函数set_date(char *da):录入雇员出生年月日的函数set_Staffcategory(char *staff):录入雇员类别的函数set_accumpay(float accu):录入雇员工作日的函数get_name():获取雇员姓名的函数get_gender():获取雇员性别的函数get_date():获取雇员出生年月日的函数get_accumpay():获取雇员工作

8、日的函数get_Staffcategory():获取雇员类别的函数display():显示信息函数Uml类图:Employee-name:char-gender:char-date20:char-accumPay:float-Staffcategory:char+Employee()+Employee()+set_name(char *na):void +set_gender(char *ge):void+set_date(char *da):void +set_Staffcategory(char *staff):void+set_accumpay(float accu): void+get

9、_name():char *+get_gender():char *+get_date():char *+get_accumpay():float+get_Staffcategory():char *+ computeSalay():void+ get_data():void+ display():void:2、普通工人类Worker包含的成员:数据成员:dayRate:用来存放每天酬金的数据成员workDays:用来存放当月工作天数的数据成员函数成员:Worker():构造函数 get_dayRate():获取每天酬金函数get_workDays ():获取工作天数函数Uml类图:Worke

10、r- dayRate: float- workDays: int+Worker() +get_dayRate():float+get_workDays ():int+computeSalay():void+display():void+ get_data():void3、销售人员类Salesman包含的成员:数据成员:commRate: 用来存放每件产品提成额的数据成员sales: 用来存放销售的产品数量的数据成员salary: 用来存放基本工资的数据成员函数成员:Salesman():构造函数display():显示函数Uml类图:Salesman-commRate: float-sales

11、: float-salary: float+Salesman()+display():void+computeSalay():void+ get_data():void4、经理类Manager:用来存放包含的成员:数据成员:monthSalary: 用来存放月工资的数据成员 函数成员:Manager():构造函数get_monthSalary():获取月工资函数 get_data():获取工作天数的函数Uml类图:Manager-monthSalary: float+Manager()+display():void+computeSalay():void+get_monthSalary():f

12、loat+ get_data():void5、临时工人类Floater包含的成员:数据成员: hourRates:用来存放每小时酬金的数据成员workHours:用来存放当月工作时数的数据成员函数成员:Floater():构造函数get_hour_Rates():获取时间总量函数get_workHours():获取工作天数函数 Uml类图:Floater-hourRates:float-workHours:int +Floater()+display():void+get_hour_Rates():float+get_workHours():int +computeSalay():void +

13、get_data():void类的继承派生图:EmployeeManagerSalesmanWorkerFloater 总体流程图: 输入基本信息信息排序新增数据信息删除信息检索分类存储信息导入退出系统开始输入选择功能1 2 3 4 5 6 72.2.3类成员描述1.录入雇员姓名的函数set_name(char *na):记录新增人员的姓名信息,方便对其进行查找,修改等各项工作。2.录入雇员类别的函数set_Staffcategory(char *staff):根据雇员类别更容易查找其所需要的信息。 3.录入雇员工作日的函数set_accumpay(float accu):记录工作人员的工作数

14、量,方便对其发放工资等操作。4.获取雇员姓名的函数get_name():能够了解所被雇佣的员工信息。 2.3程序的实现2.3.1系统源码分析/程序名:雇员工资管理系统/功能:雇员信息的录入、删除、修改等/作者:杨娜/完成时间:2011-12-21#include#include#include#include#includeint n=4; /统计雇员的人数int K=0; /统计销售的人数int H=0; /统计临时工人的人数int M0=0; /统计经理的人数int J=0; /统计一般工人的人数 class Employee protected:char name20;/姓名char g

15、ender20;/性别char date20; /出生日期float accumPay; /月薪总额char Staffcategory20;public:Employee()accumPay=0;Employee()void set_name(char *na)strcpy(name,na);void set_gender(char *ge)strcpy(gender,ge);void set_date(char *da)strcpy(date,da);void set_Staffcategory(char *staff)strcpy(Staffcategory,staff);void se

16、t_accumpay(float accu)accumPay=accu;char *get_name()return name;char *get_gender()return gender;char *get_date()return date;float get_accumpay()return accumPay;char *get_Staffcategory()return Staffcategory; virtual void computeSalay()=0;virtual void get_data() coutnamegenderdateStaffcategory; virtua

17、l void display() coutname gender date Staffcategory accumPayendl; ;/普通工人class Worker:public Employee private:float dayRate; /每天酬金 int workDays; /当月工作天数public:Worker()dayRate=100; virtual void get_data() coutnamegenderdateStaffcategoryworkDays; float get_dayRate()return dayRate;int get_workDays ()ret

18、urn workDays;void computeSalay()accumPay=dayRate*workDays; void display() cout一般工人显示数据如下:endl;/cout姓名 性别 出生日期 员工类别 工作天数 每天酬金 月薪总额endl;coutname gender date Staffcategory workDays dayRate accumPayendl; ;/销售人员class Salesman:public Employeeprivate:float commRate;/每件产品提成额float sales; /销售的产品数量float salary

19、; /基本工资public:Salesman() commRate=0.04f; salary=1000; virtual void get_data() coutnamegenderdateStaffcategorysales; void computeSalay()accumPay=commRate*sales+salary;void display() /cout销售人员数据显示数据如下:endl;/cout姓名 性别 出生日期 员工类别 销售的产品总量 每件产品提成额 基本工资/ 月薪总额;coutname gender date Staffcategory sales commRat

20、e salary accumPayendl; ;/经理class Manager:public Employee private:float monthSalary;/月工资public:Manager()monthSalary=5000;virtual void get_data() coutnamegenderdateStaffcategory; float get_monthSalary()return monthSalary;void computeSalay()accumPay=monthSalary;void display() /cout经理显示数据如下:endl;/cout姓名

21、 性别 出生日期 员工类别 月薪总额endl;coutname gender date Staffcategory accumPayendl;/临时工class Floater:public Employee private:float hourRates; /每小时酬金int workHours; /当月工作时数public:Floater()hourRates=10;virtual void get_data() coutnamegenderdateStaffcategoryworkHours; float get_hour_Rates()return hourRates;int get_

22、workHours()return workHours;void computeSalay()accumPay=hourRates*workHours;void display() /cout一般工人显示数据如下:endl;/cout姓名 性别 出生日期 员工类别 当月工作时数 每小时酬金 月薪总额endl;coutname gender date Staffcategory workHours hourRates accumPayendl; ;Employee *E100;Employee *W100;Employee *S100;Employee *F100;Employee *M100;

23、void displayAll() ifstream in(employee.dat,ios:binary);if(in.fail() coutThe File is not sucessfully openedendl;for(int i=0;in;i+)in.read(char*)Ei,sizeof(Ei); for(int k=0;kdisplay(); in.close(); void ADD() int m;ofstream output(employee.dat,ios:app);if(output.fail() coutThe file was not successfully

24、openedendl; coutm;for (int i=0;im;i+) char t;cout输入第i+1个员工信息;coutt;if(t=w)En=new Worker();En-get_data();En-computeSalay();output.write(char*)En,sizeof(En);n+;if(t=m) En=new Manager() ;En-get_data();En-computeSalay();output.write(char*)En,sizeof(En);n+; if(t=s) En=new Salesman();En-get_data();En-comp

25、uteSalay(); output.write(char*)En,sizeof(En);n+; if(t=f) En=new Floater();En-get_data();En-computeSalay(); output.write(char*)En,sizeof(En);n+; ;output.close();/排序void Paixu() ifstream in(employee.dat,ios:binary);for(int p=0;pn;p+) in.read(char*)Ep,sizeof(Ep); in.close();int i,j;Employee *temp;int s

26、wap;for(i=0;in-1;i+) swap=0;for(j=0;jget_accumpay()Ej+1-get_accumpay() swap=1;temp=Ej;Ej=Ej+1;Ej+1=temp; if(!swap)break; ofstream out(employee.dat,ios:binary);for(int t=0;tn;t+) out.write(char*)Et,sizeof(Et); out.close(); void DELETE() ofstream out(employee.dat,ios:binary); ifstream in(employee.dat,

27、ios:binary); in.seekg(0);char sname20;coutsname;for(int i=0;iget_name(),sname)=0) for(int j=i;jn;j+) Ej=Ej+1; En-1=NULL;n-; out.write(char*)Ei,sizeof(Ei); in.close();out.close(); void Find() ifstream in(employee.dat,ios:binary);char sname20;coutsname;for(int i=0;iget_name(),sname)=0) Ei-display(); e

28、lse if(i=n)cout此人不存在endl; void sort() ofstream out1(Worker.dat,ios:binary);ofstream out2(Floater.dat,ios:binary);ofstream out3(Salesman.dat,ios:binary);ofstream out4(Manager.dat,ios:binary);ifstream in1(Worker.dat,ios:binary);ifstream in2(Floater.dat,ios:binary);ifstream in3(Salesman.dat,ios:binary)

29、;ifstream in4(Manager.dat,ios:binary);for(int i=0;iget_Staffcategory(),Worker)=0) WJ=new Worker();WJ=Ei;out1.write(char*)WJ,sizeof(WJ); /WJ-display();J+; if(strcmp(Ei-get_Staffcategory(),Salesman)=0) SK=new Salesman();SK=Ei;out3.write(char*)SK,sizeof(SK); /SK-display(); K+; if(strcmp(Ei-get_Staffcat

30、egory(),Floater)=0) FH=new Floater();FH=Ei;out2.write(char*)FH,sizeof(FH); /FH-display();H+; if(strcmp(Ei-get_Staffcategory(),Manager)=0) MM0=new Manager();MM0=Ei;out2.write(char*)MM0,sizeof(MM0); /MM0-display();M0+; cout一般工人信息显示如下:endl;for(int b=0;bdisplay(); cout销售工人显示如下:endl;for(int c=0;cdisplay(

31、); cout临时工信息显示如下:endl;for (int d=0;ddisplay(); cout经理信息如下:endl;for(int e=0;edisplay(); void main() cout输入员工信息:endl;E0=new Worker();E1=new Floater();E2=new Salesman();E3=new Manager();for (int i=0;iget_data();Ei-computeSalay(); ofstream outFile(employee.dat,ios:binary);ifstream inFile(employee.dat,io

32、s:binary);if(outFile.fail()coutThe file was not sucessfully openedendl; for(int k=0;kn;k+)outFile.write(char*)EK,sizeof(EK); /outFile.close();/*if(inFile.fail()coutThe file was not sucessfully openedendl; for(int m=0;mn;m+)inFile.read(char*)Em,sizeof(Em);*/ /for(int q=0;qdisplay();/displayAll();/DEL

33、ETE();/Paixu();int m;docout(1:新增,2:删除信息,3:员工信息检索,4:员工信息分类储存,5:员工信息导入,6:按工资排序,7:退出)endl;coutm;switch(m)case 1: ADD(); displayAll(); break;case 2: DELETE();displayAll(); break;case 3: Find(); break;case 4: sort(); break;case 5: displayAll(); break;case 6: Paixu(); break;case 7: break; while(1); 2.3.2系

34、统运行结果(1)首页(2)添加数据模块(3)删除模块第3章 课程设计总结通过此次C+课程设计的实现,让我对本学期的C+课程有了进一步的了解和掌握,并且学习了很多新的知识,令我受益匪浅。学习了C+,使我加深了对程序设计语言的认识,特别是加强了自己的动手实践能力。在学习过程中,通过老师的精心讲解,对我的学习有了很大帮助,解决了很多难以理解的问题,本次课程安排了实验部分,在实验课上,我们都是上机自己调试,利用所学的知识,和课题的提示可以很好的完成实验的要求,同时能够很好的将理论和实际联系在一起,写实验报告,加深编程问题的认识和理解。本次课程设计就是利用所学知识实现的,在设计中,我们遇到了很多问题,程

35、序的架构的设计,代码的编写等等,但是,通过利用网上查找信息、图书馆里的资料及老师的帮助下,让我们很快地完成了此次的课程设计。本次课程设计是利用C+开发一个小型的应用程序,该程序是一个雇员工资小程序,具有加入删除显示查询职工信息功能.它基本满足了界面友好,易于操作的要求,因此更利于用户操作方便,运行简易,并且速度更快内容更直接地达到用户所想要的效果。职员记录可以按工资排序存放,显示时每屏不超过20个记录,超过时分屏显示.增加记录修改功能,能选择修改用户的姓名,在修改或删除之前需要用户进一步确认,确认无误后再进行操作。在这个课程设计中,我学到了很多,最重要的就是明白了许多软件相关的好多知识,其次我

36、把这半个学期来学的知识慢慢的具体话,把一些琐碎的东西贯穿起来,做到了融会贯通的目的。最后,我很感谢同学们对我的关心和支持,更感谢老师对我们不厌其烦的教导。参考文献1刘丽.C+实战练习.机械工业出版社,20002刘瑞新,曹建春.Visual C+面向对象程序设计程.机械工业出版社,20043钱能.C+程序设计教程.清华大学出版社,1987,4李新.C+语言编程向导.清华大学出版社,16785马建,红沈,西挺.Visual C+程序设计与软件技术基础.中国水利水电出版社,20026钱能.C+程序设计教程.清华大学出版社,19997张岫.C+程序指导.机械工业出版社,18978王育坚.Visual C+程序基础教程.北京邮电大学出版社,20009郑莉,董渊 .C+语言程序设计.清华大学出版社,199810黄迪明.C+语言程序设计基础.电子工业出版社,187911徐孝凯.C+语言程序设计.清华大学出版社,200112吴访升.C+程序设计. 机械工业出版社,200013赵福生.C+语言程序设计基础.水利出版社,1990 15杜明.C+程序设计基础. 清华大学出版社,2002 16钱能.C+程序设计教程.清华大学出版社,1897 17艾德才.C+程序设计简明教程.中国水利水电出版社,200018于明等.Visual C+程序设计教程.海洋出版社,200118

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!