面向对象程序设计课程设计-高校工资管理系统.doc_第1页
面向对象程序设计课程设计-高校工资管理系统.doc_第2页
面向对象程序设计课程设计-高校工资管理系统.doc_第3页
面向对象程序设计课程设计-高校工资管理系统.doc_第4页
面向对象程序设计课程设计-高校工资管理系统.doc_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课 程 设 计 报 告课程名称 面向对象程序设计 课题名称 高校工资管理系统 专 业 计算机科学与技术 班 级 1202 学 号 34 姓 名 指导教师 2013年 12 月 12 日湖南工程学院课 程 设 计 任 务 书课程名称 面向对象程序设计 课 题 高校工资管理系统 专业班级 计算机科学与技术1202 学生姓名 学 号 34 指导老师 审 批 任务书下达日期 2013 年 12 月 12 日任务完成日期 2014 年 01 月 06 日高校工资管理系统 (一)、课程设计题目:高校工资管理系统(二)、目的与要求: 1、目的: (1)要求学生达到熟练掌握C+语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。 2、基本要求: (1)要求利用面向对象的方法以及C+的编程思想来完成系统的设计; (2)要求在设计的过程中,建立清晰的类层次; (3)在系统中至少要定义四个类,每个类中要有各自的属性和方法; (4)在系统的设计中,至少要用到面向对象的一种机制。 3、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。 4、写出设计说明书 (三)、设计方法和基本原理: 1、问题描述(功能要求): 现一高校有五类职工:教师,实验员,行政人员,教师兼职实验员,行政人员兼职教师。为了实现工资发放的自动功能,现要求编写程序来自动完成此功能。同时注意生成的相关数据结果以文件方式存放在硬盘中。程序应具备从键盘录入,文件的可继续录入,任意职工的工资查询(可由职工编号和职工姓名来实现),如若有职工由于工作调动,则可进行相对应的删除动作。相关信息:每一学期将学校职工的本学期任职情况及上学期工作的相关情况输入计算机,则本学期职工的月工资按程序处理后的结果发放,其中职工的工资计算方法如下:其中工资的基本构成如下: 教师: 基本工资+课时费; 实验员: 基本工资+实验室补助; 行政人员: 基本工资+行政补贴; 教师兼职实验员: 基本工资+课时费+实验室补助; 行政人员兼职教师:基本工资+行政补贴+课时费;其中:(1)课时费:教师每一学期的基本工作量为120,实验员每学期基本工作量为70,行政人员没有基本工作量,每节课时费为20元;课时费=(上学期工作量-基本工作量)*20; 注意:如果上学期基本工作量没完成,则其(上学期工作量-基本工作量)*20为负值。 (2)基本工资:教师800元,实验员650元,行政人员750元。 (3)行政补贴:250元。 (4)实验室补助:150元。2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: (1)写出需求分析(做什么);(2)分析系统中的各个实体之间的关系及其属性和行为; (3)根据问题描述,设计系统的类层次; (4)完成类层次中各个类的描述(包括属性和方法); (5)完成类中各个成员函数的定义; (6)用户界面的设计; (7)分析系统功能模块(系统流程图);(8)代码编写 ,功能调试;(9)完成系统总结报告以及系统使用说明书。目 录1.系统需求分析1.1用户需求.11.2系统拟实现的功能.12.总体设计2.1系统功能分析.22.2系统功能模块图.33.详细设计3.1程序模块.53.2类的层次图.63.3功能模块实现.74.系统调试4.1进入主页面.104.2进入信息录入模块.114.3进入信息查询模块.134.4进入信息删除模块.155.结果分析5.1设计特点.165.2设计不足.166.总结6.1设计总结.177.附录7.1头文件.187.2主函数.321. 系统需求分析1.1用户需求 现一高校有五类职工:教师,实验员,行政人员,教师兼职实验员,行政人员兼职教师。为了实现工资发放的自动功能,现要求编写程序来自动完成此功能。同时注意生成的相关数据结果以文件方式存放在硬盘中。程序应具备从键盘录入,文件的可继续录入,任意职工的工资查询(可由职工编号和职工姓名来实现),如若有职工由于工作调动,则可进行相对应的删除动作。 1.2系统拟实现的功能 (1)本系统显示这样的主菜单: 1.信息录入 2.信息查询 3.信息删除 4.退出 (2)进入信息输入功能后,显示录入菜单: 1.教师录入 2.实验员录入 3.行政人员录入 4.教师兼职实验员录入 5.行政人员兼职教师录入 6.退出录入 (3)进入信息查询功能后,显示查询菜单: 1.教师查询 2.实验员查询 3.行政人员查询 4.教师兼职实验员查询 5.行政人员兼职教师查询 6.退出查询 (4)进入信息删除功能后,显示删除菜单: 1.教师删除 2.实验员删除 3.行政人员删除 4.教师兼职实验员删除 5.行政人员兼职教师删除 6.退出删除2. 总体设计2.1系统功能分析 (1)本程序采用的是类、继承、多态及文件来处理职工的所有基本信息。 (2)程序模块组成: a.包含的库函数有:#include iostream #include fstream.h #include stdlib.h #include string.h 其中#include fstream.h是 文件流的头文件,ifstream 和ofstream表示输入和输出文件流。 b.包含的函数有: 主函数:int main() 菜单函数:void show1()(录入菜单函数) void show2()(查询菜单函数) void show3()(删除菜单函数) void show4()(主菜单函数) 信息录入函数:void jiaoshiluru()(教师录入函数) void shiyanyuanluru()(实验员录入函数) void managerluru()(行政人员录入函数) void jianzhi1luru()(教师兼职实验员录入函数) void jianzhi2luru()(行政人员兼职教师录入函数) 信息查询函数:void jiaoshichaxun()(教师查询函数) void shiyanyuanchaxun()(实验员查询函数) void managerchaxun()(行政人员查询函数) void jianzhi1chaxun()(教师兼职实验员查询函数) void jianzhi2chaxun()(行政人员兼职教师查询函数) 删除信息函数:void jiaoshishanchu()(教师删除函数) void shiyanyuanshanchu()(实验员删除函数) void managershanchu()(行政人员删除函数) void jianzhi1shanchu()(教师兼职实验员删除函数) void jianzhi2shanchu()(行政人员兼职教师删除函数) 包含的类: class Employee() class Teacher() class Shiyanyuan() class Manager() classJianzhi1() class Jianzhi2()22系统功能模块图 (1)主菜单: 高校工资管理系统信息录入信息查询信息删除按编号查询按姓名查询 图2.1主菜单功能模块图 信息录入 教师录入 实验员录入 行政人员录入 教师兼职实验员录入 行政人员兼职教师录入 (2)录入功能: 图2.2信息录入功能模块图 (3)查询功能:信息查询 教师查询 实验员查询 行政人员查询 教师兼职实验员查询 行政人员兼职教师查询 图2.3信息查询功能模块图 (4)删除功能:信息删除 教师删除 实验员删除 行政人员删除 教师兼职实验员删除 行政人员兼职教师删除 图2.4信息删除功能模块图3. 详细设计3.1程序模块(1)程序模块组成: 主函数:int main() 菜单函数:void show1()(录入菜单函数) void show2()(查询菜单函数) void show3()(删除菜单函数) void show4()(主菜单函数) 信息录入函数:void jiaoshiluru()(教师录入函数) void shiyanyuanluru()(实验员录入函数) void managerluru()(行政人员录入函数) void jianzhi1luru()(教师兼职实验员录入函数) void jianzhi2luru()(行政人员兼职教师录入函数) 信息查询函数:void jiaoshichaxun()(教师查询函数) void shiyanyuanchaxun()(实验员查询函数) void managerchaxun()(行政人员查询函数) void jianzhi1chaxun()(教师兼职实验员查询函数) void jianzhi2chaxun()(行政人员兼职教师查询函数) 删除信息函数:void jiaoshishanchu()(教师删除函数) void shiyanyuanshanchu()(实验员删除函数) void managershanchu()(行政人员删除函数) void jianzhi1shanchu()(教师兼职实验员删除函数) void jianzhi2shanchu()(行政人员兼职教师删除函数)(2) 各函数的主要功能: a.主函数:主要用于对其他函数的调用,采用for循环,使用多分支语句。 b.菜单函数:show1()是录入菜单函数,显示各类职工的录入;show2()是查询菜单函数,显示各类职工的查询;show3()是删除菜单函数,显示各类职工的删除;show4()是主菜单函数,显示登录的页面。 c.信息录入函数:使用for和多分支语句,调用类的成员函数,实现各类职 工信息的录入,并读取到磁盘里,形成文本文件,可从文本文件中查看录入的职 工信息。 d.信息查询函数:使用for和多分支语句,调用类的成员函数,实现各类职 工信息的查询,并从磁盘里读取,显示在屏幕上。 e.信息删除函数:使用for和多分支语句,调用类的成员函数,实现各类职 工信息的删除,删除磁盘里用户需要删除的数据。 3.2类层次图 Employee+num:int+name:char+display():void Manager+score:int+butie:int+Manager(s:int=750,b:int=250)+display1():void+managerluru():void+managerchaxun():void+managershanchu():void Teacher+score:int+time:int+Teacher(s:int=800)+display1():void+jiaoshiluru():void+jiaoshichaxun():void+jiaoshishanchu():void Shiyanyuan+score:int+buzhu:int+Shiyanyuan(s:int=650,b:int=150)+display1():void+shiyanyuanluru():void+shiyanyuanchaxun():void+shiyanyuanshanchu():void Jianzhi2+Jianzhi1(s:int=750,b:int=250)+display1():void+jianzhi2luru():void+jianzhi2chaxun():void+jianzhi2shanchu():void Jianzhi1+Jianzhi1(s:int=800,b:int=150)+display1():void+jianzhi1luru():void+jianzhi1chaxun():void+jianzhi1shanchu():void 图3.1类层次图 开始输入操作选择c 信息查询 c=2 信息录入 c=1 信息删除 c=3 退出 c=4 其他他输入错误3.3功能模块实现 (1)主菜单函数 图3.2主菜单函数实现 输入操作选择c教师录入 c=1实验员录入 c=2行政人员录入 c=3教师兼职实验员录入 c=4行政人员兼职教师录入 c=5 c=6退出录入 (2)信息录入函数 图3.3信息录入函数实现 (3)信息查询函数 输入操作选择c教师查询 c=1实验员查询 c=2行政人员查询 c=3教师兼职实验员查询 c=4行政人员兼职教师查询 c=5 c=6退出查询 图3.4信息查询函数实现 (4)信息删除函数 输入操作选择c教师删除 c=1实验员删除 c=2行政人员删除 c=3教师兼职实验员删除 c=4行政人员兼职教师删除 c=5 c=6退出删除 图3.5信息删除函数实现4. 系统调试 4.1进入主页面,如下图所示: 图4.1主菜单 4.2进入信息录入模块,出现下图: 图4.2录入模块 图4.3教师录入 图4.4实验员录入 图4.5行政人员录入 图4.6教师兼职实验员录入 图4.7行政人员兼职教师录入4.3进入信息查询模块,出现下图: 图4.8信息查询模块 图4.9按编号查询教师 图4.10按姓名查询教师 图4.11按编号查询实验员 图4.12按姓名查询实验员 图4.13 按编号查询行政人员 图4.14按姓名查询行政人员 图4.15按编号查询教师兼职实验员 图4.16按姓名查询教师兼职实验员 图4.17按编号查询行政人员兼职教师 图4.18按姓名查询行政人员兼职教师4.4进入信息删除模块,出现下图: 图4.19信息删除模块 图4.20教师删除 图4.21实验员删除 图4.22行政人员删除 图4.23教师兼职实验员删除 图4.24行政人员兼职教师删除5. 结果分析 5.1设计特点:在输入信息的时候先选择你要输入的职工类型,然后有提示输入职工的个数, 逐个输入即可,在输入过程中,系统会自动将用户输入的信息存储到相应的文件中。本系统符合设计基本要求,能够实现职工信息的录入、查询、删除等功能,可以从文本文件中查看录入的职工信息,比较方便。 5.2设计不足:a.各职工的最大人数是固定的,如果超过最大数,需要修改程序里数据,给用户带来麻烦,增加了维护系统成本。有必要把职工信息存储改为动态申请内存,就不会出现问题。b.系统不能分辨输入的职工信息相同的情况,在查询职工信息时,会输出职工信息相同数据。c.此系统没有修改用户信息的功能,只能查询职工信息和删除职工信息。6. 总结6.1设计总结(1)通过这次对高校工资管理系统的设计,我体会到面向对象程序设计的特点:多态性、封装性、继承性,并掌握了一定的编程技巧,拓展了思维,提升了自己解决实际问题的能力。虽然对文件和多态的理解还很肤浅,但是我学到了很多平时学不到的东西。通过这次课程设计,深深体会到我对很多的专业知识还不了解,还有许多知识需要掌握,在以后的学习中,我需要打好基础,认真对待不同的问题,学会从不同的角度看待问题,争取做得更好。同时也把我在学这门课程的所存在的弊端暴露出来了,这就促使我要更多的阅读课外书籍,学到更多的专业知识,不断锻炼自己,使自己得到不断的提高。(2)我要衷心感谢老师和同学们在我的设计过程中给予我的极大帮助,他们给我指出程序中的错误,帮我修改不足,给我讲多文件的创建和使用,不断完善我的设计,使我能够及时、顺利地完成此次的课程设计。衷心感谢他们的援助,谢谢你们!7. 附录 7.1头文件Employee.h(雇员)class Employeepublic:char name20; int num; void display() coutname;coutnum; Teacher.h(教师)extern i;class Teacher:public Employeepublic:int score; int time;Teacher(int s=800)score=s;static void jiaoshiluru();static void jiaoshichaxun();static void jiaoshishanchu();void display1()cout请输入教师的:;Employee:display();couttime; ;Teacher t100;void Teacher:jiaoshiluru() /教师录入ofstream outfile(教师.txt,ios:app); if(outfile.fail()coutopen error!endl; exit(1);int b;coutb;for(i=0;ib;i+)ti.display1();outfileti.num ti.score ti.time endl; outfile.close();void Teacher:jiaoshichaxun()/教师查询ifstream infile(教师.txt,ios:in); int k,n,r,bh;char nam20;cout1.按编号查询endl;cout2.按姓名查询endl;coutr;if(r=1)coutbh;for(i=0,n=0;ti.scoreti.time;if(ti.num=0)break;if(ti.num=bh)n+; k=ti.score+(ti.time-120)*20;cout教师: ti.num kendl; if(n=0) cout没有你要查询的教师。endl;infile.close();if(r=2)coutnam;for(i=0,n=0;ti.scoreti.time;if(ti.num=0)break;if(strcmp(,nam)=0)n+; k=ti.score+(ti.time-120)*20;cout教师: ti.num kendl; if(n=0) cout没有你要查询的教师。endl; infile.close();void Teacher:jiaoshishanchu()/教师删除ifstream infile(教师.txt,ios:in); char nam20; coutnam; for(i=0;ti.scoreti.time;if(ti.num=0) break;if(strcmp(,nam)=0)for(int j=i;j100;j+)tj.num=tj+1.num;strcpy(,tj+1.name);tj.score=tj+1.score;tj.time=tj+1.time;infile.close();ofstream outfile(教师.txt,ios:out); for(i=0;i100;i+)if(ti.num!=0)outfileti.num ti.score ti.timeendl;outfile.close();Shiyanyuan.h(实验员)extern i;class Shiyanyuan:public Employee public:int score;int buzhu;Shiyanyuan(int s=650,int b=150) score=s;buzhu=b;static void shiyanyuanluru(); static void shiyanyuanchaxun(); static void shiyanyuanshanchu();void display1()cout请输入实验员的: ;Employee:display();Shiyanyuan s100;void Shiyanyuan:shiyanyuanluru() /实验员录入ofstream outfile(实验员.txt,ios:app); if(outfile.fail()coutopen error!endl; exit(1);int b;coutb; for(i=0;ib;i+)si.display1(); outfilesi.num si.score si.buzhuendl;outfile.close();void Shiyanyuan:shiyanyuanchaxun() /实验员查询ifstream infile(实验员.txt,ios:in); int k,n,r,bh;char nam20; cout1.按编号查询endl;cout2.按姓名查询endl;coutr;if(r=1)coutbh;for(i=0,n=0;si.scoresi.buzhu;if(ti.num=0) break;if(si.num=bh)n+; k=si.score+si.buzhu;cout实验员: si.num kendl; if(n=0)cout没有你要查询的实验员。endl; infile.close();if(r=2)coutnam;for(i=0,n=0;si.scoresi.buzhu;if(ti.num=0)break;if(strcmp(,nam)=0)n+; k=si.score+si.buzhu;cout实验员:si.num kendl; if(n=0)cout没有你要查询的实验员。endl; infile.close(); void Shiyanyuan:shiyanyuanshanchu() /实验员删除ifstream infile(实验员.txt,ios:in); char nam20; coutnam;for(i=0;si.scoresi.buzhu;if(si.num=0)break;if(strcmp(,nam)=0) for(int j=i;j100;j+)sj.num=sj+1.num;strcpy(,sj+1.name);sj.score=sj+1.score;sj.buzhu=sj+1.buzhu;infile.close();ofstream outfile(实验员.txt,ios:out);for(i=0;i100;i+)if(si.num!=0)outfilesi.num si.score si.buzhuendl;outfile.close(); Manager.h(行政人员)extern i;class Manager:public Employee public:int score; int butie; Manager(int s=750,int b=250)score=s;butie=b; static void managerluru();static void managerchaxun();static void m

温馨提示

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

评论

0/150

提交评论