




免费预览已结束,剩余37页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中南大学信息科学与工程学院 电气信息类1224 张亦弛中南大学高级程序设计实践(C+)课程设计报告设计题目 职工工资管理系统 指导老师 王晓丽 黎群辉 设计者 张亦弛 专业班级 电气信息类1224 设计日期 2013.6.242013.7 目录一、课程设计的目的.2二、课程设计的基本内容.2三、课程设计的基本要求.3四、软件整体规划和方案.4五、程序功能简介.5六、调试结果.13七、软件特色与不足.21八、遇到的问题.21九、设计心得与总结.22十、参考文献.22十一、附录.23一、课程设计的目的本设计是课程面向对象编程(C+)的一个关键实践环节。它是根据教学计划的要求,在教师的指导下,对我们学生实施程序设计训练的必要过程,是对前期课堂学习内容的综合应用及其效果的检验和提高。其目的在于培养我们综合运用理论知识来分析和解决实际问题的能力、以及严谨的科学态度和良好的程序设计习惯。在课程设计中,要求我们能够遵循软件开发过程的基本规范,运用面向对象程序设计的方法,按照选定的课程设计题目要求,独自地完成设计、编写、调试和测试应用程序及编写文档的任务。(1)掌握C+语言的程序设计方法; (2)理论联系实际,进一步提高学生的软件开发技术;(3)培养学生分析、解决问题的能力;(4)提高学生实践论文撰写能力。二、课程设计的基本要求1)本设计采用教师指导、学生自学和独立编程操作方式,先由我们查阅与本设计有关的书籍和资料,利用Visual C+ 6.0设计环境与开发工具,在两周时间内,完成课程设计内容中的一个管理系统,具体要求如下:1、 独立思考:独立完成课程设计中各任务的设计和调试。2、 上机准备:每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。数据管理:管理系统中的数据可用数据库(如Access数据库)的形式保存,也可用普通文件(文本文件或二进制文件)的形式保存。(本系统采用文本文件形式保存,可储存小型的数据,也就是说不会超过100人的数据,超出会报已满无法执行)3、 程序要求:界面美观、可操作性强、稳定性好。对系统所需完成的功能分析;使用Visual C+编译器进行程序编译; 提出系统的设计方案; 对所设计源程序进行调试。2) 创新要求:在基本要求达到后,可进行创新设计。3) 课程设计论文编写要求: 提交一份设计报告(即设计说明书)包括:设计任务的目的、任务、基本内容、总体设计方案、软件设计(各功能模块的流程图及详细的文字分析与说明)、软件特色与不足、调试结果、设计心得与总结、参考资料等。内容不得少于设计说明书专用纸20页,书写要整洁、规范,装订成册。三、 课程设计的基本内容我所做内容是职工工资管理系统,基本内容如下:职工工资管理系统1、 基本要求:为方便管理职工工资,编写一个职工工资管理系统软件。系统记录必须包括职工姓名、职工编号、基本工资、职务工资、岗位津贴、五险一金等。2、 基本管理功能:(1) 添加:增加一个职工信息到管理系统中。(2) 查询:可以根据姓名查找某人的相关信息,若找到则显示其信息。(3) 修改:在管理系统中修改一个职工的信息。(4) 保存:将所有职工的信息保存在一个文件中(数据库文件或普通的文本文件)。(5) 读取:从文件中读取已保存了数据。(6) 删除:从管理系统中删除一条记录。(7) 恢复:能恢复被删除的记录。(8) 统计:(A)计算各项工资平均工资及总工资, (B)统计符合指定条件(如职工工资前三项之和在3000元以上、30002500元、25001000元)以内的工资职工人数及占总职工人数的百分比。(C)以表格形式打印全部职工工资信息表及平均工资(包括各项总的平均工资)。(9) 其他:可以根据自己的思路设计其他功能。四、 软件整体规划和方案1、总的设计任务(1)设计一个菜单驱动程序,包括7个菜单内容,输入1-7之间的任何一个数字,就可以进入相应的选择项目,并执行对应的程序。(2)输出的信息分别为:增加职工信息、查找职工信息、修改职工信息、打印全部职工信息、删除单一职工信息、统计、退出程序。(3)对职工信息按工号或姓名进行查询。该系统具有存贮学生数据,按工号、姓名查询,按需要修改职工信息,列出职工工资和统计的功能(4)主要设计两个类,第一是职工类(用于统计职工基本信息),第二个是职工类的友元类,叫系统类(用于处理数据),以及菜单函数、主函数来实现各项选择功能,输出正确的运行结果。(5)运用所学知识(主要为函数、循环语句、类的定义、测试、封装、数据隐藏、),掌握面向对象程序设计的基本概念和基本方法,掌握 C+语言的基本语法和基本内容,并能运用C+语言进行基本的面向对象程序设计,并且通过综合课程设计,提高学生的实践动手技能,培养学生独立分析分析问题和解决问题的能力。2、系统功能模块1、增加职工信息2、查找职工信息3、修改职工信息4、职工工资列表5、删除职工信息6、统计7、退出程序3、功能的实现使用者根据页面菜单的显示,选择相应是项目并输入所需项目前的序号,按enter键 然后再根据提示,执行相应的操作,以达到功能的实现。4、总的程序流程图图:开始菜单修改信息工资列表删除信息退出增加信息查找信息统计信息结束程序五、 程序功能简介用户运行程序后进入系统主界面,在主界面用户可以输入所有职工的数据并保存到date1.txt与date2.txt文件中,date1.txt文件是ASCII文本文件,可以直接读取,即便修改也不会影响系统中的数据,因为这个文件只是一个表面文件。而date2.txt是真正存储数据、处理数据的文件,这样做变使得数据变得安全,外部无法修改。该系统运行时也可以读取文件中已有的学生数据。用户在保存数据的时候,如果保存位置没有文件则自动新建一个文件进行保存。但该系统同时只能对一个数据文件进行相关操作,不能同时打开多个数据文件,其类似于单用户操作系统。该系统中还存在“date9.txt”与 “date10.txt”这两个文件,这两个问价适用于判断是否添加新文件的判断(date10.txt)与储存计数器的文件(date9.txt)。由于新版本的c+库中没有ios:nocreat与ios:noplace两个对文件的操作,所以用如下代码来代替:void xitong:build () /build是用于文件建立的函数fstream fs(date9.txt, ios_base:in);/试图打开文件if (!fs)fs.close();fs.open(date9.txt, ios_base:out);/ 新建文件fs.close();ofstream outfile2(date10.txt,ios:out);n=0;outfile2k; /输入名字 for(i=0;in;i+)if(k=) /查询是否有符合的项b=1;break;if(b=1)displayone(i);break; /displayone(i)用来显示搜索到的数据所有信息elsecout查无此人,请先输入数据endl;break;开始读取文件输入选项Case 1输入名字k循环变量i赋初值0ini+K=Case2输入工号d循环变量i赋初值0ini+D=ei.num结束3、 删除函数:删除函数用来删除不需要的数据,流程图附在后面。执行删除操作时 ,首先读取文件,然后开启选择项switch语句,输入选项,选择通过姓名还是通过工号来查询所要删除的信息。例如:选择名字查询,则先输入名字然后判断器先定为0之后用for循环语句对存在内存中的对象数组中存储姓名的那一项进行比对,找到符合项之后,判断器会记为1,之后跳出循环。然后输出这个人的信息,并输出一行字“是否确定删除?(y/n)”。如果选择y,则会执行保存函数,将删除后的重新写入文件中。如果选择n,则不会执行保存函数,所以不会保存文件。因为每次调用函数时都是通过先读文件,在对读入的数据进行处理,所以对文件没有影响。if(z=1)cout此人信息如下:endl;displayone(i);fx=ei; /将要删除的信息存入临时的储存器当中以便恢复时使用。x+;for(int j=i;j(n-1);j+) /将i之后的数据项前一个赋值,因此便删除了查到的数据ej=ej+1;n-;/计数器的值减一cout确定修改?(y/n)b;if(b=Y|b=y)savefile(); cout文件修改完成endl;elsecout文件未修改endl;elsecout查无此人endl;以上为实现删除功能的部分代码4、修改函数修改函数目的是为了对数据进行修改,如果输入的数据有一些小问题的话,可以通过这个函数对数据进行修改。过程如下:首先选择修改数据,第二执行读取文件的操作,将文件读入内存中去。读入内存后也是通过for循环语句来查找对象,找到之后显示存在并与此同时输出该人的信息。与上面删除与查找类似,先将符合的对项找到,找不到则输出“查无此人”找到之后进行修改,修改分为1、修改姓名。2、修改工号。3、修改基本工资。4、修改职务工资。5、修改岗位津贴。6、修改五险一金。7、全部修改。执行前六个时分别修改一项,执行第七个时可以分别对其重新输入修改。Void change1()int a;cout请选择那一线进行修改endl;coutsetw(20)1、姓名setw(20)2、工号setw(20)3、基本工资endl;coutsetw(20)4、职务工资setw(20)5、岗位津贴setw(20)6、五险一金endl;coutsetw(20)7、全部修改a;cout请输入正确选项endl;switch(a) case 1:cout输?入?新?名?字?;break; case 2:cout输入新工号ei.num;break; case 3:cout输入新基本工资ei.bs;break; case 4:cout输入新职务工资ei.ps;break; case 5:cout输入新岗位津贴ei.al;break; case 6:cout输入新五险一金ei.is;break; case 7:cout输入新名字;cout输入新工号ei.num;cout输入新基本工资ei.bs;cout输入新职务工资ei.ps; cout输入新岗位津贴ei.al; cout输入新五险一金ei.is;break;5、 恢复函数恢复函数目的是为了使得误删的函数进行恢复操作。其工作流程类似删除函数,先在存储删除后的类对象数组中找到删掉的类数据。(同样是for循环查找)找到后选择是否恢复,选择是,则会在数据文件的最后将已经删除的数据重新加进去。if(b=1)en=fi;n+;savefile();cout已重新添加endl;for(i=0;i(x-1);i+)fi=fi+1;x-;break;六、 调试结果首先进行界面的调试结果如下图所示:非常成功 !按任意键进入之后输入管理员的姓名与密码之后进入,现在我的姓名是“张亦弛”密码是“0909122409”第二,进行添加函数的调试。例如:我添加一个数据,姓名:郭启祥,工号:0909122403,基本工资987,职务工资654,岗位津贴321,五险一金963,然后再敲回车便可看到添加成功的提示。第三,进行显示函数的调试,直接写5然后敲回车,可以发现以前有两个村过的数据,现在新增数据郭启祥已经加入最后一列当中去了。并且也间接证明我的函数没有问题。很成功。第4、 进行查找函数的调试。例如:查找郭启祥,用名字查找方式。那么郭启祥的信息就全部输出了!成功!第5、 进行删除函数的调试,例如:删除郭启祥的所有信息,用工号查找的方式。表明郭启祥的数据已经删除。第6、 进行恢复函数的调试,恢复郭启祥的数据,用姓名查找的方式。表明数据已经恢复成功!第7、 修改函数的调试,例如:将郭启祥的基本工资改为1000成功!开始读取文件输入选项Case 1输入名字k循环变量i赋初值0ini+K=Case2输入工号d循环变量i赋初值0ini+D=ei.num结束fx=ei;ej=ej+1;是否保存保存函数fx=ei;ej=ej+1;是否保存保存函数删除函数的流程图开始读取文件输入选项Case 1输入名字k循环变量i赋初值0ini+K=Case2输入工号d循环变量i赋初值0ini+D=ei.num结束fx=ei;ej=ej+1;选择修改项保存函数fx=ei;ej=ej+1;是否保存保存函数修改函数的流程图七、 软件的特色与不足1、 特色:(1)主界面用系统函数改变了界面颜色,并在每次执行完每个操作时会进行清屏等。(2)系统的保密工作做得很好,只有管理员有权限修改程序,而且表面文件与数据文件分开来,使得重要数据得到隐藏。(3)每个操作的执行都会进行文件的保存,避免了因为特殊情况而导致的内存中数据丢失使得文件中的信息丢失。2、 不足之处:(1)有最大存储值100,超过这个值的时候不会读入新增的数据。(2)没有链接数据库,存储是在文本文档当中存的,数据较多时读取与操作是个比较麻烦的事情。(3)程序没有与可视化连接在一起,所以界面有点单一单调。3、 改进方面:(1)桥接数据库,十七能存储大容量的数据。(2)学习可视化,将界面做的更加人性化。八、 遇到的问题1、语法错误经常性忘记加“;”使得每次编译都进行的很慢。2、 逻辑错误()文件的写入与读出,刚开始对文件的操作不太明白,一致不能很好的操作文件,其中最大的问题是对已存在的文件读取问题,通过“显示全部学生成绩” 将数据从文件中读取,可是在使用过程中总是出现读出错误,出现乱码。()内存的分配问题,这也是困惑了我好久的问题。对于我们初学者来说对内存的分配和释放问题是比较抽象和模糊的难题,本来使用链表的方式存储数据,然而待到排序时出现了交换数据困难的问题,以及分配空间繁琐释放空间不及时的问题,造成空间浪费使得程序运行效率低的问题。因此最后采用了顺序存储记录的方式,这样就能改变前述问题。九、 设计心得与总结本次设计我选择的题目是职工工资管理系统。因为事先的计划非常明确,所以我们在完成这个设计的过程也是比较顺利的。在系统分析和设计的部分仍然花了比较多的时间。模块设计部分因为涉及功能的实现,要从抽象的设计转化成实际的代码,因此对于某项功能的实现方法都思考得比较详尽。加上在开发系统之前,我阅读很多与本系统有相关内容的书籍以做参考,使得此次系统编写能顺利进行。由于班里每个人都需要做一份设计,所以我们经常互相交流。在交流的时候经常能够互相提出更好的建议。经过对职工信息管理系统的分析与编写,我得到了很大的收获。自主学习的必要性更是解决问题的基础。这次设计使我重温了以前学过的各科知识,让我对C编程有了更深刻的认识。每一个功能模块经过调查后后,各个功能逐渐显露出来,然后,反复探讨,验证这项功能是否有存在的必要,是否可以改进得更好。在这样的前提下,最后顺利完成了这份设计。 这次C系统设计作业,提升了我分析问题的能力和思考问题的逻辑能力,更明白实际调研的重要性。从这次设计学到的东西,相信会对我们日后的学习工作起到很大的指导作用。十、 参考文献c+程序设计 作者:谭浩强 出版社:清华大学出版社c+大学教程 作者:H.M.Deitel P.J.Deitel 出版社:电子工业出版社十一、 附录第一个文件:主函数文件(mainhanshu)#include#include#include#include#includeshenming.husing namespace std;/void main()/xitong s;/s.build();/s.face();/void Pass() char UserName15; char Passward15; int i=1; cout endl; /cout*n; coutn 为保护职工成绩信息,只有管理员才可以进行管理! endl; coutn 管理员名和登陆密码都只有3次机会,如果超过将自动退出系统! endl; / cout*n; cout endl; coutUserName; while (strcmp(UserName,张亦弛)!=0) if(i=3) exit(0); /超过3次则登陆失败,退出系统 i+; coutUserName; coutPassward; while(strcmp(Passward,0909122409)!=0) if(i=3) exit(0); /超过3次则登陆失败,退出系统 i+; coutn密码输入错误!请重新输入:Passward; coutntt欢迎管理员的到来!nendl;void editor() cout-; coutnnttthe curriculum design about Central South Univercity ; coutnnttfrom the College of Information Science and Engineering ; coutnnttMade By Lich Zhang; coutnnttMy ID-number 0909122409; coutnntt2013 Juneendl; cout-endl;int main(void) system(color F1 ); editor(); system(PAUSE); system(CLS); Pass(); xitong s;s.build();s.face();第二个文件:申明文件(shenming.h)#include#include#includeusing namespace std;class xitong;class Employeepublic:/string getname()return name/double getnum()return num/float getbs()return bs/float geris()return isfriend xitong;private:string name;string num;float bs;float ps;float al;float is;float sum;第三个文件:函数定义文件(shenming.cpp)#include#include#include#include#include#includeshenming.husing namespace std;void xitong:face() /switch语句进行选择int a;dosystem(cls);coutendl;coutendl;cout endl;cout 欢迎使用职工信息管理系统 endl;cout endl;cout 【主菜单】 endl;cout endl;cout 1.添加职工数据 endl;cout 2.查找职工信息 endl;cout 3.删除职工信息 endl;cout 4.修改职工信息 endl;cout 5.显示所有职工信息 endl;cout 6.恢复已删除数据 endl;cout 7.职工信息统计 endl;cout 8.退出系统 endl;cout endl;cout 作者: 张亦弛 endl;cout a;switch(a)case 1:add();break;case 2:search();break;case 3:delet();break;case 4:change();break;case 5:displayall();break;case 6:recover();break;case 7:count();break;case 8:exit(1);while(a!=8);void xitong:build () /完成fstream fs(date9.txt, ios_base:in);/试图打开文件if (!fs)fs.close();fs.open(date9.txt, ios_base:out);/ 新建文件fs.close();ofstream outfile2(date10.txt,ios:out);n=0;outfile2n;infile.close();n+=1;ofstream outfile(date10.txt,ios:out);outfilen;outfile.close();void xitong:readfile() /读取文件ifstream infile1(date2.txt,ios:in);if(!infile1)cerropen errorrendl;cout按任意键加回车继续p;face();ifstream infile(date10.txt,ios:in); /读取n的值,计数器的值infilen;infile.close();for(int i=0;ei.numei.bsei.psei.alei.is;infile1.close();void xitong:savefile() /储存数据int i;fstream iofile(date2.txt,ios:out);for(i=0;in;i+)iofilesetw(10)setw(12)ei.numsetw(10)ei.bssetw(10)ei.pssetw(10)ei.alsetw(10)ei.isendl; /书写二进制文件ofstream ofile(date1.txt,ios:out); /书写表面文件ofilesetw(10)姓名setw(12)工号setw(10)基本工资setw(10)职务工资setw(10) 岗位津贴setw(10)五险一金endl; for(i=0;in;i+) ofilesetw(10)setw(12)ei.numsetw(10)ei.bssetw(10)ei.pssetw(10)ei.alsetw(10)ei.isendl;ofileendl;ofileendl;ofile.close();iofile.close();ofstream outfile(date10.txt,ios:out);/存储数据计数器noutfilen;outfile.close(); void xitong:add() /完成readfile();cout输入名字:;cout输入工号:en.num;cout输入基本工资:en.bs;cout输入职务工资:en.ps;cout输入岗位津贴:en.al;cout输入五险一金:en.is;cout确定添加么?(Y/N)a;if(a=Y|a=y)addn();savefile();coutt添加完成!endl;system(PAUSE);face();elsecout按任意键加回车继续p;face();void xitong:displayall() readfile();fstream iofile(date2.txt,ios:in);coutendl;coutendl;coutsetw(10)姓名setw(12)工号setw(10)基本工资setw(10)职务工资setw(10)岗位津贴setw(10)五险一金endl;for(int i=0;ei.numei.bsei.psei.alei.is;coutsetw(10)setw(12)ei.numsetw(10)ei.bssetw(10)ei.pssetw(10)ei.alsetw(10)ei.isendl;coutendl;coutendl;iofile.close();cout按任意键加回车继续p;face();void xitong:displayone(int i) coutendl;coutendl;couts
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年蚌埠市晨光小学编外临聘教师招聘1人备考考试题库附答案解析
- 2025浙江宁波贵驷街道招聘编外工作人员5人备考考试题库附答案解析
- 2025智新科技股份有限公司招聘考试参考试题及答案解析
- 2025北京华文学院招聘4人笔试备考题库及答案解析
- 2025广东阳江市江城区招聘城镇公益性岗位和乡村公益性岗位备考考试题库附答案解析
- 2025福建莆田市秀屿区上塘珠宝城实业有限公司招聘编外工作人员3人备考练习试题及答案解析
- 2026建信基金管理有限责任公司校园招聘9人备考考试题库附答案解析
- 2025浙江丽水经济技术开发区实业发展集团有限公司下属三级公司招聘2人备考练习题库及答案解析
- 2025中国煤炭开发有限责任公司招聘4人备考考试题库附答案解析
- 产权制度改革方向-洞察及研究
- 《第六届江苏技能状元大赛技术文件-健康与社会照护》
- 客户拜访技巧讲课件
- 测绘安全课件
- 新生儿发热及护理措施
- 小学python竞赛试题及答案
- 医学实验室安全培训
- 工贸企业安全生产标准化诊断报告编制指南
- 下浮率合同协议
- 2025年自考《艺术概论》考试复习题库(含答案)
- 人工智能深度学习概念与应用测试卷
- 小学道德与法治理论培训
评论
0/150
提交评论