南京理工大学c++课程设计,工资管理.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
南京理工大学c课程设计,工资管理

C++课程设计报告 姓名 王镇窑 学号 班级 任课教师 时间 实验题目 工资管理 评定难易级别 A 实验报告成绩 题目名称:工资管理 难度等级:A级 课程设计要求: 用类的形式改写程序,将程序中工资数据用链表的形式存放,定义一个链表类,封装主要操作函数。 显示,修改,删除数据项时大小写通用。 工资数据按工资值的大小进行排序存放。 修改、删除数据前增加提示信息,用户确认后才能进一步操作,否则操作取消。 增加程序的文件输入输出功能,在执行程序中首先将工资数据从文件中读出再进行管理,在程序结束时能将工资数据保存在原文件中。 四.程序结构框图 功能示意图: 主函数具体流程: 五.程序设计思想 整个程序是我和吴龙生同学合作完成,我们先完成了主函数的编写,再把程序各个功能的实现交由类函数实现。一共有1.添加工资记录。2.显示工资记录。3.根据姓名查询工资记录。4.根据姓名删除工资记录。5.根据姓名修改工资记录,再加上从文件写入内存,从内存写入文件,七个主要功能函数,我们把这些函数分工编写,再整合整个程序。 用类改编程序,我们建立了一个数据类(用于存放姓名和工资),一个结点类(存放数据类指针和下一个结点的指针),一个链表类(存放链表的头指针和结点的个数,同时封装了对链表操作的所有函数)。虽然各个程序有不同的具体要求,但链表的操作大同小异,所不同的只是结点那部分的数据类型不同。所以根据这一特点,可以将链表定义成一个类,涉及结点数据的输入、输出、复制等。在结点中涉及较多的是具体数据的形式,所以将具体的数据形式定义成数据类型的指针,所有针对数据的操作都转换为对指针的操作,在数据类中再具体实现。这样,结点的操作也可以像链表一样通用。最后,再将数据具体形式定义成一个类,涉及数据的输入格式、输出形式、比较内容的大小等。那么,针对不同的数据管理,只要改动这部分就可以了。这样就实现程序的结构化了! 主函数,开始运行先建立一个链表类类对象,将文件中的数据读到内存中。然后再输出整个主菜单,键入相应的命令执行相应的链表类函数实现功能。最后再把修改后的链表中的数据写入文件中,退出。 六.程序重要功能的实现方法 1.添加工作记录,工资数据按工资值的大小进行排序存放。主菜单中添加工资记录的功能会先调用链表类Clist的成员函数voidAddRecord()。该函数会生成一个数据类成员和一个结点类成员,通过键盘输入员工的姓名和工资,并把数据赋值给数据类成员把数据类成员的指针赋给结点类成员,然后再调用Clist的成员函数voidinlist(CNode*node0),并把新生成的结点类指针传递过去,该函数会在原有链表中通过工资数据的比较,按工资大小顺序给该结点找到位置并插入到原有的链表中(如果链表不存在即运行该函数时头指针值为0,则该结点就赋值给链表类成员的头指针,作为链表中的唯一结点存在。)由于一开始每一个结点都是由小到大插入的,所以该链表最终工资数据一定是按工资值的大小进行排序存放的。 链表类的增加工资记录的函数: voidAddRecord() {CNode*pnode; CSalary*psal; charname0[20]; doublesalary0; cout请输入姓名(按0结束):; cinname0; while(strcmp(name0,0)) {cout请输入工资:; cinsalary0; cin.ignore(); psal=newCSalary; psal-SetSalary(name0,salary0); pnode=newCNode; pnode-InputDate(psal); inlist(pnode); cout请输入姓名(按0结束):; cinname0; } coutendlendl; } 链表类的按照工资大小插入节点的函数 voidinlist(CNode*node0)//按照工资大小插入节点的类函数 {CNode*p0; if(phead==0) {phead=node0; n++; } else {CNode*p0,*p1; p0=phead; p1=phead-pnext; if(node0-pdata-getsalary()=phead-pdata-getsalary()) {node0-pnext=phead; phead=node0; } else {for(inti=0;i(n-1);i++) {if((node0-pdata-getsalary()p0-pdata-getsalary())(node0-pdata-getsalary()=p1-pdata

文档评论(0)

celkhn5460 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档