1、中南大学高级程序设计实践(C+) 课程设计报告设计题目 职工工资管理系统 指导老师 王晓丽 黎群辉 设 计 者 张 亦 弛 专 业 班 级 电 气 信 息 类 1224 设 计 日 期 2013.6.242013.7 目录一、课程设计的目的2二、课程设计的基本内容.2三、课程设计的基本要求.3四、软件整体规划和方案.4五、程序功能简介5六、调试结果.13七、软件特色与不足21八、遇到的问题21九、设计心得与总结22十、参考文献22十一、附录23中南大学信息科学与工程学院 电气信息类 1224 张亦弛- 1 -一、课程设计的目的本设计是课程面向对象编程(C+) 的一个关键实践环节。它是根据教学计
2、划的要求,在教师的指导下,对我们学生实施程序设计训练的必要过程,是对前期课堂学习内容的综合应用及其效果的检验和提高。其目的在于培养我们综合运用理论知识来分析和解决实际问题的能力、以及严谨的科学态度和良好的程序设计习惯。在课程设计中,要求我们能够遵循软件开发过程的基本规范,运用面向对象程序设计的方法,按照选定的课程设计题目要求,独自地完成设计、编写、调试和测试应用程序及编写文档的任务。(1)掌握 C+语言的程序设计方法; (2)理论联系实际,进一步提高学生的软件开发技术;(3)培养学生分析、解决问题的能力;(4)提高学生实践论文撰写能力。二、课程设计的基本要求1)本设计采用教师指导、学生自学和独
3、立编程操作方式,先由我们查阅与本设计有关的书籍和资料,利用 Visual C+ 6.0 设计环境与开发工具,在两周时间内,完成课程设计内容中的一个管理系统,具体要求如下:1、 独立思考:独立完成课程设计中各任务的设计和调试。2、 上机准备:每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。数据管理:管理系统中的数据可用数据库(如 Access 数据库)的形式保存,也可用普通文件(文本文件或二进制文件)的形式保存。 (本系统采用文本文件形式保存,可储存小型的数据,也就是说不会超过100 人的数据,超出会报已满无法执行)3、 程序要求:界面美观、可操作
4、性强、稳定性好。对系统所需完成的功能分析;使用 Visual C+编译器进行程序编译;提出系统的设计方案;对所设计源程序进行调试。2) 创新要求:在基本要求达到后,可进行创新设计。3) 课程设计论文编写要求:提交一份设计报告(即设计说明书)包括:设计任务的目的、任务、基本内容、总体设计方案、软件设计(各功能模块的流程图及详细的文字分析与说明) 、软件特色与不足、调试结果、设计心得与总结、参考资料等。内容不得少于设计说明书专用纸 20 页,书写要整洁、规范,装订成册。三、 课程设计的基本内容我所做内容是职工工资管理系统,基本内容如下:职工工资管理系统1、 基本要求:为方便管理职工工资,编写一个职
5、工工资管理系统软件。系统记录必须包括职工姓名、职工编号、基本工资、职务工资、岗位津贴、五险一金等。2、 基本管理功能:(1) 添加:增加一个职工信息到管理系统中。(2) 查询:可以根据姓名查找某人的相关信息,若找到则显示其信息。(3) 修改:在管理系统中修改一个职工的信息。(4) 保存:将所有职工的信息保存在一个文件中(数据库文件或普通的文本文件) 。(5) 读取:从文件中读取已保存了数据。(6) 删除:从管理系统中删除一条记录。(7) 恢复:能恢复被删除的记录。中南大学信息科学与工程学院 电气信息类 1224 张亦弛- 3 -(8) 统计:(A)计算各项工资平均工资及总工资 , (B)统计符
6、合指定条件( 如职工工资前三项之和在 3000 元以上、30002500 元、25001000 元)以内的工资职工人数及占总职工人数的百分比。(C)以表格形式打印全部职工工资信息表及平均工资(包括各项总的平均工资)。(9) 其他:可以根据自己的思路设计其他功能。四、 软件整体规划和方案1、总的设计任务(1)设计一个菜单驱动程序,包括 7 个菜单内容,输入 1-7 之间的任何一个数字,就可以进入相应的选择项目,并执行对应的程序。(2)输出的信息分别为:增加职工信息、查找职工信息、修改职工信息、打印全部职工信息、删除单一职工信息、统计、退出程序。(3)对职工信息按工号或姓名进行查询。该系统具有存贮
7、学生数据,按工号、姓名查询,按需要修改职工信息,列出职工工资和统计的功能(4)主要设计两个类,第一是职工类(用于统计职工基本信息) ,第二个是职工类的友元类,叫系统类(用于处理数据) ,以及菜单函数、主函数来实现各项选择功能,输出正确的运行结果。(5)运用所学知识(主要为函数、循环语句、类的定义、测试、封装、数据隐藏、 ) ,掌握面向对象程序设计的基本概念和基本方法,掌握 C+语言的基本语法和基本内容,并能运用 C+语言进行基本的面向对象程序设计,并且通过综合课程设计,提高学生的实践动手技能,培养学生独立分析分析问题和解决问题的能力。2、系统功能模块1、增加职工信息2、查找职工信息3、修改职工
8、信息4、职工工资列表5、删除职工信息6、统计7、退出程序3、功能的实现使用者根据页面菜单的显示,选择相应是项目并输入所需项目前的序号,按 enter 键 然后再根据提示,执行相应的操作,以达到功能的实现。4、总的程序流程图图:开始菜单修改信息工资列表删除信息退出增加信息查找信息统计信息结束程序五、 程序功能简介用户运行程序后进入系统主界面,在主界面用户可以输入所有职工的数据并保存到 date1.txt 与 date2txt 文件中,date1.txt 文件是 ASCII 文本文件,可以直接读取,即便修改也不会影响系统中的数据,因为这个文件只是一个表面文件。而 date2.txt 是真正存储数据
9、、处理数据的文件,这样做变使得数据变得安中南大学信息科学与工程学院 电气信息类 1224 张亦弛- 5 -全,外部无法修改。该系统运行时也可以读取文件中已有的学生数据。用户在保存数据的时候,如果保存位置没有文件则自动新建一个文件进行保存。但该系统同时只能对一个数据文件进行相关操作,不能同时打开多个数据文件,其类似于单用户操作系统。该系统中还存在“date9.txt”与 “date10.txt”这两个文件,这两个问价适用于判断是否添加新文件的判断(date10.txt)与储存计数器的文件(date9.txt) 。由于新版本的 c+库中没有 ios:nocreat 与 ios:noplace 两个
10、对文件的操作,所以用如下代码来代替: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;ib;if(b=Y|b=y)savefile();couta;coutei.name;break;case 2:co
11、utei.num;break;case 3:coutei.bs;break;case 4:coutei.ps;break;case 5:coutei.al;break;case 6:coutei.is;break;case 7:coutei.name;coutei.num;coutei.bs;coutei.ps;coutei.al;coutei.is;break;5、恢复函数恢复函数目的是为了使得误删的函数进行恢复操作。其工作流程类似删除函数,先在存储删除后的类对象数组中找到删掉的类数据。 (同样是 for 循环查找)找到后选择是否恢复,选择是,则会在数据文件的最后将已经删除的数据重新加进去。
12、if(b=1)en=fi;n+;savefile();cout#include#include#include#include“shenming.h“using namespace std;/void main()/xitong s;/s.build();/s.face();/void Pass()char UserName15;char Passward15;int i=1;coutUserName;while (strcmp(UserName,“张亦弛“)!=0)if(i=3) exit(0); /超过 3 次则登陆失败,退出系统i+;coutUserName;coutPassward;w
13、hile(strcmp(Passward,“)!=0)if(i=3)exit(0); /超过 3 次则登陆失败,退出系统i+;coutPassward;中南大学信息科学与工程学院 电气信息类 1224 张亦弛- 23 -cout#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;pr
14、ivate:string name;string num;float bs;float ps;float al;float is;float sum;第三个文件:函数定义文件(shenming.cpp )#include#include#include#include#include#include“shenming.h“using namespace std;void xitong:face() /switch 语句进行选择int a;dosystem(“cls“);couta;switch(a)case 1:add();break;case 2:search();break;case 3:
15、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.tx
16、t“,ios:out);n=0;outfile2n;infile.close();n+=1;ofstream outfile(“date10.txt“,ios:out);outfilep;face();ifstream infile(“date10.txt“,ios:in); /读取 n 的值,计数器的值infilen;infile.close();for(int i=0;iei.nameei.numei.bsei.psei.alei.is;infile1.close();中南大学信息科学与工程学院 电气信息类 1224 张亦弛- 27 -void xitong:savefile() /储存数据int i;fstream iofile(“date2.txt“,ios:out);for(i=0;ien.name;couten.num;couten.bs;couten.ps;couten.al;couten.is;couta;if(a=Y|a=y)addn();savefile();coutp;face();void xitong:displayall() readfile();fstream iofile(“date2.txt“,ios:in);coutei.nameei.numei.bsei.psei.alei.is;